Tổng quan Opencv HaartrainingCơ sở lý thuyếtCấu trúc bộ lọc phân tầngBoostingĐặc trưng HaarThuật toán AdaBoostTiến hành thực tếChuẩn bịTạo mẫuHuấn luyệnThử nghiệmOpenCV = 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à PythonThư 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 Classifiers dựa trên tính năng Haarlike Kết quả việc đào tạo là file dạng xml
Trang 1Đồ á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
Sinh viên thực
Trần Hoàng Nam
Trang 2Mụ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
Trang 3Tổng quan Opencv
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 Classifiers dựa trên tính năng Haar-like
Kết quả việc đào tạo là file dạng xml
Trang 4Cơ sở lý thuyết
Cascade of Boosted Classifiers là một cấu trúc cây mà ở mỗi tầng
là một bộ phân loại (classifier), được xây dựng bằng thuật toán
AdaBoost
Mô hình Cascade of Boosted Classifiers đượ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 classifiers) thành một bộ phân loại mạnh (strong
classifier) Trong đó, weak classifier là các bộ phân loại đơn giản chỉ cần có độ chính xác trên 50%
Trang 5Cơ 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
Trang 6Đặ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º
Trang 7Cơ sở lý thuyế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 classifier (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
classifier
Trang 8Cơ 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
ước lượng đặc trưng
Adaboost loại bỏ nhanh các
đặc trưng không có khả năng
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
Trang 9Cơ 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 Classifiers đượ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
classifier
• 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 classifiers này lại sẽ giúp bộ phân loại
có false alarm thấp
Trang 10Tiế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à file mô tả ảnh
Positive (đánh dấu tọa độ của đối tượng trong ảnh gốc)
cây cối, mặt người Và file mô tả ảnh Negative
Trong quá trình huấn luyện, các weak classifiers 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
Trang 11Tiến hành thực tế - Huấn luyện nhận dạng xe máy
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 file dữ
liệu cho các mẫu (positive
lẫn negative) từ các file
ả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
Trang 12Tiế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>
Trang 13Kết quả đạt được
rate rate Fail
Trang 14Tiế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
Trang 15 Cảm ơn thầy giáo và
các bạn đã quan tâm
theo dõi.