1 . Mở đầu ~

Yolo hay You Only Look Once là một mạng Noron Object Detection được dùng nhiều vào thời điểm hiện tại. Với danh xưng có thể nói là “ Chúa tể nhận diện Realtime”.
Vậy tại sao và với ưu điểm nổi bật nào mà Yolo lại được đánh giá cao như vậy? Với có phải chăng chúng ta chỉ có mỗi Yolo là “chúa tể” trong Computer Vision. Hãy cùng tìm hiểu nhé !!

2 . Thế giới có gì để thực thi “Object Detection “ ?

Object Detection là môt lĩnh vực của Computer Vision, tuy nhiên nó khác với Classification tức nhiệm vụ chỉ là phân loại được hình ảnh đầu vào theo thành objects khác nhau. Còn đối với Object Detection thì ngoài phân loại các objects từ image input, ta còn nhận biết được vị trí chính xác của từng objects đó trên hình ảnh. Đây sẽ là bước phảt triển mới để có thể lấy dư liệu tốt hơn từ hình ảnh từ đó giúp giải quyết nhiều bài toán hay và thực thế ( Máy chấm công, Máy quét khoảng cách chống dịch covid, Xe tự hành, … ).
Tính đến hiện tại, ta có thể chia có nhóm thuật toán Object detection theo 2 nhóm chính:
1. Họ các mô hình RCNN ( RCNN, Fast RCNN, Faster - RCNN,… ) : điểm nổi bật là được sử dụng với độ chính xác cao, có yêu cầu cao về phân loại, vị trí của đối tượng, vật thể. Điểm nổi bật có thể kể đến là hầu hết các thuật toán này đều đem lại độ chính xác cực kì cao, bù lại cho khả năng “realtime” thấp nên được sử dụng cho các bài toán không cần hoặc không yêu cầu lớn về thời gian nhận diện hình ảnh, vật thể.
2. Nhóm các mô hình theo họ Yolo: về nhóm thuật toán này là khả năng nhận diện và xử lí nhanh, hầu hết nhóm này được đánh giá cao về khả năng “realtime” trong nhận diện vật thể. Có thể xem như đây là nhóm thuật toán có ứng dụng cao trong các ứng dụng cần thời gian xử lí nhanh với yêu cầu độ chính xác ở mức “tương đối”. Tuy vậy, hiện nay các nhóm tác giả đã liên tục ra các phiên bản nâng cấp của nhóm thuật toán để cải thiện về độ chính xác và tốc độ nhân diện.
Vậy để có được một góc nhìn cụ thể hơn, chúng ta sẽ cùng đi tìm hiểu về cấu trúc bên trong của những phiên bản Yolo sơ khai nhất. Để xem thử những gì được thể hiện thông qua Yolo nhé!

3. Architecture YOLOv1

Ta cùng nhau đi từng phần được xem là đặc trưng nổi bật nhất mà Yolo đem lại cho người dùng nhé !

3.1 Bounding box

Với input của mạng Yolo là một hình ảnh, Yolo sẽ chia hình ảnh thành các ô lướt có kích thước SxS ( thường S = 3,5,7) sau đó ta nhận lại được một vector bouding box và dự đoán của các class có trong ảnh đó. Nói cụ thể là một vector có 5 thành phần lần lượt là (x,y,w,h,p)
Lần lượt : x,y : là toạ độ tâm của bounding box; w,h: là chiều rộng (weight) và chiều cao ( height) của bounding box; p ( prediction) được định nghĩa là:
Thông thường các toạ độ này sẽ được chuẩn hoá về các giá trị nằm trong khoảng [0,1] thông qua tỉ lệ với kích thước với size của ảnh đầu vào. Dưới đây là một ví dụ :

3.2 IoU là gì ?

IoU hay Intersection over Union là một phương pháp để đo độ chính xác của một bộ nhận diện đối tượng. Đây là một chỉ số mà ta sẽ thường xuyên gặp ở nhiều thuật toán khác nhau có thể kể ra như : HOG và Linear SVM và các mạng CNN trong đó có cả Yolo.
Một lưu ý là mặc dù đây chỉ một chỉ số đánh giá đơn giản nhưng hầu như các thuật toán nào có kêt quả đầu ra là các bounding box đề sử dụng IoU.
Dưới đây là cách tính của IoU
Ta có thể thấy cơ bản IoU là một tỉ lệ của 2 đại lượng là “ Area of Overlap “ và “ Area of Union”. Cụ thể Area of Overlap là diện tích phần giao nhau giữa predicted bounding box với grouth-truth bouding box , còn Area of Union là diện tích phần hợp giữa predicted bounding box với grouth-truth bounding box. Những bounding box được đánh nhãn bằng tay trong tập traing set và test set.
Nếu IoU > 0.5 thì p (prediction) được đánh giá là tốt.
Tham khảo thêm tại đây

3.3 Network

Ta thấy cấu trúc của mạng Yolo còn khá đơn giản, chỉ các các lớp CNN chồng lên nhau để giảm kích thước của ảnh, cuối mỗi Conv Layer là một lớp Maxpooling có nhiệm vụ giảm số lượng noron có trong mạng, để đến cuối cùng ta nhận được một ma trận 7x7x30 ( như hình minh hoạ), điều này xả ra khi ban đầu ta chọn ma trận chia nhỏ ảnh có kích thước 7x7. (Xem lại ở 3.1)
Sẽ có một số lưu ý mà ta cần quan tâm khi dùng Yolo v1 này:
1. Phát hiện được tối đa 49 đối tượng( nếu thuật toán chia ảnh thành 7×7).
2. Nếu một ô lưới chứa trọng tâm của nhiều đối tượng, thì model cũng chỉ phát hiện được một đối tượng có độ chính xác cao nhất.
3. Nếu vật thể nào đó quá lớn so với bức ảnh, đồng nghĩa với việc vật thể đó sẽ có nhiều trọng tâm ở nhiều ô lưới khác nhau. Vậy nên vật thể đó sẽ được phát hiện nhiều lần.

3.4 Loss Function

YOLO sử dụng hàm “tổng bình phương lỗi” (sum-squared error. Viết tắt là SSE). “Lỗi” ở đây tức là lấy giá trị của ground truth box( nhãn gán bằng tay) trừ đi bounding box prediction ( BB mà model dự đoán), sau đó bình phương giá trị này lên. Công thức cụ thể như sau:
Ở đây, Yolo đã dùng đến 3 hàm loss function để tính Loss function tổng ( chính ) dùng cho model.
Localization loss
Confidence loss
Classification loss
Với các thông số (x,y,w,h,C) là giá trị của ground truth box, còn các giá trị có dấu mũ là của bounding box mà model dự đoán.

3.5 Non Max supperession

là một kĩ thuật làm giảm cái bounding box được dự đoán chồng tâm lên nhau. Hình ảnh bên dưới sẽ là ví dụ cho bạn dễ hiểu vấn đề đang được để cập
Ta có thể nhận ra ngay với những object lớn thì các bounding box xác định tâm tức là x,y sẽ bị rơi vào nhiều ô lưới ( grid S x S) dẫn đến tình trạng các Bounding box đè chồng lên nhau. Và NMS đã được triển khai như sau để loại bỏ tình trạng trên.
1. Loại bỏ những đối tượng có confidence C < C-threshold ( ngưỡng này chúng ta có thể re setup).
2. Sắp xếp những đối tượng có confidence C theo thứ tự giảm dần.
3. Chọn bounding box của những vật thể có confidence C cao nhất và xuất ra kết quả.
4. Loại bỏ những bounding box có IOU < IOU-threshold (ngưỡng này chúng ta có thể re setup)
5. Quay lại bước 3 cho tới khi mọi kết quả được kiểm tra.

4. Kết Luận

Với Yolo v1 có thể xem là một bước đột phá mới, và cũng là nền tảng để phát triển các version tiếp theo của Yolo với đặc trưng cũng là ưu điểm là tốc độ xử lí ảnh “realtime”.
Tuy vậy, vì là phiên bản đầu tiên nên Yolo V1 cẫn còn nhiều hạn chế như:
Khả năng nhận diện các object nằm gần nhau, cũng như object có kích thước nhỏ còn hạn chế
Loss function không có sự đánh giá riêng biệt giữa error của bounding box kích thước nhỏ so với error của bounding box kích thước lớn. Việc coi chúng như cùng loại và tổng hợp lại làm ảnh hưởng đến độ chính xác toàn cục của mạng. Error nhỏ trên box lớn nhìn chung ít tác hại, nhưng error nhỏ với box rất nhỏ sẽ đặc biệt ảnh hưởng đến giá trị IoU.
Đó cũng là tiền đề để phát triển lên các phiên bản khác của Yolo.

5. Tham khảo

-----------------------------------
Tác giả: Admin_Croz