- Định vị, xác định vị trí của một hoặc nhiều đối tượng trong một hình ảnh và vẽ bounding box là hình chữ nhật được vẽ bao quanh đối tượng nhằm xác định vị trí đối tượng.. - Định vị
Trang 1- Phân loại hình ảnh liên quan đến việc dự đoán lớp của một đối tượng trong
một hình ảnh
- Định vị, xác định vị trí của một hoặc nhiều đối tượng trong một hình ảnh và
vẽ bounding box (là hình chữ nhật được vẽ bao quanh đối tượng nhằm xác định vị trí đối tượng)
- Phát hiện đối tượng kết hợp hai nhiệm vụ trên và thực hiện cho một hoặc nhiều
đối tượng trong hình ảnh
Phân biệt giữa ba lĩnh vực của thị giác máy tính trên thông qua input và output như sau:
- Phân loại hình ảnh: là dự đoán nhãn của một đối tượng trong một hình ảnh [3]
o Input: là một hình ảnh với một đối tượng, chẳng hạn như một bức ảnh hình
con vật
o Output: Nhãn lớp là một hoặc nhiều số nguyên được ánh xạ tới nhãn lớp
- Định vị đối tượng: Xác định vị trí hiện diện của các đối tượng trong ảnh và
cho biết vị trí của chúng bằng bounding box [3]
o Input: Một hình ảnh có một hoặc nhiều đối tượng, chẳng hạn như một bức ảnh
o Output: Một hoặc nhiều bounding box được xác định bởi tọa độ tâm, chiều
rộng và chiều cao
- Phát hiện đối tượng: Xác định vị trí hiện diện của các đối tượng trong bounding
box và nhãn của các đối tượng nằm trong một hình ảnh [3]
o Input: Một hình ảnh có một hoặc nhiều đối tượng, chẳng hạn như một bức ảnh
o Output: Một hoặc nhiều bounding box và nhãn cho mỗi bounding box
Trang 29
Một hệ thống nhận diện đối tượng thường bao gồm bốn bước :
- Thu nhận tín hiệu (input) và tiền xử lý (preprocessing)
- Trích xuất đặc trưng (feature extraction)
- Phát hiện đối tượng (detection)
- Phân lớp đối tượng (classification)
Hình 2.1 Quy trình chung của bài toán nhận diện đối tượng
Ảnh đầu vào được tiền xử lý nhằm tăng độ chính xác cho hệ thống Các ảnh sau đó được trích xuất các đặc trưng tạo ra các vectơ dữ liệu đặc trưng Những vectơ đặc trưng này sẽ là dữ liệu đầu vào cho mô hình đã được huấn luyện trước Mô hình dò tìm định vị những vị trí đối tượng xuất hiện trong ảnh hoặc video Những đối tượng được xác định được phân lớp thành các lớp riêng biệt để nhận dạng [3]
Trang 310
2.1.2 Nhận dạng ký tự
OCR là thuật ngữ được viết tắt bởi cụm từ Optical Character Recognition (nhận dạng
ký tự quang học) Là kỹ thuật được sử dụng để chuyển đổi hình ảnh văn bản sang dạng văn bản số có thể chỉnh sửa trong máy tính OCR nhận đầu vào là các ảnh có kí tự xử lý và cho ra kết quả kí tự văn bản tương ứng OCR được biết đến từ những năm
1974, Ray Kurzweil bắt đầu phát triển một công nghệ có thể nhận ra các kí tự trong hình ảnh của các văn bản, công nghệ này được ứng dụng vào thiết bị hỗ trợ đọc cho người khiếm thị Công nghệ OCR ngày càng được hoàn thiện và phát triển, cho tới ngày nay thì công nghệ này đã được ứng dụng và rất nhiều lĩnh vực trong cuộc sống
từ các ứng dụng nhận dạng chữ viết, văn bản, cho tới các phần mềm hệ thống ứng dụng nhận diện các biển số xe [1]…
Tương tự với bài toán nhận diện đối tượng, bài toán nhận diện ký tự bất kỳ cũng gồm các bước sau:
- Thu nhận tín hiệu (input) và tiền xử lý (preprocessing)
- Trích xuất đặc trưng (feature extraction)
- Phát hiện đối tượng chữ/ ký tự (text detection)
- Nhận dạng văn bản (text recognition)
Hình 2.2 Quy trình chung của bài toán nhận diện ký tự OCR
2.2 Các khái niệm, phương pháp tiền xử lý dữ liệu
- Mức xám của điểm ảnh là cường độ sáng của nó được gán bằng giá trị số tại
điểm đó
Trang 411
o Ảnh nhị phân : như tên của nó cho thấy nó chỉ chứa hai phần tửlà 0 và 1, trong
đó 0 đề cập đến màu đen và 1 đề cập đến màu trắng Ảnh này còn được gọi là ảnh đơn sắc
o Ảnh đen trắng : ảnh chỉ bao gồm màu đen và màu trắng
o Ảnh 8 bit: Đây là định dạng ảnh nổi tiếng nhất Nó có 256 màu khác nhau và
thường được gọi là ảnh xám Trong định dạng này, 0 là đại diện màu đen, 255
là đại diện màu trắng và 127 là đại diện màu xám
- CutMix data augmentation:
o Loại bỏ một vùng trên mỗi ảnh để model không thể overfit một đặc trưng đặc
biệt nào đó trên tập huấn luyện
o Vùng ảnh bị loại bỏ được thay bằng các giá trị 0 không làm ảnh hưởng
trong quá trình xử lý
o CutMix thay vùng ảnh bị loại bỏ bằng một phần ảnh của ảnh khác trong
dataset, hình 2.3
Hình 2.3 Ví dụ minh họa Cutmix
o Vùng bị thay thế này giúp bộ object detector học với nhiều đặc trưng hơn
- Mosaic data augmentation:
o Thay vì mỗi ảnh đầu vào là sự kết hợp của 2 ảnh thì Mosaic sử dụng kết hợp
4 ảnh Giúp cho bối cảnh của ảnh phong phú hơn
Trang 512
Hình 2.4 Ví dụ minh họa Mosaic data augmentation [4]
- DropBlock regularization: trong Dropout các điểm gần nhau thường có đặc
điểm giống nhau, loại bỏ các điểm này bằng cách set weight=0 tại một số vị trí trên feature map Trong DropBlock, các vị trí được chọn không phân bố ngẫu nhiên nữa mà tập trung thành các block [5] (hình 2.5 hình bên phải)
Hình 2.5 Ví dụ minh họa Dropblock [5]
- One-hot encoding là quá trình biến đổi từng giá trị thành các đặc trưng nhị
phân chỉ chứa giá trị 1 hoặc 0 Mỗi mẫu trong đặc trưng phân loại sẽ được biến đổi thành một vector có kích thước m chỉ với một trong các giá trị là 1 (biểu thị nó là active)
Trang 613
Hình 2.6 ví dụ One-hot encoding
- Gaussian Filter: Bộ lọc Gauss được cho là bộ lọc thường được sử dụng, được
thực hiện bằng cách nhân chập ảnh đầu vào với một ma trận lọc Gauss sau đó cộng chúng lại để tạo thành ảnh đầu ra Ý tưởng chung là giá trị mỗi điểm ảnh
sẽ phụ thuộc nhiều vào các điểm ảnh ở gần hơn là các điểm ảnh ở xa Trọng
số của sự phụ thuộc được lấy theo hàm Gauss (cũng được sử dụng trong quy luật phân phối chuẩn)
Hình 2.7 Ma trận Gauss Giả sử ảnh là một chiều Điểm ảnh ở trung tâm sẽ có trọng số lớn nhất Các điểm ảnh
ở càng xa trung tâm sẽ có trọng số giảm dần khi khoảng cách từ chúng tới điểm trung tâm tăng lên Như vậy điểm càng gần trung tâm sẽ càng đóng góp nhiều hơn vào giá trị điểm trung tâm
Trang 714
2.2 YOLO
YOLO được viết tắt của từ “You only look once” Ý nghĩa là “chúng ta chỉ cần nhìn
1 lần là có thể phát hiện ra vật thể” Về độ chính xác thì YOLO có thể không phải là thuật toán tốt nhất nhưng nó là thuật toán nhanh nhất trong các mô hình nhận dạng đối tượng Tốc độ nhận diện của YOLO tiệm cận thời gian thực và độ chính xác cao nằm trong các mô hình thuộc top đầu YOLO có thể phát hiện được nhiều vật thể có nhãn khác nhau trong một bức ảnh thay vì chỉ phân loại duy nhất một nhãn cho một bức ảnh [6] YOLO có các phiên bản phát triển YOLOv1 – YOLOv3 của Joseph Redmon YOLOv4 của Alexey Bochkovskiy và YOLOv5 đang được phát triển hoàn thiện
2.2.1 Các phiên bản YOLO
- YOLOv1 được Joseph Redmon và Ali Farhadi công bố vào tháng năm, năm
2016 Ý tưởng chính của YOLOv1 là chia ảnh thành một lưới các ô (grid cell) với kích thước SxS (mặc định là 7x7) Với mỗi grid cell, mô hình sẽ đưa ra dự đoán cho
B bounding box Ứng với mỗi box trong B bounding box này sẽ là 5 tham số x, y, w,
h, confidence, lần lượt là tọa độ tâm (x, y), chiều rộng, chiều cao và độ tin cậy của dự
đoán [7] Nhược điểm của YOLOv1: YOLOv1 bị ràng buộc về không gian trên những
bounding box, mỗi grid cell chỉ có thể dự đoán rất ít bounding box (B) và duy nhất một lớp Ràng buộc này hạn chế khả năng nhận biết số đối tượng nằm gần nhau và đối với các đối tượng có kích thước nhỏ Trong quá trình huấn luyện, loss function không có sự đánh giá riêng biệt giữa bounding box kích thước nhỏ so với bounding box kích thước lớn làm ảnh hưởng đến độ chính xác toàn cục của mạng [7]
- YOLOv2 đặt tên là YOLO9000 được Joseph Redmon và Ali Farhadi công
bố vào cuối năm 2016 Phiên bản này được cải tiến tốt hơn, nhanh hơn, tiên tiến hơn, xử lý được những nhược điểm gặp phải của YOLOv1 Các cải tiến của YOLO v2: batch normalization, high resolution classifier, sử dụng kiến trúc anchorbox để đưa
ra dự đoán, sử dụng K-mean clustering cho lựa chọn của anchor, add fine-grained features, multi-scale training, light-weight backbone Điểm cải tiến của YOLOv2 là
Trang 815
khung kiến trúc backbone mới là Darknet-19 Mạng này bao gồm 19 lớp convolution
và 5 lớp maxpooling cải tiến tốc độ nhanh hơn phiên bản YOLOv1 [8]
- YOLOv3 được Joseph Redmon và Ali Farhadi giới thiệu vào tháng 4, năm
2018 YOLOv3 có kiến trúc giống YOLOv2 Cải tiến của YOLOv3 bao gồm : logistic regression cho confidence score, thay softmax bằng các logistic classifier rời rạc, backbone - Darknet-53, multi-scale prediction, skip-layer concatenation YOLOv3
bổ sung thêm các liên kết giữa các lớp dự đoán Sử dụng mô hình upsample các lớp dự đoán ở các tầng sau và sau đó kết hợp với các lớp dự đoán ở các tầng trước đó, giúp tăng độ chính xác khi dự đoán các đối tượng nhỏ [9]
- YOLOv4 được Alexey Bochkovskiy, Chien-Yao Wang, Hong-Yuan Mark
Liao giới thiệu vào tháng 4, năm 2020 YOLOv4 là một cải tiến lớn so với YOLOv3 Kiến trúc của YOLOv4 đã đưa bài toán nhận diện đối tượng dễ tiếp cận hơn, không cần máy tính cấu hình mạnh YOLOv4 có thể huấn luyện một mạng phát hiện đối tượng với độ chính xác rất cao chỉ với GPU 1080ti hoặc 2080ti [4]
2.2.2 Kiến trúc YOLOv4
Kiến trúc của YOLOv4 chia làm ba phần chính: Backbone, Neck, Head (hình 2.8)
Hình 2.8 Kiến trúc YOLOv4 [4]
Trang 9Hình 2.9 Cấu trúc CSP [10]
o DenseNet (Dense connected convolutional network) là một trong những
network mới nhất cho visual object recognition Kiến trúc giống với Resnet nhưng có một vài điểm khác biệt Densenet có kiến trúc gồm các dense block
và các transition layers (hình 2.21) Với CNN truyền thống nếu chúng ta có L layer thì sẽ có L connection, nhưng với Densenet sẽ có L(L+1)/2 connection (tức là các lớp phía trước sẽ được liên kết với tất cả các lớp phía sau nó) [10]
Hình 2.10 Cấu trúc DenseNet [11]
Trang 1017
o Darknet53: YOLOv4 sử dụng CSPDarknet53 để làm backbone
vì CSPDarknet53 có độ chính xác cao hơn so với ResNet [4]
- Neck: Neck kết hợp các đặc trưng trong quá trình trích xuất đặc trưng và quá trình nhận dạng Với mỗi lần thực hiện nhận dạng, ảnh được rescale khác nhau theo bottom-up và top-down trước khi đưa vào head, do đó quá trình nhận dạng sẽ chứa thông tin phong phú hơn [4]
- Head: Head (Dense prediction) được sử dụng để định vị các bounding boxes
và phân loại Quá trình này giống như quy trình được mô tả cho YOLOv3, tọa độ bounding boxes :x, y, height và width, score [4]
Một số kỹ thuật mới thuật toán YOLOv4 sử dụng để cải thiện độ chính xác trong quá trình huấn luyện là bag of freebies và bag of specials [4]
- Bag of freebies có 2 kỹ thuật:
o Bag of freebies for backbone: sử dụng các phương pháp CutMix and Mosaic data augmentation, DropBlock regularization, Class label smoothing [4]
o Bag of freebies for detector: sử dụng các phương pháp CIoU-loss, CmBN, DropBlock regularization, Mosaic data augmentation, Self-Adversarial Training, Eliminate grid sensitivity, Using multiple anchors for a single ground truth, Cosine annealing scheduler, Optimal hyperparameters, Random training shapes [4]
- Bag of specials có 2 kỹ thuật:
o Bag of specials for backbone: sử dụng hàm kích hoạt mish (Mish activation), Cross-stage partial connections (CSP), Multiinput weighted residual connections (MiWRC) [4]
o Bag of specials for detector: sử dụng kỹ thuật Mish activation, SPP-block,
SAM-block, PAN path-aggregation block, DIoU-NMS [4]
- Class label smoothing: thay giá trị 1.0 0.9 trong one-hot coding giúp khi
đoán đúng nhẵn lớp của một bức ảnh thì vẫn có loss Do đó model sẽ phải điều chỉnh trọng số, giúp tránh việc overconfident vào kết quả dự đoán của mình
tránh bị overfitting [4]
Trang 1118
- Mish activation: theo một số nghiên cứu, sử dụng Mish thu được kết quả tốt
hơn so với ReLu [12], SoftPlus, Swish cũng như một số activation function khác (Adam, Ranger, RangerLars, Novograd, …) Mish activation giúp truyền tải thông tin xuống các lớp sâu hơn trong mạng thần kinh dễ dàng hơn tăng độ chính xác
𝑓(𝑥) = 𝑥𝑡𝑎𝑛ℎ(ln(1 + 𝑒𝑥)) (2 - 1)
Hình 2.11 Mish Activation Function [12]
Một số thuộc tính quan trọng của Mish:
- Không có cận trên
- Có cận dưới
- Không đơn điệu, giữ lại một phần nhỏ negative gradient cho phép model học
tốt hơn (vd: ReLu không cho phép gradient âm)
- Liên tục: Mish có đạo hàm bậc 1 tại mọi điểm thuộc miền giá trị (so sánh với
ReLu không có đạo hàm tạo x=0)
2.2.3 So sánh với các mô hình khác
Ứng dụng YOLOv4: Yolov3 và Yolov4 đều cho kết quả tốt trong việc phát hiện đối tượng Hình 2.12 biểu đồ kết quả so sánh khi sử dụng yolov3 và yolov4 và một số thuật toán khác trên tập dữ liệu CoCo
Trang 1219
Hình 2.12 Kết quả so sánh YOLOv4 với các SOTA (state-of the-art object
detection) trên COCO dataset [4] Trong đó: trục y là độ chính xác (AP - absolute precision); trục x là số lượng khung hình trên giây (FPS - frame per second) Phần tô bóng màu xanh lam của biểu đồ là để phát hiện trong thời gian thực (webcam, camera đường phố, v.v.), phần màu trắng
là nhận dạng ảnh/video tĩnh YOLOv4 phát hiện đối tượng trong thời gian thực rất tốt, đạt độ chính xác trung bình từ 38 đến 44 và số khung hình mỗi giây trong khoảng
từ 60 đến 120 YOLOv3 đạt được độ chính xác trung bình từ 31 đến 33 và khung hình mỗi giây giữa 71 và 120 [4] YOLOv4 chạy nhanh gấp đôi EfficientDet và tăng 10% chính xác và 12% số khung hình trên giây so với YOLOv3 [4]
2.3 CTPN
CTPN được viết tắt của Connectionist Text Proposal Network hay còn gọi là mạng văn bản đề xuất Zhi Tian, Weilin Huang, Tong He, Pan He1 and Yu Qiao giới thiệu vào tháng 15, năm 2016 Ý tưởng chính của CTPN chia nhỏ bài toán nhận dạng ảnh chứa văn bản thành nhận dạng những vùng có chứa văn bản trên bức ảnh
Ví dụ: khi truy cập vào Google để tra cứu thông tin, thỉnh thoảng Google yêu cầu chúng ta nhập chuỗi ký tự captcha như ví dụ hình 2.13
Trang 1320
Hình 2.13 Ví dụ captcha [13]
Nhiệm vụ của chúng ta là lựa chọn những ô vuông chứa thông tin biển báo giao thông
Ở ví dụ trên, ta lựa chọn 5 ô vuông kia bởi ta nghĩ rằng 5 ô vuông đó có chứa thông tin của biển báo Giả sử yêu cầu “chọn những vùng có chứa văn bản/chữ” Vấn đề bắt đầu xuất hiện: ta sẽ chọn 3 ô vuông như hình dưới đây (hình 2.14)
Hình 2.14 Ví dụ chọn text trên ảnh [13]
Ở hình 2.14 ô vuông ở giữa chỉ chứa một vài vùng của text ở 2 phía của biển báo Để
có thể lựa chọn các vùng chính xác hơn, ta chia nhỏ những ô vuông trên, chia nhỏ bài toán Text Detection thành chọn những vùng có chứa text trên bức ảnh Đây chính
là ý tưởng chính của cấu trúc “Connectionist Text Proposal Network” (hình 2.15)
Trang 14tọa độ dọc của văn bản và phần bù của k anchor [14]
Hình 2.16 Kiến trúc CTPN [14]
CTPN có 3 kỹ thuật: Detecting Text in Fine-scale Proposals (Nhận diện vă n bản trong đề xuất tỷ lệ nhỏ) Recurrent Connectionist Text Proposals (vă n bản kết nối đề xuất).Side-refinement (Sàng lọc bên) [14]
Trang 1522
- Detecting Text in Fine-scale Proposals: phát hiện kí tự trong môi trường tự
nhiên rất phức tạp bởi có thể nhầm lẫn giữa màu nền và chữ ở những vị trí mà sự hiển thị của chữ yếu ví dụ như ở những nét nhỏ, khoảng trống giữa các chữ cái Với cách tiếp cận nhận diện đối tượng thông thường, dễ xảy ra trường hợp bounding box không bao quát đủ không gian của đối tượng chữ, đặc biệt trong trường hợp chữ có kích thước nhỏ CTPN định nghĩa một dòng text là một chuỗi các fine-scale text proposals với mỗi proposal sẽ chứa một phần nhỏ của dòng text Ý tưởng CTPN: mỗi proposal sẽ chứa một hoặc nhiều nét, một hoặc nhiều kí tự, một phần kí tự của dòng chữ CTPN sẽ mapping các vị trí trên feature map với một proposal trên ảnh đầu vào Thông thường mỗi proposal
sẽ có độ rộng (width) là 16 pixels, chiều cao sẽ được dự đoán bằng chiều cao
của mô hình [14]
Với mỗi proposal, CTPN sẽ khởi tạo k anchors với những chiều cao khác nhau CTPN sử dụng 10 anchor với chiều cao sẽ nằm trong khoảng từ 11 đến 273 (chia cho 0.7) Với mỗi anchor sẽ chứa thông tin về vị trí và kích thước, dự đoán các thông số vị trí
và kích thước tương đối so với từng anchor ứng với mỗi proposal [14] Vị trí tương đối của dự đoán và groundtruth được tính như sau :
Trang 1623
𝑐𝑦𝑎 và ℎ𝑎 là trung tâm và chiều cao của anchor Mỗi dự đoán sẽ ứng với một proposal với kích thước là h*16 công thức này chỉ được tính toán trên những anchor mà có chỉ số văn bản/phi văn bản > 0.7
- Recurrent Connectionist Text Proposals: Việc chia nhỏ dòng văn bản thành
những fine-scale text proposals và dự đoán nó có phải là văn bản hay không
có thể bị nhầm lẫn ở những trường hợp khoảng cách giữa những kí tự xa hoặc giữa những đối tượng có cấu trúc gần giống với văn bản Vì một câu có tính tuần tự liên quan với nhau giữa các kí tự trong một từ, một từ trong câu CTPN sử dụng cấu trúc mạng RNN để nhận mỗi vùng đặc trưng như một đầu vào của
từ [14] Các hidden layer của mạng LSTM sẽ được cập nhật :
𝐻𝑡 = 𝜑(𝐻𝑡−1, 𝑋𝑡),𝑡 = 1,2, … , 𝑊 (2 - 6) Trong đó: Xt ∈ R3×3 là vùng convolutional feature window thứ t của cửa sổ (3×3);
t = 1, 2, … W với W là chiều rộng của tầng conv5 Ht là hidden state sẽ được tính toán từ Xt và hidden state Ht−1 trước đó
- Side-refinement: Sau khi đã có bộ những text proposal với điểm số
text/non-text > 0.7, bounding box của một text/non-text sẽ được xây dựng bằng cách kết nối các text proposal còn lại bằng trình tự: Bj được cho là một cặp với Bi theo những tiêu chí sau: Bj gần Bi nhất xét theo chiều ngang Khoảng cách này phải nhỏ hơn 50 pixels Chỉ số chồng khớp (overlap) theo chiều dọc > 0.7 [14]
Dòng văn bản sẽ được chia nhỏ thành một chuỗi proposal 16pixel nên sẽ xảy ra trường hợp những proposal ở 2 phía của dòng text sẽ bị bỏ qua vì chỉ chứa một phần nhỏ của text Vì vậy, CTPN sẽ khắc phục bằng cách dự đoán thêm một phần bù của proposal ở 2 phía
𝑜∗ = (𝑥𝑠𝑖𝑑𝑒∗ − 𝑐𝑥𝑎)/𝑤𝑎 (2 - 8)
Trang 1724
Trongđó:𝑥𝑠𝑖𝑑𝑒 là vị trí của tọa độ x-theo chiều ngang gần nhất đến anchor hiện tại ở
cả 2 phía; 𝑥∗𝑠𝑖𝑑𝑒 là phần bù groundtruth được tính toán trước từ groundtruth box và
vị trí của anchor; 𝑐𝑥𝑎 là tâm điểm của anchor theo tọa độ x, wa là chiều rộng của anchor (wa = 16) Việc sử dụng phần bù có thể khắc phục được việc bounding box không bao được hết dòng text đặc biệt trong trường hợp kích thước nhỏ [14]
Output và Lossfunction: CTPN có ba đầu ra được kết nối chung với FC tầng cuối cùng Sử dụng phương pháp học đa tác vụ để cùng nhau tối ưu hóa các thông số mô hình Loss function CTPN bao gồm: 𝐿𝑐𝑙s, 𝐿𝑟𝑒v và 𝐿𝑟𝑒o :
𝐿(𝑠𝑖, 𝑣𝑗, 𝑜𝑘) = 1
𝑁𝑠∑ 𝐿𝑐𝑙𝑠(𝑠𝑖, 𝑠𝑖∗) +λ1
𝑁𝑣 ∑ 𝐿𝑣
𝑟𝑒 𝑗
(𝑜𝑘, 𝑜𝑘∗)
(2 - 9) Trong đó: mỗi anchor là một mẫu huấn luyện và i là chỉ số của một anchor trong một minibatch; si là xác suất dự đoán của anchor là một vă n; 𝑆*i = {0, 1} là ground truth;
j là chỉ số của một anchor trong tập hợp các anchor hợp lệ đối với tọa độ y, được định nghĩa như sau: Một anchor hợp lệ/đúng được xác định (𝑆*
𝑗 = 1), hoặc có IoU > 0,5 trùng lặp với một vă n bản đề xuất; vj và 𝑣j* là dự đoán và tọa độ y ground truth được kết hợp với anchor thứ j; k là chỉ số của một anchor bên, được định nghĩa là một tập hợp các anchor trong khoảng cách ngang (ví dụ: 32 pixel) về phía bên trái hoặc bên phải của ground truth vă n bản ở trong khung; ok và ok* là dự đoán và ground truth trên trục x được liên kết với anchor thứ k; 𝐿𝑐𝑙s là phân loại sử dụng Softmax phân biệt văn bản và phi văn bản 𝐿𝑟𝑒v và 𝐿𝑟𝑒o là loss function regression; λ1 và λ2 là trọng số hao hụt để cân bằng, thường được đặt 1.0 và 2.0; Ns, Nv và No là các tham số chuẩn hóa, biểu thị tổng số lượng anchor được sử dụng bởi 𝐿𝑐𝑙s, 𝐿𝑟𝑒v và 𝐿𝑟𝑒o [14]
2.3.2 So sánh với các phương pháp khác
Ứng dụng thuật toán CPTN nhận diện văn bản Sử dụng CTPN trên bộ dữ liệu huấn luyện ICDAR 2013 có hơn 3.000 hình ảnh tự nhiên Trong đó có 229 hình ảnh từ tập
Trang 1825
huấn luyện, tự thu thập các hình ảnh và gắn nhãn thủ công văn bản Bộ dữ liệu SWT chứa 307 hình ảnh bao gồm nhiều văn bản kích thước nhỏ Bộ dữu liệu MULTILINGUAL tập dữ liệu ảnh đa ngôn ngữ chứa 248 hình ảnh để huấn luyện và
239 để thử nghiệm Ảnh đầu vào được thay đổi kích thước thành 600px
Bảng 2.1 Đánh giá CPTN trên bộ dữ liệu ICDAR 2013,
SWT và MULTILINGUAL [14]
RPN 0.17 0.63 0.27 Epshtein [15] 0.54 0.42 0.47 Pan [16] 0.65 0.66 0.66 Faster R-CNN 0.79 0.71 0.75 Mao [17] 0.58 0.41 0.48 Yin [18] 0.83 0.68 0.75 FTPN (no RNN) 0.83 0.78 0.80 Zhang [19] 0.68 0.53 0.60 Yian [20] 0.85 0.78 0.81
CTPN 0.93 0.83 0.88 CPTN 0.68 0.65 0.66 CTPN 0.84 0.80 0.82
Trong đó: P là dự đoán; R: recall; F: độ đo; T(s): là thời gian
CTPN hoạt động tốt trên những hình ảnh trong điều kiện ánh sáng CTPN có thể xử
lý đa ngôn ngữ một cách hiệu quả ví dụ: tiếng Trung và tiếng Hàn (hình 2.17)
Hình 2.17 Kết quả nhận dạng CTPN trong điều kiện ảnh thiếu sáng [14]
Trang 19Hình 2.19 Kiến trúc OCR phổ biến Phương pháp nhận diện ký tự thường sử dụng CNN kết hợp LSTM trên có những nhược điểm như sau:
Trang 2027
- Thời gian huấn luyện lâu: khi xử lý một câu văn bằng RNN thì mô hình xử lý câu văn một cách tuần tự theo từng bước do đó hidden state sau phải phụ thuộc vào hidden state trước thực hiện xong Mô hình không thể thực hiện tính toán song song, không tận dụng được khả năng tính toán của GPU khiến thời gian huấn luyện lâu
- Khả năng ghi nhớ, ngữ nghĩa kém : RNN học các đặc trưng theo từng bước
sau đó sẽ mã hóa câu đầu vào thành một context vector, các context vector các từ sẽ giống nhau Nhưng trong một câu xét về mặt ngữ nghĩa có những từ có từ vai trò quan trọng có những từ ít quan trọng hơn do đó việc coi các từ giống nhau sẽ làm giảm độ chính xác của mô hình
- Cơ chế attention truyền thống cập nhật lại trọng số (attention weight) của context vector nhờ đó giúp giải mã, mô hình hóa được mối quan hệ ngữ nghĩa giữa input và output Attention weight bản chất chính là độ liên quan của các encoder hidden states với decoder hidden state
Transformer giải quyết được nhược điểm của mô hình OCR truyền thống dựa vào hai cấu trúc là multi-head attention và positional encoding Kiến trúc transformer bao
gồm hai phần encoder và decoder [21]
- Encoder: Gồm N block, mỗi block bao gồm hai sub-layer: Multi-Head Attention và Feed forward network Sau mỗi sub-layer đó là một lớp Layer Norm có
ý nghĩa tương tự như lớp Batch Norm trong CNN
- Decoder: cũng tương tự như encoder gồm N block, mỗi block gồm 2 sub-layer Decoder có một lớp Masked Multi-Head Attention, lớp này chính là lớp Multi-Head Attention Multi-Head Attention có chức năng tập trung chú ý (attention) đến toàn bộ những decoder hidden state trước
2.4.1 Kiến trúc Tranformer OCR
Kiến trúc Tranformer gồm 2 phần chính là Encoder và Decoder (hình 2.20)
Trang 21Hình 2.21 Ví dụ input embedding [22]
o Positional Encoding: Word embeddings biểu diễn ngữ nghĩa của một từ, tuy
nhiên cùng một từ ở vị trí khác nhau của câu lại mang ý nghĩa khác nhau Do đó
Trang 22Hình 2.22 Minh họa Positional Encoding [22].
o Self-Attention: Self-Attention là cơ chế giúp Transformers hiểu được sự liên
quan giữa các từ trong một câu Ví dụ như từ “kicked” trong câu “I kicked the ball” (tôi đã đá quả bóng) Từ “I” là chủ ngữ, “kicked” là động từ nghĩa là sút/đá sẽ luôn liên quan đến từ “ball” là vị ngữ Từ “the” là giới từ nên không có sự liên kết với từ
“kicked” [22]
Hình 2.23 Ví dụ trích xuất self-Attention [22]
Trang 2330
Đầu vào của các Multi-head Attention (Self-Attention) là 3 vectors Querys (Q), Keys (K) và Values (V) Từ 3 vectors này, ta sẽ tính vector attention Z cho một từ theo công thức sau:
√𝐷𝑖𝑚𝑒𝑛𝑠𝑖𝑜𝑛𝑜𝑓𝑣𝑒𝑐𝑡𝑜𝑟𝑄,𝐾𝑜𝑟𝑉) 𝑉 (2 - 12)
o Multi-head Attention: thay vì sử dụng 1 Self-attention thì tác giả sử dụng nhiều Attention khác nhau (multi-head) Attention sẽ chú ý đến các phần khác nhau trong câu, mỗi “head” sẽ cho ra một ma trận attention riêng, tác giả kết hợp các ma trận này
và nhân với ma trận trọng số WO để ra một ma trận attention duy nhất [22]
Hình 2.24 Minh họa tính ma trận Wo [22]
o Feed Forward: Sau khi được chuẩn hóa, các vectors z được đưa qua mạng fully connected trước khi giải mã
- Decoder:
o Masked Multi-head Attention: Decoder giải mã thông tin từ Encoder và sinh
ra từng từ dựa trên từ trước đó Decoder dịch đến từ thứ i, phần sau của câu từ sẽ bị
che lại (masked) và Decoder chỉ được phép “nhìn” thấy phần nó đã dịch trước đó [22]
Trang 2431
Hình 2.25 Masked Multi-head Attention [22]
o Quá trình decode: Giống với quá trình encode, Decoder giải mã từng từ Sau khi masked input đưa qua sub-layer #1 của Decoder, nó sẽ không nhân với 3 ma trận trọng số để tạo ra Q, K, V nữa mà chỉ nhân với 1 ma trận trọng số WQ K và V được lấy từ Encoder cùng với Q từ Masked multi-head attention đưa vào sub-layer #2 và #3 tương tự như Encoder Cuối cùng, các vector được đẩy vào lớp Linear (là 1 mạng Fully Connected) kết hợp Softmax để cho ra xác suất của từ tiếp theo [22] (hình 2.25)
Hình 2.26 Quá trình encode [22]
Trang 2532
Hình 2.27 Quá trình decode [22]
2.5 Luận văn thạc sĩ “Đề tài Trí tuệ nhân tạo trong chuyển đổi số: ứng dụng
hỗ trợ thu thập chỉ số đường huyết của thai phụ” của học viên Nguyễn Phạm Thanh Tâm
Trong nghiên cứu , tác giả phát triển một hệ thống hỗ trợ việc thu thập thông tin sức khỏe Hệ thống thu thập dữ liệu hình ảnh về số liệu y tế của bệnh nhân bằng ứng dụng
di động và ứng dụng AI để số hóa thu thập dữ liệu Nghiên cứu cũng được hiện thực với việc theo dõi thai phụ đái tháo đường thai kỳ
Hình 2.28 Mô hình hệ thống của đề tài
Trang 2633
Module A: Ứng dụng mobile thực hiện việc lấy dữ liệu ảnh Phiếu theo dõi chỉ số đường huyết của bệnh nhân thai phụ (xem Phụ lục 1 Biễu mẫu phiếu theo dõi) gửi về server hệ thống
Module B: module thực hiện chức năng xác định chuỗi ký tự đánh máy thể hiện phần dữ liệu thông tin cá nhân của bệnh nhân trên phiếu theo dõi Module này thực hiện việc xác định chuỗi ký tự đánh máy bao gồm các bước sau:
- Bước 1: định vị dòng text bằng CTPN
- Bước 2: cắt ảnh theo tọa độ đã định
- Bước 3: Sử dụng Tesseract OCR để nhận dạng ký tự đánh máy
Sau khi thực hiện xong chức năng này thì dữ liệu cá nhân bệnh nhân được lưu vào cơ
sở dữ liệu SQL Server Ảnh phiếu theo dõi tiếp tục được chuyển sang giai đoạn xử lý trích xuất chữ số viết tay để lấy thông tin chỉ số đường huyết được ghi nhận hàng ngày của bệnh nhân
Module C: module này thực hiện chức năng trích xuất và nhận dạng chữ số viết tay chỉ số đường huyết từ bảng dữ liệu của phiếu theo dõi Việc trích xuất này đòi hỏi chúng ta phải thực hiện các bước:
- Bước 1: Định vị tọa độ từng ô text trong bảng dữ liệu
- Bước 2: Cắt ảnh từng ô text trong bảng dữ liệu
- Bước 3: Nhận dạng chữ số viết tay trong từng ô text
- Bước 4: Ghi dữ liệu đường huyết vào cơ sở dữ liệu SQL Server
Module D: module thực hiện trả dữ liệu đã trích xuất được từ phiếu theo dõi của bệnh nhận về hệ thống quản lý chung của bệnh viện nhằm giúp y bác sỹ thực hiện các nghiệp vụ y tế đối với bệnh nhân Module cung cấp các API để truy xuất dữ liệu trả
ra dạng JSON thông qua các Web Service được phát triển trên nền tảng WCF
Trang 2734
Nội dung của luận văn sử dụng CTPN định vị vị trí của văn bản, cắt tọa độ sau đó sử dụng Tesseract OCR để nhận dạng Đối với bài toán trên phiếu nhận dạng là phiếu chỉ số đường huyết, dữ liệu văn bản được trích xuất toàn bộ từ phiếu Trên thực tế người dùng chỉ cần 1 vài thông tin trên phiếu Bài toán rút trích các đối tượng trên phiếu xét nghiệm giúp làm tiết kiệm thời gian, chi phí
Trang 28o Input: ảnh phiếu xét nghiệm
o Output: ảnh các đối tượng: id, target_name, method, result
- Bước 2: sử dụng CTPN phát hiện vùng chứa văn bản từ các đối tượng được nhận diện ở bước 1
o Input: ảnh các đối tượng: id, target_name, method, result
Trang 2936
3.2 Thu thập dữ liệu
3.2.1 Tập dữ liệu phiếu xét nghiệm
Luận văn sử dụng Internet để tìm kiếm dữ liệu dữ liệu ảnh chụp phiếu xét nghiệm covid19 Sau quá trình tìm kiếm và lựa chọn dữ liệu, luận văn thấy rằng dữ liệu ảnh chụp phiếu xét nghiệm bao gồm những đối tượng sau đây cần chú trọng để lưu :
- Số phiếu là mã phiếu xét nghiệm
- Tên chẩn đoán phiếu thường là “Yêu cầu xét nghiệm SARS Covid19”
- Phương pháp xét nghiệm “PCR-REALTIME”
- Kết quả phân loại “âm tính” hoặc “dương tính”
Trang 3037
Hình 3.2 Phiếu xét nghiệm covid âm tính
Hình 3.3 Phiếu xét nghiệm covid dương tính
Hình 3.4 Tập dữ liệu thu thập
Dữ liệu được thu thập sẽ được dán nhẵn bằng công cụ LabelImg: gồm 4 đối tượng
- Id (mã định danh)
- Method (phương pháp xét nghiệm)
- Target_name (yêu cầu xét nghiệm)
- Result (kết quả)
Trang 3138 Hình 3.5 Sử dụng labelimg dán nhẵn
Hình 3.6 Kết quả file ảnh đã dán nhẵn trong labelimg
Trang 3239 Hình 3.7 Các đối tượng được dáng nhẵn
Hình 3.8 Kết quả file txt dán nhẵn 1