CHƯƠNG II. NHẬN DẠNG LỢN SỬ DỤNG MẠNG HỌC SÂU YOLOv4
2.1. CẤU TRÚC VÀ PHƯƠNG THỨC HOẠT ĐỘNG CỦA YOLOv42.1.1. Cấu trúc mạng YOLOv4 2.1.1. Cấu trúc mạng YOLOv4
Như đã giới thiệu ở phần trước như phiên bản thứ nhất thì phiên bản thứ tư này cũng mang tên YOLO để ám chỉ cách thức hoạt động của mạng học sâu nhận dạng vật thể một bước này, chỉ nhìn một lần vào các vùng để dự đoán đối tượng. Mạng YOLOv4 có nhiều sự cải tiến đặc biệt giúp tăng độ chính xác và tốc độ hơn đối với người anh em YOLOv3 trên cùng tập dataset COCO và trên GPU V100. Với kiến trúc Backbone mới và cải tiến Neck đã tăng mAP lên 10% và FPS lên 12%
Hình 2.10. So sánh YOLOv4 và YOLOv3
Cấu trúc của v4 được tác giả chia làm bốn phần: Backbone (xương sống)
Neck (cổ)
Dense prediction (dự đoán dày đặc) – sử dụng các one-stage-detection như YOLO hoặc SSD.
Sparse Prediction (dự đoán thưa thớt) – sử dụng các two-stage-detection như RCNN.
Hình 2.11. Cấu trúc YOLOv4
2.1.1.1. Backbone
Mạng xương sống cho nhận dạng vật thể thường được huấn luyện trước ( pre- train)thông qua bài toán phân loại ImageNet. Pre-train có nghĩa là trọng số của mạng đã được điều chỉnh để xác định các đặc điểm liên quan trong một hình ảnh, mặc dù chúng sẽ được tinh chỉnh trong nhiệm vụ mới là phát hiện đối tượng. Có 3 mạng mà tác giả đã xem xét để sử dụng: CSPResNext50, CSPDarknet53 và EfficentNet-B3. EfficentNet vượt trội hơn các mạng khác có cùng kích thước về phân loại hình ảnh. Tuy nhiên, tác giả của
YOLOv4 cho rằng các mạng khác có khả năng hoạt động tốt hơn trong cài đặt để phát hiện đối tượng nên quyết định thử nghiệm với tất cả 3 mạng CNN ở trên. Và cuối cùng thì tác giả chọn mạng CSPDarknet53 là backbone cho model.
Hình 2.12. Ba backbone model tác giả so sánh
CSPDarknet53 được cấu tạo từ CSP, Darknet53.
CSP( Cross-Stage-Partial connections) có nguồn gốc từ kiến trúc DenseNet sử dụng đầu vào trước đó và nối nó với đầu vào hiện tại trước khi chuyển vào Dense layer. Nó có nhiệm vụ chia đầu vào của khối thành 2 phần, một phần sẽ qua các khối chập, và phần còn lại thì không( đi thẳng tới cuối khối). Sau đó hai phần sẽ được cộng lại và đưa vào khối tiếp theo. Ý tưởng ở đây là loại bỏ các nút thắt tính toán trong DenseNet và cải thiện việc học bằng cách chuyển phiên bản chưa chỉnh sửa của feature maps ( bản đồ đặc trưng )
Hình 2.13. Cấu trúc DenseNet và CSPDenseNet
DenseNet (Dense connected convolutional network) là một trong những network mới nhất cho visual object recognition. Nó cũng gần giống Resnet nhưng có một vài điểm khác biệt. Densenet có cấu trúc gồm các dense block và các transition layers. Được stack dense block- transition layers-dense block- transition layers như hình vẽ. Với CNN truyền thống nếu chúng ta có L layer thì sẽ có L connection, còn trong densenet sẽ có L(L+1)/2
connection.( tức là các lớp phía trước sẽ được liên kết với tất cả các lớp phía sau nó).
Hình 2.14. Cấu trúc chi tiết DenseNet
Darknet53: Yolov4 sử dụng CSPDarknet53 để làm backbone vì theo tác giả,
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 sẽ được đề cập phía dưới.
2.1.1.2. Neck (phần cổ) – Tổng hợp đặc trưng
Neck có nhiệm vụ trộn và kết hợp các bản đồ đặc trưng(features map) đã học được thông qua quá trình trích xuất đặc trưng( backbone) và quá trình nhận dạng( YOLOv4 gọi là Dense prediction).
Hình 2.15. Sơ đồ khối một Object Detector
Với mỗi lần thực hiện detect với các kích thước ảnh rescale khác nhau tác giả đã thêm các luồng đi từ dưới lên và các luồng đi từ trên xuống vào cùng nhau theo từng hoặc được nối với nhau trước khi đưa vào head( phần đầu), từ đó lớp nhận dạng sẽ chứa thông tin phong phú hơn.
Hình 2.16. Một số cấu trúc sử dụng cho phần cổ (Neck)
Spatial Pyramid Pooling (SPP)
Các tác giả đã thêm vào YOLOv4 một khối SPP [7] nhằm giải quyết vấn đề từ mạng CNN và lớp fully connected network. Lớp fully connected network yêu cầu đầu vào cố định vì vậy ta cần đưa vào ảnh có kích thước cố định. Vì vậy ta phải chỉnh kích thước của ảnh, điều này có thể làm mất một phần của đối tượng mà chúng ta muốn nhận dạng, làm giảm độ chính xác của mô hình.
Vấn đề thứ hai ở mạng nơ-ron tích chập (CNN) là kích thước của cửa sổ trượt (sliding window) cũng cố định.
Đầu ra của mạng nơ-ron tích chập (CNN) là các bản đồ đặc trưng (feature maps) tương ứng với các bộ lọc riêng. Để làm nó đơn giản, ta cần một bộ lọc có thể phát hiện các dạng hình học, bộ lọc này sẽ tạo ra một bản đồ đặc trưng làm nổi bật các hình dạng này trong khi vẫn giữ đúng vị trí của dạng hình học này trong ảnh.
Hình 2.17. Cấu trúc lớp SPP
Lớp SPP tạo ra các đặc trưng trừu tượng có kích thước cố định với đầu vào là bản đồ đặc trưng bất kể kích thước. Để tạo được đầu ra cố định, SPP sử dụng các pooling layers ví dụ như Max Pooling để tạo ra các đại diện khác nhau của các bản đồ đặc trưng (feature maps).
Ở hình 2.8, chúng ta có một lớp SPP 3 cấp. Giả sử lớp tích chập trên (là lớp tích chập cuối) có 256 bản đồ đặc trưng trừu tượng.
Đầu tiên, mỗi feature map được gộp lại thành 1 giá trị (phần màu xám) nên kích thước của vector là (1, 256)
Tiếp đến, mỗi feature map được gộp lại thành 4 giá trị (phần màu xanh lá cây) nên kích thước của vector là (16, 256)
Tương tự, mỗi feature map được gộp lại để được 16 giá trị (phần màu xanh dương) nên kích thước của vector là (16, 256)
Ba vector được tạo từ 3 bước trước được nối với nhau tạo thành một vector mới có kích thước cố định. Vector này sẽ là input của lớp fully connected. Ưu điểm mà SPP mang lại:
SPP cho phép tạo ra output với kích thước cố định với bất kể kích thước đầu vào.
SPP sử dụng multi-level spatial bins (cấu trúc không gian nhiều tầng), trong khi cửa sổ trượt lớp pooling chỉ sử dụng một cửa sổ với kích thước duy nhất. Lớp pooling nhiều tầng cho thấy mạnh mẽ hơn đối với sự biến dạng của đối tượng.
SPP có thể gộp các đặc trưng được trích xuất ở nhiều dạng khác nhau nhờ vào sự linh hoạt của lớp đầu vào SPP.
2.1.1.3. Head (phần đầu) – Bước nhận dạng
YOLOv4 sử dụng các hộp neo (anchor box) và nhận dạng ảnh có kích thước khác nhau. Anchor box thực ra là các bounding box nhưng được tạo sẵn (chứ không là kết quả của quá trình nhận dạng - prediction).
Các feature maps của mạng YOLOv4 với input shape là 416x416, output là 3 feature maps có kích thước lần lượt là 13x13, 26x26, 52x52. Trên mỗi cell của feature map chúng ta sẽ áp dụng 3 anchor box để dự đoán vật thể. Như vậy số lượng anchor box khác nhau trong một mô hình YOLO sẽ là 9 (3 feature map * 3 anchor box).
Với mỗi ô lưới sẽ có 9 anchor box khác nhau với kích thước: Ô lưới 13*13: (142*110), (192*243), (459*401) Ô lưới 26*26: (36*75), (76*55), (72*146) Ô lưới 52*52: (12*16), (19*36), (40*28)
Trên một feature map hình vuông S x S, mô hình YOLOv4 sinh ra một số lượng anchor box là: S x S x 3. Như vậy số lượng anchor boxes trên một bức ảnh sẽ là:
(anchor boxes)
Đây là một số lượng rất lớn và nguyên nhân khiến quá trình huấn luyện YOLO vô cùng chậm vì chúng ta cần dự báo đồng thời nhãn và bouding box trên đồng thời 10647 bouding boxes.
Hình 2.18. Kết quả dự đoán bounding box dựa trên một anchor box (hộp neo)
Tại hình trên khi xác định anchor box cho một vật thể. Từ Cell i ta xác định được 3 anchor boxes viền xanh như trong hình. Cả 3 anchor boxes này đều giao với bounding box của vật thể. Tuy nhiên chỉ anchor box có đường viền dày nhất màu xanh được lựa chọn làm anchor box cho vật thể bởi nó có IoU so với ground truth bounding box là cao nhất. Mỗi một vật thể trong hình ảnh huấn luyện được phân bố về một cell trên feature map mà chứa điểm mid point của vật thể. Từ cell ta sẽ xác định các anchor boxes bao quanh hình ảnh object. Như vậy khi xác định một vật thể ta sẽ cần xác định 2 thành phần gắn liền với nó là (cell, anchor box). Không chỉ riêng mình cell hoặc chỉ mình anchor box. Một số trường hợp 2 vật thể bị trùng mid point, mặc dù rất hiếm khi xảy ra, thuật toán sẽ rất khó xác định được class cho chúng.
Hình 2.19. Khi 2 vật thể người và xe trùng mid point và cùng thuộc một cell
Với trường hợp này, thuật toán sẽ cần thêm những lượt tiebreak để quyết định đâu là class cho cell.
2.1.1.4. Bag of Freebies
Bag of Freebies: điểm cải tiến mới của YOLOv4 so với phiên bản trước đó YOLOv3 – là những phương pháp đánh đổi việc tăng chi phí ở bước training nhưng giúp cải thiện kết quả inference mà không làm ảnh hưởng tới tốc độ inference. Những phương pháp thường được sử dụng : data augmentation, class imbalance, cost function, soft labeling,..
Data augmentation
Mục tiêu hướng đến của phương pháp này là tăng sự đa dạng của mỗi ảnh giúp nâng cao tính khái quát của model training.
Một vài phương pháp đưuọc sử dụng thông dụng nhất là Photometric Distortion, Geometric Distortion, MixUp, CutMix and GANs.
Photometric distortion tạo ảnh mới bằng việc điều chỉnh độ sáng, độ tương phản, độ bão hòa, nhiễu, màu sao cho thể hiện được sự đa dạng trên cùng một bức ảnh.
Hình 2.20. Điều chỉnh hue của ảnh
Ở trên ta đã hiệu chỉnh thuộc tính Hue của ảnh để tạo nhiều mẫu đa dạng cho tập dữ liệu huấn luyện của mình.
Geometric distorsion
Geometric distorision (biến dạng hình học) là kĩ thuật chung bao gồm: rotate image (xoay ảnh), flipping (lật ảnh), random scaling (chia tỉ lệ ảnh) hoặc cropping (cắt ảnh).
Hình 2.21.Xoay ảnh
Hình 2.22. Sau khi chuyển đổi
Tại ví dụ đầu tiên, ta xoay ảnh một góc 90° so với ảnh gốc (figure 4). Ở ví dụ thứ hai, thực hiện phép biến đổi affine của hình ảnh ban đầu.
MixUp
Mixup augmentation là một loại augmentation mà ảnh mới được tạo ra từ phép nội suy tuyến tính của 2 ảnh hiện có. Ban đầu lấy 2 hình ảnh và kết hợp tuyến tính chúng dựa vào tensors của ảnh đó. Mixup làm giảm việc ghi nhớ những nhãn hỏng, tăng cường độ chính xác cho các ví dụ đối nghịch và ổn định việc huấn luyện các mạng đối thủ chung.
Mixup sẽ trộn 2 ảnh với trọng số: và . Từ đó tạo ra mẫu training mới.
Hình 2.23. Mixup
CutMix
Dựa trên ý tưởng của Cutout: loại bỏ một vùng trên mỗi ảnh để model không thể overfit một feature đặc biệt nào đó trên tập training. Nhưng thay vì vùng ảnh loại bỏ là các giá trị 0 vô dụng. CutMix thay vùng ảnh bị loại bỏ bằng một phần của ảnh khác trong dataset.
Vùng tay thế này sẽ bắt buộc bộ object detector học với nhiều đặc điểm (features) hơn.
2.1.1.5. Bag of specials
Bag of specials: Chuỗi các phương pháp làm tăng chi phí suy luận lên một lượng nhỏ đổi lại có thể tăng độ chính xác đáng kể trong việc nhận diện vật thể.
Mish activation
Mish là hàm kích hoạt mới, được công bố vào tháng 8/2019. Sử dụng Mish thu được kết quả tốt hơn so với ReLu, SoftPlus, Swish cũng như một số activation function khác (Adam, Ranger, RangerLars, Novograd, ...)
Hình 2.25. Biểu đồ giá trị của Mish cùng với một vài hàm kích hoạt
Value range: -0.31 -> inf
Không có cận trên Có cận dưới
Không đơn điệu, giữ lại một phần nhỏ negative gradient cho phép model học tốt hơn.
Liên tục: Mish có đạo hàm bậc 1 tại mọi điểm thuộc miền giá trị (so sánh với ReLu không có đạo hàm tại x = 0)
Hàm ReLU có nhược điểm: với các node có giá trị nhỏ hơn 0, qua ReLU activation sẽ thành 0, hiện tượng đó gọi là “Dying ReLU”. Các node bị chuyển thành 0 thì sẽ không có ý nghĩa với bước linear activation ở lớp tiếp theo và các hệ số tương ứng từ node đó cũng không được cập nhật với gradient descent. Hàm Mish đã giải quyết được vấn đề “Dying ReLU”.
Bên cạnh đó, Mish smooth hơn các activation khác nên giúp truyền tải thông tin xuống các lớp sâu hơn trong neural network dễ dàng hơn, làm tăng độ chính xác (accuracy).
Hình 2.27. So sánh độ chính xác (Accuracy) ứng với số lượng hidden layer
Tính smooth của Mish được thể hiện bằng cách tăng số lượng hidden layer của network, đo độ chính xác của mô hình khi sử dụng ReLU/Swish/Mish. Ta có thể thấy
performance của Mish không bị giảm quá nhiều khi tăng số lượng layer như đối với ReLu và Swish.
2.1.2. Phương thức hoạt động
Cấu trúc mạng học sâu YOLOv4 có backbone được xây dựng trên mạng CSPDarknet- 53 là sự kết hợp của CSPNet với Darnet-53. Darknet-53 gồm 53 lớp tích chập và 24 lớp kết nối dư (residual) hay shortcut. Cùng với bản thân YOLOv4 có 53 lớp tích chập (giữ từ YOLOv3) nên YOLOv4 có tổng cộng 106 lớp.
Hình 2.28.Cấu trúc Darknet-53
Mạng Darknet-53 đóng vai trò là bộ phận phân tích ra feature map (bản đồ đặc trưng trừu tượng) của hình ảnh đầu vào trong khi thu nhỏ dần kích thước của ảnh. Có thể nói là qua đó mạng đã phân tách được dữ liệu đặc trưng của vật nhỏ khi hình ảnh kích thước còn lớn và cả của vật to khi đã thu gọn kích thước của ảnh.
Tiếp đó, việc dự đoán đối tượng được thực hiện bằng việc sử dụng một loạt các lớp tích chập có kích thước 1x1 và 3x3, cuối cùng là lớp có tích chập kích thước 1x1. Nên đầu ra dự đoán có kích thước bằng với kích thước feature map trước đó. Nhưng ở đây bản đồ dự đoán được diễn giải ở mỗi ô và chỉ dự đoán với số lượng khung cố định.
Mô hình nhận diện đối tượng của YOLO chia hình ảnh thành một lưới (S dòng, S cột) như đã trình bày ở phần Head của mạng YOLOv4, mỗi ô lưới dự đoán các bounding box B (khung giới hạn), độ tin cậy của các bounding box và xác suất lớp C tương ứng. Kết quả được mã hóa dưới dạng tensor [2] (Hình 3.3)
Điều mà ta mong muốn là với mỗi ô của đặc tính trừu tượng sẽ dự đoán đối tượng
thông qua một trong những hộp giới hạn nếu điểm giữa của vật nằm trong vùng của ô đặc tính trừu tượng đó. Để xác định được ô nào ta sẽ chia nhỏ dữ liệu hình ảnh đầu vào bằng với kích thước của bản đồ đặc trưng trừu tượng của lớp cuối cùng. Nên với mỗi ô lưới:
Dự đoán B boundary box (khung giới hạn) và mỗi khung có một confidence score (điểm số đo độ tin cậy).
Nó phát hiện chỉ 1 đối tượng bất kể số lượng boundary box B. Dự đoán C xác suất có điều kiện của lớp.
Ví dụ ta có ảnh đầu vào hình sau có kích cỡ 416x416 như hình 2.21 ở phía dưới đây.
Hình 2.30. Ví dụ ảnh đầu vào
Sau đó, chính ô màu vàng (trong ảnh 2.22) nơi mà chứa điểm chính giữa màu cam của hộp giới hạn dán nhãn màu cam (trong hình 2.21) của đối tượng sẽ được chọn trở thành ô phụ trách việc dự đoán đối tượng. Tại mỗi ô đặc tính trừu tượng này có thể sử dụng đến ba hộp giới hạn.
Hình 2.31. Các thuộc tính của hộp giới hạn dự đoán của YOLOv4
Đặc tính trừu tượng của mạng có (B x (5 + C)) đầu vào. Trong đó B là số lượng hộp giới hạn mà mỗi ô có thể dự đoán. Mỗi hộp dự đoán có 5 + C đặc tính bao gồm tọa độ lệch
so với điểm giữa, kích thước, điểm số đánh giá có phải vật hay không và C là độ tự tin của các lớp đối tượng trong mỗi hộp dự đoán.
Độ lệch của hai hộp dãn nhãn và hộp anchor ở đây chính là độ lệch giữa hai điểm chính giữa của hai hộp theo như hình 2.23 dưới đây. Hộp màu đỏ, tâm màu đỏ là của hộp dán nhãn và hộp màu vàng và tâm màu vàng là của hộp anchor tại ô cùng chứa tâm màu đỏ.