Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 18

Tóm tắt

YOLO - YOU ONLY LOOK ONCE là 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 ImageNet-1000. 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 R-CNN (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:
- Batch Normalization: giảm sự thay đổi giá trị unit trong hidden layer, do đó sẽ cải
thiện được tính ổn định của neural network.
- Higher Resolution Classifier: Kích thước đầu vào trong YOLO v2 được tăng từ
224*224 lên 448*448.
- Anchor boxes: dự đoán bounding box và được thiết kế cho tập dữ liệu đã cho sử
dụng clustering.
- Fine-Grained Features: YOLO v2 chia ảnh thành 13*13 grid cells, do đó có thể
phát hiện được những object nhỏ hơn, đồng thời cũng hiệu quả với các object lớn.
- Multi-Scale Training: YOLO v1 có điểm yếu là phát hiện các đối tượng với các
kích cỡ đầu vào khác nhau. Điều này được giải quyết bằng YOLO v2, nó được train
với kích thước ảnh ngẫu nhiên trong khoảng 320*320 đến 608*608.
- Darknet 19: YOLO v2 sử dụng Darknet 19 với 19 convolutional layers, 5 max
pooling layers và 1 softmax layer.
 YOLO v3: phát hiện, phân loại chính xác đối tượng, và được xử lý thời gian thực.
Cải tiến của YOLO v3:
- Bounding Box Predictions: cung cấp score mỗi bounding boxes sử dụng logistic
regression.
- Class Predictions: sử dụng logistic classifiers cho mọi class thay vì 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 và 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
1. Giới thiệu về Yolo
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.
Sự phát triển của mạng neural đang dần làm hiện thực hoá khái niệm chúng ta
vẫn thường gọi là Computer Vision - Thị giác máy tính. Tuy nhiên, tại thời điểm ban
đầu, việc sử dụng Neural Network vẫn còn gặp nhiều khó khăn. Khi bạn muốn phát
hiện ra object trong một bức ảnh, sau đó đánh nhãn cho object đó, các phương pháp
lúc bấy giờ quá chậm để phục vụ trong real-time, hoặc đòi hỏi thiết bị mạnh mẽ, đắt
đỏ...... cho đến khi YOLO ra đời. YOLO và sau này là YOLOv2 có khả năng gán nhãn
cho toàn bộ object trong khung hình với chỉ duy nhất một operation. Có thể nói YOLO
đã xây dựng một hướng tiếp cận đầu tiên giúp đưa Object detection thực sự khả thi
trong cuộc sống.
Những Region Proposal Classification network khác (như Fast RCNN) thực hiện
việc phát hiện trên các đề xuất khu vực (Region proposal), do đó sau cùng sẽ phải thực
hiện dự đoán nhiều lần cho các region khác nhau, scale khác nhau trong một ảnh.
YOLO có một cách tiếp cận hoàn toàn khác, chỉ sử dụng duy nhất một neural
network cho toàn bộ ảnh. Kiến trúc của YOLO giống với FCNN (Full Convolution
Neural Network) hơn, và hình ảnh (kích thước $n \times n$) chỉ được truyền qua
FCNN một lần duy nhất, sau đó sẽ trả về ouput là $m \times m$ prediction. Hình ảnh
đầu vào sẽ được chia thành các ô lưới (grid cell), và dự đoán các bounding box và xác
suất phân loại cho mỗi grid cell. Các bounding box này được đánh trọng số theo xác
suất đã dự đoán.

Hình 1:Mô hình nhận diện của Yolov3

Mô hình này có nhiều điểm vượt trội so với các hệ thống classifier-based. Tại test
phase, YOLO sẽ "nhìn" toàn bộ bức ảnh (thay vì từng phần bức ảnh), vì vậy những
prediction của nó được cung cấp thông tin bởi nội dung toàn cục của bức ảnh Ngoài ra,
dự đoán được đưa ra chỉ với một mạng đánh giá duy nhất, thay vì hàng nghìn như R-
CNN. Vì vậy tốc độ của YOLO là 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.
2. Yolo v1
2.1. Mô hình thuật toán của Yolo
Một trong nhưng ưu điểm mà YOLO đem lại đó là chỉ sử dụng thông tin toàn bộ
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, mình sẽ trình bày chi tiết về mô hình YOLO
2.1.1. 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 cô gái 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à cô gái.
Lưu ý, cho dù phần ảnh cô gái 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 cô gái, ngoài ra, nếu có nhiều tâm nằm trong một ô
vuông thì chúng ta vẫn chỉ gán một nhãn cho ô vuông đó thôi. Chính ràng buột 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 chúng 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 2: Grid System


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 cô gái như hình minh họa
ở dưới. Một điều cần lưu ý, lúc cài đặt chúng 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ụ, chúng ta thay vì dữ đoán vị trí pixel của điểm màu
đỏ, thì cần dự đoán độ lệch a,b trong ô vuông chứa tâm object.

Hình 3: Các box được chia nhỏ trong ảnh

Tổng hợp lại, với mỗi ô vuông chú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 độ lệch 2 box chứa object so với ô vuông hiện tại
 Lớp của object đó
Như vậy ta có với mỗi ô vuông thì chúng ta cần dữ đoán một vector sẽ có
(nbox+4*nbox+nclass) chiều. Ví dụ, chúng 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 7x7x30 chứa toàn bộ 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ự đ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 chúng 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 cả thì chúng
ta 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ự đoán các thông tin ở mỗi ô vuông. Do đó, ở
layer cuối cùng chú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, chú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.

2.1.3. Loss function


Chúng 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à chúng ta 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 của chúng ta 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.
Chúng 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à chúng ta sẽ không quan tâm đến classification score và
localization score của những ô vuông này.
Các khái niệm
2.1.4. Classification Loss
Chúng 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ó.
Ví dụ, trong hình minh họa ở trên, chúng 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
chúng 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.
2.1.5. 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 chúng ta. Các bạn nên lưu
ý rằng, chú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.

Độ 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,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 chúng ta có 4 boundary box
tại ô vuông đúng có viền màu đỏ, chúng 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.
2.1.6. 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.

Độ 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ại vị trí tương ứng, chúng ta lưu ý rằ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 đó chúng
ta cần sử dụng hệ số lambda để cân bằng điều này.
Tổng kết lại, tổng lỗi của chúng ta sẽ bằng tổng của 3 loại độ lỗi trên.
2.1.7. Dự đoán lớp và tạo độ boundary box sau quá trình huấn luyện –Inference
Chúng ta chỉ giữ lại những boundary box mà có chứa object nào đó. Để làm điều
này, chúng ta cần tính tích của xác xuất có điều kiện ô vuông thuộc về lớp i nhân với
sác xuất ô 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, chúng 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ữ 2 box chúng 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 đó.

2.2 Nhược điểm của Yolo v1


YOLOv1 áp đặt các ràng buộc về không gian trên những bounding box, mỗi grid
cell chỉ có thể predict rất ít bounding box (B) và duy nhất một class. Các ràng buộc
này hạn chế khả năng nhận biết số object nằm gần nhau, cũng như đối với các object
có kích thước nhỏ.
Ngoài ra, trong quá trình training, 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.
3. Yolo v2
YOLOv2 đặt tên là YOLO9000 đã được Joseph Redmon và Ali Farhadi công
bố vào cuối năm 2016 và có mặt trong 2017 CVPR. 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 R-CNN (phương pháp sử dụng
Region Proposal Network), xử lý được những vấn đề gặp phải của YOLOv1.

 Thêm Batch Normalization


Kĩ thuật Batch Normalization được đưa vào sau tất cả các lớp convolution của
YOLOv2. Kĩ thuật này không những giảm được 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 cũng không cần sử dụng thêm Dropout để tăng tính
phổ quát.

 High resolution classifier


YOLO được huấn luyện với 2 pha. Pha đầu sẽ huấn luyện một mạng classifier
với ảnh đầu vào kích thước nhỏ (224x224) và pha sau sẽ loại bỏ lớp fully connected và
sử dụng mạng classifier này như phần khung xương (backbone) để huấn luyện mạng
detection. Lưu ý rằng ảnh đầu vào kích thước nhỏ cũng thường được sử dụng để huấn
luyện các mạng classifier, mà sau đó sẽ được sử dụng như pretrained model cho phần
backbone của các mạng detection khác. Ở pha sau YOLO trước hết finetune mạng
backbone dưới ảnh đầu vào kích thước lớn hơn là 448x448, để mạng "quen" dần với
kích thước ảnh đầu vào lớn, sau đó mới sử dụng kết quả này để huấn luyện cho quá
trình detection. Điều này giúp tăng mAP của YOLOv2 lên khoảng 4%.

 Sử dụng kiến trúc anchorbox để đưa ra dự đoán


Trong YOLOv2, tác giả loại bỏ lớp fully connected ở giữa mạng và sử dụng
kiến trúc anchorbox để predict các bounding box. Việc dự đoán các offset so với
anchorbox sẽ dễ dàng hơn nhiều so với dự đoán toạ độ bounding box. Thay đổi này
làm giảm mAP đi một chút nhưng làm recall tăng lên.

 K-mean clustering cho lựa chọn anchor


Thay vì phải chọn anchorbox bằng tay, YOLOv2 sử dụng thuật toán k-means
để đưa ra các lựa chọn anchorbox tốt nhất cho mạng. Việc này tạo ra mean IoU tốt
hơn.

 Direct location prediction


YOLOv1 không có các hạn chế trong việc dự đoán vị trí của bounding box. Khi
các trọng số được khởi tạo ngẫu nhiên, bounding box có thể được dự đoán ở bất kỳ
đâu trong ảnh. Điều này khiến mô hình không ổn định trong giai đoạn đầu của quá
trình huấn luyện. Vị trí của bounding box có thể ở rất xa so với vị trí của grid cell.
YOLOv2 sử dụng hàm sigmoid ( σ) để hạn chế giá trị trong khoảng 0 đến 1, từ
đó có thể hạn chế các dự đoán bounding box ở xung quanh grid cell, từ đó giúp mô
hình ổn định hơn trong quá trình huấn luyện.
Cho anchorbox có kích thước (pw,ph) nằm tại grid cell với vị trí top left
là (cx,cy), mô hình sẽ dự đoán các offset và scale tx, ty, tw, th và bounding
box (bx,by,bw,bh). Độ tự tin (confidence của dự đoán là σ(to)).

Dự đoán bounding box trong YOLOv2]

YOLOv2 đã có thêm 5% mAP khi áp dụng phương pháp này.

 Add fine-grained features


YOLOv2 sử dụng feature map 13x13 để đưa ra các dự đoán, lớn hơn 7x7 của
YOLOv1.
Faster R-CNN và SSD đưa ra dự đoán ở nhiều tầng khác nhau trong mạng để
tận dụng các feature map ở các kích thước khác nhau. YOLOv2 cũng kết hợp các
feature ở các tầng khác nhau lại để đưa ra dự đoán, cụ thể kiến trúc nguyên bản của
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 ra các dự đoán. Cụ thể là các feature map này sẽ được ghép vào nhau
(concatenate) để tạo thành một khối sử dụng cho dự đoán.

Kiến trúc YOLOv2


Thông thường việc concatenate 2 feature map chỉ thực hiện được khi chúng có
cùng chiều rộng và chiều dài. Tuy nhiên trong YOLOv2 tác giả sử dụng lớp Reorg.
Thực ra Reorg chỉ là kĩ thuật tổ chức lại bộ nhớ để biến feature map 26x26 thành
13x13 với chiều sâu lớn hơn để có thể thực hiện phép concatenate với feature map
13x13 ở cuối.
Trong trường hợp tổng quát của phép Reorg, ta sẽ 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 là số lượng tham số trong
feature map vẫn được giữ nguyên. Khi ta muốn giảm kích thước dài, rộng đi mỗi cạnh
2 lần thì số channel phải được tăng lên 4 lần. Việc biến đổi này hoàn toàn không giống
phép resize trong xử lý ảnh.

Kĩ thuật Reorg trong YOLOv2


 Multi-Scale Training
Sau khi thêm kĩ thuật anchorbox cho YOLOv2, tác giả đã thay đổi input của
mạng thành 416x416 thay vì 448x448. Tuy vậy, YOLOv2 được thiết kể chỉ gồm các
lớp convolution và pooling nên có thể thích ứng với nhiều kích thước ảnh đầu vào
khác nhau. Tác giả đã huấn luyện mạng trên nhiều kích thước ảnh khác nhau để tăng
khả năng thích ứng của YOLOv2 với đa dạng kích thước ảnh.
 Light-weight backbone
Điểm cải tiến của YOLOv2 còn phải kể đến backbone mới có tên Darknet-19.
Mạng này bao gồm 19 lớp convolution và 5 lớp maxpooling tạo ra tốc độ nhanh hơn
phiên bản YOLO trước.

 YOLO9000
YOLO9000 đưa ra cách kết hợp các dataset khác với ImageNet để có thể phát
hiện nhiều class hơn. Tác giả tạo một directed graph gọi là WordTree như hình dưới.
Để có thể merge được các 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ệ giữa các class, từ đó có thể
huấn luyện mạng nhận dạng các class có quan hệ với nhau.

4. Yolo v3

YOLOv3 có kiến trúc khá giống YOLOv2. Tác giả đã thêm các cải tiến mới trong
các nghiên cứu gần đây vào YOLOv2 để tạo ra YOLOv3. Các cải tiến đó bao gồm:

 Logistic regression cho confidence score: YOLOv3 predict độ tự tin của


bounding box (có chứa vật hay không) sử dụng logistic regression
 Thay softmax bằng các logistic classifier rời rạc: YOLOv3 sử dụng các
logistic classifier thay vì softmax cho việc classify đối tượng. Việc này cho hiệu
quả tốt hơn nếu các label không "mutually exclusive", tức là có thể có đối tượng
cùng thuộc 2 hay nhiều class khác nhau. Ví dụ với bài toán cần phát hiện 2 đối
tượng là "chó" và "chó Phú Quốc". Rõ ràng nếu đối tượng là "chó Phú Quốc"
thì nó cũng thuộc class "chó", và việc sử dụng softmax là không phù hợp trong
trường hợp này.
 Backbone mới - Darknet-53: Backbone được thiết kế lại với việc thêm các
residual blocks (kiến trúc sử dụng trong ResNet).
 Multi-scale prediction: YOLOv3 sử dụng kiến trúc Feature Pyramid Networks
(FPN) để đưa ra các dự đoán từ nhiều scale khác nhau của feature map. Việc
này giúp YOLOv3 tận dụng các feature map với độ thô - tinh khác nhau cho
việc dự đoán.
 Skip-layer concatenation: YOLOv3 cũng thêm các liên kết giữa các lớp dự
đoán. Mô hình upsample các lớp dự đoán ở các tầng sau và sau đó concatenate
với các lớp dự đoán ở các tầng trước đó. Phương pháp này giúp tăng độ chính
xác khi predict các object nhỏ.

Kiến trúc YOLOv3

5. Yolo v4
Trong Yolov4, các tác giả tìm hiểu, thử nghiệm các phương pháp state-of-the-
art trong object detection để đánh giá, so sánh sự hiệu quả của các phương pháp này
theo một số tiêu chí cân bằng giữa độ phức tạp của mô hình và tốc độ xử lý FPS.
Yolov4 cũng hướng tới khả năng training được trên một GPU.
Kết quả: 43.5% AP (65.7% AP₅₀) trên tập dữ liệu MS COCO với tốc độ 65
FPS inference speed trên GPU Tesla V100.

 Yolo v4 bao gồm:


 Backbone: CSPDarknet53
Yolov4 sử dụng CSPDarknet53 để làm backbone vì theo tác giả, CSPDarknet53
có độ chính xác trong task object detection cao hơn so với ResNet; và mặc dù
ResNet có độ chính xác trong task classification cao hơn, hạn chế này có thể
được cải thiện nhờ hàm activation Mish và một vài kỹ thuật.
 Neck: SPP, PAN
Một object detector bao gồm một backbone (feature extraction) và một
head (obj detection). Để detect obj với các kích thước khác nhau, một kiến trúc
mạng sử dụng các feature maps tại các vị trí khác nhau để predict.
Để làm giàu thông tin đẩy về head, một số feature map gần nhau trong
bottom-up stream và top-down stream được kết hợp với nhau (element-
wise/concatinate) trước khi đẩy vào head. Do đó, head sẽ có được rich spatial
information từ bottom-up stream và rich semantic information từ top-down
stream. Thành phần này được gọi là Neck.
 SPP (spatial pyramid pooling layer): Từ Yolov3, các tác giả đã giới
thiệu một cách thức áp dụng SPP (Yolov3-spp). Mạng SPP này được
thay đổi, không còn là chia các feature map thành các bins rồi ghép các
bins này với nhau để được một vector có dimension cố định nữa. Yolo-
SPP áp dụng một maximum pool với các kernel kích thước khác nhau.
Kích thước của input feature map được giữ nguyên, các feature map thu
được từ việc áp dụng max pool (với kernel size khác nhau) sẽ được
concatinate. Yolov4 cũng áp dụng lại kỹ thuật này.
 Path Aggregation Network (PAN): Mạng DL càng sâu thì càng làm
mất mát thông tin, do đó, để detect được các đối tượng có kích thước
nhỏ, researchers đã đề xuất ra nhiều phương pháp như DenseBlock,
FPN. PAN là một cải tiến của FPN nhằm cải thiện localized information
trên các 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

You might also like