Professional Documents
Culture Documents
BAITAPLON-TGMT-_1_
BAITAPLON-TGMT-_1_
BAITAPLON-TGMT-_1_
Hà Nội - 2024
MỤC LỤC
3
I. TỔNG QUAN........
II. CƠ SỞ LÝ THUYẾT............................................................................................................................3
1. YOLO là gì................................................................................................................................3
1.1. Lịch sử YOLO....................................................................................................................4
1.2. Yêu cầu về mạng YOLO.....................................................................................................4
2
I. TỔNG QUAN.
Ngày nay, trí tuệ nhân tạo-Artificial Intelligence (AT) đang ngày càng phổ biến và góp
phần thay đổi sâu sắc nhiều khía cạnh trong cuộc sống hàng ngày. Trong đó thị giác máy
tính-Computer Vision (CV) là một lĩnh vực quan trọng của AI bao gồm các phương pháp
thu nhận, xử lý ảnh kỹ thuật số, phân tích và nhận dạng các hình ảnh.
Mạng Nơron học sâu (Deep learning Netaork) là lĩnh vực nghiên cứu các thuật toán,
chương trình máy tính để máy tính có thể học tập và đưa ra những dự đoán như con
người. Nó được ứng dụng vào nhiều ứng dụng khác nhau như khoa học, kỹ thuật, các lĩnh
phân loại và phát hiện đối tượng. Một ví dụ để nhận dạng tự động, tìm vực đời sống khác
cũng như các ứng điển hình là CNN (Convolutional Neural Netaork) áp dụ hiểu các mẫu
phân biệt từ ảnh bảng cách xếp chồng liên tiếp các lớp lên nhau và trong nhiễu ứng dụng,
CNN hiện nay được coi là trình phân loại ảnh mạnh và thúc đẩy các công nghệ trong lĩnh
vực thị giác máy tính, làm đòn bẩy cho quá trình học máy. Nhưng "bên cạnh đó, để phân
loại được một đối tượng thì công nghệ CNN tiêu tốn cực lớn về tài nguyên như bảng
thông, bộ nhớ và khả năng xử lý của phân cứng.
Object Detection (Nhận dạng vật thể) là một trong những hot của deep learning bởi khả
năng ứng dụng cao, dữ liệu dễ chuẩn bị và kết quả ứng dụng nhiều. Các thuật toán mới
của object detection như YOLO, có tốc độ khá nhanh và độ chính xác cao nên giúp cho
Object Detection có thể thực hiện được các tác vụ dường như là real time, thâm chí là
nhanh hơn so với con người mà độ chính xác không giảm. Chính vì tính ứng dụng rất cao,
dễ chuẩn bị dữ liệu và huấn luyện mô hình đơn giản nên nhóm sẽ giới thiệu tới một thuật
toán object detection chính là YOLO.
II.CƠ SỞ LÝ THUYẾT.
1. YOLO là gì.
YOLO là thuật toán object detection nên mục tiêu của mô hình không chỉ là dự báo nhãn
cho vật thể như các bài toán classification mà nó còn xác định location của vật thể. Do đó
YOLO có thể phát hiện được nhiều vật thể có nhãn khác nhau trong một bức ảnh thay vì
chỉ phân loại duy nhất một nhãn cho một bức ảnh. YOLO trong object detection có nghĩa
là “You only look once”. Tức là chúng ta chỉ cần nhìn 1 lần là có thể phát hiện ra vật thể.
Sở dĩ YOLO có thể phát hiện được nhiều vật thể trên một bức ảnh như vậy là vì thuật toán
có những cơ chế rất đặc biệt mà chúng ta sẽ tìm hiểu bên dưới.
3
1.1. Lịch sử YOLO.
Mô hình YOLO được mô tả lần đầu tiên bởi Joseph Redmon, và các cộng sự trong bài
viết năm 2015 có tiêu đề Bạn chỉ nhìn một lần: Phát đối tượng theo thời gian thực - You
Only Look Once: Unifned, Real-Time Object Detection. Trong công trình này thì một lần
nữa Ross Girshick, người phát triển mạng R-CNN, cũng là một tác giả và người đóng góp
khi ông chuyển qua Facebook AI Research.
Mô hình YOLOv2 được Joseph Redmon và Ali Farhadi nhằm cải thiện hiệu suất hơn nữa
trong bài báo năm 2016 có tựa đề là YOLO9000: Better, Faster, Stronger.
Mặc dù biến thể của VYOLO được gọi là YOLOv2, một instance của mô hình theo như
mô tả đã được đào tạo trên hai bộ dữ liệu nhận dạng đối tượng, và có khả năng dự đoán
lên tới 9000 loại đối tượng khác nhau, do đó được đặt tản là YOLO9000. Với con số này
thì mô hình này đã tiến xa hơn rất nhiều so với mọi mô hình trước đó về số lượng các loại
đối tượng có khả năng phát hiện.
YOLO v3 có một gia tăng trên YOLOv2. DarkNet-53 với cách kết nối ngắn gọn, tính
năng lấy mẫu cũng như phát hiện đối tượng và nguồn cấp dữ liệu trực tiếp hoặc hình ảnh
tốt hơn, triển khai và cập nhật bằng cách sử dụng thư viện học sâu Keras hoặc OpenCV.
1.2. Yêu cầu về mạng YOLO.
Chúng ta cần nắm vững lý thuyết:
• Nguyên lý hoạt động của mạng nơ ron tích chập (Convolutional Neural Network): Đây
là mạng nơ ron áp dụng các layer Convolutional kết hợp với Maxpooling để giúp trích
xuất đặc trưng của ảnh tốt hơn. Bạn đọc có thể tham khảo Lý thuyết về mạng tích chập
neural.
• Khái niệm về bounding box, anchor box: Bounding box là khung hình bao quanh vật
thể. Anchor box là những khung hình có kích thước xác định trước, có tác dụng dự đoán
bounding box.
• Feature map: Là một khối output mà ta sẽ chia nó thành một lưới ô vuông và áp dụng
tìm kiếm và phát hiện vật thể trên từng cell.
• Non-max suppression: Phương pháp giúp giảm thiểu nhiều bounding box overlap nhau
về 1 bounding box có xác suất lớn nhất.
4
2. Cách hoạt động của thuật toán YOLO.
Thuật toán YOLO hoạt động bảng cách sử dụng ba kỹ thuật sau:
Đầu tiên, hình ảnh được chia thành nhiều lưới khác nhau. Mỗi lưới có kích thước. là S x
S. Hình 2.1 cho thấy một hình ảnh đầu vào được chia thành các lưới, có nhiều ô lưới có
kích thước bảng nhau. Mỗi ô lưới sẽ phát hiện các vật thể xuất hiện bên trong chúng. Ví
dụ, nếu một tâm vật thể xuất hiện trong một ô cell nhất định, thì ô này sẽ chịu trách nhiệm
phát hiện nó.
Bounding box regression là bài toán dự đoán khi output là biến liên tục. Vì bounding box
ở đây (x.y,w.h) là bồn biến liên tục niên ta gọi là bài toán regression.
Mỗi Bounding box trong hình ảnh bao gồm các thuộc tính sau:
- Các lớp (ví dụ: người, ô tô, đèn giao thông, v.v.). Được thể hiện bằng chữ c.
5
- Đường viễn tâm hộp (bx, Đy).
YOLO sử dụng Bounding box regression duy nhất để dự đoán chiều cao, chiều. rộng,
tâm và lớp của đối tượng.
Hình 2.2. cho thấy một ví dụ về hộp giới hạn. Bounding box regression đã được thể
hiện bằng một đường viên màu vàng.
6
Trong đó Area of Overlap là diện tích phần giao nhau giữa predicted bounding box với
grouth-truth bouding box , còn Area of Union là diện tích phần hợp giữa predicted
bounding box với grouth-truth bounding box. Những bounding box được đánh nhãn bằng
tay trong tập traing set và test set. Nếu IOU > 0.5 thì prediction được đánh giá là tốt.
Trong hình 2.4, có hai bounding box, một box màu xanh lá cây và box còn lại màu xanh
lam. Box màu xanh lam là box dự đoán trong khi box màu xanh lá cây là box thực.
YOLO đảm bảo rằng hai bounding box này bằng nhau.
7
Hình 2.4 hai boxing xanh lam và xanh lá cây
3. Kiến trúc mạng YOLO
Cũng tương tự như tôi đã giới thiệu, kiến trúc YOLO bao
gồm: base network là các mạng convolution làm nhiệm vụ
trích xuất đặc trưng. Phần phía sau là những Extra Layers
base network của YOLO sử đượcdụng chủ yếu
áp dụng là các
để phát hiệnconvolutional layer và
vật thể trên feature mapcáccủa
fully
base
conntected layer. Các kiến trúc YOLO
network. cũng khá đa dạng và có thể tùy biến thành các
version cho nhiều input shape khác nhau.
Hình 1: Sơ đồ kiến trúc mạng YOLO. Thành phần Darknet Architecture được gọi là base
network có tác dụng trích xuất đặc trưng. Output của base network là một feature map có
kích thước 7x7x1024 sẽ được sử dụng làm input cho các Extra layers có tác dụng dự
đoán nhãn và tọa độ bounding box của vật thể.
Trong YOLO version 3 tác giả áp dụng một mạng feature extractor là darknet-53. Mạng
này gồm 53 convolutional layers kết nối liên tiếp, mỗi layer được theo sau bởi một batch
normalization và một activation Leaky Relu. Để giảm kích thước của output sau mỗi
convolution layer, tác giả down sample bằng các filter với kích thước là 2. Mẹo này có
tác dụng giảm thiểu số lượng tham số cho mô hình.
8
Type Filters Size Output
Convolutional 32 3x3 256 x 256
9
4. Output của YOLO
Output của mô hình YOLO là một véc tơ sẽ bao gồm các thành phần: yT=[p0,
(tx,ty,tw,th bounding box),(p1,p2,...,pc scores of c classes)]
Trong đó
• p0 là xác suất dự báo vật thể xuất hiện trong bounding box.
• (tx,ty,tw,th bounding box) giúp xác định bounding box. Trong đó tx,ty là tọa độ tâm
và tw,th là kích thước rộng, dài của bounding box.
• (pi,p2,.. ,,pc scores of c classes) là véc tơ phân phối xác suất dự báo của các classes.
Việc hiểu output khá là quan trọng để chúng ta cấu hình tham số chuẩn xác khi huấn
luyện model qua các open source như darknet. Như vậy output sẽ được xác định theo số
lượng classes theo công thức (n_class+5). Nếu huấn luyện 80 classes thì bạn sẽ có
output là 85. Trường hợp bạn áp dụng 3 anchors/cell thì số lượng tham số output sẽ là:
(n_class+5)x3=85x3=255
10
✓
✓
/
✓
/
#
I
I
Ị
tx
ty tw
Po\P\ P2 .... Pc XB
1 _/ \_S l__ 1
Hình 3: Kiến trúc một output của model YOLO. Hình ảnh gốc là một feature map kích
thước 13x13. Trên mỗi một cell của feature map chúng ta lựa chọn ra 3 anchor boxes với
kích thước khác nhau lần lượt là Box 1, Box 2, Box 3 sao cho
11
tâm của các anchor boxes trùng với cell. Khi đó output của YOLO là một véc tơ
concatenate của 3 bounding boxes. Các attributes của một bounding box được mô tả như
dòng cuối cùng trong hình.
Hình 4: Các feature maps của mạng YOLOv3 với input shape là 416x416, output là 3
feature maps có kích thước lần lượt là 13x13, 26x26 và 52x52.
Trên mỗi một cell của các feature map chúng ta sẽ áp dụng 3 anchor box để dự đoán
vật thể. Như vậy số lượng các anchor box khác nhau trong một mô hình YOLO sẽ là
9 (3 featue map x 3 anchor box).
Đồng thời trên một feature map hình vuông S x S, mô hình YOLOv3 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à:
(13x13+26x26+52x52)x3=10647(anchor boxes)
Đây là một số lượng rất lớn và là nguyên nhân khiến quá trình huấn luyện mô hình
YOLO vô cùng chậm bởi chúng ta cần dự báo đồng thời nhãn và bounding box trên đồng
thời 10647 bounding boxes.
Một số lưu ý khi huấn luyện YOLO:
• Khi huấn luyện YOLO sẽ cần phải có RAM dung lượng lớn hơn để save được
10647 bounding boxes như trong kiến trúc này.
12
• Không thể thiết lập các batch_size quá lớn như trong các mô hình classification vì
rất dễ Out of memory. Package darknet của YOLO đã chia nhỏ một batch thành
các subdivisions cho vừa với RAM.
• Thời gian xử lý của một step trên YOLO lâu hơn rất rất nhiều lần so với các mô
hình classification. Do đó nên thiết lập steps giới hạn huấn luyện chó YOLO nhỏ.
Đối với các tác vụ nhận diện dưới 5 classes, dưới 5000 steps là có thể thu được
nghiệm tạm chấp nhận được. Các mô hình có nhiều classes hơn có thể tăng số
lượng steps theo cấp số nhân tùy bạn.
4.2. Anchor box
Để tìm được bounding box cho vật thể, YOLO sẽ cần các anchor box làm cơ sở ước
lượng. Những anchor box này sẽ được xác định trước và sẽ bao quanh vật thể một
cách tương đối chính xác. Sau này thuật toán regression bounding box sẽ tinh
chỉnh lại anchor box để tạo ra bounding box dự đoán cho vật thể. Trong một mô
hình YOLO:
• Mỗi một vật thể trong hình ảnh huấn luyện được phân bố về một anchor box.
Trong trường hợp có từ 2 anchor boxes trở lên cùng bao quanh vật thể thì ta sẽ xác
định anchor box mà có IoU với ground truth bounding box là cao nhất.
Hình 5: 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 nhau 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
13
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 midpoint của vật thể. Chẳng hạn như hình chú chó trong hình
3 sẽ được phân về cho cell màu đỏ vì điểm midpoint của ảnh chú chó rơi vào
đúng cell này. Từ cell ta sẽ xác định các anchor boxes bao quanh hình ảnh chú
chó.
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.
\?
Anchor box example
^*
A
by
bh ]g
bw v>u>
Ci
c2
c3
Pc l,
bx w
by s
bh A
bw
Anchor box 1: Anchor box 2: <Đ
Cl
c2 ĩ
c3- -o _ J
Andrew Ng
Hình 6: Khi 2 vật thể người và xe trùng midpoint và cùng thuộc một cell. Thuật toán
sẽ cần thêm những lượt tiebreak để quyết định đâu là class cho cell.
14
của hình ảnh, như trong mạng regional proposal network, việc huấn luyện mô hình có thể
trở nên không ổn định.
Cho một anchor box có kích thước (pw,ph) tại cell nằm trên feature map với góc trên
cùng bên trái của nó là (cx,cy), mô hình dự đoán 4 tham số (tx,ty,tw,th) trong đó 2 tham
số đầu là độ lệch (offset) so với góc trên cùng bên trái của cell và 2 tham số sau là tỷ lệ so
với anchor box. Và các tham số này sẽ giúp xác định bounding box dự đoán b có tâm
(bx,by) và kích thước (bw,bh) thông qua hàm sigmoid và hàm exponential như các công
thức bên dưới:
bx=ơ(tx)+cxby=ơ(ty)+cybw=pwetwbh=pheth
Ngoài ra do các tọa độ đã được hiệu chỉnh theo width và height của bức ảnh nên luôn
có giá trị nằm trong ngưỡng [0, 1]. Do đó khi áp dụng hàm sigmoid giúp ta giới hạn
được tọa độ không vượt quá xa các ngưỡng này.
Hình 7: Công thức ước lượng bounding box từ anchor box. Hình chữ nhật nét đứt bên
ngoài là anchor box có kích thước là (pw,ph). Tọa độ của một bounding box sẽ
15
được xác định dựa trên đồng thời cả anchor box và cell mà nó thuộc về. Điều này giúp
kiểm soát vị trí của bounding box dự đoán đâu đó quanh vị trí của cell và bounding box
mà không vượt quá xa ra bên ngoài giới hạn này. Do đó quá trình huấn luyện sẽ ổn định
hơn rất nhiều so với YOLO version 1.
Non-Max
Suppression
Hình 8: non-max suppression. Từ 3 bounding box ban đầu cùng bao quanh chiếc xe đã
giảm xuống còn một bounding box cuối cùng.
Các bước của non-max suppression:
• Step 1: Đầu tiên chúng ta sẽ tìm cách giảm bớt số lượng các bounding box bằng cách
lọc bỏ toàn bộ những bounding box có xác suất chứa vật thể nhỏ hơn một ngưỡng
threshold nào đó, thường là 0.5.
• Step 2: Đối với các bounding box giao nhau, non-max suppression sẽ lựa chọn ra một
bounding box có xác xuất chứa vật thể là lớn nhất. Sau đó tính toán chỉ số giao thoa IoU
với các bounding box còn lại. Về chỉ số IoU, các bạn xem lại mục
Một số đính nghĩa - Bài 13 - Model SSD trong Object Detection
Nếu chỉ số này lớn hơn ngưỡng threshold thì điều đó chứng tỏ 2 bounding boxes đang
overlap nhau rất cao. Ta sẽ xóa các bounding có có xác xuất thấp hơn và giữ
16
lại bounding box có xác suất cao nhất. Cuối cùng, ta thu được một bounding box duy nhất
cho một vật thể.
5. Kiến trúc YOLO v4
Một thuật toán phát hiện đối tượng tối ưu yêu cầu các tính năng sau
- Kích thước mạng đầu vào lớn hơn để phát hiện nhiều đối tượng có kích thước nhỏ.
- Nhiều lớp hơn cho trường tiếp nhận cao hơn sẽ cho phép xem toàn bộ đối tượng, xem
bối cảnh xung quanh đối tượng và tăng số lượng kết nối giữa điểm hình ảnh và kích hoạt
cuối cùng.
- Nhiều thông số hơn - cho khả năng mô hình lớn hơn để phát hiện nhiều đối tượng có
kích thước khác nhau trong một hình ảnh duy nhất.
6. Những cải tiến của YOLO v4
YOLO v4 là một loạt các cải tiến về tốc độ so với YOLOv3 và được cài đặt từ một bản
fork của Darknet. Kiến trúc của YOLOv4 đã đưa bài toán object detection dễ tiếp cận hơn
với những người không có tài nguyên tính toán mạnh. Chúng ta hoàn toàn có thể huấn
luyện một mạng phát hiện vật với độ chính xác rất cao bằng YOLO v4 chỉ với GPU 1080ti
hoặc 2080ti. Trong tương lai, việc tối ưu lại các mạng hiện tại để phù hợp với tài nguyên
tính toán yếu hoặc tạo ra sự song song hóa cao ở các server chắc chắn phải được thực hiện
để có thể đưa các ứng dụng computer vision vào thực tế.
7. Các tính năng nâng cao của YOLO v4.
- Yolo v4 có tốc độ suy luận nhanh hơn đối với máy dò đối tượng trong hệ thống sản
xuất.
- Tối ưu hóa cho các tính toán song song
- Yolo v4 là một mô hình phát hiện đối tượng hiệu quả và mạnh mẽ sử dụng một GPU
duy nhất để cung cấp một máy phát hiện đối tượng chính xác một cách nhanh chóng.
III. CODE CHƯƠNG TRÌNH.
17
1. Khai báo thư viện được sử dụng trong chương trình.
# import dependencies
from rPython.display import display, Javascript,
Inage
from google.Í3lab.output import evaljs
from google.colab.patches import: cu2_iashow
from base64 import bS4decode, b64encode
inport CV2
inport numpy as np
irport RIL
irport id
irport html
irport time
inport martplot lib.pyplot as pit j&iatpLotlib
inline
C, tạo darknet (xây dựng darknet để sau đó bạn có thể sử dụng tệp darknet.py và có các
phụ thuộc của nó)
ị # make darkrert (builds darknet so that you can then use the darknet.py file and have its dependencies)
Intake
D, nhận được tệp weights YOLO v4 được chia tỷ lệ bthe được đào tạo trước để phát
hiện 80 lớp (đối tượng) từ ổ đĩa google được chia sẻ
18
[13] 1 # get bthe scaled yolov4 weights file that is pre-tnained to detect 80 classes (objects) from shared google drive
2 !wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/
# darknet helper function to run detection on image def darknet_helper(img, width, height):
darkret_image = make_image(width, height, 3) img_rgb = cv2.cvtcolor(img, CV2.COLOR_BGR2RGB) img_resiied = cv2.resiie(img_rgb, (width,
height),
interpc lati ;n=cV2?: j ^_L INEAR) I
# get image ratios to convert bounding boxes to proper size img_height, img_width, = img.shape
width ratio = img_width/width height ratio = img_height/height
for label, confidence, bbox in detections: left, top, right, bottom = bbox2points(bbox)
left, top, right, bottom = int(left * width ratio), int(tcp * height_ratio), int(right * width ratio), int(bottom * height_ratlo) cv2.rectangle(image, (left,
top), (right, bottom), class_colors[label], 2) cv2.putText(image, "{} [{:.2f}]".format(label, float(confidence)),
(left, top - 5), CV2.FONT_HERSHEY_SIMPLEX, 0.5, class_colors[label], 2)
cv2_imshow(image)
19
5. Chức năng trợ giúp.
# function to convert the JavaScript object into an OpenCV image def js to_image(js reply):
Params:
js reply: JavaScript object containing image from webcam
Returns:
img: opencv BGR image
retun Irg
# function to convert OpenCV Rectangle bounding box image into baseS4 byte string to be overlayed or video stream def
bbox_to_bytes(bbox_array):
Params:
bbox_array: Numpy array (pixels) containing rectangle to overlay on video stream.
Returns:
bytes: Base64 image byte string
20
đef take_photo(filenames'photo.jpg', qualỉty»e.8): js = Davascripte " async function
takePhoto(quality) ị const div = document.createElenent('div'); const capture =
document.createElement(’button'); capture.textcontent » ‘Capture’;
dỉv.appendchỉld(capture);
B.
return canvas.tooatauRL('inage/jpeg', quality);
"}
display(js)
# get photo data
data = eval_js('takePhoto({})‘.fomat(quality))
B, chuyển vào mô hình YOLOv4 của chúng tôi để phát hiện đối tượng.
try:
■filename = tafce_ptKito{Ị'photo .jpg') print('Saved to O' .format{filename))
# Show the inage which was just taken, display[Image(filename))
except Exception as err:
# Errors will be thrown if the user does not have a webcam or if they do not
# grant the page permission to access it. print(str(err))
21
7. YOLOv4 trên webcam videos
# Javascript to properly create our live video stream using our webcam as input def
video_stream(): js = Javascripte ■' var video; var div = null; var stream; var
captureCanvas; var imgElenent; var labelElement;
function removeoomO {
stream.getvideoTrac ks()[0].stop();
video.remove();
div.removeO;
video = null;
div = null;
stream m null;
imgElement = null;
capturecanvas = null;
labelElement = null;
J
function onAnimationframeO { if ('shutdown) {
window.requestAnimationFrame(onAnimationFrame);
}
if (pendingResolve) { var result =
# loop through detections and draw them on transparent overlay image for label, confidence, bbox in detections:
left, top, right, bottom = bbox2points(bbox)
left, top, right, bottom = int(left * width_ratio), int(tcp * height_ratio), int(right * width_ratio), int(bottom x
height_ratio) bbox_array a
cv2.rectangle(bbox_array, (left, top), (right, bottom), class_colors[label], 2) bbox_array a cv2.putText(bbox_array, "{} [{:.2f}]".format(label,
float(confidence)),
(left, top - 5), CV2.F0NT_H6RSHEY_SIMPLEX, 0.5, class colors[label]j 2)
22
9. Kết quả.
A, Thử nghiệm trên hình ảnh person.jpg.
23
IV.TỔNG KẾT:
Như vậy qua bài viết này tôi đã lý giải cho các bạn nguyên lý hoạt động mạng YOLO theo
một cách khái quát nhất. Đây là một thuật toán rất phức tạp và bên trong nó có rất nhiều
các xử lý tính toán mà không đơn giản để chúng ta hiểu hết được toàn bộ chúng.
Em xin gửi lời cảm ơn sâu sắc đến giảng viên Nguyễn Văn Tới đã truyền đạt những kiến
thức quý báu cho em trong suốt thời gian học tập vừa qua. Trong thời gian tham gia lớp
học Thị giác máy tính, em đã có thêm cho mình nhiều kiến thức bổ ích, tinh thần học tập
hiệu quả, nghiêm túc. Đây chắc chắn sẽ là những kiến thức quý báu, là hành trang để em
có thể vững bước sau này. Tuy nhiên, do vốn kiến thức còn nhiều hạn chế và khả năng
tiếp thu thực tế còn nhiều bỡ ngỡ. Mặc dù em đã cố gắng hết sức nhưng bài báo cáo còn
nhiều thiếu sót và nhiều chỗ còn chưa chính xác, kính mong thầy xem xét và góp ý để bài
báo cáo của em được hoàn thiện hơn.
https://viblo.asia/p/tim-hieu-ve-volo-trong-bai-toan-real-time-obiect-detection-
yMnKMdvr57P
24
Tài liêu PDF cùa YOLOv4:
https://colab.research.google.com/drive/1xdivBiY75MAVRSigmiqI7pbRLn58Vrb E?
usp=sharing#scrollTo=M btEC1N-YkS
25