Tải bản đầy đủ (.docx) (37 trang)

BÁO CÁO GIỮA KỲ MÔN: MACHINE LEARNING Đề tài: OBJECT DETECTION

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.11 MB, 37 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH
KHOA ĐIỆN ĐIỆN TỬ
BỘ MƠN KỸ THUẬT MÁY TÍNH - VIỄN THƠNG



BÁO CÁO GIỮA KỲ
MƠN: MACHINE LEARNING

Đề tài: OBJECT DETECTION
GVHD:

Trần Vũ Hoàng

Sinh viên thực hiện :

Lê Xuân Đức

MSSV: 17119071

Đồng Nhất Khang MSSV: 17119081

Tp.Hồ Chí Minh – 11/2020


1. Giới thiệu
1.1. Đề tài
Object Detection là quá trình tìm kiếm các cá thể đối tượng trong thế giới
thực như ô tô, xe đạp, TV, hoa và con người trong hình ảnh tĩnh hoặc video. Nó
cho phép nhận dạng, xác định vị trí và phát hiện nhiều đối tượng trong một hình


ảnh, giúp chúng ta hiểu rõ hơn nhiều về một hình ảnh nói chung. Object Detection
thường được sử dụng trong các ứng dụng như truy xuất hình ảnh, bảo mật, giám
sát và hệ thống hỗ trợ người lái nâng cao (ADAS).
Đối tượng nhóm lựa chọn: xe ơ tơ.
1.2. Bảng phân chia cơng việc
Họ tên
Cơng việc
Lê Xn Đức
Word, thuyết trình mục 1-5
Đồng Nhất Khang
Powerpoint, thuyết trình mục 6-8
2. Lý do chọn đề tài
Ngày nay, xã hội ngày càng phát triển, nhu cầu đi lại ngày càng tăng lên với
nhiều hình thức, phương tiện khác nhau. Tình trạng kẹt xe trong giờ cao điểm, tai
nạn giao thông,… diễn ra khá là phổ biến. Để hạn chế những tình trạng như trên,
nhóm chúng em lựa chọn đề tài nhận diện xe ô tô nhằm tạo ra được sản phẩm hỗ
trợ người dùng giám sát được q trình lưu thơng của các phương tiện, mật độ lưu
thông, đếm số xe mà không cần có người theo dõi, đồng thời đưa ra giải pháp phù
hợp, cảnh báo cho người điều khiển phương tiện giao thông một số thông tin cần
thiết như khả năng kẹt xe ở khu vực sẽ đi qua, thông tin của xe đi sai làn, sai thời
gian quy định,… Và một trong nhưng đối tượng xe đáng được quan tâm là xe ơ tơ
– phương tiện đường bộ có kích thước lớn, được sử dụng phổ biến ở nhiều nơi, có
nhiều nguồn dữ liệu hình ảnh.
3. Mục tiêu
Nhận biết được chính xác xe ô tô khi đang đứng yên, chuyển động trong
các điều kiện góc nhìn, thời tiết, chất lượng hình ảnh,… khác nhau với độ chính
xác lớn hơn 90%.
Đưa ra các thơng báo, dự đốn mức độ lưu thơng của xe trong giờ cao
điểm, các khu vực có nhiều ơ tô qua lại.
2



4. Các thách thức
Vật thể bị khuất : do các góc nhìn khác nhau hoặc do số lượng xe lưu thơng
lớn, các xe ở phía trước che khuất xe ở phía sau. Khi đó, hệ thống chỉ nhận được
các xe ở phía trước, các xe ở phía sau có thể nhận diện sai.
Vật thể ở xa, mờ, màu sắc trùng với màu nền: các hình ảnh có thể khơng
được xem xét hay bỏ qua việc nhận diện. Trong trường hợp này, hệ thống vẫn hoạt
động, tuy nhiên các đối tượng không được phát hiện.
Vật thể di chuyển quá nhanh: tốc độ di chuyển nhanh trong khi tốc độ xử lý
hình ảnh theo dõi khơng thể đáp ứng được. Ví dụ như camera ghi được 30 hình
ảnh/giây nhưng do tốc độ xe quá nhanh dẫn đến hình ảnh tại thời điểm ghi được có
thể bị nhịe, mờ, hình ảnh tại điểm trước đó chưa biến mất thì hình ảnh tại thời
điểm hiện tại xuất hiện khiến trong cùng 1 khung hình xuất hiện 2 hình ảnh xe của
chỉ một chiếc xe. Từ đó việc nhận diện có thể khó khăn, gây ra sai lệch.
Vật thể di chuyển ngược chiều, sai luật: thông thường ở một số nơi chỉ cho
phép di chuyển 1 chiều, việc lắp đặt hệ thống giám sát xe theo 1 chiều là hồn tồn
hợp lý vì chiều lưu thông đã được định sẵn. Tuy nhiên, trong một vài trường hợp
vẫn có người điều khiển phương tiện giao thơng đi sai luật, đi ngược chiều, sai làn
đường,… Do đó, hệ thống có thể nhận diện sai.
5. Các phương pháp đề xuất
5.1. Region-based Convolutional Neural Networks (R-CNN)

Hình 1. Region-based Convolutional Neural Networks (R-CNN)
Convolutional một cửa sổ trượt (Sliding Windows) trên một ma trận như mơ tả
hình dưới:

3



Hình 2. Sliding Windows
Các convolutional layer có các parameter(kernel) đã được học để tự điều chỉnh
lấy ra những thông tin chính xác nhất mà khơng cần chọn các feature. Trong hình
ảnh ví dụ trên, ma trận bên trái là một hình ảnh trắng đen được số hóa. Ma trận có
kích thước 5×5 và mỗi điểm ảnh có giá trị 1 hoặc 0 là giao điểm của dòng và cột.
Convolution hay tích chập là nhân từng phần tử trong ma trận 3x3. Sliding
Window hay còn gọi là kernel, filter hoặc feature detect là một ma trận có kích
thước nhỏ như trong ví dụ trên là 3×3. Kết quả được một ma trận gọi là Convoled
feature được sinh ra từ việc nhận ma trận Sliding Windows với ma trận ảnh 5×5
bên trái.
Cấu trúc của mạng CNN: Mạng CNN là một tập hợp các lớp Convolution
chồng lên nhau và sử dụng các hàm nonlinear activation như ReLU và tanh để
kích hoạt các trọng số trong các node. Mỗi một lớp sau khi thông qua các hàm
kích hoạt sẽ tạo ra các thơng tin trừu tượng hơn cho các lớp tiếp theo. Trong mơ
hình mạng truyền ngược (feedforward neural network) thì mỗi neural đầu vào
(input node) cho mỗi neural đầu ra trong các lớp tiếp theo. Mơ hình này gọi là
mạng kết nối đầy đủ (fully connected layer) hay mạng toàn vẹn (affine layer). Cịn
trong mơ hình CNNs thì ngược lại. Các layer liên kết được với nhau thông qua cơ
chế convolution. Layer tiếp theo là kết quả convolution từ layer trước đó, nhờ vậy
mà ta có được các kết nối cục bộ. Như vậy mỗi neuron ở lớp kế tiếp sinh ra từ kết
quả của filter áp đặt lên một vùng ảnh cục bộ của neuron trước đó. Mỗi một lớp
4


được sử dụng các filter khác nhau thơng thường có hàng trăm hàng nghìn filter
như vậy và kết hợp kết quả của chúng lại. Ngồi ra có một số layer khác như
pooling/subsampling layer dùng để chắt lọc lại các thông tin hữu ích hơn (loại bỏ
các thơng tin nhiễu). Trong quá trình huấn luyện mạng (traning) CNN tự động học
các giá trị qua các lớp filter dựa vào cách thức mà bạn thực hiện. Ví dụ trong tác
vụ phân lớp ảnh, CNNs sẽ cố gắng tìm ra thơng số tối ưu cho các filter tương ứng

theo thứ tự raw pixel > edges > shapes > facial > high-level features. Layer cuối
cùng được dùng để phân lớp ảnh.

Hình 3. Phân layer dựa trên cơ chế convolution
Trong mơ hình CNN có 2 khía cạnh cần quan tâm là tính bất biến (Location
Invariance) và tính kết hợp (Compositionality). Với cùng một đối tượng, nếu đối
tượng này được chiếu theo các gốc độ khác nhau (translation, rotation, scaling) thì
độ chính xác của thuật tốn sẽ bị ảnh hưởng đáng kể. Pooling layer có tính bất
biến đối với phép dịch chuyển (translation), phép quay (rotation) và phép co giãn
(scaling). Tính kết hợp cục bộ có các cấp độ biểu diễn thông tin từ mức độ thấp
đến mức độ cao và trừu tượng hơn thông qua convolution từ các filter. Đó là lý do
tại sao CNNs cho ra mơ hình với độ chính xác rất cao. Cũng giống như cách con
người nhận biết các vật thể trong tự nhiên.
Region-based Convolutional Neural Networks (R-CNN) là sự kết hợp của các
đề xuất khu vực với Mạng nơ-ron Convolution (CNN). R-CNN giúp định vị các
đối tượng có mạng lưới sâu và huấn luyện mơ hình dung lượng cao chỉ với một
lượng nhỏ dữ liệu phát hiện có chú thích. Nó đạt được độ chính xác phát hiện đối
tượng tuyệt vời bằng cách sử dụng ConvNet sâu để phân loại các đề xuất đối
tượng.
RCNN sử dụng:
 Thuật toán selective search để đưa ra khoảng 2000 bounding boxes, hay
còn gọi là region proposals, chứa các vùng có thể có đối tượng ở trong.
Selective search là một phương pháp nằm trong nhóm region proposal.
5


Trong phương pháp selective search (SS), chúng ta bắt đầu bằng cách xem
các pixel là mỗi nhóm, các lần lặp tiếp theo sẽ tính khoảng cách ngữ nghĩa
(ví dụ như là màu sắc, cường độ ánh sáng) giữa các nhóm và gom các nhóm
có khoảng cách gần nhau về chung 1 nhóm để tìm ra phân vùng có khả

năng cao nhất chứa đối tượng (ưu tiên gom những nhóm nhỏ trước).

Hình 4. Kết quả selective search qua thuật tốn Graph Based Image Segmentation
 Các mạng đã được huấn luyện sẵn như Alex-net, VGG-16 để tính tốn
feed-forward các regions thu được convolutional features của mỗi region,
sau đó huấn luyện SVM để xác định được vật thể nào được chứa trong
region proposal đó.
 Linear Regression để hiệu chỉnh các giá trị (vị trí các đỉnh) của region
proposer.
Quy trình:
 Sử dụng các pre-train về phân loại ảnh, ví dụ như VGG hay Resnet đã
được train cho bộ ImageNet dataset. Nhiệm vụ phân loại liên quan đến N
lớp.
 Đề xuất các ROI Pooling bằng thuật tốn selective search để có được
khoảng 2000 region proposals. ROI Pooling là một loại max pooling dùng
để chuyển đổi các feature trong projected region của hình ảnh với mọi size
(hxw) thành một window với kích thước cố định (HxW). Input region sẽ
được chia làm HxW grids, xấp xỉ cho mỗi subwindow có kích thước h/H x
w/W. Sau đó sử dụng max-pooling cho mỗi grid.

6


Hình 5. Region of interest pooling

 Smooth từng region proposals và áp dụng CNN để trích xuất các đặc trưng.
 Áp dụng SVM (Support Vector Machine - phương pháp tìm mặt phân cách
sao cho margin tìm được là lớn nhất, đồng nghĩa với việc các điểm dữ liệu
an toàn nhất so với mặt phân cách.) do lớp chỉ định để cho điểm từng đề
xuất.

 Xếp hạng các region proposals, sử dụng NMS (Non-maximum suppression)
để lấy các box, loại bỏ các box dư thừa.

7


Hình 6. Proposal box sau khi sử dụng NMS (Non-maximum suppression)
Thuật toán NMS
 Input:
- Tập danh sách các proposals box ký hiệu là B với:
B = {b1,b2,…,bn}, với bi là proposal thứ i.
- Tập điểm của mỗi proposal box ký hiệu là S với:
S = {s1,s2,…,sn}, si là điểm confidence của box bi.
- Giá trị ngưỡng overlap threshold N.
- Cả hai giá trị bi và si đều là output của mạng neural network.
 Output: Một tập các proposals box D là tập các proposals đã loại bỏ
dư thừa tương ứng với từng object trong hình.
 Quy trình:
- Bước 1: Khởi tạo tập output D = {}
- Bước 2:Chọn ra proposal box có điểm confidence cao nhất trong
tập S, loại box đó ra khỏi tập S, B và thêm nó vào tập D.
- Bước 3: Tính giá trị IOU – tức giá trị diện tích chồng lên nhau
giữa predicted bounding-box và ground-truth bounding box,
(IOU càng gần 1 thì độ chính xác càng cao, IOU =
Ỉntersection/Union) giữa proposal box mới vừa loại ra ở bước 2
với toàn bộ proposal box trong tập B. Nếu có bất kỳ box nào đó
có giá trị IOU lớn hơn giá trị ngưỡng N thì loại box đó ra khỏi B,
S.
- Bước 4: Lặp lại bước 2 đến khi nào khơng cịn box nào có trong
tập B.

 Hạn chế của thuật toán:
8


-

-

Tồn bộ q trình loai bỏ những box dư thừa đều phụ thuộc vào
giá trị ngưỡng N. Việc chọn lựa giá trị N chính là chìa khóa thành
cơng của mơ hình. Tuy nhiên, việc chọn giá trị ngưỡng này trong
các bài tốn khá khó. Và với việc chỉ sử dụng giá trị N sẽ gặp
trường hợp: Giả sửa giá trị ngưỡng N chọn là 0.5. Có nghĩa là
nếu box có giá trị lớn IOU đều bị loại bỏ, ngay cả với trường hợp
điểm score si của nó có giá trị cao. Ngược lại, giả sử box có điểm
score si thấp nhưng IOU của nó nhỏ hơn 0.5 thì nó lại được nhận.
Để giải quyết bài toán này Navaneeth Bodla đã đề xuất một cải
tiến nhỏ và đặt tên thuật toán là Soft-NMS. Ý tưởng được đề ra
như sau: Thay vì phải loại bỏ hoàn toàn proposal, chúng ta sẽ
giảm giá trị confidence của box đi.

Hình 7. Thuật tốn NMS
Giá trị si được cập nhật lại như sau:

Hình 8. Giá trị si sau khi cập nhật
 Sử dụng các hàm hồi quy do lớp chỉ định để tinh chỉnh các vị trí.

9



R-CNN có khả năng mở rộng quy mơ đến hàng nghìn lớp đối tượng mà khơng
cần dùng đến các kỹ thuật gần đúng. Tuy nhiên, có những nhược điểm đáng chú ý:
 Huấn luyện là một đường ống nhiều giai đoạn: R-CNN lần đầu tiên tinh
chỉnh ConvNet trên các đề xuất đối tượng bằng cách sử dụng log loss. Sau
đó, nó phù hợp với SVM với các tính năng của ConvNet. Các SVM này
hoạt động như bộ phát hiện đối tượng, thay thế bộ phân loại softmax đã học
bằng cách tinh chỉnh. Trong giai đoạn huấn luyện thứ ba, bounding-box
regressors được tạo ra.
 Huấn luyện tốn về không gian và thời gian: Đối với SVM và huấn luyện
bounding-box regressors, các tính năng được trích xuất từ mỗi đề xuất đối
tượng trong mỗi hình ảnh và được ghi vào đĩa. Với các mạng rất sâu, chẳng
hạn như VGG16, quá trình này mất 2,5 ngày GPU cho 5000 hình ảnh của
bộ trainval VOC07. Các tính năng này yêu cầu dung lượng lưu trữ hàng
trăm gigabyte.
 Đối tượng phát hiện chậm: Tại thời điểm thử nghiệm, các tính năng trích
xuất từ mỗi đề xuất đối tượng trong mỗi hình ảnh thử nghiệm. R-CNN
chậm vì nó thực hiện chuyển tiếp ConvNet vượt qua cho mỗi đề xuất đối
tượng, mà khơng cần chia sẻ tính tốn, khơng thể áp dụng cho real-time vì
mỗi ảnh trong testset mất rất nhiều thời gian xử lý. .

Hình 9: Object detection pipeline with region of interest pooling
5.2.

Fast R-CNN
10


Hình 10. Fast R-CNN
Fast R-CNN dựa trên cơng việc trước đó để phân loại hiệu quả các đề xuất đối
tượng bằng cách sử dụng mạng phức hợp sâu – pretrained CNN. Tương tự như RCNN thì Fast R-CNN vẫn dùng selective search để lấy ra các region proposal. Tuy

nhiên là Fast R-CNN không tách 2000 region proposal ra khỏi ảnh và thực hiện
bài toán image classification cho mỗi ảnh. Fast R-CNN cho cả bức ảnh vào
ConvNet(một vài convolutional layer + max pooling layer) để tạo ra convolutional
feature map. Sau đó các vùng region proposal được lấy ra tương ứng từ
convolutional feature map. Tiếp đó được Flatten và thêm 2 Fully connected layer
(FCs) để dự đoán lớp của region proposal và giá trị offset values của bounding
box. Tuy nhiên là kích thước của các region proposal khác nhau nên khi Flatten sẽ
ra các vector có kích thước khác nhau nên khơng thể áp dụng neural network
được. Vì vậy Fast R-CNN đã resize các region proposal về cùng kích thước trước
khi dùng transfer learning.
Fast R-CNN:
 Sử dụng các mạng huấn luyện sẵn để feed-forward các region proposals, sẽ
tốn nhiều thời gian bởi với mỗi ảnh thuật toán selective search sẽ cho ra
hàng nghìn region proposals.
 Feed-forward một lần đối với ảnh gốc, thu được convolutional features của
ảnh đó. Ví dụ với một hình ảnh có kích thước 600∗600∗3, ta sẽ thu được
convolutional features với kích thước 37∗37∗512. Kích thước của features
bị giảm nhỏ khoảng 16 lần 600/37.
 Dựa vào kích thước cùng vị trí của các region proposals đối với ảnh gốc, ta
sẽ tính tốn được vị trí của region proposal trong convolutional features.

11


 Sửa dụng giá trị convolutional faetures của region proposal, ta dự đốn
được vị trí các đỉnh của bounding box cũng như vật thể nằm trong
bounding box là gì.
Các bước thực hiện:
 Bước 1: Sử dụng pre-train CNN về phân loại ảnh
 Bước 2: Sử dụng thuật toán selective search để sinh ra các region proposals

 Bước 3: Sau khi pre-train CNN:
 Thay thế maxpooling layer cuối cùng của pre-train CNN thành RoI
pooling layer. Output của RoI pooling layer là một feature vector của
region proposals với length đã được fix. Chia sẽ tính tốn CNN có rất
nhiều ý nghĩa vì nhiều region proposals của cùng một ảnh có khả năng
chồng chéo rất cao.
 Thay thế fully connected layer cuối và softmax layer cuối cùng (K
classes) thành fully connected layer và softmax layer K + 1 classes
 Bước 4: Model được chia ra làm 2 output layer:
 Sftmax estimator của K+1 classes (giống như RCNN và +1 là
background), output là một phân phối xác suất rời rạc cho mỗi RoI.
 Bouding-box regression
So với công việc trước đây, Fast R-CNN sử dụng một số cải tiến để cải thiện
tốc độ huấn luyện và kiểm tra đồng thời tăng độ chính xác của phát hiện. Fast RCNN huấn luyện nhanh hơn R-CNN, SPPnet. Fast R-CNN được triển khai bằng
Python và C ++ (sử dụng Caffe).
Ưu điểm:
 Chất lượng phát hiện(mAP) cao hơn R-CNN, SPPnet
 Huấn luyện là một giai đoạn, sử dụng mutil-task loss
 Huấn luyện có thể cập nhật tất cả các lớp mạng
 Không cần bộ nhớ lưu trữ cho bộ nhớ đệm tính năng
Nhược điểm lớn nhất là mơ hình vẫn dựa vào thuật toán selective search (hoặc
bất kỳ thuật toán đề xuất khu vực nào khác). Thời gian xử lý được cải thiện nhưng
vẫn không cho là đáng kể vì các proposal region được tạo ra từ mơ hình khác và
điều đó rất tốn kém
5.3. Faster R-CNN

12


Hình 11. Faster R-CNN

Faster R-CNN là một thuật tốn phát hiện đối tượng tương tự như R-CNN.
Nhưng Faster R-CNN không dùng thuật toán selective search để lấy ra các region
proposal, mà sử dụng thêm một mạng CNN gọi là Region Proposal Network
(RPN) để tìm các region proposal. Đầu tiên cả bức ảnh được cho qua pre-trained
model để lấy feature map. Sau đó feature map được dùng cho Region Proposal
Network để lấy được các region proposal. Sau khi lấy được vị trí các region
proposal thì thực hiện tương tự Fast R-CNN. Faster R-CNN xây dựng một mơ
hình duy nhất bao gồm RPN (region proposal network) và Fast RCNN với cái
CNN được chia sẻ.

13


Hình 12. Kiến trúc Fast R-CNN
Region Proposal Network (RPN) Input của RPN là feature map và output là
các region proposal.

Hình 13. Region proposal
Một region proposal xác định bằng 2 điểm ở 2 góc, ví dụ: A(x_min, y_min)
và B(x_max, y_max). Khi RPN dự đoán cần phải rằng buộc x_min < x_max và
y_min < y_max. Hơn nữa các giá trị x, y khi dự đốn có thể ra ngồi khỏi bức ảnh.
Nhưng thay vì dự đốn 2 góc, ta sẽ dự đốn điểm trung tâm (x_center, y_center)
14


và width, height của hình chữ nhật. Mỗi điểm như vậy là một anchor. Như vậy mỗi
anchor được xác định bằng 4 tham số (x_center, y_center, width, height).
Một anchor (pre-defined boxes) được định nghĩa trước lúc khi huấn luyện
mơ hình. Faster R-CNN không sử dụng Selective search nên RPN ban đầu cần xác
định các “anchor box” có thể là region proposal, sau đó qua RPN thì chỉ ouput

những anchor box chắc chắn chứa đối tượng. Anchor trong Faster-RCNN được
định nghĩa với 9 anchors ứng với mỗi điểm pixel trên feature map. Chú ý rằng,
việc tính tốn tổng số lượng anchor là dựa trên kích thước của feature map. Tuy
nhiên, kích thước và ratio của anchor thì đều phải tham chiếu ngược lại kích thước
của ảnh gốc ban đầu. Các anchor được tạo ra là ứng với từng điểm pixel trên
feature map và thông thường được định nghĩa với 3 anchor size và 3 anchor ratio
khác nhau như hình dưới.

Hình 14. Anchor with feature map
Các anchor này được chỉ định là positive / negative (object / background) dựa
vào diện tích trùng lặp hay IoU overlap với ground truth bounding box theo rule
sau:
 Các anchor có tỉ lệ IoU lớn nhất với ground truth box sẽ được coi là positive
 Các anchor có tỉ lệ IoU >= 0.7 sẽ được coi là positive
15


 Các anchor có tỉ lệ IoU < 0.3 sẽ được coi là negative (background)
 Các anchor nằm trong khoảng 0.3 <= x < 0.7 sẽ được coi là neutral (trung tính)
là sẽ khơng được sử dụng trong q trình huấn luyện mơ hình.

Hình 11. Image Anchor
Giả sử ảnh bên trái kích thước 400 * 600 pixel, các tâm của anchor box
màu xanh, cách nhau 16 pixel, vì vậy sẽ có khoảng (400*600)/(16*16) = 938 tâm.
Do các object trong ảnh có thể có kích thước và tỉ lệ khác nhau nên với mỗi tâm
cần định nghĩa số anchors với các kích thước khác nhau, mỗi kích thước có các tỉ
lệ khác nhau. Giống như hình bên phải với tâm ở giữa 3 kích thước ứng với màu
da cam, xanh lam, xanh lục và với mỗi kích thước có 3 tỉ lệ. Việc của RPN là lấy
ra các region proposal giống như selective search thôi chứ không phải là phân loại
ảnh. Mơ hình RPN khá đơn giản, feature map được cho qua Conv layer 3*3, 512

kernels. Sau đó với mỗi anchor lấy được ở trên, RPN thực hiện 2 bước:
 Bước 1: Dự đoán xem anchor đấy là foreground (chứa object) hay
background (khơng chứa object).
 Bước 2: Dự đốn 4 offset value cho x_center, y_center, width, height cho
các anchor.
Sau cùng dựa vào phần trăm dự đoán background RPN sẽ lấy N anchor để
làm region proposal.

16


Hình 12. RPN network model
Các bước thực hiện:
 Bước 1: Sử dụng pre-train CNN về phân loại ảnh
 Bước 2: Fine-tune RPN (region proposal network) cho nhiệm vụ đề xuất
khu vực, được khởi tạo bởi pre-train image classifier. Các positive
example có IoU > 0.7, các negative example có IoU < 0.3. Trượt một
window nhỏ có kích thước nxn trên tồn bộ CNN feature của hình ảnh.
Tại center của mỗi window, predict nhiều vùng có scales và ratio khác
nhau cùng một lúc. Anchor là một sự kết hợp của sliding window center,
cale và ratio. Ví dụ, 3 scales + 3 ratios, suy ra k = 9 anchors tại mỗi vị
trí trượt.
 Bước 3: Huấn luyện mơ hình Fast R-CNN sử dụng các proposals region
được sinh ra từ RPN hiện tại
 Bước 4: Sau đó sử dụng mạng Fast R-CNN để khởi tạo đào tạo RPN.
Trong khi giữ các lớp convolution được chia sẻ, chỉ fine-tune các lớp

17



RPN cụ thể. Ở giai đoạn này, RPN và detection network đã chia sẻ các
lớp convolution.
 Bước 5: Fine-tune các layer riêng biệt của Fast R-CNN.

 Bước 6: Bước 4-5 có thể được lặp lại để huấn luyện mạng RPN và Fast
R-CNN nếu cần.

Hình 13. R-CNN Test-Time Speed

5.4.

Single Shot Detector (SSD)

Hình 14. Kiến trúc Single Shot Detector (SSD)
Single Shot Detector (SSD) là một phương pháp để phát hiện các đối tượng
trong ảnh bằng cách sử dụng một mạng nơron sâu duy nhất. SSD đến từ việc sử
dụng các bounding box, bằng việc khởi tạo sẵn các box tại mỗi vị trí trên ảnh, SSD
18


sẽ tính tốn và đánh giá thơng tin tại mỗi vị trí xem vị trí đó có vật thể hay khơng,
nếu có thì là vật thể nào, và dựa trên kết quả của các vị trí gần nhau, SSD sẽ tính
tốn được một box phù hợp nhất bao trọn vật thể.

Hình 15. Ví dụ về SSD

Phương pháp SSD phân biệt không gian đầu ra của các bounding-box thành
một tập hợp các bounding-box mặc định theo các tỷ lệ khung hình khác nhau, chia
tỷ lệ theo vị trí feature map. Single Shot Detector kết hợp các dự đoán từ nhiều
feature map với các độ phân giải khác nhau để xử lý các đối tượng có kích thước

khác nhau một cách tự nhiên. Ngồi ra, bằng việc tính tốn bounding box trên các
feature map khác nhau, tại mỗi tầng feature map, một box sẽ ơm trọn một phần
hình ảnh với các kích thước khác nhau. Như trên ví dụ trên, con mèo và con chó
có thể được phát hiện ở 2 tầng feature map khác nhau, 2 kích thước và tỉ lệ khác
nhau. Thay vì sử dụng 1 box và thay đổi kích thước box cho phù hợp với vật thể,
thì SSD dử dụng nhiều box trên nhiều tầng, từ đó tổng hợp ra vị trí và kích thước
box kết quả. Bằng việc loại trừ các region proposal, SDD có thể đạt được tốc tộ xử
lí cao hơn Faster R-CNN.
SSD sử dụng VGG16 để extract các feature, tại các tầng feature map được
sử dụng để phát hiện vật thể, SSD sử dụng các filter có kích thước 3x3 x p trên các
layer dùng để dự đốn thay vì dùng fully connected layer.
Bằng việc sử dụng các Sliding Windows, kích thước của các feature map sẽ
giảm dần theo độ sâu của mạng, hỗ trợ cho việc phát hiện vật thể ở các kích thước
và tỉ lệ khác nhau.
Trên một feature map kích cỡ m x n, tại mỗi vị trí cell hay tại mỗi pixel,
khởi tạo các default bounding box, các box này có vai trị giống như các anchor
của Faster R-CNN. Tuy nhiên, vì vị trí mỗi cell cố định nên các box này cũng sẽ
được cố định. Tại mỗi cell, giả sử khởi tạo k box, SSD tính tốn phân loại c class
và đồng thời tính tốn xem hình dáng của box như thế nào như toạ độ (cx,cy), dài
19


và rộng (w, h). Vậy tổng số tính tốn là (c + 4)k x m x n. Việc training SSD yêu
cầu cung cấp thông tin về các groundtruth của vật thể bao gồm các thông tin về
class, shape.
Đối với mỗi default box (các boxes nét đứt trong hình) ta cần dự báo một
phân phối xác suất c = (c1,c2,…,cn) tương ứng với các class C = (C1,C2,…,Cn).
Tại thời điểm huấn luyện cần phải match default boxes với ground truth boxes sao
cho mức độ sai số được đo lường qua localization loss là nhỏ nhất. Sau đó tối thiểu
hóa sai số của nhãn dự báo tương ứng với mỗi vật thể được phát hiện trong default

boxes thông qua confidence loss.
Ưu điểm của SSD:
 SSD loại bỏ hoàn toàn việc tạo đề xuất và các giai đoạn lấy mẫu lại
pixel hoặc tính năng tiếp theo và đóng gói tất cả các tính toán trong một
mạng duy nhất.
 Dễ huấn luyện và dễ dàng tích hợp vào các hệ thống yêu cầu thành phần
phát hiện.
 SSD có độ chính xác cạnh tranh với các phương pháp sử dụng bước đề
xuất đối tượng bổ sung và nó nhanh hơn nhiều trong khi cung cấp một
khuôn khổ thống nhất cho cả huấn luyện và suy luận.
 Rất nhiều các feature map với những độ phân giải khác nhau giúp phát
hiện được những vật thể đa dạng các kích thước và hình dạng.
 Giảm thiểu được bước tạo region proposal network so với Fast R-CNN
nên tăng tốc độ xử lý lên nhiều lần mà tốc độ xử lý vẫn đảm bảo
Hạn chế của SSD:
 SSD hoạt động kém hơn đối với các đối tượng nhỏ so với các đối tượng
khác.
Các layer của mơ hình SSD:
 Input Layer: nhận input đầu vào là các bức ảnh có kích thước (width X
heigh x channels) = 300x300x3. đối với kiến trúc SSD300 hoặc
500x500x3 đối với kiến trúc SSD500.
 Conv5_3 Layer: là base network sử dụng kiến trúc của VGG16 nhưng
loại bỏ một số layers fully connected ở cuối cùng. Output của layer này
chính là Conv4_3 Layer và là một feature map có kích thước
38x38x512.
 Conv4_3 Layer: là một feature map có kích thước 38 x 38 x 512. Trên
feature map này áp dụng 2 biến đổi chính đó là:
 Một convolutional layer như một mạng CNN thông thường để
thu được output layer tiếp theo. Cụ thể convolutional layer có
20










convolutional kernel kích thước 38x38x1024, đầu ra thu được
Conv6 có kích thước là 19x19x1024.
 Một classifier và cũng dựa trên convolutional filter kích thước
3x3 để nhằm nhận diện vật thể trên feature map. Đây là một quá
trình khá phức tạp vì nó phải đảm bảo phát hiện vật thể (thơng
qua phát hiện bounding-box) và phân loại vật thể. Đầu tiên, phân
chia feature map kích thước 38x38x512 thành một grid cell kích
thước 38x38 (bỏ qua độ sâu vì ta sẽ thực hiện tích chập trên tồn
bộ độ sâu). Sau đó mỗi một cell trên grid cell sẽ tạo ra 4 default
bounding boxes với các tỷ lệ khung hình khác nhau (aspect
ratio), mỗi một default bounding box ta cần tìm các tham số sau:
phân phối xác suất của nhãn là một véc tơ có n_classes + 1 chiều
(Lưu ý số lượng classes luôn cộng thêm 1 cho background).
Đồng thời chúng ta cần thêm 4 tham số là offsets để xác định
bounding box của vật thể trong khung hình. Do đó trên một
default bounding box sẽ có n_classes + 4 tham số và trên 1 cell
sẽ có 4*(n_classes + 4) output cần dự báo. Nhân với số cells của
Conv4_3 để thu được số lượng output là một tensor kích thước
38x38x4*(n_classes + 5), trong trường hợp coi background cũng
là 1 nhãn thì tensor có kích thước 38x38x4*(n_classes+4). Và số
lượng các bounding box được sản sinh ra là 38x38x4.

 Quá trình áp dụng classifier lên feature map cũng tương tự với
các layer Conv7, Conv8_2, Conv_9, Conv10_2, Conv11_2.
Shape của các layer sau sẽ phụ thuộc vào cách thức áp dụng tích
chập (convolutional process) ở layer trước, kích thước kernel
filter (như trong sơ đồ trên thì kernel_size ln là 3x3) và stride
(độ lớn bước nhảy) của tích chập. Trên mỗi cell thuộc feature
map ta xác định một lượng 4 hoặc 6 các default bounding boxes.
Conv7: 19×19×6 = 2166 boxes (6 boxes/cell)
Conv8_2: 10×10×6 = 600 boxes (6 boxes/cell)
Conv9_2: 5×5×6 = 150 boxes (6 boxes/cell)
Conv10_2: 3×3×4 = 36 boxes (4 boxes/cell)
Conv11_2: 1×1×4 = 4 boxes (4 boxes/cell)
Tổng số lượng các boxes ở output sẽ là:
5776 + 2166 + 600 + 150 + 36 + 4 = 8732
Vì vậy cần phải dự đốn class cho khoảng 8732 khung hình ở output. Số
lượng này lớn hơn rất nhiều so với YOLO khi chỉ phải dự đoán chỉ 98
21


khung hình ở output. Đó là lý do tại sao thuật tốn có tốc độ chậm hơn
so với YOLO. Các vector output tương ứng cho mỗi default bounding
box dạng:

 Feature map với những ảnh có kích thước khác nhau: Sau khi thu được
feature map ở base network, tiếp tục thêm các convolutional layers.
Những layers này sẽ nhằm giảm kích thước của feature map từ đó giảm
số lượng khung hình cần dự báo và cho phép dự báo và nhận diện vật
thể ở nhiều hình dạng kích thước khác nhau. Những feature map có kích
thước lớn sẽ phát hiện tốt các vật thể nhỏ và các feature map kích thước
nhỏ giúp phát hiện tốt hơn các vật thể lớn.

 Dự báo thơng qua mạng tích chập đối với object: Mỗi một feature layer
thêm vào ở Extra Features Layers sẽ tạo ra một tợp hợp cố định các
output y giúp nhận diện vật thể trong ảnh thông qua áp dụng các
convolutional filters. Kích thước ở đầu ra (width X heigh x channels) ở
mỗi loại kích thước feature layer sẽ phụ thuộc vào kernal filters và được
tính tốn hồn tồn tương tự như đối với mạng nơron tích chập thơng
thường.
 Default box và tỷ lệ cạnh (aspect ratio): cần liên kết một tợp hợp default
bounding boxes với mỗi một cell trên feature map. Các default boxes sẽ
phân bố lát gạch trên feature map theo thứ tự từ trên xuống dưới và từ
trái qua phải để tính tích chập, do đó vị trí của mỗi default box tương
ứng với cell mà nó liên kết là cố định tương ứng với một vùng ảnh trên
bức ảnh gốc.
 Quá trình huấn luyện
 Chiến lược mapping default box: Trong suốt quá trình huấn
luyện, để mapping được default boxes có tỷ lệ aspect ratio khác
nhau với ground truth box với nhau ta cần đo lường chỉ số IoU
(Intersection of Union) hoặc chỉ số Jaccard overlap index (được
dùng để đo lường tỷ lệ diện tích giao nhau giữa 2 vùng hình ảnh
so với tổng diện tích (khơng tính phần giao nhau)) của chúng.
Chúng ta sẽ match các default boxes với bất kì ground truth nào
có threshold > 0.5.
 Trên thực tế là mỗi cell hầu hết được xác định từ trước để giảm
thiểu sự đa dạng về số lượng khung hình/cell mà vẫn bounding
22


được hầu hết các vật thể. Tợp hợp các khung hình được xác định
phải đảm bảo sao cho mỗi một ground truth bất kì đều có thể tìm
được một default bounding box gần nó nhất. Do đó một thuật

tốn K-mean clustering được thực hiện trên aspect ratio của mỗi
groundtruth image nhằm phân cụm các khung hình groundtruth
thành các nhóm tương đương về hình dạng. Tâm của các clusters
(cịn gọi là centroids) sẽ được dùng làm các giá trị aspect ratio
đại diện để tính default bounding box.
 Huấn luyện để tìm ra đối tượng: việc dự báo các object sẽ được thực
hiện trên tợp hợp các khung hình output của mạng SSD. Đặt xijk = 0,1
là chỉ số đánh giá cho việc matching giữa default bounding box thứ i với
ground truth box thứ j đối với nhãn thứ k. Trong quá trình mapping
chúng ta có thể có nhiều bounding box được map vào cùng 1 ground
truth box với cùng 1 nhãn dự báo nên tổng ∑ixijk ≥ 1. Hàm loss
function là tổng có trọng số của localization loss (loc) và confidence
loss (conf):
L(x,c,p,g)=1/N((Lconf(x,c) + αLloc(x,p,g))
Trong đó:
 N: là số lượng các default boxes matching với ground truth
boxes.
 loc: là một hàm Smooth L1 đo lường sai số giữa tham số của box
dự báo (predicted box) (p) và ground truth box (g) như bên dưới:
Chúng ta sẽ cần hồi qui các offsets cho tâm (x,y) và của default
bounding box (d) và các chiều dài h và chiều rộng w.

 loc chỉ xét trên các positive matching (i∈Pos) giữa predicted
bounding box với ground truth bounding box. Nếu IoU > 0.5 thì
được coi là positive matching (tức predicted bounding box chứa
vật thể).
Các tham số g^m được tính thơng qua đo lường chênh lệch khoảng cách
tâm và mức độ thay đổi kích thước (scale) dài và rộng giữa lần lượt
groundtruth box so với defaultbox.


23


Hình 16. Hình chữ nhận viền đen đại diện cho groundtruth box và hình chữ nhật viền
đỏ đại diện cho default bounding box.
Trong đó: (dw,dh) là các kích thước dài và rộng và (dx, dy) là tọa độ tâm default
bounding box. Để chuyển từ tâm của default bounding box sang tâm của
groundtruth box cần phải phép dịch chuyển tuyến tính các khoảng (dwtx, dhty).
Kích thước các chiều dài và rộng được scale so với default bounding box số lần
(eth, etw).
 Khoảng cách tâm (px,py) của predicted box so với tâm (dx,dy) của default
box:

 Độ scale theo chiều dài và rộng (pw,ph) của predicted box so với chiều dài
và rộng (dw,dh) của ground truth box:

24


 Kí hiệu ≜ nghĩa là đặt vế trái bằng vế phải. Các giá trị tx,ty,tw,th là những
tham số tinh chỉnh kích thước của bounding box nhận giá trị trong khoảng
từ (−∞,+∞). Nếu các giá trị của tx, ty càng lớn thì khoảng cách giữa 2 tâm
groundtruth box và default box càng lớn. Giá trị của tw, th càng lớn, tỷ lệ
chêch lệch kích thước dài rộng giữa ground truth box và default box càng
lớn. Giá trị bộ tham số (tx,ty,tw,th) được gọi là bộ tham số kích thước chuẩn
hóa của groundtruth box theo default box. Tương tự, có thể tính được bộ
tham số kích thước chuẩn hóa của predicted box theo default box bằng cách
thế gm bằng pm với m∈x,y,w,h trong những phương trình trên. Khi đó,
khoảng cách giữa predicted box và ground truth box sẽ càng gần nếu
khoảng cách giữa các bộ tham số chuẩn hóa giữa chúng càng gần. Khoảng

cách này được đo lường thông qua hàm L1smooth là một kết hợp giữa
norm chuẩn bậc 1 (đối với các giá trị tuyệt đối của x lớn) và norm chuẩn
bậc 2 (đối với các giá trị tuyệt đối của x nhỏ) theo công thức sau:

 Trong trường hợp x là một vector thì thay x ở vế phải bằng giá trị norm
chuẩn bậc 1 của x kí hiệu là |x|. Việc lựa chọn hàm loss function là smooth
L1 là để giá trị của đạo hàm gradient descent cố định khi |x| lớn và
smoothing khi x nhỏ. Trong phương trình của hàm localization loss thì các
hằng số đã biết chính là g^, biến cần tìm giá trị tối ưu chính là p. Sau khi
tìm ra được nghiệm tối ưu của p, có thể tính ra predicted box nhờ phép
chuyển đổi từ default box tương ứng.
 Confidence loss: là một loss function được tính tốn dựa trên sai số dự báo
nhãn. Đối với mỗi một positive match prediction, chúng ta phạt loss
function theo confidence score của các nhãn tương ứng. Đối với mỗi một
negative match prediction, chúng ta phạt loss function theo confidence
score của nhãn ‘0’ là nhãn đại diện cho background không chứa vật thể. Cụ
thể hàm confidence loss như bên dưới:

 Trong trường hợp positive match prediction thì vùng được dự báo có vật
thể chính xác là chứa vật thể. Do đó việc dự báo nhãn cho nó sẽ tương tự
như một bài toán classification với hàm softmax thơng thường có dạng .
25


×