Đặt vấn đề Chƣơng 2: Cơ sở lý thuyết Chƣơng 3: Các phƣơng pháp thử nghiệm Chƣơng 4: Kết quả thử nghiệm và đánh giá 6 CHƢƠNG 2. CƠ SỞ LÝ THUYẾT Chƣơng 2 sẽ trình bày lần lƣợt các lý thuyết sử dụng trong từng bài toán nhỏ. Bao gồm các khái niệm, công thức, cấu trúc mô hình học sâu đƣợc sử dụng trong nghiên cứu và thử nghiệm. Do nghiên cứu đã đƣợc chia làm ba bài toán nhỏ nên các lý thuyết cũng sẽ đƣợc trình bày lần lƣợt phục vụ cho ba bài toán đó.1 Cơ sở lý thuyết cho bài toán phát hiện chữ viết.1 Bài toán phát hiện đối tượng Computer Vision – là một lĩnh vực làm cho máy tính có thể nhìn đƣợc nhƣ con ngƣời, nhìn ở đây có nghĩa là hiểu đƣợc hình ảnh, video từ đó có thể làm cơ sở để trả lời các câu hỏi nhƣ: có gì trong ảnh, con mèo ở đâu trong bức ảnh, trong ảnh có bao nhiêu con chó, con mèo, con mèo có đang bắt chuột không?… Trong xử lý ảnh có bốn bài toán khác nhau bao gồm: phân loại hình ảnh (Image classification), Định vị vật thể (Classification with Localization), Phát hiện đối tƣợng (Object Detection), Phân đoạn đối tƣợng (Instance Segmentation).
Nhận dạng đối tƣợng là một thuật ngữ chung để mô tả một tập hợp các nhiệm vụ thị giác máy tính có liên quan liên quan đến việc xác định các đối tƣợng trong ảnh kỷ thuật số. 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ị vật thể đề cập đến việc 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 xung quanh chú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.
Chúng ta có thể phân biệt giữa ba nhiệm vụ thị giác máy tính cơ bản trên thông qua input và output của chúng nhƣ sau: ● Phân loại hình ảnh: Dự đoán nhãn của một đối tƣợng trong một hình ảnh. o Input: Một hình ảnh với một đối tƣợng, chẳng hạn nhƣ một bức ảnh. o Output: Nhãn lớp (ví dụ: 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.
7 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. 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. Một số định nghĩa khác cũng rất quan trọng trong computer vision là phân đoạn đối tƣợng (object segmentation), trong đó các đối tƣợng đƣợc nhận dạng bằng cách làm nổi bật các pixel cụ thể của đối tƣợng thay vì bounding box. Bên dƣới là sơ đồ tổng hợp các tác vụ của computer vision.1 Sơ đồ các mối liên hệ giữa các tác vụ trong computer vision Khác với bài toán Classification with Localization xác định vị trí của một đối tƣợng trong hình, bài toán detection hay Object Detection sẽ xác định vị trí tất cả các đối tƣợng có trong bức hình. Theo đó Input của bài toán này là ảnh và danh sách các đối tƣợng quan tâm.
Đầu ra của bài toán là các vị trí của các đối tƣợng kèm theo nhãn của đối tƣợng đó.2 So sánh đầu ra của bài toán classification với localization và detection[46] Object Detection đã có rất nhiều ứng dụng khác nhau: Image Annotation (Chú thích hình ảnh), Face Detection (Phát hiện khuôn mặt), License Plate Identification (Nhận diện biển số xe), People Counting (Đếm số lƣợng ngƣời),… Nhƣ vậy xét trên một khía cạnh nào đó ta có thể nhận xét rằng bài toán Classification là tiền đề của bài toán Localization và thông tin của bài toán Localization cũng rất hữu ích cho bài toán Detection. Để phân biệt các bài toán khác nhau ta có thể xác định dựa trên việc kết quả của bài toán đang trả lời các câu hỏi gì.3 Phân biết bài toán classification, object localization, object detection [46] Với bài toán phát hiện đối tƣợng, ngày nay có nhiều phƣơng pháp học sâu (deep learning) đƣợc thiết kế để giải quyết bài toán. Lịch sử hình thành, phát triển và đặc điểm cấu trúc của các thuật toán object detection bao gồm 2 nhóm chính: ● Họ các mô hình R-CNN (Region-Based Convolutional Neural Networks) giải quyết các nhiệm vụ định vị vật thể và nhận diện vật thể. 9 ● Họ các mô hình YoLo (You Only Look Once), là một nhóm kỷ thuật thứ hai để nhận dạng đối tƣợng đƣợc thiết kế để nhận diện vật thể real time.2 Thuật toán faster R-CNN trong phát hiện đối tượng 2.1 Thuật toán R-CNN R-CNN đƣợc giới thiệu lần đầu vào 2014 bởi Ross Girshick và các cộng sự ở UC Berkeley một trong những trung tâm nghiên cứu AI hàng đầu thế giới trong bài báo Rich feature hierarchies for accurate object detection and semantic segmentation.
Nó có thể là một trong những ứng dụng nền móng đầu tiên của mạng nơ-ron tích chập đối với vấn đề định vị, phát hiện và phân đoạn đối tƣợng. Cách tiếp cận đã đƣợc chứng minh trên các bộ dữ liệu điểm chuẩn, đạt đƣợc kết quả tốt nhất trên bộ dữ liệu VOC-2012[15] và bộ dữ liệu phát hiện đối tƣợng ILSVRC-2013[16] gồm 200 lớp. Kiến trúc của R-CNN gồm 3 thành phần đó là: ● Vùng đề xuất hình ảnh (Region proposal): Có tác dụng tạo và trích xuất các vùng đề xuất chứa vật thể đƣợc bao bởi các bounding box. ● Trích lọc đặc trƣng (Feature Extractor): Trích xuất các đặc trƣng giúp nhận diện hình ảnh từ các region proposal thông qua các mạng deep convolutional neural network.
● Phân loại (classifier): Dựa vào input là các features ở phần trƣớc để phân loại hình ảnh chứa trong region proposal về đúng nhãn. Kiến trúc của mô hình đƣợc mô tả trong biểu đồ bên dƣới: Hình 2.4 Sơ đồ pipeline xử lý trong mô hình mạng R-CNN. Tiếp theo đó áp dụng một mạng deep CNN để tính 10 toán các feature tại bƣớc ba và trả ra kết quả dự báo nhãn ở bƣớc thứ tƣ nhƣ một tác vụ phân loại ảnh thông thƣờng. Một kỷ thuật đƣợc sử dụng để đề xuất các region proposal hoặc các bounding box chứa các đối tƣợng tiềm năng trong hình ảnh đƣợc gọi là “selective search”.
Thuật toán Selective search có đầu vào là ảnh màu, đầu ra sẽ là khoảng 2000 region proposal (bounding box) mà có khả năng chứa các đối tƣợng. Đầu tiên ảnh đƣợc segment qua thuật toán Graph Based Image Segmentation, dựa vào màu sắc của từng pixel mà gắn nhãn các pixel đó chung một đối tƣợng, tô màu giống nhau cho các pixel có cùng giá trị.5 Đầu ra sau khi thực hiện Graph Based Image Segmentation. [18] Nhận xét: Ta không thể dùng mỗi màu trong output để làm một region proposal đƣợc vì: ● Mỗi đối tƣợng trong ảnh có thể chứa nhiều hơn một màu vì một đối tƣợng thƣờng có nhiều bộ phận với màu sắc khác nhau. ● Các đối tƣợng bị che mất một phần.
Vì vậy cần nhóm các vùng màu với nhau để làm region proposal. Tiếp theo, các vùng màu đƣợc nhóm với nhau dựa trên độ tƣơng đồng về màu sắc, hƣớng gradient, kích thƣớc,…Cuối cùng các region proposal đƣợc xác định dựa trên các nhóm vùng màu. Vấn đề với R-CNN là có khá nhiều hạn chế nhƣ sau: ● Training qua một pipeline gồm nhiều bƣớc: Pipeline liên quan đến việc chuẩn bị và vận hành ba mô hình riêng biệt. 11 ● Chi phí training tốn kém về số lƣợng bounding box và thời gian huấn luyện: Mô hình huấn luyện một mạng CNN học sâu trên rất nhiều region proposal cho mỗi hình ảnh nên rất chậm.
● Phát hiện đối tƣợng chậm: Tốc độ xử lý không thể đảm bảo realtime.2 Thuật toán Fast R-CNN Fast R-CNN ra đời để giải quyết đƣợc một số hạn chế của R-CNN là cải thiện tốc độ. Tƣơng tự nhƣ R-CNN thì Fast R-CNN vẫn dùng selective search để lấy ra các region proposal. Tuy nhiên là nó không tách 2000 region proposal ra khỏi ảnh và thực hiện bài toán image classification cho mỗi ảnh. Fast R-CNN cho cả bức ảnh vào ConvNet (một vài convolutional layer + max pooling layer) để tạo ra convolutional feature map.
Sau đó các vùng region proposal đƣợc lấy ra tƣơng ứng từ convolutional feature map. Tiếp đó đƣợc Flatten và thêm hai lớp Fully connected layer (FCs) để dự đoán lớp của region proposal và giá trị offset values của bounding box.6 Kiến trúc single model Fast R-CNN. [19] Tuy nhiên là kích thƣớc của các region proposal khác nhau nên khi Flatten sẽ ra các vector có kích thƣớc khác nhau nên không thể áp dụng neural network đƣợc nên cần resize các region proposal về cùng kích thƣớc trƣớc khi dùng transfer learning. Tuy nhiên ở feature map không thể resize đƣợc, nên phải chuyển các region proposal trong feature map về cùng kích thƣớc.
Region of Interest (ROI) pooling ra đời để thực hiện nhiệm vụ đó. Region of Interest (ROI) pooling 12 ROI pooling là một dạng của pooling layer. Điểm khác so với max pooling hay average pooling là bất kể kích thƣớc của tensor input, ROI pooling luôn cho ra output có kích thƣớc cố định đƣợc định nghĩa trƣớc. Ta kí hiệu a/b là phần nguyên của a khi chia cho b và a%b là phần dƣ của a khi chia cho b.
Gọi input của ROI pooling kích thƣớc m*n và output có kích thƣớc h*k (thông thƣờng h, k nhỏ, thƣờng là 3*3 hay 5*5 hoặc 7*7). ● Chia chiều rộng thành h phần, (h-1) phần có kích thƣớc m/h, phần cuối có kích thƣớc m/h + m%h. ● Tƣơng tự chia chiều dài thành k phần, (k-1) phần có kích thƣớc n/k, phần cuối có kích thƣớc n/k + n%k. Ví dụ m=n=10, h=k=3, do m/h = 3 và m%h = 1, nên ta sẽ chia chiều rộng thành 3 phần, 2 phần có kích thƣớc 3, và 1 phần có kích thƣớc 4.
Sau đó với mỗi khối đƣợc tạo ra bằng các đƣờng đỏ và cạnh, thực hiện max pooling lấy ra 1 giá trị.7 Thực hiện ROI pooling 13 Đánh giá Fast R-CNN Hình 2.8 So sánh thời train và test giữa R-CNN và Fast R-CNN[20] Fast R-CNN thực hiện feature map với cả ảnh sau đó với lấy các region proposal ra từ feature map, còn R-CNN thực hiện tách các region proposal ra rồi mới thực hiện CNN trên từng region proposal. Do đó Fast R-CNN nhanh hơn đáng kể nhờ tối ƣu việc tính toán. Tuy nhiên với thời gian testing của Fast R-CNN thì thời gian tính region proposal rất lâu và điều đó sẽ làm chậm thuật toán.