Bảng phân bổ các nhãn của bộ dữ liệu

Một phần của tài liệu Đánh giá phương pháp rút trích thông tin hóa đơn tại việt nam (khóa luận tốt nghiệp) (Trang 65 - 104)

Quá trình gán nhãn bounding-box cho bộ dữ liệu gặp khó khăn do nhân lực cịn hạn chế mà số lượng ảnh thì quá lớn, dẫn tới việc phải rà sốt lại nhiều lần, nhưng vẫn khó tránh khỏi một số sai sót.

66

Chương 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ

4.1. Mơ tả thực nghiệm

Q trình thực nghiệm dự kiến gồm 2 bước:

− Nhận dạng vị trí và phân loại thơng tin cần trích xuất (Faster R-CNN, YOLOv3, YOLOF).

Hình 4-1: Ảnh minh họa bước đầu trong quá trình thực nghiệm.

− Ánh xạ các thơng tin cần trích xuất trong ảnh thành văn bản (TransformerOCR, AttentionOCR).

67

4.2. Phương pháp đánh giá 4.2.1 Giai đoạn 1: 4.2.1 Giai đoạn 1:

4.2.1.1. Confusion matrix

Confusion Matrix (Hình 4-3: Confusion Matrix) cung cấp một cách chi tiết để đánh giá kết quả của một thuật tốn phân loại có giám sát (supervised learning). Một đánh giá kết quả của một thuật tốn phân loại có giám sát (supervised learning). Một ma trận nhầm lẫn chia kết quả thành hai loại: giá trị (nhãn) dự đoán và giá trị (nhãn) thực tế của các điểm dữ liệu.

Hình 4-3: Confusion Matrix1 Trong đó:

− True Positive (TP): trường hợp dương tính và được dự đốn dương tính.

− True Negative (TN): trường hợp âm tính và được dự đốn âm tính.

− False Positive (FP): trường hợp âm tính và được dự đốn dương tính.

− False Negative (FN): trường hợp dương tính và được dự đốn âm tính.

68

4.2.1.2. Precision and Recall

Precision được định nghĩa là tỉ lệ số điểm True Positive trong tổng số những điểm được phân loại là Positive (TP + FP).

Precision = TP TP + FN

Recall được định nghĩa là tỉ lệ số điểm True Positive trong số những điểm thật sự là Positive (TP +FN).

Recall = TP TP + FN

4.2.1.3. Intersection over Union (IoU)

Intersection over Union (IoU) được dùng làm tiêu chuẩn để đánh giá cho bài toán phát hiện đối tượng trên ảnh, bằng cách đánh giá mức độ overlap (trùng lắp) giữa 2 bounding boxes. Kết quả IoU được cho là tốt khi >=0,5.

4.2.1.4. Average Precision (AP)

Giả sử có N ngưỡng để tính precision và recall, mỗi ngưỡng có 1 cặp giá trị

(𝑃𝑛, 𝑅𝑛) với 𝑛 = 1, 2, . . . , 𝑁. Precision-Recall curve được vẽ bằng cách vẽ từng điểm

69

Hình 4-4: Đồ thị mối quan hệ của precision, recall (Precision-Recall curve)1. Average precision được định nghĩa là diện tích phần phía dưới đường biểu diễn mối quan hệ của precision và recall. AP thường được tính xấp xỉ bằng cơng thức như sau:

𝐴𝑃 = ∑(𝑅𝑛 − 𝑅𝑛 − 1)

𝑛

𝑃𝑛

Trong đó: (𝑅𝑛 − 𝑅𝑛 − 1)𝑃𝑛 là diện tính hình chữ nhật có chiều rộng (𝑅𝑛 − 𝑅𝑛 − 1) và chiều cao 𝑃𝑛.

4.2.1.5. Mean Average Precision (mAP)

Mean Average Precision được tính bằng cách lấy trung bình AP của tất cả các lớp.

4.2.2 Giai đoạn 2:

4.2.2.1. Khoảng cách Levenshtein

Levenshtein là khoảng cách khác biệt giữa 2 chuỗi ký tự, khoảng cách này được đặt tên theo Vladimir Levenshtein – người đề ra khái niệm này vào năm 1965.

70

Khoảng cách Levenshtein giữa chuỗi S và chuỗi T là số bước ít nhất biến chuỗi S thành chuỗi T thơng qua 3 phép biến đổi:

− Xoá 1 ký tự: “steam” → “team”.

− Thêm 1 ký tự: “steam” → “stream”.

− Thay ký tự này bằng ký tự khác: “steam” → “steal”.

Hình 4-5: Ảnh minh họa 3 phép biến đổi thêm, sửa, xóa1.

Ví dụ, khoảng cách Levenshtein giữa chuỗi “sitting” và “kitten” là 3 vì “sitting” cần ít nhất 3 bước biến đổi để trở thành “kitten”:

− Bước 1: “sitting” → “kitting” (thay thế).

− Bước 2: “kitting” → “kitteng” (thay thế).

− Bước 3: “kitteng” → “kitten” (xóa).

4.2.2.2. Độ đo CER

Trong cuộc thi Mobile-Captured Image Document Recognition for Vietnamese Receipts (MC-OCR) – Legacy, độ đo CER (Character Error Rate) được sử dụng để đánh giá kết quả được các thí sinh nộp lên.

1 https://towardsdatascience.com/evaluating-ocr-output-quality-with-character-error-rate-cer-and-word-error- rate-wer-853175297510

71

CER được xây dựng dựa trên khoảng cách Levenshtein với công thức như sau:

𝐶𝐸𝑅 = 𝑖 + 𝑠 + 𝑑 𝑛

Trong đó:

− 𝑖 + 𝑠 + 𝑑 là số bước biến đổi ở mức ký tự ít nhất để chuyển kết quả

dự đoán được thành đáp án thực tế (groundtruth).

− 𝑛 là số ký tự trong đáp án thực tế.

Thông thường, CER được sử dụng để đánh giá các tác vụ cần chính xác từng ký tự ví dụ như nhận dạng số điện thoại, số chứng minh thư, …

4.2.2.3. Độ đo WER

Bên cạnh CER, WER (Word Error Rate) cũng hay được dùng để đánh giá kết quả của các tác vụ nhận dạng ký tự quang học, tuy nhiên WER thường được áp dụng với những tác vụ liên quan tới nhận dạng đoạn văn, hoặc câu văn từ các từ có nghĩa.

𝑊𝐸𝑅 =𝑖𝑤 + 𝑠𝑤 + 𝑑𝑤 𝑛𝑤

Trong đó:

− 𝑖𝑤 + 𝑠𝑤 + 𝑑𝑤 là số bước biến đổi ở mức từ ít nhất để chuyển kết quả dự đoán được thành đáp án thực tế (groundtruth).

− 𝑛𝑤 là số từ trong đáp án thực tế.

4.3. Quy trình thực nghiệm và đánh giá 4.3.1 Thu thập và tiền xử lý dữ liệu 4.3.1 Thu thập và tiền xử lý dữ liệu

− Thu thập ảnh, xử lý, gán nhãn ảnh.

− Tạo 3 folder: train, val, test lần lượt chứa ảnh tập train, tập validation, tập test.

72

4.3.2 Cài đặt môi trường

− Link reference: https://github.com/open-mmlab/mmdetection

− Yêu cầu cài đặt:

− Chuẩn bị:

+ config_faster_rcnn.py: file dùng để thiết lập cấu hình cho phương pháp Faster RCNN.

+ config_yolov3.py: file dùng để thiết lập cấu hình cho phương pháp YOLOv3.

+ config_yolof.py: file dùng để thiết lập cấu hình cho phương pháp YOLOF.

4.3.3 Huấn luyện model 4.3.3.1. Giai đoạn 1 4.3.3.1. Giai đoạn 1

(a) Phương pháp Faster R-CNN:

− Chạy huấn luyện bằng command:

(b) Phương pháp YOLOv3:

− Chạy huấn luyện bằng command:

(c) Phương pháp YOLOF:

− Chạy huấn luyện bằng command:

!python tools/train.py config_faster_rcnn.py Python v3.7.10

PyTorch: 1.7.0 CUDA >= v10.0 MMCV >= 1.3.8

!python tools/train.py config_yolov3.py

73

4.3.3.2. Giai đoạn 2

Chúng tôi tiến hành huấn luyện model TransformerOCR và AttentionOCR dựa trên hướng dẫn từ tác giả của VietOCR. Đầu tiên, chúng tôi chuẩn bị dữ liệu để huấn luyện theo yêu cầu của model.

Hình 4-6: Cấu trúc thư mục dữ liệu được yêu cầu (ảnh cắt từ trang hướng dẫn sử dụng model1).

Hình 4-7: Định dạng file nhãn theo yêu cầu (ảnh cắt từ trang hướng dẫn sử dụng model2).

Dựa trên yêu cầu của model, chúng tôi cắt các bounding box từ các ảnh của bộ train và bộ val thành các ảnh riêng biệt, chỉ chứa một dịng ký tự của hóa đơn, sau đó tiến hành quay ngang dịng ký tự (đối với các bounding box có chiều cao lớn hơn chiều rộng, chúng tôi xoay ảnh 90° theo chiều kim đồng hồ), sau đó, chúng tơi tiến hành tạo file nhãn dựa trên nhãn của bộ dữ liệu mới của chúng tôi.

1 https://pbcquoc.github.io/vietocr/ 2 https://pbcquoc.github.io/vietocr/

74

Dựa trên bộ dữ liệu ban đầu, chúng tôi đã tạo ra dữ liệu nhằm huấn luyện model TransformerOCR và AttentionOCR với 6,115 ảnh train và 2,190 ảnh test. Chúng tôi chạy code được tác giả cung cấp sẵn để huấn luyện cả hai model.

4.3.4 Đánh giá model 4.3.4.1. Giai đoạn 1

(a) Phương pháp Faster R-CNN:

− Tính giá trị mAP của tồn bộ tập test bằng command sau:

− Chạy kiểm thử trên tập test và lưu kết quả vào thư mục result_faster_rcnn:

(b) Phương pháp YOLOv3:

− Tính giá trị mAP của tồn bộ tập test bằng command sau:

− Chạy kiểm thử trên tập test và lưu kết quả vào thư mục result_yolov3: ! python tools/test.py config_faster_rcnn.py ./work_dirs/

config_faster_rcnn/latest.pth --show-dir result_faster_rcnn

!python tools/test.py config_ faster_rcnn.py

./work_dirs/config_faster_rcnn/latest.pth --eval bbox -- options "classwise=True"

!python tools/test.py config_ yolov3.py

./work_dirs/config_yolov3/latest.pth --eval bbox -- options "classwise=True"

! python tools/test.py config_yolov3.py ./work_dirs/ config_yolov3/latest.pth --show-dir result_yolov3

75

(c) Phương pháp YOLOF:

− Tính giá trị mAP của tồn bộ tập test bằng command sau:

− Chạy kiểm thử trên tập test và lưu kết quả vào thư mục result_yolof:

4.3.4.2. Giai đoạn 2

Chúng tôi sử dụng kết quả bounding box được dự đoán trên tập test ở giai đoạn 1 để làm đầu vào cho model TransformerOCR và AttentionOCR đã được huấn luyện. Các bounding box này sẽ được cắt ra khỏi ảnh, và quay 90º theo chiều kim đồng hồ nếu bounding box có chiều cao lớn hơn chiều rộng sau đó mới được đưa vào dự đốn trong model. Sau khi có được kết quả dự đốn từ 2 model, chúng tôi tiến hành so sánh và đánh giá kết bằng độ đo CER và WER.

4.3.5 Kết quả

4.3.5.1. Kết quả thực nghiệm

mAP

AP

SELLER ADDRESS TIMESTAMP TOTAL_COST Faster R-

CNN 57.5 59.1 63.0 53.4 54.8 YOLOv3 50.1 50.2 37.0 53.4 58.8 YOLOF 28.4 31.7 11.5 31.1 39.1

Bảng 4-1: Bảng kết quả thực nghiệm 3 phương pháp Faster R-CNN, YOLOv3 và YOLOF cho giai đoạn đầu của bài toán (Kết quả tốt nhất được in đậm).

!python tools/test.py config_ yolof.py

./work_dirs/config_yolof/latest.pth --eval bbox --options "classwise=True"

! python tools/test.py config_yolof.py ./work_dirs/ config_yolof/latest.pth --show-dir result_yolof

76

Objectection OCR CER (%/ảnh) WER (%/ảnh) Faster R-CNN TransformerOCR 26.11 32.47 AttentionOCR 26.80 33.47 YOLOv3 TransformerOCR 50.95 55.89 AttentionOCR 51.82 57.01 YOLOF TransformerOCR 95.27 95.73 AttentionOCR 95.27 95.75

Bảng 4-2: Bảng kết quả thực nghiệm và thời gian thực nghiệm của các phương pháp AttentionOCR và TransformerOCR cho giai đoạn sau của bài toán (Kết quả tốt nhất

được in đậm).

Dựa trên Bảng 4-2, ta thấy TransformerOCR có kết quả bằng hoặc cao hơn AttentionOCR khoảng từ 0% cho đến 0.87% CER hay từ 0% cho đến 1.12% WER.

4.3.5.2. Hình ảnh minh họa

(a) Phương pháp Faster R-CNN:

77

Hình 4-8. Ảnh minh họa trường hợp dự đoán tốt khi thực nghiệm bằng phương pháp Faster R-CNN.

78

Hình 4-9: Ảnh minh họa trường hợp dự đốn khơng tốt bằng phương pháp Faster R- CNN (1).

Hình 4-10: Ảnh minh họa trường hợp dự đốn khơng tốt bằng phương pháp Faster R-CNN (2).

(b) Phương pháp YOLOv3:

79

Hình 4-11: Ảnh minh họa trường hợp dự đoán tốt bằng phương pháp YOLOv3.

80

Hình 4-12: Ảnh minh họa trường hợp dự đốn khơng tốt bằng phương pháp YOLOv3 (dự đốn thiếu).

(c) Phương pháp YOLOF:

81

Hình 4-13: Ảnh minh họa trường hợp dự đoán tốt bằng phương pháp YOLOF.

− Trường hợp dự đốn khơng tốt

Hình 4-14: Ảnh minh họa trường hợp dự đốn khơng tốt bằng phương pháp YOLOF (dự đốn thiếu).

82

Hình 4-15: Ảnh minh họa trường hợp dự đốn khơng tốt bằng phương pháp YOLOF (Dự đoán nhiều bounding box trên một đối tượng thực tế).

Hình 4-16: Ảnh minh họa trường hợp dự đốn khơng tốt bằng phương pháp YOLOF (Dự đoán sai đối tượng, bounding box chỉ bao một phần của đối tượng).

4.3.5.3. Đánh giá kết quả

Sau khi tiến hành chạy thực nghiệm 3 model Faster R-CNN, YOLOv3, YOLOF thu được kết quả:

83

− Model YOLOv3 cho ra kết quả cao nhất ở lớp TIMESTAMP, lớp TOTAL_COST.

− Model Faster R-CNN cho ra kết quả cao nhất ở lớp SELLER, ADDRESS.

− Model YOLOF cho ra kết quả thấp nhất ở cả 4 lớp so với hai model còn lại là Faster R-CNN và YOLOv3.

− Có nhiều nguyên nhân dẫn đến kết quả thực nghiệm thấp:

+ Sự đa dạng định dạng hóa đơn: bố cục, định dạng font chữ, định dạng thời gian, đa dạng ngơn ngữ, độ đậm nhạt của mực in hóa đơn, …

+ Bộ dữ liệu đa dạng về: độ phân giải, ánh sáng, chiều hướng của ảnh, …

84

Chương 5. ĐỀ XUẤT CẢI TIẾN VÀ ĐÁNH GIÁ KẾT QUẢ

5.1. Đề xuất cải tiến

Do Faster R-CNN có kết quả cao gần như hơn YOLOv3 và YOLOF ở tất cả các cột, và đây cũng là phương pháp two-state detection do đó chúng tơi tập trung cải thiện phương pháp này. Thông qua thực nghiệm, chúng tôi nhận thấy rằng khi thay Roi Pooling của Faster R-CNN thành Precise Roi Pooling[6] thì model sẽ cho ra kết quả tốt hơn.

5.1.1 Roi Pooling

Hình 5.1: Ảnh mơ tả quá trình quantization trong Roi Pooling. Vùng RoI gốc này bên ảnh trái và vùng này sẽ được ánh xạ xuống feature map 16*16 bên ảnh phải1.

Roi Pooling sử dụng max pooling trên các RoI của bức ảnh đầu vào với kích thước khơng cố định để ánh xạ thành các feature map có kích thước cố định. Khi ánh xạ các RoI xuống thành những feature map hình vng có kích thước nhỏ hơn, tỉ lệ các RoI này so với feature map cũng sẽ thay đổi, bên cạnh đó, do khi làm việc trên

1 https://viblo.asia/p/deep-learning-thuat-toan-faster-rcnn-voi-bai-toan-phat-hien-duong-luoi-bo-faster-rcnn- object-detection-algorithm-for-nine-dash-line-detection-bJzKmREOZ9N

85

feature map ta chỉ có thể xét được tọa độ là các số tự nhiên, vì vậy, trong RoI Pooling ta phải sử dụng một kỹ thuật gọi là Quantization – Lượng tử hóa. Về bản chất, Quantization là một phép tốn làm trịn các tọa độ tính được sau khi chia tỉ lệ tọa độ của các RoI và đưa vào để vừa với feature map.

Tuy nhiên, việc quantization này cũng gây ra một điểm yếu lớn: sự mất mát về dữ liệu. Ví dụ trong hình, ta cần phải đưa vùng RoI về feature map cố định 3 ∗ 3 sử dụng max poolng, tuy nhiên, vì sử dụng quantization mà dịng cuối cùng của RoI này đã không được sử dụng.

5.1.2 Roi Align

Để giải quyết sự mất mát dữ liệu, thay vì sử dụng quantization, RoI Align[7] sử dụng nội suy tuyến tính để có thể lấy hết được tồn bộ vùng RoI, không chỉ vậy, nội suy tuyến tính cịn cho phép tọa độ của RoI là các số thực.

Thơng qua việc tính tốn tại điểm có tọa độ trung tâm trên từng pixel với các điểm trung tâm các pixel lân cận, ta có thể nội suy một lần nữa các điểm trong cùng vùng để suy ra được giá trị cuối cùng đưa vào feature map kết quả.

86

5.1.3 Precise Roi Pooling

Hình 5-2: Hình so sánh giữa RoI Pooling, RoI Align và Precise Roi Pooling (Ảnh từ github phương pháp).

Kế thừa từ RoI Align, Precise RoI Pooling cũng sử dụng nội suy tuyến tính để ánh xạ được RoI lên feature map. Tuy nhiên, trong quá trình pooling, thay vì tiếp tục sử dụng nội suy tuyến tính với số lượng điểm lân cận cố định được định nghĩa trước và khơng thích ứng được với nhiều kích thước khác nhau (Hình 5-2), Precise Roi Pooling sử dụng một đạo hàm bậc 2 với biến x và y để tính được giá trị pooling. Cơng thức được miêu tả dưới đây:

𝑃𝑟𝑃𝑜𝑜𝑙(𝑏𝑖𝑛, ℱ) = ∫ ∫ 𝑓(𝑥, 𝑦)𝑑𝑥𝑑𝑦 𝑥2 𝑥1 𝑦2 𝑦1 (𝑥2− 𝑥1) × (𝑦2− 𝑦1)

Việc sử dụng nguyên hàm thay vì các tham số cố định như của Roi Align sẽ giúp cho Precise Roi Pooling có thể thay đổi tốt với những RoI có kích thước khác nhau và trả về được một vector gradient liên tục cho tọa độ bounding box.

5.2. Đánh giá kết quả

Thực nghiệm cho thấy, với Precision Roi-Pooling, Faster R-CNN đã có kết quả cải thiện (Bảng 5-1, Bảng 5-2). Kết quả cải thiện này cùng với bộ dữ liệu UIT_MLReceipts được công bố trong bài báo UIT-MLReceipts: A multilingual benchmark for detecting key information in receipts (PHỤ LỤC A) được chấp nhận

87

đăng tại hội nghị khoa học 2022 IEEE 9th International Conference on Communications and Electronics (ICCE 2022).

mAP AP@50 AP@75

Faster R-CNN 57.5 86.2 72.5

Precise Faster R-CNN 58.8 87.0 74.8

Bảng 5-1: Bảng so sánh kết quả tổng quan tất cả các lớp giữa Faster R-CNN và Precision Faster R-CNN (%) (Kết quả tốt nhất được in đậm).

SELLER ADDRESS TIME STAMP

TOTAL _COST Faster R-CNN 59.1 63.0 53.4 54.8

Precise Faster R-CNN 60.4 65.4 53.5 56.0

Bảng 5-2: Bảng so sánh kết quả trên từng lớp đối tượng giữa Faster R-CNN và Precision Faster R-CNN (%) (Kết quả tốt nhất được in đậm).

CER WER Faster R-CNN 26.11 32.47 Precise Faster R-CNN 26.32 32.67

Bảng 5-3: Bảng so sánh kết quả cuối cùng của bài toàn (kết quả sau giai đoạn OCR bằng phương pháp TransformerOCR) giữa Faster R-CNN và Precision Faster R-

CNN (%) (Kết quả tốt nhất được in đậm).

Với Precision Faster R-CNN, kết quả nhận diện thông tin ở giai đoạn đầu đã được cải thiện, mAP tăng 1.3% và trên tất cả các lớp đối tượng đều nhận được kết quả cao hơn. Tuy nhiên, khi thực nghiệm phương pháp TransformerOCR trên kết quả thu được ở pha nhận diện thông tin lại thu kết quả thấp hơn (Bảng 5-3).

Một phần của tài liệu Đánh giá phương pháp rút trích thông tin hóa đơn tại việt nam (khóa luận tốt nghiệp) (Trang 65 - 104)