Đồ án
Phát hiện đối tượng trong ảnh/video sử dụng công cụ
học máy HaarTraining
Giáo viên hướng dẫn Trần Nguyên Ngọc
Sinh viên thực hiện Lê Quốc Mạnh
Lớp: Tin 8B Dương Anh Tuấn
Trần Hoàng Nam
Mục lục
Tổng quan Opencv Haartraining
Cơ sở lý thuyết
Cấu trúc bộ lọc phân tầng
Boosting
Đặc trưng Haar
Thuật toán AdaBoost
Tiến hành thực tế
Chuẩn bị
Tạo mẫu
Huấn luyện
Thử nghiệm
Tổng quan Opencv Haartraining
OpenCV = Open Source Computer Vision
Là thư viện mã nguồn mở - của Intel viết cho xử lý ảnh, với hơn 500 thuật toán dành cho việc xử lý thị giác máy thời
gian thực (real time computer vision)
Hỗ trợ ngôn ngữ C++ và Python
Thư viện OpenCV cung cấp phương pháp đào tạo, phát hiện đối tượng bằng mô hình Cascade of Boosted Classi[ers
dựa trên tính năng Haar-like
Kết quả việc đào tạo là [le dạng xml
Cơ sở lý thuyết
Cascade of Boosted Classi[ers là một cấu trúc cây mà ở mỗi tầng là một bộ phân loại (classi[er), được xây dựng
bằng thuật toán AdaBoost
Mô hình Cascade of Boosted Classi[ers được sử dụng dựa trên Haar-like Feature – là một loại đặc trưng thường
được dùng cho bài toán nhận dạng trên ảnh.
Boosting là kỹ thuật dùng để tăng độ chính xác cho các thuật toán học (Learning algorithm) bằng cách kết hợp các
bộ phân loại yếu (weak classiers) thành một bộ phân loại mạnh (strong classier). Trong đó, weak classi[er là
các bộ phân loại đơn giản chỉ cần có độ chính xác trên 50%.
Cơ cở lý thuyết
•
Haar Feature là một loại đặc trưng thường được dùng cho bài toán nhận dạng trên ảnh, được xây dựng từ các hình
chữ nhật có kích thước bằng nhau, dùng để tính độ chênh lệch giữa các giá trị điểm ảnh trong các vùng kề nhau.
4 đặc trưng Haar-like cơ bản
Đặc trưng cạnh
Đặc trưng đường
Đặc trưng quanh tâm
Giá trị của đặc trưng Haar-like = sự chênh lệch giữa tổng của các pixel của các vùng đen và các vùng trắng như
trong công thức sau:
f(x) = Tổng
vùng đen
(các mức xám của pixel) - Tổng
vùng trắng
(các mức xám của pixel)
Tuy nhiên, khối lượng tính toán lớn mất nhiều thời gian
Đặc trưng Haar-like
Viola và Jones đã đưa ra khái niệm Integral Image để tính toán nhanh hơn cho các đặc trưng cơ bản.
Integral Image: là một mảng 2 chiều với kích thước bằng với kích của ảnh cần tính các đặc trưng Haar-like.
Mỗi phần tử của mảng này được tính bằng cách tính tổng
của điểm ảnh phía trên (dòng-1) và bên trái (cột-1) của nó.
Tính toán dựa trên phép cộng cải thiện tốc độ
Sau khi đã tính được Integral Image, dễ dàng tính được
gía trị mức xám trên vùng nào đó:
Lienhart kế thừa Integral Image (gọi là SAT – Summed Area Table) và đưa ra thêm khái niệm RSAT – Rotated
Summed Area Table để tính toán nhanh hơn cho các đặc trưng xoay 1 góc 45º.
Cơ sở lý thuyết
Sử dụng AdaBoost để thiết lập ngưỡng
Adaboost (Adaptive Boost - Freund và
Schapire, 1995) được cải tiến từ boosting,
sử dụng thêm khái niệm trọng số
(weight) để đánh dấu các mẫu khó nhận
dạng ở weak classi[er (WC).
Sau mỗi WC, tăng trọng số ở mẫu sai và
ngược lại.
Các WC sau sẽ tập trung vào các mẫu
chưa tốt.
Kết hợp các WC ở mức độ tốt nào đó
Strong classi[er
Cơ sở lý thuyết
Tính Integral Image đ xác đ nh nhanh giá tr m c ể ị ị ứ
xám c a 1 vùng trên nhủ ả
Đ a qua hàm Haar c b n ư ơ ả c l ng đ c tr ng ướ ượ ặ ư
Đ a qua b đi u ch nh Adaboost ư ộ ề ỉ lo i b nhanh ạ ỏ
các đ c tr ng không có kh năngặ ư ả
M i b phân lo i y u s quy t đ nh k t qu cho ỗ ộ ạ ế ẽ ế ị ế ả
m t đ c tr ng Haar-likeộ ặ ư
Trong quá trình xác đ nh, m i vùng nh con s đ c ki m tra v i các đ c tr ng trong chu i các đ c tr ng Haar-likeị ỗ ả ẽ ượ ể ớ ặ ư ỗ ặ ư
N u có m t đ c tr ng Haar-like nào cho ra k t qu thì các đ c tr ng khác không c n xét n aế ộ ặ ư ế ả ặ ư ầ ữ
Th t xét các đ c tr ng trong chu i các đ c tr ng Haar-like s đ c d a vào tr ng s và s l n xu t hi n c a các đ c tr ng ứ ự ặ ư ỗ ặ ư ẽ ượ ự ọ ố ố ầ ấ ệ ủ ặ ư
Haar-like.
Cơ sở lý thuyết
•
Trong huấn luyện, tốc độ xử lý còn tùy vào mức độ đơn giản của các mẫu được đưa vào.
•
Mô hình Cascade of Classi[ers được xây dựng chính là nhằm rút ngắn thời gian xử lý, giảm thiểu false alarm cho
bộ phân loại.
•
Mô hình là một cây Cascade (Cascade tree) bao gồm nhiều stage (hay còn gọi là layer), mỗi stage của cây sẽ là
một stage classi[er.
•
Một mẫu để được phân loại là đối tượng thì nó cần phải đi qua hết tất cả các stages của cây.
•
Nhờ sự kết hợp các stage classi[ers này lại sẽ giúp bộ phân loại có false alarm thấp.
Tiến hành thực tế - Huấn luyện nhận dạng xe máy
Chuẩn bị:
Các mẫu dương (Positive) chứa đối tượng cần nhận dạng và [le mô tả ảnh Positive (đánh dấu tọa độ của đối tượng trong ảnh gốc)
Các mẫu âm (Negative) không chứa đối tượng cần nhận dạng, như nhà cửa, cây cối, mặt người Và [le mô tả ảnh Negative
Trong quá trình huấn luyện, các weak classi[ers sẽ học từ các mẫu positive trong tập huấn luyện và các mẫu negative là các vùng ảnh (sub
window) trích ra từ các mẫu Negative trong tập huấn luyện
C:/OpenCV2.2/bin/negative>dir /b /s >Negative.txt
Tiến hành thực tế - Huấn luyện nhận dạng xe máy
opencv_createsamples –info <File mô tả Positive> –vec <File vector> –w <rộng> –h
<cao> -num <số mẫu có>
Kiểm tra: opencv_createsamples –vec <File vector> -show
Opencv_createSamples có chức năng tạo
[le dữ liệu cho các mẫu (positive lẫn
negative) từ các [le ảnh (bmp, jpg ), đồng
thời cho phép phát sinh thêm các ảnh từ một
hay nhiều ảnh ban đầu bằng cách áp dụng
các phép xử lý ảnh như rotate, dilate, lên
các ảnh này.
Tiến hành thực tế - Huấn luyện nhận dạng xe máy
haartraining -data <thư mục Cascade> -vec <File vector> -bg <File mô tả ảnh Negative> -nstages <số giai đoạn>
-minhitrate <0 ~1> -maxfalsealarm <0 ~1> -npos <số mẫu Positive> -nneg <Số mẫu Negative> -w <rộng> -h <cao>
-nonsym -mem <bộ nhớ được cấp>
Kết quả đạt được
Hit Missed Failed Hit rate Fail rate
1197 139 271
83% 30%
Tiến hành thực tế - Huấn luyện nhận dạng xe máy
File XML được tạo thành
sau khi huấn luyện có cấu
trúc như hình bên
Cảm ơn thầy giáo và các bạn đã quan
tâm theo dõi.