YOLO YOU ONLY LOOK ONCElà một trong những thuật toán nhận diện vật thể nhanh nhất thời điểm hiện tại. Mặc dù không phải là phương pháp có độ chính xác cao nhất tuy nhiên Yolo vẫn là được ứng dụng rất nhiều trong những dự án thực tế khi mà độ chính xác không phải là ưu tiên hàng đầu. YOLO chia bức ảnh thành SxS grid, boundary box có 5 phần tử: x, y, w, h, confidence score. YOLO có 4 phiên bản v1, v2, v3, v4. YOLO v1:sử dụng framework Darknet được train trên tập ImageNet1000. Nó không thể tìm thấy các object nhỏ nếu chúng xuất hiện dưới dạng một cụm. Phiên bản này gặp khó khăn trong việc phát hiện các đối tượng nếu hình ảnh có kích thước khác với hình ảnh được train. YOLO v2đặt tên là YOLO9000đã được Joseph Redmon và Ali Farhadi công bố vào cuối năm 2016. Cải tiến chính của phiên bản này tốt hơn, nhanh hơn, tiên tiến hơn để bắt kịp faster RCNN (phương pháp sử dụng Region Proposal Network), xử lý được những vấn đề gặp phải của YOLO v1. Sự thay đổi của YOLO v2 với YOLO v1:
Tóm tắt YOLO - YOU ONLY LOOK ONCE thuật toán nhận diện vật thể nhanh thời điểm Mặc dù phương pháp có độ xác cao nhiên Yolo ứng dụng nhiều dự án thực tế mà độ xác khơng phải ưu tiên hàng đầu YOLO chia ảnh thành SxS grid, boundary box có phần tử: x, y, w, h, confidence score YOLO có phiên v1, v2, v3, v4 YOLO v1: sử dụng framework Darknet train tập ImageNet-1000 Nó khơng thể tìm thấy object nhỏ chúng xuất dạng cụm Phiên gặp khó khăn việc phát đối tượng hình ảnh có kích thước khác với hình ảnh train YOLO v2 đặt tên YOLO9000 Joseph Redmon Ali Farhadi cơng bố vào cuối năm 2016 Cải tiến phiên tốt hơn, nhanh hơn, tiên tiến để bắt kịp faster R-CNN (phương pháp sử dụng Region Proposal Network), xử lý vấn đề gặp phải YOLO v1 Sự thay đổi YOLO v2 với YOLO v1: - Batch Normalization: giảm thay đổi giá trị unit hidden layer, cải thiện tính ổn định neural network - Higher Resolution Classifier: Kích thước đầu vào YOLO v2 tăng từ 224*224 lên 448*448 - Anchor boxes: dự đoán bounding box thiết kế cho tập liệu cho sử dụng clustering - Fine-Grained Features: YOLO v2 chia ảnh thành 13*13 grid cells, phát object nhỏ hơn, đồng thời hiệu với object lớn - Multi-Scale Training: YOLO v1 có điểm yếu phát đối tượng với kích cỡ đầu vào khác Điều giải YOLO v2, train với kích thước ảnh ngẫu nhiên khoảng 320*320 đến 608*608 - Darknet 19: YOLO v2 sử dụng Darknet 19 với 19 convolutional layers, max pooling layers softmax layer YOLO v3: phát hiện, phân loại xác đối tượng, xử lý thời gian thực Cải tiến YOLO v3: - Bounding Box Predictions: cung cấp score bounding boxes sử dụng logistic regression - Class Predictions: sử dụng logistic classifiers cho class thay softmax - Feature Pyramid Networks(FPN) - Darknet-53 Yolov4 -YOLOv4 bao gồm: Backbone: CSPDarknet53 Neck: SPP [25], PAN Head: YOLOv3 -YOLOv4 sử dụng: Bag of Freebies (BoF) cho backbone: CutMix Mosaic data augmentation, DropBlock regularization, Class label smoothing Bag of Specials (BoS) cho backbone: Mish activation, Cross-stage partial connections (CSP), Multi-input weighted residual connections (MiWRC) Bag of Freebies (BoF) cho detector: 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 Bag of Specials (BoS) cho detector: Mish activation, SPP-block, SAM-block, PAN path-aggregation block, DIoU-NMS TÌM HIỂU VỀ YOLO Giới thiệu Yolo You only look once (YOLO) mơ hình CNN để detect object mà ưu điểm trội nhanh nhiều so với mơ hình cũ Thậm chí chạy tốt IOT device raspberry pi Sự phát triển mạng neural dần làm thực hoá khái niệm thường gọi là Computer Vision - Thị giác máy tính Tuy nhiên, thời điểm ban đầu, việc sử dụng Neural Network gặp nhiều khó khăn Khi bạn muốn phát object ảnh, sau đánh nhãn cho object đó, phương pháp lúc giờ quá chậm để phục vụ real-time, đòi hỏi thiết bị mạnh mẽ, đắt đỏ YOLO đời YOLO sau YOLOv2 có khả gán nhãn cho tồn object khung hình với operation Có thể nói YOLO xây dựng hướng tiếp cận giúp đưa Object detection thực khả thi sống Những Region Proposal Classification network khác (như Fast RCNN) thực việc phát đề xuất khu vực (Region proposal), sau phải thực dự đoán nhiều lần cho region khác nhau, scale khác ảnh YOLO có cách tiếp cận hồn tồn khác, sử dụng neural network cho toàn ảnh Kiến trúc YOLO giống với FCNN (Full Convolution Neural Network) hơn, hình ảnh (kích thước $n \times n$) truyền qua FCNN lần nhất, sau trả ouput $m \times m$ prediction Hình ảnh đầu vào chia thành ô lưới (grid cell), dự đoán bounding box xác suất phân loại cho grid cell Các bounding box đánh trọng số theo xác suất dự đốn Hình 1:Mơ hình nhận diện Yolov3 Mơ hình có nhiều điểm vượt trội so với hệ thống classifier-based Tại test phase, YOLO "nhìn" tồn ảnh (thay phần ảnh), prediction cung cấp thơng tin nội dung toàn cục ảnh Ngoài ra, dự đoán đưa với mạng đánh giá nhất, thay hàng nghìn R- CNN Vì tốc độ YOLO cực nhanh, nhanh gấp hàng nghìn lần so với RCNN, hàng trăm lần so với Fast RCNN Yolo v1 2.1 Mô hình thuật tốn Yolo Một ưu điểm mà YOLO đem lại sử dụng thơng tin tồn ảnh lần dự đốn tồn object box chứa đối tượng, mơ hình xây dựng theo kiểu end-to-end nên huấn luyện hồn tồn gradient descent Sau đây, trình bày chi tiết mơ hình YOLO 2.1.1 Grid System Ảnh chia thành ma trận ô vuông 7x7, ô vuông bao gồm tập thông tin mà mơ hình phải đốn Đối tượng mà ô vuông chứa Tâm đối tượng cần xác định nằm vng vng chứa đối tượng Ví dụ tâm gái nằm vng màu xanh, mơ hình phải dự đốn nhãn vng cô gái Lưu ý, cho dù phần ảnh cô gái có nằm vng khác mà tâm khơng thuộc vng khơng tính chứa gái, ngồi ra, có nhiều tâm nằm ô vuông gán nhãn cho vng thơi Chính ràng buột vuông chứa đối tượng nhược điểm mơ hình Nó làm cho ta khơng thể detect object có tầm nằm vng Tuy nhiên tăng grid size từ 7x7 lên kích thước lớn để detect nhiều object Ngồi ra, kích thước ảnh đầu vào phải bội số grid size Hình 2: Grid System Mỗi vng chịu trách nhiệm dự đốn boundary box đối tượng Mỗi boundary box đốn có chứa object hay khơng thơng tin vị trí boundary box gồm trung tâm boundary box đối tượng chiều dài, rộng boundary box Ví vụ vng màu xanh cần dự đốn boundary box chứa gái hình minh họa Một điều cần lưu ý, lúc cài đặt khơng dự đốn giá trị pixel mà cần phải chuẩn hóa kích thước ảnh đoạn từ [0-1] dự đoán độ lệch tâm đối tượng đến box chứa đối tượng Ví dụ, thay đốn vị trí pixel điểm màu đỏ, cần dự đốn độ lệch a,b vng chứa tâm object Hình 3: Các box chia nhỏ ảnh Tổng hợp lại, với ô vuông cần đốn thơng tin sau : Ơ vng có chứa đối tượng hay khơng? Dự đốn độ lệch box chứa object so với vng Lớp object Như ta có với vng cần đốn vector có (nbox+4*nbox+nclass) chiều Ví dụ, cần dự đoán box, lớp vng chúng có ma trận chiều 7x7x30 chứa tồn thơng tin cần thiết Hình 4:Cách xử lý ảnh 2.1.2 CNN for YOLO Object Detection Chúng ta cần biết phải dự đốn thơng tin vng, điều quan trọng xây dựng mô hình CNN có cho ouput với shape phù hợp theo yêu cầu chúng ta, tức gridsize x gridsize x (nbox+4*nbox+nclass) Ví dụ với gridsize 7x7 vng dự đốn boxes, có loại object tất phải cần output có shape 7x7x13 từ mơ hình CNN Hình 5: CNN for YOLO Object Detection Yolo sử dụng linear regression để dự đốn thơng tin vng Do đó, layer cuối khơng sử dụng hàm kích hoạt Với ảnh đầu vào 448x448, mơ hình CNN có tầng max pooling với size 2x2 giảm 64 lần kích thước ảnh xuống 7x7 output đầu Đồng thời thay sử dụng tầng full connected tầng cuối cùng, thay tầng 1x1 conv với 13 feature maps để output shape dễ dàng cho 7x7x13 2.1.3 Loss function Chúng ta định nghĩa thơng tin mà mơ hình cần phải dự đốn, kiến trúc mơ hình CNN Bây lúc mà định nghĩa hàm lỗi YOLO sử dụng hàm độ lỗi bình phương giữ dự đốn nhãn để tính độ lỗi cho mơ hình Cụ thể, độ lỗi tổng tổng độ lỗi sau: Độ lỗi việc đoán loại nhãn object - Classifycation loss Độ lỗi dự đoán tạo độ chiều dài, rộng boundary box Localization loss Độ lỗi vng có chứa object hay không - Confidence loss Chúng ta mong muốn hàm lỗi có chức sau Trong q trình huấn luyện, mơ hình nhìn vào vng có chứa object Tăng classification score lớp object lên Sau đó, nhìn vào vng đó, tìm boundary box tốt boxes dự đốn Tăng localization score boundary box lên, thay đổi thông tin boundary box để gần với nhãn Đối với ô vuông không chứa object, giảm confidence score không quan tâm đến classification score localization score ô vuông Các khái niệm 2.1.4 Classification Loss Chúng ta tính classification loss cho vng đánh nhãn có object Classification loss vng tính đỗ lỗi bình phương nhãn dự đốn nhãn Ví dụ, hình minh họa trên, có object vng (dịng,cột) (2,1) (3,4), chứa object hình tam giác hình tức giác Độ lỗi classification loss tính cho object mà ko quan tâm đến ô vuông khác Lúc cài đặt cần lưu ý phải nhân với mask để triệt tiêu giá trị lỗi ô vuông ko quan tâm 2.1.5 Localization Loss Localization loss dùng để tính giá trị lỗi cho boundary box dự đoán bao gồm offset x,y chiều dài, rộng so với nhãn xác Các bạn nên lưu ý rằng, khơng tính tốn trực tiếp giá trị lỗi kích thước ảnh mà cần chuẩn kính thước ảnh đoạn [0-1] tọa độ điểm tâm, khơng đố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 vng tương ứng Việc chuẩn hóa kích thước ảnh dự đốn offset làm cho mơ hình nhanh hội tụ so với việc dự đoán giá trị mặc định Độ lỗi localization loss tính tổng đỗ lỗi bình phương offsetx, offsety chiều dài, rộng tất vng có chứa object Tại ô vuông đúng,ta chọn boundary box có IOU (Intersect over union) tốt nhất, sau tính độ lỗi theo boundary box Theo hình họa có boundary box ô vuông có viền màu đỏ, chọn box vng để tính độ lỗi Còn box xanh bỏ qua Localization loss độ lỗi quan trọng loại độ lỗi Do đó, ta cần đặt trọng số cao cho độ lỗi 2.1.6 Confidence Loss Confidence loss thể độ lỗi dự đốn boundary box chứa object so với nhãn thực tế vng Độ lỗi tính nên vng chứa object không chứa object Độ lỗi độ lỗi bình phường dự đốn boundary chứa object với nhãn thực tế vng vị trí tương ứng, lưu ý rằng, độ lỗi ô vuông mà nhãn chứa object quan trọng độ lỗi vng khơng chứa object, cần sử dụng hệ số lambda để cân điều Tổng kết lại, tổng lỗi tổng loại độ lỗi 2.1.7 Dự đoán lớp tạo độ boundary box sau trình huấn luyện –Inference Chúng ta giữ lại boundary box mà có chứa object Để làm điều này, cần tính tích xác xuất có điều kiện vng thuộc lớp i nhân với sác xuất vng chứa object, giữ lại boundary box có giá trị lớn ngưỡng định Mỗi object lại có nhiều boundary box khác mơ hình dự đốn Để tìm boundary box tốt object, dùng thuật toán non-maximal suppression để loại boundary box giao nhiều, tức có IOU giữ boundary box lớn Để tính IOU giữ box cần tính diện tích giao box chia cho tổng diện tích box 2.2 Nhược điểm Yolo v1 YOLOv1 áp đặt ràng buộc không gian bounding box, grid cell predict bounding box (B) class Các ràng buộc hạn chế khả nhận biết số object nằm gần nhau, object có kích thước nhỏ Ngồi ra, q trình training, loss function khơng có đánh giá riêng biệt error bounding box kích thước nhỏ so với error bounding box kích thước lớn Việc coi chúng loại tổng hợp lại làm ảnh hưởng đến độ xác tồn cục mạng Error nhỏ box lớn nhìn chung tác hại, error nhỏ với box nhỏ đặc biệt ảnh hưởng đến giá trị IOU 3 Yolo v2 YOLOv2 đặt tên YOLO9000 Joseph Redmon Ali Farhadi công bố vào cuối năm 2016 có mặt 2017 CVPR Cải tiến phiên tốt hơn, nhanh hơn, tiên tiến để bắt kịp faster R-CNN (phương pháp sử dụng Region Proposal Network), xử lý vấn đề gặp phải YOLOv1 Thêm Batch Normalization Kĩ thuật Batch Normalization đưa vào sau tất lớp convolution YOLOv2 Kĩ thuật giảm thời gian huấn luyện, mà cịn có tác dụng tăng tính phổ quát (generalize) cho mạng Ở YOLOv2, Batch Normalization giúp tăng mAP lên khoảng 2% Mạng không cần sử dụng thêm Dropout để tăng tính phổ quát High resolution classifier YOLO huấn luyện với pha Pha đầu huấn luyện mạng classifier với ảnh đầu vào kích thước nhỏ (224x224) pha sau loại bỏ lớp fully connected sử dụng mạng classifier phần khung xương (backbone) để huấn luyện mạng detection Lưu ý ảnh đầu vào kích thước nhỏ thường sử dụng để huấn luyện mạng classifier, mà sau sử dụng pretrained model cho phần backbone mạng detection khác Ở pha sau YOLO trước hết finetune mạng backbone ảnh đầu vào kích thước lớn 448x448, để mạng "quen" dần với kích thước ảnh đầu vào lớn, sau sử dụng kết để huấn luyện cho trình detection Điều giúp tăng mAP YOLOv2 lên khoảng 4% Sử dụng kiến trúc anchorbox để đưa dự đoán Trong YOLOv2, tác giả loại bỏ lớp fully connected mạng sử dụng kiến trúc anchorbox để predict bounding box Việc dự đoán offset so với anchorbox dễ dàng nhiều so với dự đoán toạ độ bounding box Thay đổi làm giảm mAP chút làm recall tăng lên K-mean clustering cho lựa chọn anchor Thay phải chọn anchorbox tay, YOLOv2 sử dụng thuật toán k-means để đưa lựa chọn anchorbox tốt cho mạng Việc tạo mean IoU tốt Direct location prediction YOLOv1 khơng có hạn chế việc dự đốn vị trí bounding box Khi trọng số khởi tạo ngẫu nhiên, bounding box dự đốn đâu ảnh Điều khiến mơ hình khơng ổn định giai đoạn đầu q trình huấn luyện Vị trí bounding box xa so với vị trí grid cell YOLOv2 sử dụng hàm sigmoid ( σ) để hạn chế giá trị khoảng đến 1, từ hạn chế dự đốn bounding box xung quanh grid cell, từ giúp mơ hình ổn định q trình huấn luyện Cho anchorbox có kích thước (pw,ph) nằm grid cell với vị trí top left là (cx,cy), mơ hình dự đốn offset scale tx, ty, tw, th và bounding box (bx,by,bw,bh) Độ tự tin (confidence dự đoán là σ(to)) Dự đoán bounding box YOLOv2] YOLOv2 có thêm 5% mAP áp dụng phương pháp Add fine-grained features YOLOv2 sử dụng feature map 13x13 để đưa dự đoán, lớn 7x7 YOLOv1 Faster R-CNN SSD đưa dự đoán nhiều tầng khác mạng để tận dụng feature map kích thước khác YOLOv2 kết hợp feature tầng khác lại để đưa dự đoán, cụ thể kiến trúc nguyên YOLOv2 kết hợp feature map 26x26 lấy từ đoạn gần cuối với feature map 13x13 cuối để đưa dự đoán Cụ thể feature map ghép vào (concatenate) để tạo thành khối sử dụng cho dự đoán Kiến trúc YOLOv2 Thông thường việc concatenate feature map thực chúng có chiều rộng chiều dài Tuy nhiên YOLOv2 tác giả sử dụng lớp Reorg Thực ra Reorg chỉ kĩ thuật tổ chức lại nhớ để biến feature map 26x26 thành 13x13 với chiều sâu lớn để thực phép concatenate với feature map 13x13 cuối Trong trường hợp tổng quát phép Reorg, ta biến feature map kích thước [N,C,H,W] thành kích thước [N,C× s2,H/s,W/s], tức số lượng tham số feature map giữ nguyên Khi ta muốn giảm kích thước dài, rộng cạnh lần số channel phải tăng lên lần Việc biến đổi hồn tồn khơng giống phép resize xử lý ảnh Kĩ thuật Reorg YOLOv2 Multi-Scale Training Sau thêm kĩ thuật anchorbox cho YOLOv2, tác giả thay đổi input mạng thành 416x416 thay 448x448 Tuy vậy, YOLOv2 thiết kể gồm lớp convolution pooling nên thích ứng với nhiều kích thước ảnh đầu vào khác Tác giả huấn luyện mạng nhiều kích thước ảnh khác để tăng khả thích ứng YOLOv2 với đa dạng kích thước ảnh Light-weight backbone Điểm cải tiến YOLOv2 cịn phải kể đến backbone có tên Darknet-19 Mạng bao gồm 19 lớp convolution lớp maxpooling tạo tốc độ nhanh phiên YOLO trước YOLO9000 YOLO9000 đưa cách kết hợp dataset khác với ImageNet để phát nhiều class Tác giả tạo directed graph gọi WordTree hình Để merge label từ tập ImageNet (1000 class) với COCO/PASCAL (100 class), tác giả dựa vào WordNet để xây dựng quan hệ class, từ huấn luyện mạng nhận dạng class có quan hệ với Yolo v3 YOLOv3 có kiến trúc giống YOLOv2 Tác giả thêm cải tiến nghiên cứu gần vào YOLOv2 để tạo YOLOv3 Các cải tiến bao gồm: Logistic regression cho confidence score: YOLOv3 predict độ tự tin bounding box (có chứa vật hay khơng) sử dụng logistic regression Thay softmax logistic classifier rời rạc: YOLOv3 sử dụng logistic classifier thay softmax cho việc classify đối tượng Việc cho hiệu tốt label khơng "mutually exclusive", tức có đối tượng thuộc hay nhiều class khác Ví dụ với tốn cần phát đối tượng "chó" "chó Phú Quốc" Rõ ràng đối tượng "chó Phú Quốc" thuộc class "chó", việc sử dụng softmax khơng phù hợp trường hợp Backbone - Darknet-53: Backbone thiết kế lại với việc thêm residual blocks (kiến trúc sử dụng ResNet) Multi-scale prediction: YOLOv3 sử dụng kiến trúc Feature Pyramid Networks (FPN) để đưa dự đoán từ nhiều scale khác feature map Việc giúp YOLOv3 tận dụng feature map với độ thô - tinh khác cho việc dự đoán Skip-layer concatenation: YOLOv3 thêm liên kết lớp dự đốn Mơ hình upsample lớp dự đoán tầng sau sau concatenate với lớp dự đốn tầng trước Phương pháp giúp tăng độ xác predict object nhỏ Kiến trúc YOLOv3 Yolo v4 Trong Yolov4, tác giả tìm hiểu, thử nghiệm phương pháp state-of-theart object detection để đánh giá, so sánh hiệu phương pháp theo số tiêu chí cân độ phức tạp mơ hình tốc độ xử lý FPS Yolov4 hướng tới khả training GPU Kết quả: 43.5% AP (65.7% AP₅₀) tập liệu MS COCO với tốc độ 65 FPS inference speed GPU Tesla V100 Yolo v4 bao gồm: Backbone: CSPDarknet53 Yolov4 sử dụng CSPDarknet53 để làm backbone theo tác giả, CSPDarknet53 có độ xác task object detection cao so với ResNet; ResNet có độ xác task classification cao hơn, hạn chế cải thiện nhờ hàm activation Mish vài kỹ thuật Neck: SPP, PAN Một object detector bao gồm backbone (feature extraction) head (obj detection) Để detect obj với kích thước khác nhau, kiến trúc mạng sử dụng feature maps vị trí khác để predict Để làm giàu thông tin đẩy head, số feature map gần bottom-up stream top-down stream kết hợp với (elementwise/concatinate) trước đẩy vào head Do đó, head có rich spatial information từ bottom-up stream rich semantic information từ top-down stream Thành phần gọi Neck SPP (spatial pyramid pooling layer): Từ Yolov3, tác giả giới thiệu cách thức áp dụng SPP (Yolov3-spp) Mạng SPP thay đổi, khơng cịn chia feature map thành bins ghép bins với để vector có dimension cố định YoloSPP áp dụng maximum pool với kernel kích thước khác Kích thước input feature map giữ nguyên, feature map thu từ việc áp dụng max pool (với kernel size khác nhau) concatinate Yolov4 áp dụng lại kỹ thuật Path Aggregation Network (PAN): Mạng DL sâu làm mát thơng tin, đó, để detect đối tượng có kích thước nhỏ, researchers đề xuất nhiều phương pháp DenseBlock, FPN PAN cải tiến FPN nhằm cải thiện localized information top layers Head: YOLOv3 Yolov4 sử dụng: Bag of Freebies (BoF) cho backbone: CutMix, Mosaic data augmentation DropBlock regulazation Class Label smoothing Bag of Specials (BoS) cho backbone: Mish activation, Cross-stage partial connections (CSP) Multi-input weighted residual connections (MiWRC) Bag of Freebies (BoF) cho detector: 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 Bag of Specials (BoS) cho detector: Mish activation modified SPP-block modified SAM-block modified PAN path-aggregation block DIoU-NMS ... activation, SPP-block, SAM-block, PAN path-aggregation block, DIoU-NMS TÌM HIỂU VỀ YOLO Giới thiệu Yolo You only look once (YOLO) mơ hình CNN để detect object mà ưu điểm trội nhanh nhiều so với... quan hệ với Yolo v3 YOLOv3 có kiến trúc giống YOLOv2 Tác giả thêm cải tiến nghiên cứu gần vào YOLOv2 để tạo YOLOv3 Các cải tiến bao gồm: Logistic regression cho confidence score: YOLOv3 predict... phục vụ real-time, đòi hỏi thiết bị mạnh mẽ, đắt đỏ YOLO đời YOLO sau YOLOv2 có khả gán nhãn cho tồn object khung hình với operation Có thể nói YOLO xây dựng hướng tiếp cận giúp đưa Object detection