About OBJECT DETECTION

You might also like

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

GIỚI THIỆU VỀ OBJECT DETECTION

CÁC KHÁI NIỆM LIÊN QUAN


Một trong những lĩnh vực quan trọng của Trí tuệ nhân tạo (Artificial Intelligence) là thị
giác máy (Computer Vision). Computer Vision là một lĩnh vực 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, phát hiện các
đối tượng, tạo ảnh, siêu phân giải hình ảnh và nhiều hơn vậy. Object Detection có lẽ là
khía cạnh sâu sắc nhất của thị giác máy tính do số lần sử dụng trong thực tế.
Object detection - phát hiện đối tượng là một kỹ thuật computer vision để xác định vị trí
của các đối tượng trong hình ảnh hoặc video. Các thuật toán phát hiện đối tượng thường
tận dụng học máy hoặc học sâu để tạo ra kết quả có ý nghĩa. Khi con người nhìn vào hình
ảnh hoặc video, ta có thể nhận ra và định vị các đối tượng quan tâm trong tích tắc. Mục
tiêu của phát hiện đối tượng là tái tạo trí thông minh này bằng máy tính.
Một vài khái niệm có liên quan tới object detection:
- Phân loại hình ảnh (image classification): Dự đoán nhãn của một đối tượng trong
một hình ảnh. Với input là một hình ảnh với một đối tượng, chẳng hạn như một
bức ảnh. Output là nhãn lớp (ví dụ: một hoặc nhiều số nguyên được ánh xạ tới
nhãn lớp).
- Định vị vật thể (object localization): Xác định vị trí hiện diện của các đối tượng
trong ảnh và cho biết vị trí của chúng bằng bounding box. Với input là một hình
ảnh có một hoặc nhiều đối tượng, chẳng hạn như một bức ảnh. Output là một hoặc
nhiều bounding box được xác định bởi tọa độ tâm, chiều rộng và chiều cao.
- Phát hiện đối tượng (object detection): Là sự kết hợp của cả hai nhiệm vụ trên: Vẽ
một bounding box xung quanh từng đối tượng quan tâm trong ảnh và gán cho
chúng một nhãn. Kết hợp cùng nhau, tất cả các vấn đề này được gọi là object
recognition hoặc object detection. Với input là một hình ảnh có một hoặc nhiều
đối tượng, chẳng hạn như một bức ảnh. Output là một hoặc nhiều bounding box và
nhãn cho mỗi bounding box.
Phân biệt bài toán image classification, object localization và object detection
Ngày nay, Object Detection đã được sử dụng rộng rãi trong rất nhiều lĩnh vực. Một số
ứng dụng của object detection cơ bản như phát hiện khuôn mặt, phát hiện xe, đếm số
người đi bộ, hệ thống bảo mật, xe không người lái….
Object detection được chia thành 2 cách: Machine learning-based approaches (tiếp cận
dựa trên học máy) và Deep learning-based approaches (tiếp cận dựa trên học sâu).
Object Detection sử dụng Machine Learning
Machine learning-based approaches: các kỹ thuật thị giác máy tính được sử dụng để xem
xét các đặc điểm khác nhau của hình ảnh, chẳng hạn như biểu đồ màu hoặc các cạnh, để
xác định các nhóm pixel có thể thuộc về một đối tượng. Các tính năng này sau đó được
đưa vào một mô hình hồi quy dự đoán vị trí của đối tượng cùng với nhãn của nó.
Các kỹ thuật tiếp cận dựa trên học máy phổ biến bao gồm:
- Aggregate channel features (ACF) - Tính năng kênh tổng hợp
- SVM classification sử dụng histograms of oriented gradient (HOG) features
- Thuật toán Viola-Jones để phát hiện khuôn mặt người hoặc phần trên cơ thể.
Phát hiện và theo dõi người đi bộ bằng thuật toán phát hiện đối tượng ACF.
Ta có thể chọn bắt đầu với pretrained object detector hoặc tạo object detector tùy chỉnh
cho phù hợp với ứng dụng của mình. Bạn sẽ cần phải chọn thủ công các features nhận
dạng cho một đối tượng khi sử dụng học máy Machine Learning.
Object Detection sử dụng Deep Learning
Deep learning-based approaches: sử dụng thuật toán Convolutional Neural Network
(mạng nơ-ron tích chập) để thực hiện phát hiện đối tượng từ đầu đến cuối, không được
giám sát, trong đó các tính năng không cần phải được xác định và trích xuất riêng biệt.
Thuật toán CNN – Convolutional Neural Network
Convolutional Neural Network (CNN – Mạng nơ-ron tích chập) là một trong những mô
hình Deep Learning tiên tiến. CNN được sử dụng nhiều trong các bài toán nhận dạng các
object trong ảnh. Nó là cơ sở để phát triển các mô hình object detection tiên tiến hơn.
Cấu trúc mạng CNN:
Mạng CNN là một tập hợp các lớp (layers) 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 layer sau khi thông qua các hàm kích hoạt sẽ tạo ra các trọng số mới và gửi
chúng tới các layer tiếp theo. Trong mô hình mạng lan truyền tuyến (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). Còn trong mô hình
CNN, 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 đó. 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 đó. Ngoài ra có một
số layer khác như pooling/subsampling layer dùng để 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 thực hiện. Ví dụ trong tác vụ phân lớp ảnh, CNN 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.

Mô hình kiến trúc của mạng CNN


MỘT SỐ MÔ HÌNH OBJECT DETECTION THÔNG DỤNG DỰA TRÊN DEEP
LEARNING
1. Các mô hình R-CNN
R-CNN (regions with CNN features) là lớp các mô hình xác định vùng đặc trưng dựa
trên các mạng CNN được phát triển bởi Ross Girshick và các cộng sự. Lớp các mô hình
này gồm 3 mô hình chính là R-CNN, Fast R-CNN và Faster R-CNN được thiết kế cho
các nhiệm vụ định vị vật thể và nhận diện vật thể.
Kiến trúc của R-CNN gồm 3 thành phần:
- Vùng đề xuất hình ảnh (Region proposal): Có tác dụng tạo và trích xuất các vùng
đề xuất chứa vật thể được bao bởi các bounding box sử dụng thuật toán Selective
search.
- Trích lọc đặc trưng (Feature Extractor): Trích xuất các đặc trưng giúp nhận diện
hình ảnh từ các region proposal thông qua các mạng deep convolutional neural
network.
- Phân loại (classifier): Dựa vào input là các features ở phần trước để phân loại hình
ảnh chứa trong region proposal về đúng nhãn.

Sơ đồ mô hình mạng R-CNN


Ta có thể nhận thấy các hình ảnh con được trích xuất tại bước 2 với số lượng rất lớn
(khoảng 2000 region proposals). Tiếp theo đó áp dụng một mạng deep CNN để tính toán
các feature tại bước 3 và trả ra kết quả dự báo nhãn ở bước 4 như một tác vụ image
classification thông thường.
Hồi mới xuất hiện thì thuật toán hoạt động khá tốt cho với các thuật toán về computer
vision trước đó nhờ vào CNN, tuy nhiên nó vẫn có khá nhiều hạn chế:
- Vì với mỗi ảnh ta cần phân loại các class cho 2000 region proposal nên thời gian
train rất lâu.
- Không thể áp dụng cho real-time vì mỗi ảnh trong test set mất tới 47s để xử lý.
Mô hình Fast R-CNN ra đời bởi cùng tác giả của R-CNN và giải quyết được một số hạn
chế của R-CNN để cải thiện tốc độ.
Tương tự như R-CNN thì Fast R-CNN vẫn dùng selective search để lấy ra các region
proposal. Tuy nhiên là nó 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ì ở feature
map ta không thể resize được, nên Region of Interest (ROI) pooling ra đời đấy để chuyển
các region proposal trong feature map về cùng kích thước.
 Region of Interest (ROI) pooling: ROI pooling là một dạng của pooling layer.
Điểm khác so với max pooling hay average pooling là bất kể kích thước của tensor
input, ROI pooling luôn cho ra output có kích thước cố định được định nghĩa
trước.

Sơ đồ mô hình mạng Fast R-CNN


Fast R-CNN khác với R-CNN là nó thực hiện feature map với cả ảnh sau đó với lấy các
region proposal ra từ feature map, còn R-CNN thực hiện tách các region proposal ra rồi
mới thực hiện CNN trên từng region proposal. Do đó Fast R-CNN nhanh hơn đáng kể
nhờ tối ưu việc tính toán bằng Vectorization.
Tuy nhiên test time với Fast R-CNN thì thời gian tính region proposal rất lâu và làm
chậm thuật toán. Vì vậy cần thay thế thuật toán selective search.
Mô hình Faster R-CNN ra đời đã cải thiện cả tốc độ huấn luyện và phát hiện đối tượng
với thời gian thực, được đề xuất bởi Shaoqing Ren và các cộng sự tại Microsoft
Research.
Faster R-CNN không dùng thuật toán selective search để lấy ra các region proposal, mà
nó thêm một mạng CNN mới 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 (mạng đề xuất khu vực) để 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.

Sơ đồ mô hình mạng Faster R-CNN


 RPN hoạt động bằng cách lấy đầu ra của một mạng pretrained deep CNN
(VGG16, ResNet…) và truyền feature map vào một mạng nhỏ và đưa ra nhiều
region proposals và nhãn dự đoán cho chúng. Region proposals là các bounding
boxes, dựa trên các anchor boxes hoặc hình dạng được xác định trước được thiết
kế để tăng tốc và cải thiện khả năng đề xuất vùng. Dự đoán của nhãn được thể
hiện dưới dạng nhị phân cho biết region proposal có xuất hiện vật thể hoặc không.
 Một quy trình huấn luyện xen kẽ được sử dụng trong đó cả hai mạng con được đào
tạo cùng một lúc. Điều này cho phép các tham số trong feature dectector của deep
CNN được tinh chỉnh cho cả hai tác vụ cùng một lúc.
So sánh kết quả của các mô hình họ R-CNN trên thực nghiệm

So sánh tốc độ test-time của các thuật toán object detection


Nhìn ở hình trên ta thấy Faster R-CNN nhanh hơn hẳn các dòng R-CNN trước đó, vì vậy
có thể ứng dụng cho real-time object detection.
2. Mô hình You Only Look Once (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 đề: “You Only Look Once: Unified, Real-Time Object Detection”.
YOLO (You Only Look Once) là một trong những mô hình nổi tiếng nhất trong object
detection. Trước khi YOLO được công bố, những mô hình tốt nhất trong Object
Detection đều thuộc họ R-CNN (regions with CNN features). Những mô hình này thường
bao gồm 2 bước nên có tốc độ không cao (1 bước region proposals, 1 classifier). So với
họ mô hình R-CNN, YOLO có tốc độ được cải thiện rất nhiều. Các thuật toán này coi
việc phát hiện đối tượng như một bài toán hồi quy, chỉ dùng một mô hình để xác định
đồng thời tọa độ đường bao (bounding-box) và xác suất của nhóm đối tượng tương ứng.
Khái quát về YOLO
Về cơ bản, YOLO chia ảnh đầu vào thành các ô nhỏ, mô hình sẽ dự đoán xác xuất đối
tượng trong các đường bao (bounding-box) xung quanh mỗi ô nhỏ này. Những đường
bao có xác xuất cao sẽ được giữ lại và sử dụng cho nhiệm vụ xác định vị trí của đối tượng
trong ảnh.
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 được áp dụng để phát hiện vật thể
trên feature map của base network.
Base network của YOLO sử dụng chủ yếu là các convolutional layer và các fully
conntected layer. Các kiến trúc YOLO 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.
Kiến trúc của YOLO
Để 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.
- 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ể.

Cách YOLO xác định anchor box cho một vật thể
 IoU: IoU (Intersection over Union) là hàm đánh giá độ chính xác của object
Area of Overlap
detector trên tập dữ liệu cụ thể. IoU được tính bằng: IoU =
Area of ∪¿ ¿

Minh họa cách tính IoU trong YOLO


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.
Một số lưu ý khi huấn luyện YOLO:
- Khi huấn luyện YOLO sẽ cần phải có RAM/VRAM dung lượng lớn hơn để có thể
lưu được rất nhiều bounding boxes một lúc.
- 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. Nên chia nhỏ một batch thành các subdivisions cho vừa với
RAM/VRAM.
- 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 cho 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.
3. Mô hình Single Shot Multibox Detector (SSD)
Giống với YOLO, mô hình SSD là kiến trúc có tốc độ xử lý nhanh mà vẫn đảm bảo về độ
chính xác nhờ những thay đổi trong kiến trúc mạng so với mô hình họ R-CNN nhằm gói
gọn quá trình phát hiện và phân loại vật thể trong một lần và cắt bớt được các xử lý
không cần thiết.
- Single Shot: Có nghĩa là việc định vị và phân loại đối tượng được thực hiện trên 1
phase duy nhất từ đầu đến cuối.
- MultiBox: Tên của kĩ thuật về bounding box được sử dụng bởi Szegedy.
- Detector: Mạng này có khả năng nhận biết và phân loại được đối tượng.
Phương pháp SSD bao gồm 2 thành phần: một mô hình mạng cơ sở (Base Network) hay
backbone và các lớp neuron phụ trợ (Auxiliary Layers). Trong đó, mạng cơ sở có nhiệm
vụ trích xuất đặc trưng ảnh, sau đó các đặc trưng này được sử dụng bởi các lớp neuron
phụ trợ để dự đoán vị trí của các đối tượng trong ảnh.

Sơ lược về phương pháp SSD


Cũng giống như hầu hết các kiến trúc object detection khác, đầu vào của SSD là tọa độ
bounding box của vật thể (hay còn gọi là offsets của bounding box) và nhãn của vật thể
chứa trong bounding box. Điểm đặc biệt làm nên tốc độ của SSD model là mô hình sử
dụng một mạng neural duy nhất. Cách tiếp cận của nó dựa trên việc nhận diện vật thể
trong các features map (là một output shape 3D của một mạng deep CNN sau khi bỏ các
fully connected layers cuối) có độ phân giải khác nhau. Mô hình sẽ tạo ra một lưới các ô
vuông gọi là grid cells trên các feature map, mỗi ô được gọi là một cell và từ tâm của mỗi
cell xác định một tập hợp default boxes để dự đoán khung hình có khả năng bao quanh
vật thể. Tại thời điểm dự báo, mạng neural sẽ trả về 2 giá trị: phân phối xác suất nhãn của
vật thể chứa trong bounding box và một tọa độ gọi là offsets của bounding box. Quá trình
huấn luyện cũng là quá trình tinh chỉnh xác suất nhãn và bounding box về đúng với các
giá trị ground truth input của mô hình (gồm nhãn và offsets bounding box).
Kĩ thuật bounding box được sử dụng trong SSD được lấy ý tưởng từ Szegedy, là một
phương pháp sử dụng nhiều bounding box phù hợp với mọi đối tượng lớn nhỏ. Kĩ thuật
này tương tự như cách lấy anchors box với từng đối tượng trong mô hình YOLO.
Single Shot Multibox Detector với MobileNet backbone
MobileNet là mô hình phân loại ảnh được ra mắt vào năm 2017 bởi nhóm nghiên cứu từ
Google. MobileNet backbone sử dụng mô hình tích chập tách biệt chiều sâu. Việc này
làm giảm số chiều tính toán trong mạng bằng cách chia các khối Tensor3D phải tính toán
thành các lát cắt sau đó xếp chúng lại với nhau, qua đó giảm được số lượng tham số của
mô hình cũng như thời gian chạy của mô hình.

Chia và tính toán với các khối tích chập theo chiều sâu
Ngoài ra, MobileNet phiên bản 2 còn sử dụng các kết nối tắt với kiến trúc Inverted
Residual Block. Thêm với việc thay thế các non-linear activation function bằng các hàm
tuyến tính làm tăng tính chính xác của mô hình; Lượng tham số và các phép tính đồng
thời cũng được giảm nhẹ nhờ áp dụng phương pháp tích chập tách biệt chiều sâu ngay
trong các khối Inverted Residual.
Một khối tính toán sử dụng kết nối tắt trong MobileNet
Đây là được thiết kế dành riêng cho các thiết bị với không gian lưu trữ và khả năng tính
toán không quá cao như các thiết bị di động hay các thiết bị nhúng. MobileNet có độ
chính xác xấp xỉ với VGG nhưng lại có kích thước nhỏ hơn khoảng 20 lần (20 MB so với
500 MB). Do đó, khi dùng MobiletNet làm mô hình cơ sở trong SSD, chúng ta có một
mô hình Object Detection vừa nhỏ gọn vừa chính xác.

You might also like