Tải bản đầy đủ (.pdf) (91 trang)

Nhận diện ảnh dùng OPENCV

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.83 MB, 91 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC SƢ PHẠM KỸ THUẬT TPHCM

BÁO CÁO TỔNG KẾT
ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN

NHẬN DIỆN HÌNH ẢNH DÙNG THƢ VIỆN OPENCV
SV 2015-63

Thuộc nhóm nghành khoa học: Khoa học kỹ Thuật và công nghệ.

Tp Hồ Chí Minh, 08/2015


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC SƢ PHẠM KỸ THUẬT TPHCM

BÁO CÁO TỔNG KẾT

ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN

NHẬN DIỆN HÌNH ẢNH DÙNG THƢ VIỆN OPENCV
SV 2015-63

Thuộc nhóm nghành khoa học: Khoa học kỹ thuật và công nghệ.
Sinh viên thực hiện:

Đinh Việt Hòa.

Nam.


Khoa Điện - Điện Tử.

Năm thứ: 3/ Số năm đào tạo: 4.

Dân tộc: Nùng.
Lớp, khoa: 12141VT2B,
Ngƣời hƣớng dẫn:

PGS.TS Trần Thu Hà.

Tp Hồ Chí Minh, 08/2015


MỤC LỤC
Mục lục ................................................................................................................... i
Danh mục bảng biểu............................................................................................. iii
Danh mục từ viết tắt ............................................................................................. iv
Thông tin kết quả nghiên cứu đề tài ...................................................................... v
Mở đầu ................................................................................................................ vii
Chƣơng 1. Cơ sở lý thuyết ............................................................................................... 1
1.1. Giới thiệu về thƣ viện OpenCV ............................................................................. 1
1.2. Không gian màu RGB và xám ............................................................................... 3
1.3. Mức xám và cân bằng mức xám ............................................................................ 4
1.4. Đặc trƣng Haar-like ............................................................................................... 6
1.6. Chuỗi các bộ phân lớp (Cascade Classifier) ........................................................ 10
a. Ý tƣởng ............................................................................................................. 10
b. Huấn luyện một cascade ................................................................................... 11
Chƣơng 2. Ứng dụng nhận diện khuôn mặt trên kit Raspberry PI và nhận diện biển số
xe ô tô............................................................................................................................. 14
2.1. Ứng dụng nhận diện khuôn mặt trên kit Raspberry PI ........................................ 14

2.1.1. Giới thiệu kit Raspberry PI ......................................................................... 14
a. Phần cứng .......................................................................................................... 14
b. Phần mềm ......................................................................................................... 17
2.1.2. Hiện thực hóa ứng dụng .............................................................................. 19
a. Bài toán thiết kế ................................................................................................ 19
b. Lƣu đồ giải thuật ............................................................................................... 21
c. Tập tin huấn luyện............................................................................................. 24
d. Các hàm, chƣơng trình đƣợc sử dụng trong ứng dụng ..................................... 28
e. Kết quả ứng dụng .............................................................................................. 29
2.2. Ứng dụng nhận diện biển số xe ô tô .................................................................... 35
2.2.1. Tính năng ứng dụng .................................................................................... 35
2.2.2. Lƣu đồ giải thuật ......................................................................................... 36
2.2.3. Cấu trúc ứng dụng và kết quả ..................................................................... 36
Kết luận và kiến nghị ..................................................................................................... 41
Tài liệu tham khảo ......................................................................................................... 42

i


Phụ lục I ......................................................................................................................... 43
Phụ lục II ........................................................................................................................ 45
Phụ lục III ...................................................................................................................... 46
Phụ lục IV ...................................................................................................................... 58
Phụ lục V ....................................................................................................................... 60
Phụ luc VI ...................................................................................................................... 70

ii


DANH MỤC BẢNG BIỂU

Bảng 1. Kết quả thử nghiệm ứng dụng nhận diện khuôn mặt trên kit Raspberry
PI. ...................................................................................................................... 41.

iii


DANH MỤC CÁC TỪ VIẾT TẮT
Từ viết tắt
AI
CMOS
CPU
CSI

Artificial Intelligence
Complementary Metaloxide
Sermiconductor
Central Processing Unit
Camera Serial Interface

CV
DOITs

Computer Vision
Define problem-Open mind and
apply creative techniquesIdentify best solution-Transform

Full HD
GPU
HD
IDE

OPENCV

Full High Definition
Graphical Processing Unit
High Definition
Intergrated Development
Environment
OPEN Computer Vision

SoC

System on Chip

Ý nghĩa.
Trí tuệ nhân tạo.
Chất bán dẫn meta oxit bổ
sung.
Bộ xử lý trung tâm
Cổng kết nối camera truyền dữ
liệu nối tiếp.
Thị giác máy tính.
Phƣơng pháp tƣ duy sáng tạo:
Xác định vấn đề - Cởi mở ý
tƣợng sáng tạo – Xác định ý
tƣởng hay nhất – Chuyển bƣớc.
Độ phân giải 1920x1280.
Bộ xử lý đồ họa.
Độ phân giải 1280x720.
Mô trƣờng phát triển tích hợp.
Thị giác máy tính (mã nguồn)

mở.
Hệ thống vi mạch tích hợp trên
một đế silicon.

iv


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐH SƢ PHẠM KỸ THUẬT TPHCM
THÔNG TIN KẾT QUẢ NGHIÊN CỨU CỦA ĐỀ TÀI
1. Thông tin chung:
- Tên đề tài: Nhận diện hình ảnh dùng thƣ viện OpenCV.
- SV thực hiện:

Đinh Việt Hòa

Mã số SV: 12141084

Nguyễn Anh Hoàng

Mã số SV: 12141088

- Lớp: 12141VT2B
Khoa: Điện – Điện Tử
- Ngƣời hƣớng dẫn: PGS.TS Trần Thu Hà

Năm thứ: 3 Số năm đào tạo: 4

2. Mục tiêu đề tài:
- Hiện nay, đa số các ứng dụng nhận diện hình ảnh đều đƣợc xây dựng trên phần mềm Matlab.

Đây là phần mềm thƣơng mại có chi phí bản quyền cao. Những ứng dụng xây dựng trên
phần mềm này chỉ chạy tốt trên những máy tính có cấu hình tƣơng đối cao. Trong những
năm gần đây, công nghệ IoTs (Internet of Things) đang phát triển mạnh mẽ, đi kèm với nó là
xu hƣớng phát triển các thiết bị cầm tay nhỏ gọn. Chúng ta không thể chạy ứng dụng Matlab
trên những thiết bị nhƣ điện thoại thông minh, máy tính bảng…đƣợc vì cấu hình của chúng
không tƣơng thích và cũng không đủ mạnh.
- Mục tiêu của đề tài là tìm hiểu và xây dựng ứng dụng nhận diện hình ảnh bằng mã nguồn mở
có thể hoạt động trên các board mạch chuyên dụng chạy hệ điều hành LINUX có kích thƣớc
nhỏ gọn để triển khai IoTs nhƣ Raspberry PI. Đề tài tập trung vào 2 ứng dụng chính:
 Nhận diện khuôn mặt trên kit Raspberry PI với các hƣớng nhìn khác nhau (lên trên,
xuống dƣới, qua trái, qua phải) có thể ứng dụng trong các dự án nhà thông minh hoặc
văn phòng.
 Nhận diện biển số xe ô tô trên máy tính chạy hệ điều hành Windows một cách tự động.
- Để có thể hoạt động trên các thiết bị kể trên, mã nguồn ứng dụng cần đƣợc tối ƣu hóa để làm
giảm tiêu tốn về tài nguyên nhƣ CPU, GPU, RAM,…Hơn nữa, một điều kiện cần có của ứng
dụng là nó phải có đặc tính là không giới hạn số lƣợng đối tƣợng có thể nhận diện đƣợc. Đây
cũng là mục tiêu mà đề tài hƣớng đến.
3. Tính mới và sáng tạo:
- Triển khai nhận diện hình ảnh với thƣ viện OpenCV với ƣu điểm là dễ phát triển ứng dụng.
Đặc biệt đây là mã nguồn mở, do đó giúp tiết kiệm chi phí bản quyền.
- Ứng dụng có thể nhận diện chính xác khuôn mặt ở mọi hƣớng nhìn khác nhau trong điều kiện
môi trƣờng thực tế.
4. Kết quả nghiên cứu:
- Đề tài đã đạt đƣợc mục tiêu nghiên cứu đã đặt ra. Ứng dụng nhận diện khuôn mặt và nhận
diện biển số xe hoạt động ổn định và chính xác.
5. Đóng góp về mặt giáo dục và đào tạo, kinh tế - xã hội, an ninh, quốc phòng và khả năng
áp dụng của đề tài:
Dựa vào những kết quả đạt đƣợc, đề tài có thể phát triển thành hệ thống kiểm soát sự ra vào ở
các văn phòng, hoặc các dự án tòa nhà thông minh (smart home). Ứng dụng nhận diện biển số
xe có thể đƣợc ứng dụng trong các bãi giữ xe thông minh, các trạm thu phí đƣờng bộ.

6. Công bố khoa học của SV từ kết quả nghiên cứu của đề tài (ghi rõ tên tạp chí nếu có)
hoặc nhận xét, đánh giá của cơ sở đã áp dụng các kết quả nghiên cứu (nếu có): Không có.
Ngày 15 tháng 08 năm 2015
SV chịu trách nhiệm chính
thực hiện đề tài
(kí, họ và tên)

v


Nhận xét của ngƣời hƣớng dẫn về những đóng góp khoa học của SV thực hiện đề tài (phần
này do người hướng dẫn ghi):
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................

........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
........................................................................................................................................................
Xác nhận của Trƣờng
(kí tên và đóng dấu)


Ngày
tháng
năm
Ngƣời hƣớng dẫn
(kí, họ và tên)

vi


MỞ ĐẦU
Ngày nay, với sự phát triển mạnh mẽ của ngành công nghiệp điện tử phần
cứng, các máy tính đóng vai trò ngày càng quan trọng trong công việc cũng nhƣ
đời sống.
Tuy nhiên, mảnh ghép còn thiếu của máy tính chính là thị giác. Nếu mảnh
ghép này đƣợc hoàn thiện sẽ góp phần nâng trí tuệ nhân tạo (AI) lên một tầm
cao mới và các máy tính có thể làm các công việc nhƣ con ngƣời.
Khởi đầu vào thập niên 70, khi mà ngành khoa học không gian vũ trụ phát
triển, vấn đề đặt ra là cần có các robot thám hiểm có khả năng nhận biết nhƣ con
ngƣời. Ngày nay, với các máy tính có cấu hình mạnh mẽ, thị giác đã đƣợc ứng
dụng trong nhiều lĩnh vực.
OpenCV (Open Computer Vision library) do Intel phát triển, đƣợc giới thiệu
năm 1999 đã đóng vai trò xác lập chuẩn giao tiếp, dữ liệu, thuật toán cho lĩnh
vực CV và tạo điều kiện cho mọi ngƣời tham gia nghiên cứu và phát triển ứng
dụng.
Gìn giữ trật tự an ninh luôn là vấn đề cấp thiết của xã hội. Hiện nay, một số
công nghệ nhận diện bằng vân tay, nhận diện mống mắt,… đã đƣợc áp dụng
nhƣng chi phí mua sắm trang thiết bị vẫn còn cao. Với mong muốn tìm ra giải
pháp giải quyết vấn đề trên, nhóm nghiên cứu đã mạnh dạn chọn đề tài Nhận
diện hình ảnh dùng thƣ viện OpenCV, mục tiêu chính là xây dựng ứng dụng
nhận diện khuôn mặt ở các hƣớng nhìn khác nhau với chi phí thấp. Ngoài ra,

nhóm còn xây dựng ứng dụng nhận diện biển số xe ô tô hƣớng tới thiết kế bãi giữ
xe thông minh. Các phƣơng pháp nghiên cứu tƣ duy phân tích, DOITS, 6 chiếc
mũ tƣ duy đã đƣợc vận dụng trong đề tài.
Vì đề tài mang tính chất tìm hiểu và ứng dụng, nên nhóm nghiên cứu chỉ tập
trung vào phần xử lý ảnh dùng thƣ viện OpenCV. Ứng dụng nhận diện khuôn
mặt sẽ hoạt động trên kit Raspberry PI và xử lý trực tiếp ảnh nhận từ camera. Do
khuôn khổ của đề tài có hạn nên ứng dụng nhận diện biển số xe chỉ dừng lại ở
việc nhận diện biển số trên ảnh tĩnh.

vii


CHƢƠNG 1
CƠ SỞ LÝ THUYẾT
1.1. Giới thiệu về thƣ viện OpenCV
OpenCV (Open Computer Vision library) hoàn thiện thành phiên bản 1.0 năm
2006. Phiên bản mới nhất hiện nay là 3.0. Thƣ viện OpenCV lúc đầu đƣợc viết
bằng ngôn ngữ lập trình C, về sau đã đƣợc mở rộng sang các ngôn ngữ khác nhƣ
Python, C++ và tƣơng thích với các hệ điều hành Windows, Linux, Mac OS...
Trƣớc OpenCV không có một công cụ chuẩn nào cho lĩnh vực CV. Các đoạn
code đơn lẻ do các nhà nghiên cứu tự viết thƣờng không thống nhất và không ổn
định. Các bộ công cụ thƣơng mại nhƣ Matlab, Simulink, Halcon, v.v... lại có giá
cao chỉ thích hợp cho các công ty phát triển các ứng dụng lớn. Ngoài ra còn có
các giải pháp kèm theo thiết bị phần cứng mà phần lớn là mã đóng và đƣợc thiết
kế riêng cho từng thiết bị, rất khó khăn cho việc mở rộng ứng dụng.
OpenCV là công cụ hữu ích cho việc nghiên cứu, ứng dụng CV vì các ƣu điểm
sau:
 OpenCV là công cụ chuyên dụng: Đƣợc Intel phát triển theo hƣớng tối ƣu
hóa cho các ứng dụng xử lí và phân tích ảnh, với cấu trúc dữ liệu hợp lý,
thƣ viện tạo giao diện, truy xuất thiết bị phần cứng đƣợc tích hợp sẵn.

OpenCV thích hợp để phát triển nhanh ứng dụng.
 OpenCV là công cụ mã nguồn mở: Không chỉ là công cụ miễn phí (với
BSD license), việc đƣợc xây dựng trên mã nguồn mở giúp OpenCV trở
thành công cụ thích hợp cho nghiên cứu và phát triển, với khả năng thay
đổi và mở rộng các mô hình, thuật toán.
Cấu trúc thƣ viện OpenCV:

1


Hình 1.1. Cấu trúc thƣ viện OpenCV
Ban đầu, phiên bản OpenCV 1.0 đƣợc viết bằng ngôn ngữ C, dữ liệu ảnh đƣợc
lƣu trữ trên RAM sử dụng cấu trúc C đƣợc gọi là lplImage. Điều này đem lại một
bất tiện là chúng ta phải tự giải phóng vùng nhớ lƣu trữ dữ liệu ảnh sau khi sử
dụng. Sau đó, OpenCV 2.0 ra đời, kế thừa những ƣu điểm đã có từ phiên bản 1.0,
sử dụng ngôn ngữ C++ và toán tử cv::Mat ra đời. Kể từ đây, tất cả các kiểu dữ
liệu ảnh, các ma trận đều đƣợc lƣu dƣới dạng cv::Mat. Từ đây việc giải phóng
vùng nhớ sau khi sử dụng đƣợc thực hiện một cách tự động. Về cơ bản, Mat là
một lớp gồm 2 phần dữ liệu: hằng số header ma trận (chứa các thông tin nhƣ kích
thƣớc ma trận, phƣơng thức sử dụng để lƣu trữ và địa chỉ lƣu trữ ma trận …) và
con trỏ ma trận chứa giá trị các pixel.

Hình 1.2. Minh họa kiểu dữ liệu của toán tử mat.
2


1.2. Không gian màu RGB và xám
Không gian màu là phƣơng thức pha trộn các thành phần màu tạo thành các
màu sắc. Hệ màu RGB mô tả màu sắc bằng ba thành phần Red, Green, Blue
trong một mô hình gọi là không gian màu RGB. Không gian này đƣợc minh họa

bằng một khối lập phƣơng với các trục chính R, G, B.

Hình 1.3. Minh họa không gian màu RGB.
Mỗi màu trong không gian RGB đều đƣợc biểu diễn nhƣ là một vector thông
qua ba vector cơ sở là Red, Green, Blue. Do đó, ứng với các tổ hợp khác nhau
của ba màu này sẽ cho ta một màu mới. RGB là không gian màu rất phổ biết
đƣợc dùng trong đồ họa máy tính và các thiết bị kỹ thuật số nhƣ máy ảnh, điện
thoại,…Với một ảnh số đƣợc mã hóa bằng 24 bit thì có nghĩa là sẽ có 8 bit cho
kênh R (màu đỏ), 8 bit cho kênh G (màu xanh lục) và 8 bit cho kênh B (màu
lam), trong đó mỗi kênh sẽ có giá trị từ 0 đến 255. Nhƣ vậy sẽ có 255x255x255 =
1.66 triệu màu đƣợc tạo ra.
Không gian màu xám đƣợc tạo thành từ các thành phần màu đen và trắng.
Việc chuyển đổi không gian màu RGB sang xám đƣợc thực hiện bằng cách thay
đổi độ sáng trên từng pixel ảnh qua công thức sau:
Y '  0.2126R  0.7152G  0.0722B

(1.1)

Trong OpenCV, ta sử dụng hàm cvtColor để chuyển đổi ảnh từ hệ màu RGB
sang ảnh xám:
cvtColor(original, gray, CV_BGR2GRAY);
3


Trong đó original là ma trận ảnh gốc, gray là ma trận ảnh sau khi chuyển đổi,
CV_BGR2GRAY là tham số cho biết ảnh gốc (RGB) sẽ đƣợc chuyển thành ảnh
xám (Gray).

a) Ảnh RGB gốc.


b) Ảnh xám sau khi chuyển đổi.

Hình 1.4. Ảnh minh họa sự chuyển đổi giữa không gian màu RGB và Gray.
1.3. Mức xám và cân bằng mức xám
Mức xám (Histogram) là một lƣợc đồ biểu diễn độ sáng của một bức ảnh.
Lƣợc đồ này bao gồm trục hoành biểu diễn mức sáng và trục tung biểu diễn số
lƣợng điểm sáng tƣơng ứng. Đối với ảnh xám thông thƣờng, giá trị của trục
hoành nằm trong khoảng từ 0 - 255.

Hình 1.5. Một ví dụ về histogram ảnh.

4


Cân bằng mức xám (Histogram equalization) là phƣơng pháp dùng để giảm
bớt độ tƣơng phản của ảnh dựa vào lƣợc đồ Histogram của ảnh.

Hình 1.6. Cân bằng Histogram ảnh.
Việc cân bằng này là cần thiết vì đôi khi độ tƣơng phản giữa đối tƣợng mà ta
muốn xử lý (khuôn mặt hoặc ký tự biển số xe) và phông nền là không cao bởi
nhiều yếu tố môi trƣờng nhƣ ánh nắng, bóng mờ,…gây khó khăn cho việc nhận
diện đối tƣợng. Để thực hiện cân bằng xám trong OpenCV ta dùng hàm
equalizeHist:
equalizeHist( source, destination );
Trong đó source là ma trận ảnh gốc, destination là ma trận ảnh sau khi cân
bằng.

5



a) ảnh gốc.

b) ảnh sau khi cân bằng.

Hình 1.7. Kết quả sau khi chạy hàm equalizeHist.
1.4. Đặc trƣng Haar-like
Đặc trung Haar-like đƣợc tạo thành bằng việc kết hợp các hình chữ nhật trắng,
đen với nhau theo một trật tự, một kích thƣớc nào đó. Hình 1.8 mô tả các đặc
trƣng Haar-like cơ bản nhƣ sau:

Hình 1.8. Các đặc trƣng Haar-like cơ bản

6


Dùng các đặc trƣng trên, ta có thẻ tính đƣợc giá trị của các đặc trƣng Haar-like
là sự chênh lệch giữa tổng của các pixel của các vùng đen và trắng theo công
thức sau:
f(x) =Tổngvùng đen (các mức xám của pixel) - Tổngvùng trắng (các mức xám của pixel)
(1.2)
Sử dụng các giá trị này, so sánh với giá trị của các pixel thô, các đặc trƣng
Haar-like có thể tăng/giảm sự thay đổi in-class/out-of-class (bên trong hay bên
ngoài lớp khuôn mặt ngƣời), do đó sẽ làm cho bộ phân loại dễ hơn.
Có thể thấy, ta cần tính tổng các pixel trên ảnh, từ đó mới xác định đƣợc các
giá trị đặc trƣng Haar-like. Khối lƣợng các phép toán để tính các giá trị của các
đặc trƣng Haar-like trên toàn bức ảnh là khá lớn, độ trễ lớn nên không thể đáp
ứng đƣợc với các ứng dụng real-time.
Ta có thể tính giá trị của đặc trƣng Haar-like rất nhanh thông qua một cách
thức đƣợc gọi là “Integral Image”. Phƣơng pháp này do Viola và Jones đề xuất.
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, với 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ó.
Bắt đầu từ vị trí trên, bên trái đến vị trí dƣới, phải của ảnh, việc tính toán
này đơn thuần chỉ đựa trên phép cộng số nguyên đơn giản, do đó tốc độ thực hiện
rất nhanh.Ở đây, Integral Image tại vị trí (x, y) có giá trị bằng tổng các giá trị
pixel nằm trong hình chữ nhật đƣợc định bởi góc trái trên là (0, 0) và góc phải
dƣới là (x, y):
P( x, y ) 



i ( x ', y ')

(1.3)

x ' x , y ' y

P(x,y)
Hình 1.9. Cách tính Intergral Image của ảnh
7


Sau khi đã tính đƣợc Integral Image, việc tính tổng các giá trị mức xám của
một vùng bất kỳ nào đó trên ảnh thực hiện rất đơn giản.
Giả sử ta cần tính tổng các giá trị mức xám của vùng D nhƣ trong hình 1.9, ta
có thể tính nhƣ sau:
D  A  B  C  D  ( A  B)  ( A  C )  A

(1.4)


Với A là giá trị tại điểm P1, A + B là giá trị tại P2, A + C là giá trị tại P3, A +
B + C + D chính là giá trị tại điểm P4 trên Intergral Image. Vậy biểu thức (2.4)
có thể viết lại nhƣ sau:
D  ( x4, y4)  ( x2, y2)  ( x3, y3)  ( x1, y1)

A

P1

C

B

(1.5)

P2

D
P3

P4

Hình 1.10. Minh họa cách tính nhanh các giá trị mức xám của vùng D trên ảnh.
Tiếp theo, để chọn các đặc trƣng Haar-like dùng cho việc thiết lập ngƣỡng,
Viola và Jones sử dụng một phƣơng pháp máy học đƣợc gọi là AdaBoost.
AdaBoost sẽ kết hợp các bộ phân loại yếu để tạo thành một bộ phân loại mạnh.
Bộ phân loại mạnh có thể đƣa ra câu trả lời chính xác trên 60% trong khi đó với
bộ phân loại yếu cho câu trả lời chính xác chỉ hơn việc đoán một cách ngẫn nhiên
một chút.
Mỗi bức ảnh có một vector riêng giúp máy tính phân biệt ảnh này với ảnh khác.

Trong đề tài này nhóm nghiên cứu sẽ tính toán các vector riêng dựa trên phƣơng
pháp Haar. Giả sử ta có hai ký tự 9 và 6, ta có thể dễ dàng phân biệt 2 ký tự này
nhƣng đối với máy tính, ta phải đƣa chúng về cùng kích thƣớc rồi chia chúng
thành 16 ô nhỏ khác nhau nhƣ hình 2.10:

8


Hình 1.11. Minh họa cách tính toán đặc trƣng của các kí tự biển số xe.
Ta có thể thấy để phân biện 2 số trên có thể dựa vào tổng số pixel đen ở các ô
(1,4), (4,1) , (1,3)…số pixdel đen ở các ô này là khác nhau hoàn toàn. Tính toán
số pixel đen ở 16 ô nhỏ này ta có thể thu đƣợc nhiều nhất là 16 đặc trƣng để có
thể phân biệt đƣợc ký tự 9 và 6. Tuy nhiên với nhiều ký tự hơn ta cần phải tính
toán để tìm ra nhiều đặc trƣng hơn, các đặc trƣng có thể có tỉ lệ pixel đen/trắng
nào đó. Từ 16 đặc trƣng ban đầu, ta kết hợp chúng để tạo ra những đặc trƣng
mới. Số đặc trƣng càng nhiều thì kết quả phân loại càng chính xác.
Đặc trƣng Haar-like cũng đƣợc vận dụng để phát hiện khuôn mặt. Lúc này ảnh
đƣợc quét bằng một cửa sổ con chứa một đặc trƣng Haar-like.

Hình 1.12. Nhận dạng khuôn mặt sử dụng đặc trƣng haar-like.
Ứng với một đặc trƣng Haar-like fj, một bộ phân lớp yếu yj(x) đƣợc định nghĩa
nhƣ sau:

9


( )

{


( )

(1.6)

Trong đó:
 x là cửa sổ con.


là ngƣỡng.



là hệ số với ý nghĩa là quyết định dấu của bất phƣơng trình.

Nếu đặc trƣng Haar-like tại cửa sổ con x vƣợt quá một ngƣỡng nào đó thì đó
là khuôn mặt, ngƣợc lại thì không phải là khuôn mặt.
1.6. Chuỗi các bộ phân lớp (Cascade Classifier)
Dựa trên những đặc trƣng haar-like, thuật toán Cascade Classifier tiến hành rút
trích ra các đặc trƣng của đối tƣợng. Do đối tƣợng có thể biến đổi nhiều hình
dạng khác nhau nên phải phân tầng nhận dạng.
a. Ý tƣởng
Ta sẽ có một chuỗi các bộ phân lớp, trong đó mỗi bộ phân lớp đƣợc xây dựng
bằng thuật toán Adaboost. Bây giờ, ta đƣa tất cả các cửa sổ con đi qua chuỗi các
bộ phân lớp này:
 Bộ phân lớp đầu tiên sẽ loại bỏ phần lớn các cửa sổ không phải khuôn mặt
(nagative sub window) và cho đi qua các cửa sổ đƣợc cho là khuôn mặt
(positive sub window). Ở đây, bộ phân lớp này rất đơn giản và do đó, độ phức
tạp tính toán cũng rất thấp. Tất nhiên, vì rằng nó đơn giản nên trong số các
cửa sổ đƣợc nhận dạng là khuôn mặt sẽ có một số lƣợng lớn cửa sổ bị nhận
dạng sai (không phải là khuôn mặt.)

 Những cửa chỗ đƣợc cho đi qua bởi bộ phân lớp đầu sẽ đƣợc xem xét bởi bộ
phân lớp sau đó: nếu bộ phân lớp cho rằng đó không phải là khuôn mặt thì ta
loại bỏ; nếu bộ phân lớp cho rằng đó là khuôn mặt thì ta lại cho đi qua và
chuyển đến bộ phân lớp phía sau.
 Những bộ phân lớp càng về sau thì càng phức tạp hơn, đòi hỏi sự tính toán
nhiều hơn. Ngƣời ta gọi những cửa sổ con (mẫu) mà bộ phân lớp không loại
bỏ đƣợc là những mẫu khó nhận dạng. Những mẫu này càng đi sâu vào trong

10


chuỗi các bộ phân lớp thì càng khó nhận dạng. Chỉ những cửa sổ đi qua đƣợc
tất cả các bộ phân lớp thì ta mới quyết định đó là khuôn mặt.

Hình 1.13. Mô hình Cascade Classifier
Tóm lại, chuỗi các bộ phân lớp sẽ xử lý các mẫu (cửa sổ con) đi vào theo
nguyên tắc sau: nếu một bộ phân lớp nào đó cho rằng đó không phải là mặt ngƣời
thì ta loại bỏ ngay; còn nếu bộ phân lớp cho rằng đó là khuôn mặt thì ta chuyển
đến bộ phân lớp sau. Nếu một mẫu trót lọt hết tất cả các bộ phân lớp thì ta mới
quyết định đó là khuôn mặt.
b. Huấn luyện một cascade
Trƣớc tiên, ta cần nói đến hai độ đo quan trọng là detection rate và false
positive rate. Cụ thể nhƣ sau:
Detection rate = Số lƣợng các vùng đƣợc nhận dạng là khuôn mặt và đúng /
Số lƣợng khuôn mặt thật sự trong ảnh.
False positive rate = Số lƣợng các vùng đƣợc nhận dạng là khuôn mặt và
sai/Số lƣợng các vùng đƣợc nhận dạng là khuôn mặt.
Xét một cascade gồm K bộ phân lớp.
 Detection rate của cascade đƣợc tính nhƣ sau:
K


D   di

(1.7)

i 1

với di là detection rate của bộ phân lớp thứ i.

11


 False positive rate của cascade đƣợc tính nhƣ sau:
K

D  df

(1.8)

i 1

với di là detection rate của bộ phân lớp thứ i.
Thuật toán huấn luyện:
 Bƣớc 1: Ngƣời dùng chọn các giá trị.
o f: false positive rate lớn nhất chấp nhận đƣợc của mỗi bộ phân lớp
trong cascade.
o d: detection rate nhỏ nhất chấp nhận đƣợc của mỗi bộ phân lớp trong
cascade.
o Ftarget: false positive rate lớn nhất chấp nhận đƣợc của cascade.
 Bƣớc 2: Khởi gán

o P = tập các mẫu là khuôn mặt (positive.)
o N = tập các mẫu không phải là khuôn mặt (negative.)
o F0 = 1.0; D0 = 1.0
o i = 0.

//Chỉ số của bộ phân lớp trong cascade.

 Bƣớc 3:Trong khi mà Fi> Ftarget:
o i = i +1.
//Xây dƣng bộ phân lớp thứ i trong cascade.
o ni = 0.

//Số bộ phân lớp yếu của bộ phân lớp thứ i

o Fi = Fi-1.
o Trong khi mà Fi> f * Fi-1
 ni = ni + 1.
 Thuật toán Adaboost: Dùng bộ P và N để huấn luyện 1 bộ phân
lớp với ni đặc trƣng (ni bộ phân lớp yếu.)
 Tính Fi và Di của cascade hiện tại thông qua validation set.
 Giảm ngƣỡng của bộ phân lớp thứ i cho tới khi cascade hiện tại
đạt detection rate ít nhất là d*Di-1 (để ý là Fi cũng sẽ thay đổi
theo).
12


o N = 0.
o Nếu Fi> Ftarget: Đƣa những mẫu không phải là khuôn mặt vào cascade
hiện tại và tiến hành nhận dạng. Những mẫu mà bị nhận dạng là khuôn
mặt sẽ đƣợc đƣa vô N.

Nhƣ đã nói nguyên tắc xử lý của cascade là nếu có một bộ phân lớp nào đó nói
mẫu không phải là khuôn mặt thì loại bỏ ngay, còn nếu bộ phân lớp nói đó là
khuôn mặt thì ta chuyển cho bộ phân lớp phía sau. Do đó, ta thấy trong thuật
toán, khi xây dựng các bộ phân lớp của cascade, tập P (ứng với tập ảnh khuôn
mặt) luôn không đổi, còn tập N (ứng với tập ảnh không phải khuôn mặt) thì thay
đổi. Giả sử ta đã xây dựng đƣợc cascade đến bộ phân lớp thứ i. Ta sẽ đƣa các ảnh
không phải khuôn mặt vô cascade hiện thời và tiến hành nhận dạng. Các ảnh mà
bị cho là khuôn mặt sẽ đƣợc đƣa vào tập N để xây dựng tiếp bộ phân lớp thứ i+1.

13


CHƢƠNG 2
ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT TRÊN KIT RASPBERRY PI VÀ
ỨNG DỤNG NHẬN DIỆN BIỂN SỐ XE Ô TÔ.
2.1. ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT TRÊN KIT RASPBERRY PI
2.1.1. Giới thiệu kit raspberry PI
a. Phần cứng
Raspberry PI Là một nhóm các máy tính có kích thƣớc nhỏ cỡ chiếc thẻ ATM.
Board mạch này đƣợc phát triển bởi Raspberry PI Foundation-UK.Raspberry PI
sản xuất và đƣợc phân phối chính bởi Element14, RS Components và Egoman.
Nhiệm vụ ban đầu của dự án Raspberry PI là tạo ra máy tính rẻ tiền có khả
năng lập trình cho những sinh viên , nhƣng PI đã đƣợc sự quan tầm từ nhiều đối
tƣợng khác nhau. Đặc tính của Raspberry PI xây dựng xoay quanh bộ xử lí SoC
Broadcom BCM2836 ( là chip xử lí mobile mạnh mẽ có kích thƣớc nhỏ hay đƣợc
dùng trong điện thoại di động ) bao gồm CPU , GPU , bộ xử lí âm thanh /video ,
và các tính năng khác … tất cả đƣợc tích hợp bên trong chip có điện năng thấp
này .Tính đến 12/2014, khoảng 4.8 triệu board Raspberry PI đã đƣợc bán ra.

Hình 2.1. Doanh số của board Raspberry PI.


14


Hình 2.2. Cấu hình và sơ đồ phần cứng board raspberry PI 2.

Hình 2.3. Các thiết bị ngoại vi cần thiết cho Raspberry PI.
Đề tài sử dụng module camera làm thiết bị chụp ảnh đầu vào.

15


Hình 2.4. Module Camera.
Module camera có kích thƣớc 25mm x 20mm x 9mm và nặng 3g. Nó đƣợc kết
nối trực tiếp vào cổng CSI (Camera Serial Interface) trên kit Raspberry PI thông
qua cáp tín hiệu. Module sử dụng cảm biến hình ảnh CMOS QSXGA 5 Mpixel
với công nghệ OmniBSI do hãng OmniVision chế tạo, có tiêu cự cố định. Nó hỗ
trợ quay video với độ phân giải full HD tốc độ 30 fps, độ phân giải HD là 60 fps
và VGA là 60/90 fps.

Hình 2.5. Cách kết nối module camera với kit raspberry PI.

16


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×