Giới thi u khái quát thu t toán ệ ậ
You only look once (YOLO) là một mô hình CNN để detect object mà một ưu điểm n i trổ ội là nhanh hơn nhiều so với những mô hình cũ. Thậm chí có th ch y ể ạ tốt trên những IOT device như raspberry pi. Đầu vào mô hình là mộ ứt b c ảnh, đối với bài toán object detection, ta không chỉ phải phân loại được object trên b c nh ứ ả mà còn phải xác định vị được vị trí của đ i tư ng đó. Object Detection có khá ố ợ nhi u ề ứng dụng, ví dụ như hệ ố th ng theo dõi người dân, từ đó có thể giúp chính quyền xác đ nh đượị c t i phộ ạm lẫn trốn ở đó hay không, hoặc hệ thống xe tự lái, cũng phải xác đ nh đưị ợc người đi đường ởđâu từ đó đưa ra quy t đế ịnh di chuy n ể tiếp theo.
Hình 4. K21 ết quảnhận dạng các đ i tưố ợng trong khung hình
Có một số hướng ti p cế ận để gi i quyếả t vấn đ , đề ồng thời m i l n chỗ ầ ạy tốn rất nhiều th i gian. Vì v y taờ ậ s ẽ liệt kê các ý tưởng để gi i quy t bài toàn object ả ế detection.
Chia ảnh thành nhiều box, mỗi box các bạn sẽdetect object trong box đó. Vị trí của object chính là tạo độ của box đó.
Thay vì chia thành t ng box, ừ ta s s dẽ ử ụng một thuật toán để lựa chọn những region ứng viên (ví d như là thuậụ t toán Selective Search), các vùng ng viên này các bạn ứ có thể ởtư ng như là những vùng liên thông với nhau trên kênh màu RGB, sau đó
với mỗi vùng ứng viên này, ta dùng model để phân lo i object. có m t sạ ta ộ ố mô hình xây d ng theo kiự ểu này như RCNN, Fast RCNN
Rất rõ ràng, như c điợ ểm của các phương pháp trên là tốn rất nhiều tài nguyên để tính toán cho mội vùng trên một bức ảnh, và do đó không thể ch y realtime trên ạ các thi t bế ị ế y u.
Tổng quát mô hình của thu t toán ậ
Một trong nhưng ưu đi m mà YOLO đem l i đó là ch ử ụng thông tin toàn bộ ể ạ ỉ s d bức ảnh một lần và dự đoán toàn bộ object box chứa các đ i tư ng, mô hình được ố ợ xây d ng theo kiự ểu end- -to end nên được huấn luyện hoàn toàn bằng gradient descent. Sau đây, tôi sẽ trình bày chi ti t v ế ềmô hình YOLO
Grid System
Ảnh được chia thành ma tr n ô vuông 7x7, m i ô vuông bao gậ ỗ ồm một t p các thông ậ tin mà mô hình ph i dả ữ đoán.
Đối tượng duy nhất mà ô vuông đó chứa. Tâm của đ i tưố ợng cần xác định n m ằ trong ô vuông nào thì ô vuông đó chứa đ i tư ng đó. Ví dố ợ ụ tâm c a chai cocacola ủ nằm trong ô vuông màu xanh, do đó mô hình phả ựi d đoán được nhãn c a ô vuông ủ đó là chai nư c. Lưu ý, cớ ho dù phần ảnh của chai coca có nằm ở ô vuông khác mà tâm không thuộc ô vuông đó thì vẫn không tính là ch a chai coca, ngoài ra, n u có ứ ế nhiều tâm nằm trong m t ô vuông thì ộ ta vẫn chỉ gán một nhãn cho ô vuông đó thôi. Chính ràng buộc mỗi ô vuông chỉ chứa mộ ốt đ i tư ng là như c điợ ợ ểm của mô hình này. Nó làm cho ta không th detect nh ng object có tể ữ ầm nằm cùng một ô vuông. Tuy nhiên ta có thể tăng grid size từ 7x7 lên kích thướ ớc l n hơn để có th detect ể được nhiều object hơn. Ngoài ra, kích thước c a ủ ảnh đầu vào phải là b i s c a ộ ố ủ grid size.
Hình 4. 22Xác định tâm của bounding box thuộc đ i tưố ợng
Mỗi ô vuông chịu trách nhiệm dự đoán 2 boundary box của đ i tưố ợng. M i ỗ boundary box dữđoán có chứa object hay không và thông tin v trí cị ủa boundary box gồm trung tâm boundary box của đ i tưố ợng và chiều dài, rộng của boundary box đó. Ví vụ ô vuông màu xanh cần dự đoán 2 boundary box chứa chai coca như hình minh họa ở dưới. Một điều cần lưu ý, lúc cài đặt ta không dự đoán giá trị pixel mà cần phải chuẩn hóa kích thước ảnh v đoạn từ [0-ề 1] và dự đoán độ lệch của tâm đối tư ng đợ ến box chứa đ i tư ng đó. Ví dố ợ ụ, ta thay vì d đoán vữ ị trí pixel c a ủ điểm màu trắng, thì c n dự ầ đoán độ ệ l ch a, b trong ô vuông chứa tâm object.
Hình 4. D 23 ự đoán độ ệ l ch c a 2 box ch a object ủ ứ
Tổng hợp lại, với mỗi ô vuông ta cần dữ đoán các thông tin sau: Ô vuông có chứa đ i tưố ợng nào hay không?
D ự đoán độ ệch 2 box chứ l a object so v i ô vuông hiện tại ớ Lớp của object đó
Như vậy v i m i ô vuông ớ ỗ ta cần dữ đoán một vector có (nbox+4*nbox+nclass) chiều. Ví dụ, ta cần dự đoán 2 box, và 3 l p đớ ối với mỗi ô vuông thì chúng sẽ có một ma trận 3 chiều 7x7x13 chứa toàn b thông tin c n thiết. ộ ầ
CNN cho YOLO object detection:
Ta đã cần biết phải dự đoán nh ng thông tin nào đữ ối với mỗi ô vuông, điều quan trọng tiếp theo là xây dựng một mô hình CNN có cho ra ouput với shape phù hợp theo yêu cầu của ta, tức là gridsize x gridsize x (nbox+4*nbox+nclass). Ví dụ ớ v i gridsize là 7x7 là mỗi ô vuông dự đoán 2 boxes, và có 3 loại object tất thì tac ả phả ầi c n output có shape 7x7x13 từ mô hình CNN
Hình 4. 24 Quá trình hoạ ột đ ng của mô hình CNN vớ ối đ i tư ng đã cho ợ [7]
YOLO sử ụ d ng linear regression để ự d đoán các thông tin ở ỗ m i ô vuông. Do đó, ở layer cu i cùng ta s không s d ng b t kì hàm kích ho t nào c . V i ố ẽ ử ụ ấ ạ ả ớ ảnh đầu vào là 448x448, mô hình CNN có 6 t ng max pooling vầ ới size 2x2 sẽ ả gi m 64 lần kích thước ảnh xu ng còn 7x7 ở output đầố u ra. Đồng thời thay vì s d ng tầng full ử ụ connected ở các tầng cuối cùng, ta có th thay thể ế ằ b ng tầng 1x1 conv với 13 feature maps để output shape d dàng cho ra 7x7x13. ễ
Hàm lỗi Loss Function:
Ta đã định nghĩa được nh ng thông tin mà mô hình c n ph i d ữ ầ ả ựđoán, và kiến trúc của mô hình CNN. Bây giờ là lúc mà sẽ định nghĩa hàm lỗi.
YOLO sử ụ d ng hàm độ ỗ l i bình phương giữ ự d đoán và nhãn đểtính độ ỗ l i cho mô hình. Cụ ể ộ ỗ ổ th , đ l i t ng sẽ là tổng của 3 độ ỗ l i con sau:
Độ ỗ ủ l i c a vi c d đoán lo i nhãn c a object Classifycation lossệ ữ ạ ủ -
Độ ỗ l i c a d ủ ự đoán t o đạ ộ cũng như chiều dài, r ng c a boundary box - ộ ủ Localization loss
Độ ỗ ủ l i c a ô vuông có chứa object nào hay không - Confidence loss
Ta mong muốn hàm lỗi có chức năng sau. Trong quá trình huấn luyện, mô hình sẽ nhìn vào nh ng ô vuông có chữ ứa object. Tăng classification score l p đúng cớ ủa object đó lên. Sau đó, cũng nhìn vào ô vuông đó, tìm boundary box tốt nh t trong ấ 2 boxes được d ựđoán. Tăng localization score của boundary box đó lên, thay đổi thông tin boundary box để ầ g n đúng với nhãn. Đố ới v i nh ng ô vuông không chứa ữ object, gi m confidence score và sả ẽ không quan tâm đến classification score và localization score c a nhủ ững ô vuông này.
Tiếp theo, ta s ẽđi l n lưầ ợt vào chi ti t ý nế ghĩa c a các đủ ộ ỗ l i trên. a, Classification Loss
Ta chỉ tính classification loss cho những ô vuông đư c đánh nhãn là có object. ợ Classification loss t i nhạ ững ô vuông đó được tính bằng đỗ ỗ l i bình phương giữa nhãn được d ựđoán và nhãn đúng của nó.
(4.1) Trong đó: + obj i I
: bằng 1 nếu ô vuông đang xét có object ngược l i bạ ằng 0
+ p cˆ ( )i
: là xác suất có điều ki n c a lệ ủ ớp c tại ô vuông tương ứng mà mô hình d ự đoán
Hình 4. D 25 ự đoán box của đ i tưố ợng [7]
Ví dụ, trong hình minh họa ở trên, ta có 2 object t i ô vuông (dòng, cột) là (2,1) và ạ (3,4), ch a object là hình tam giác và hình tứ ức giác đ u. Đề ộ ỗ l i classification loss chỉ tính cho 2 object này mà ko quan tâm đến những ô vuông khác. Lúc cài đặt ta cần lưu ý phải nhân với một mask để triệt tiêu giá trị lỗi tại những ô vuông ko quan tâm.
b, Localization Loss:
Localization loss dùng để tính giá trị ỗ l i cho boundary box được d đoán bao gồm ự offset x, y và chi u dài, rề ộng so với nhãn chính xác c a ta. Các bủ ạn nên lưu ý rằng, ta không tính toán trực ti p giá tr lế ị ỗi này trên kích thước c a nh mà c n chu n ủ ả ầ ẩ dưới kính thước ảnh v ềđoạn [0-1] đố ớ ọi v i t a độđiểm tâm, và không dữđoán trực tiếp điểm tâm mà ph i dả ự đoán giá trị ệ l ch offset x,y so với ô vuông tương ứng. Việc chuẩn hóa kích thước ảnh và dự đoán offset làm cho mô hình nhanh hộ ụi t hơn so với vi c d đoán giá trệ ự ị ặ m c định.
(4.2) Độ lỗi localization loss được tính bằng tổng đỗ lỗi bình phương của offsetx, offsety và chi u dài, r ng trên t t cề ộ ấ ả các ô vuông có chứa object. T i mạ ỗi ô vuông đúng,
2 2 2 0 ˆ (p ( ) ( )) s obj classification i c class i i i L I c p c ∈ = = ∑ ∑ −
ta chọn 1 boundary box có IOU (Intersect over union) tốt nh t, rấ ồi sau đó tính độ lỗi theo các boundary box này. Theo hình mình họa trên ta có 4 boundary box tại ô vuông đúng có vi n màu đề ỏ, ta ch n 1 box tại mọ ỗi ô vuông để tính độ ỗ l i. Còn box xanh được b qua. ỏ
Localization loss là độ ỗ l i quan trọng nh t trong 3 loạ ộ ỗấ i đ l i trên. Do đó, ta cần đặt tr ng s ọ ốcao hơn cho độ ỗ l i này.
c, Confidence Loss:
Confidence loss thể ệ hi n độ ỗ l i giữa dự đoán boundary box đó chứa object so với nhãn thực tế ạ t i ô vuông đó. Độ ỗ l i này tính nên c nh ng ô vuông ch a object và ả ữ ứ không chứa object.
(4.3) Độ ỗ l i này là độ ỗ l i bình phường c a d ủ ựđoán boundary đó chứa object v i nhãn ớ thực tế ủ c a ô vuông tạ ị trí tương ng, ta lưu ý ri v ứ ằng, độ ỗ l i tại ô vuông mà nhãn chứa object quan trọng hơn là độ ỗ ạ l i t i ô vuông không chứa object, do đó ta c n ầ s dử ụng hệ ố lambda để s cân bằng điều này.
Tổng kết lại, tổng lỗi của ta sẽ ằng tổng củ b a 3 loạ ộ ỗi đ l i trên:
(4.4) D ự đoán lớp và tọa độboundary box sau quá trình training
Intersection over Union là chỉ ố s đánh giá được sử ụ d ng đểđo độ chính xác của Object detector trên tập dữ liệu cụ thể. Ta hay gặp chỉ ố s này trong các Object Detection Challenge, dạng như PASCAL VOC challenge.
Để áp dụng đư c IoU đợ ể đánh giá một object detector bất kì ta c n: ầ
Những ground-truth bounding box (bounding box đúng của đ i tưố ợng, ví dụ như bounding box của đ i tư ng đư c khoanh vùng và đánh nhãn bố ợ ợ ằng tay sử ụ d ng trong t p test.)ậ
Những predicted bounding boxđược model sinh ra.
Miễn là có hai tập bên trên, ta đều có thể ử ụ s d ng được IoU.
Ta chỉ ữ ạgi l i nh ng boundary box mà có chứữ a object nào đó. Để làm điều này, ta cần tính tích của xác xuất có điều kiện ô vuông thuộc về ớp i nhân với sác xuất ô l vuông đó chứa object, ch giữ ạỉ l i nh ng boundary box có giá tr này lữ ị ớn hơn ngưỡng nhấ ịt đ nh.
Mỗi object lại có thế có nhiều boundary box khác nhau do mô hình dự đoán. Để tìm boundary box tốt nh t các object, ta có thấ ể dùng thu t toán nonậ -maximal suppression để lo i nh ng boundary box giao nhau nhiạ ữ ều, t c là có IOU giứ ữ 2 boundary box lớn.
Để tính IOU gi a 2 box ta c n tính diữ ầ ện tích giao nhau giữa 2 box chia cho tổng diện tích của 2 box đó.
Dưới đây là ví dụ ự tr c quan v m t ground-truth bounding box và một predicted ề ộ bounding box.
Hình 4. M26 ột ví dụ ề v phát hiện biển báo Stop từ hình nhả [7]
Predicted bounding box được v bẽ ằng màu đ , trong khi đó Groundỏ -truth được vẽ bằng màu xanh lá. Mục tiêu của ta là tính toán Intersection over Union giữa hai bounding box này.
Công thức tính toán Inersection over Union có thể được đ nh nghĩa thông qua:ị
Hình 4. 27Công thức tính t l IoU [7] ỉ ệ
Nhìn vào công thức này, bạn sẽ thấy IoU đơn giản là m t tộ ỉ ệ l . Ở ử ố t s ta tính toán area of overlap - diện tính phần chồng lên nhau giữa predicted bounding box và ground-truth bounding box. Phần m u sẫ ố là area of union - diện tích phần h p - ợ hay đơn giản hơn là diện tích mà hai bounding box này đang chiếm. Chia di n tích ệ phần ch ng (giao) cho di n tích phồ ệ ần h p sợ ẽ thu được giá trị mà ta mong mu n ố - Intersection over Union (IoU).
Như đã nói ở trên, ground-truth bounding box được "khoanh vùng và đánh nhãn bằng tay". Khi training một object detector, bạn cần một tập dữliệu. Tập dữ liệu này được chia thành (ít nh t) hai nhóm: ấ
Một training set sử ụ d ng đểhuấn luyện object detector.
C ả training và testing set đều bao gồm: Bản thân các hình ảnh.
Các bounding box tương ứng của m i object trong nh. Bounding box này chỉ đơn ỗ ả giản là các to (x, y) c a hình ch ạ độ ủ ữnhật bao xung quanh object trong ảnh.
Những bounding box trong training và testing set được khoanh vùng và đánh nhãn bằng tay, vậy nên đó là lý do ta gọi là ground-truth.
Mục đích cuối cùng là từcác hỉnh ảnh training và bounding box, xây dựng nên object detector, và sau đó đánh giá performance trên testing set.
N ếu có điểm sốIoU > 0.5, prediction sẽ được coi là một "good" prediction. Nếu trư c đây tớ ừng thực hiện bất kì project machine learning nào, đặc biệt là classification, ch c h n ta sắ ẳ ẽ thường phải predict nh ng class label tữ ừ output của model là chính xác hay không chính xác.
Các binary classification kiểu này có thể tính toán độ chính xác tương đối đơn giản, tuy nhiên đối v i bài toán object detection l i là m t câu chuyớ ạ ộ ện khác. Trong thực tế, các toạ độ (x, y) của predict bounding box hầu như không th nàoể chính xác hoàn toàn với các toạ độ ủa ground truth bounding box. Chính c - vì thế, ta cần đ nh nghĩa m t đ i lư ng đánh giá có thị ộ ạ ợ ể khen thưởng những predicted bounding box trùng kh p nhiớ ều với ground-truth:
Hình 4. 28Các đánh giá tỉ ệ l IoU [7]
Như ta có thể thấy, predicted bounding box trùng khớp nhi u về ới ground-truth có điểm s ốcao hơn những box ít trùng. Điều này khiến cho Intersection over Union trở thành một đ i lưạ ợng tuyệt vời đ đánh giá các object detector.ể Ta không cần quan tâm đến sự trùng khớp chính xác c a các toủ ạ độ (x,y), nhưng vẫn muốn đảm bảo các predicted bounding box càng gần với ground-truth càng tốt - IoU có thể tính đến điều này.