Với việc sử dụng thư viện Tensorflow chúng ta có 2 option chạy bằng GPU hoặc CPU. Xử lý và tính toán dữ liệu hình ảnh ở YOLOv4 được tối ưu cực kỳ tốt khi chạy với GPU. Để triển khai kiến trúc của mạng YOLOv4, theo như mã nguồn của tác giả [6], ta có file
yolov4.cfg để miêu tả các lớp của mạng theo từng khối. Có tất cả 5 loại layer được sử dụng trong cấu trúc của YOLOv4.
Lớp tích chập (Convolutional)
Lớp sử dụng tích chập để tìm đặc trưng của ảnh, hoặc co không gian ảnh với tham số stride = 2. Trong config của lớp tích chập có các tham số:
filter: số lượng bộ lọc stride: bước trượt
pad: số lượng padding không ta thêm vào xung quanh viền, pad = 1 để đảm bảo kích thước đầu ra sau tích chập.
activation: hàm kích hoạt. Ở đây YOLOv4 sử dụng hàm Mish Ví dụ 1 config của lớp tích chập: [convolutional] batch_normalize=1 filters=32 size=3 stride=1 pad=1 activation=mish
Lớp này có chức năng tăng kích thước lên n lần theo tham số stride, tham số này cho biết khoảng cách dịch chuyển của ô tích chập ở mỗi bước chuyển pixel trên ảnh
[upsample]
stride=2
Lớp nối tắt (Shortcut)
Là điểm nối tắt như được sử dụng trong mạng hồi quy Resnet. Tham số from = -n để chỉ đầu ra của lớp nối tắt có được cộng thêm đặc tính trừu tượng của lớp thứ n tước đó tính từ lớp nối tắt.
[shortcut]
from=-3
Lớp đường dẫn (Route)
Lớp này tham số layer có thể có 1 giá trị hoặc nhiều giá trị. Khi layer có một giá trị, nó xuất ra đặc tính trừu tượng của lớp được chỉ định bởi giá trị. Ví dụ, ta có tham số layer = -4, có nghĩa là lớp này sẽ xuất ra kết quả đặc tính đặc trưng từ lớp thứ 4 năm ở trước đó, kể từ lớp đường dẫn.
Ví dụ lớp đường dẫn có 1 giá trị: [route]
layers = -2
Khi layer có nhiều hơn hoặc bẳng 2 giá trị, nó sẽ trả về giá trị ghép nối từ các lớp được chỉ định bởi giá trị. Ví dụ, layer = -1, -7 sẽ trả về giá trị ghép nối từ lớp trước đó (-1) và lớp (-7) trước đó tính từ lớp đường dẫn.
Ví dụ lớp đường dẫn có 2 giá trị: [route]
layers = -1,-7
Lớp nhận dạng (YOLO)
Đây chính là lớp nhận dạng đối tượng. Tham số anchors miêu tả 9 hộp giới hạn định trước, nhưng chỉ các hộp được chỉ định bởi mask thì mới được sử dụng.
Ví dụ về lớp nhận dạng: [yolo] mask = 0,1,2 anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 classes=80 num=9 ignore_thresh = .7 truth_thresh = 1 iou_thresh=0.213 iou_loss=ciou