Do đó ứng dụng đóng vai trò quan trọng trong đời sống ngày nay như an ninh, y tế,… Do đó, dựa trên nền tảng kiến thức đã học, vốn kiến thức về điện tử và sự đồng ý của giảng viên hướng d
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HỒ CHÍ
Giảng viên hướng dẫn: T.S Nguyễn Trọng Hải
Sinh viên thực hiện: MSSV: Lớp:
TP Hồ Chí Minh, ngày 09 tháng 07 năm 2022
Trang 2MỤC LỤC
LỜI CAM ĐOAN I LỜI CẢM ƠN II TÓM TẮT III ABSTRACT IV MỤC LỤC V DANH MỤC HÌNH VIII
CHƯƠNG I: GIỚI THIỆU ĐỀ TÀI 1
1.1 ĐẶT VẤN ĐỀ 1
1.2 MỤC TIÊU 1
1.3 NỘI DUNG NGHIÊN CỨU 2
1.4 GIỚI HẠN ĐỀ TÀI 2
1.5 BỐ CỤC 2
CHƯƠNG II: TỔNG QUAN GIẢI PHÁP CÔNG NGHỆ 4
2.1 LÝ THUYẾT XỬ LÝ ẢNH 4
2.1.1 Giới thiệu 4
2.1.2 Thu nhận ảnh (Image acquision) 4
2.1.3 Tiền xử lý ảnh (Image processing) 5
2.1.4 Phân vùng ảnh (Segmentation) 5
2.1.5 Biểu diễn ảnh (Image representation) 5
2.1.6 Nhận diện và nội suy ảnh (Image recognition and Interpretation) 5
2.1.7 Cơ sở tri thức (Knowledge base) 6
2.1.8 Mô tả 6
2.2 NHỮNG VẤN ĐỀ TRONG XỬ LÝ ẢNH 6
2.2.1 Điểm ảnh (Picture Element – Pixel) 6
2.2.2 Độ phân giải cùa ảnh 7
2.2.3 Mức xám cùa ảnh 7
2.2.4 Ảnh số (Digital image) 8
2.2.5 Quan hệ giữa các điểm ảnh 8
2.3 RASPBERRY PI 3 10
2.3.1 Giới thiệu 10
2.3.2 Thông tin cấu hình của Raspberry Pi 3 11
2.3.3 Ưu và nhược điểm của Raspberry Pi 3 12
2.3.4 Các ngõ ra GPIO 12
Trang 32.4 MÀN HÌNH TFT 1.44 INCH SPI 16
2.4.1 Giới thiệu 16
2.4.2 Thông số kỹ thuật 16
2.4.3 Giao diện chân Màn TFT 1.44 inch SPI 17
2.5 ARDUINO UNO R3 18
2.5.1 Giới thiệu 18
2.5.2 Thông số kỹ thuật 18
2.6 THUẬT TOÁN HISTOGRAM OF ORIENTED GRADIENT (HOG) 19
2.6.1 Giới thiệu 19
2.6.2 Ứng dụng của HOG 20
2.6.3 Cách hoạt động của thuật toán 21
2.6.4 Phép tính HOG 21
2.7 THUẬT TOÁN HAAR-LIKE 25
2.7.1 Giới thiệu thuật toán Haar-like 25
2.7.2 Đặc trưng của Haar-like 26
2.7.3 Khái niệm Intergal Image 27
2.7.4 AdaBoost 29
2.8 PHẦN MỀM PYTHON 31
2.8.1 Giới thiệu 31
2.8.2 Ứng dụng của Python 31
2.8.3 Đặc điểm nổi bật của Python 32
2.9 PHƯƠNG PHÁP NHẬN DIỆN KHUÔN MẶT 32
2.9.1 Quá trình training 33
2.9.2 Quá trình nhận diện khuôn mặt 34
CHƯƠNG III: PHƯƠNG PHÁP GIẢI QUYẾT 36
3.1 GIỚI THIỆU VỀ CÔNG NGHỆ NHẬN DIỆN KHUÔN MẶT 36
3.2 NHỮNG LỢI ÍCH CỦA HỆ THỐNG NHẬN DIỆN KHUÔN MẶT ĐÓNG MỞ CỬA TỰ ĐỘNG 36
3.3 NHƯỢC ĐIỂM CỦA HỆ THỐNG NHẬN DIỆN KHUÔN MẶT ĐÓNG MỞ CỬA TỰ ĐỘNG 36
CHƯƠNG IV: QUY TRÌNH THIẾT KẾ PHẦN CỨNG VÀ PHẦN MỀM 37
4.1 GIỚI THIỆU 37
4.2 TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG 37
4.2.1 Thiết kế sơ đồ khối tự động 37
Trang 44.2.2 Tính toán và thiết kế 38
4.3.2 Sơ đồ nguyên lý toàn mạch 43
4.4.2 Tính toán và thiết kế phần mềm 43
CHƯƠNG V: THI CÔNG MÔ HÌNH THỰC NGHIỆM 46
5.1 GIỚI THIỆU 46
5.2 THI CÔNG MÔ HÌNH HỆ THỐNG 46
5.2.1 Chuẩn bị phần cứng 46
5.2.2 Lắp ráp và kiểm tra 46
5.3 THI CÔNG MÔ HÌNH 48
5.4 LẬP TRÌNH HỆ THỐNG 51
5.4.1 Lưu đồ giải thuật 51
CHƯƠNG VI: ĐÁNH GIÁ KẾT QUẢ, KẾT LUẬN 56
6.1 ĐÁNH GIÁ KẾT QUẢ 56
6.1.1 Kết quả mô hình 56
6.1.2 Nhận xét và đánh giá 57
6.2 KẾT LUẬN 57
6.2.1 Kết quả đạt được 57
6.2.2 Những hạn chế 58
6.3 HƯỚNG PHÁT TRIỂN 58
TÀI LIỆU THAM KHẢO 59
SÁCH THAM KHẢO 59
PHỤ LỤC 60
Trang 5DANH MỤC HÌNH
Hình 1.1: Các bước cơ bản trong xử lý ảnh 4
Hình 2.2: Lân cận các điểm ảnh của tọa độ 8
Hình 2.3: Raspberry Pi 3 10
Hình 2.4: Sơ đồ khối Raspberry Pi 3 11
Hình 2.5: Vị trí chân Raspberry Pi 3 12
Hình 2.6: Màn TFT 1.44 inch SPI 16
Hình 2.7: Sơ đồ khối TFT 1.44 inch SPI 17
Hình 2.8: Arduino Uno R3 18
Hình 2.9: Ảnh phân tích Histogram 23
Hình 2.10: Map giá trị độ lớn gradient vào các bin tương ứng với phương 23
Hình 2.11: Biểu đồ HOG tương ứng với 1 cell 24
Hình 2.12: Các đặc trưng của Haar-like 26
Hình 2.13: Các đặc trưng của haar-like sử dụng trong việc phát hiện khuôn mặt 26
Hình 2.14: Intergal Image 27
Hình 2.15: Mô tả Intergal Image 28
Hình 2.16: Mô tả bộ lọc Haar-Cascade 29
HÌNH 2.17: Kết hợp các bộ phận phân loại yếu thành bộ phận phân loại mạnh 30
Hình 2.18: Hai đặc trưng cơ bản nhất để xác định khuôn mặt 30
Hình 2.19: Phần mềm Python 31
Hình2.20: Quá trình Training 33
Hình 2.21:Quá trình nhận diện khuôn mặt 34
Hình 4.1: Sơ đồ khối hệ thống 37
Hình 4.2: Sơ đồ khối Raspberry với các khối khác 40
Hình 4.3:Camera Pi kết nối với kit Raspberry 41
Hình 4.4:Bàn phím mềm 4x4 41
Hình 4.5:Adapter chuyên dụng cho Raspberry 42
Trang 6Hình 4.6: Sơ đồ nguyên lý toàn mạch 43
Hình 4.7: Không phát hiện được khuôn mặt 44
Hình 4.8: Phát hiện khuôn mặt 44
Hình 5.1: Raspberry kết nối với camera, bàn phím mềm, màn hình LCD 47
Hình 5.2: Arduino kết nối bới Servo và Raspberry 48
Hình 5.3:Servo kết nối với cửa 48
Hình 5.4: Tổng quan mô hình 49
Hình 5.5:Mô hình nhìn từ phía trước 49
Hình 5.6: Vị trí đặt Raspberry, camera Pi, bàn phím mềm 50
Hình 5.7:Vị trí đặt Arduino 50
Hình 5.8: Hoạt động của hệ thống sau khi được cấp nguôn 51
Hình 5.9: Hoạt động của dữ liệu xử lý hình ảnh 52
Hình 5.10: Hoạt động của keypad xử lý nút nhấn 53
Hình 5.11: Hoạt động của dữ liệu hiển thị hình ảnh 54
Hình 5.12: Hoạt động của relay và servo 55
Trang 7CHƯƠNG I: GIỚI THIỆU ĐỀ TÀI 1.1 ĐẶT VẤN ĐỀ
Với sự phát triển không ngừng nghỉ của khoa học kỹ thuật, việc ứng dụng khoa học kỹ thuật vào đời sống, xã hội đã trở nên phổ biến và cần thiết hơn bao giờ hết
Nó góp phần thúc đẩy phát triển khi mọi thứ dần trở nên tự động và hiệu suất công việc cũng được nâng cao hơn với sự giúp đỡ của máy móc, thiết bị Trong đó, công nghệ tiên tiến đang được áp dụng rộng rãi trong đời sống chính là xử lí ảnh Không dừng lại ở việc chỉnh sửa, tăng chất lượng hình ảnh mà công nghệ xử lí hình ảnh ngày nay còn giải quyết được các vấn đề như nhận diện chữ viết, khuôn mặt, dấu vân tay,…
Trong đó vấn đề được nhiều người quan tâm hiện nay là nhận diện khuôn mặt Như chúng ta biết, khuôn mặt đóng vai trò quan trọng trong việc giao tiếp giữa người với người, nó mang một lượng lớn thông tin giúp ta xác định được giới tính, tuổi tác, chủng tộc, trạng thái cảm xúc, đặc biệt là xác nhận quan hệ đối tượng Do đó ứng dụng đóng vai trò quan trọng trong đời sống ngày nay như an ninh, y tế,…
Do đó, dựa trên nền tảng kiến thức đã học, vốn kiến thức về điện tử và sự đồng
ý của giảng viên hướng dẫn - thầy Nguyễn Trọng Hải, nhóm đã quyết định chọn
đề tài “Thiết kế hệ thống nhận diện khuôn mặt đóng mở cửa tự động”
1.2 MỤC TIÊU
Đề tài “Thiết kế hệ thống nhận diện khuôn mặt đóng mở cửa tự động” với
mục tiêu là:
• Nhận diện chính xác được người có trong cơ sở dữ liệu
• Cho phép mô hình mở cửa khi nhận diện thành công
• Sử dụng phần mềm Python để viết chương trình nhận diện khuôn mặt
• Sử dụng Raspberry Pi 3 làm thiết bị nhúng
• Hệ thống hoạt động ổn định
Trang 81.3 NỘI DUNG NGHIÊN CỨU
Đề tài “Thiết kế hệ thống nhận diện khuôn mặt đóng mở cửa tự động” có nội
dung như sau:
• Nội dung 1: Tìm hiểu về Raspberry Pi 3 và phần mềm Python
• Nội dung 2: Tổng quan về xử lý ảnh và thuật toán nhận diện khuôn mặt
• Nội dung 3: Viết chương trình nhận diện khuôn mặt
• Nội dung 4: Thiết kế và thi công mô hình
• Nội dung 5: Chạy thử nghiệm và điều chỉnh mô hình
• Nội dung 6: Viết báo cáo đồ án
• Nội dung 7: Báo cáo về đồ án
1.4 GIỚI HẠN ĐỀ TÀI
Trong đề tài này, nhóm thực hiện xem xét chương trình nhận diện khuôn mặt và làm mô hình nhỏ nên còn giới hạn về:
• Nhận diện được trong môi trường đủ ánh sáng
• Khuôn mặt không bị che khuất, góc nhìn trực diện
• Mô hình thi công có kích thước:
• Mô hình nhr, sử dụng máy tính để xử lý hình ảnh thông qua phần mềm hỗ trợ Python, Raspberry Pi 3 làm hệ thống điều khiển
1.5 BỐ CỤC
Nội dung đề tài như sau:
• Chương 1 – Giới thiệu đề tài: Trình bày khái quát về xu hướng phát triển,
nguyên nhân chọn đề tài, xác định mục tiêu và giới hạn công việc đề tài
• Chương 2 – Tổng quan giải pháp công nghệ: Giới thiệu các kiến thức nền
tảng cũng như công nghệ và phần mềm được sử dụng trong khóa luận bao gồm kiến thức về xử lý hình ảnh, kết nối giữa Rastpberry Pi 3 với máy tính thông qua Python và cần thiết cho mô hình
Trang 9• Chương 3 – Phương pháp giải quyết: Thực hiện kế hoạch tập mẫu, diễn giải
các thông số của mô hình, xây dựng bản vẽ chi tiết mô hình, thiết kế và kiểm tra hệ thống nhận diện khuôn mặt
• Chương 4 – Quy trình thiết kế phần cứng và phần mềm: Thực hiện lập
trình hệ thống, xây dựng lưu đồ giải thuật, nạp code và tiến hành chạy thử nghiệm
• Chương 5 – Thi công mô hình thực nghiệm: Trình bày kết quả đạt được qua
quá trình kiểm tra, thử nghiệm của hệ thống nhận diện khuôn mặt
• Chương 6 – Kết luận và hướng phát triển: Trình bày kết quả đạt được, nêu
lên hướng nghiên cứu và phát triển đề tài
Trang 10CHƯƠNG II: TỔNG QUAN GIẢI PHÁP CÔNG NGHỆ
2.1 LÝ THUYẾT XỬ LÝ ẢNH
2.1.1 Giới thiệu
Xử lý ảnh là một lĩnh vực mang tính khoa học và công nghệ Nó là một ngành khoa học mới mẻ so với nhiều ngành khoa học khác nhưng tốc độ phát triển của nó rất nhanh, kích thích các trung tâm nghiên cứu, ứng dụng, đặc biệt là máy tính chuyên dụng riêng của nó
Để dễ tưởng tượng, xét các bước cần thiết trong xử lý ảnh Đầu tiên, ảnh tự nhiên từ thế giới ngoài được thu nhận qua các thiết bị thu (như Camera, máy chụp ảnh) Trước đây, ảnh thu qua camera là các ảnh tương tự ( loại camera ống kiểu CCIR) Gần đây, với sự phát triển của công nghệ, ảnh màu được đen trắng được lấy
ra từ Camera, sau đó nó được chuyển trực tiếp thành ảnh số tạo thuận lợi cho xử lý tiếp theo Mặt khác, ảnh cũng có thể tiếp nhận từ vệ tinh, có thể quét từ ảnh chụp từ máy quét ảnh
Hình 1.1: Các bước cơ bản trong xử lý ảnh 2.1.2 Thu nhận ảnh (Image acquision)
Ảnh có thể được thu nhận qua camera màu hoặc trắng đen Thường ảnh nhận qua camera là ảnh tương tự (loại camera ống chuẩn CCIR với tần số 1/25, mỗi ảnh
25 dòng), cũng có loại camera đã số hóa (như lại CCD – change coupled device) là loại photodiode tạo cường độ sáng tại mỗi điểm ảnh
Trang 11Camera thường dùng là loại quét dòng, ảnh tạo ra có dạng ảnh hai chiều Chất lượng ảnh thu được phụ thuộc vào thiết bị thu, môi trường thu nhận ảnh (ánh sáng, phong cảnh,…)
2.1.3 Tiền xử lý ảnh (Image processing)
Sau bộ thu nhận, ảnh có thể có độ nhiễu tương phản thấp nên ta cần đưa vào
bộ tiền xử lý ảnh để nâng cao chất lượng Chức năng chính của bộ tiền xử lý ảnh là lọc nhiễu, nâng cao sự tương phản để làm ảnh rõ nét hơn
2.1.4 Phân vùng ảnh (Segmentation)
Phân vùng ảnh là tách một ảnh đầu vào thành các vùng thành phần để biểu diễn phân tích, nhận diện ảnh Kết quả của công đoạn nhận diện ảnh phụ thuộc vào việc phân chia các chi tiết về các địa chỉ riêng biệt để nhận diện Đây là công đoạn phức tạp trong xử lý ảnh
2.1.5 Biểu diễn ảnh (Image representation)
Đây là phần sau phân vùng ảnh cộng với mã liên kết các vùng lân cận Việc biến đổi các số liệu này thành dạng thích hợp là cần thiết cho quá trình xử lý tiếp theo bằng máy tính Việc chọn các tính chất để thể hiện ảnh gọi là trích xuất đặc trưng gắn với việc tách các đặc tính của ảnh dưới dạng các thông tin định lượng hoặc làm cơ sở
để phân biệt lớp đối tượng này với lớp đối tượng khác trong phạm vi ảnh nhận được
2.1.6 Nhận diện và nội suy ảnh (Image recognition and Interpretation)
Nhận diện ảnh là quá trình xác định Quá trình này thường thu được bằng cách
so sánh với mẫu chuẩn đã được học (hoặc lưu) từ trước Nội suy là phán đoán theo ý nghĩa trên cơ sở nhận diện Theo lý thuyết về nhận diện, các mô hình toán học về ảnh
có thể được nhận diện theo hai loại cơ bản là:
• Nhận diện tham số
• Nhận diện theo cấu trúc
Một số đối tượng nhận diện phổ biến hiện nay được áp dụng trong khoa học
và công nghệ là: nhận diện ký tự, nhận diện vân tay, mã vạch, khuôn mặt người,…
Trang 122.1.7 Cơ sở tri thức (Knowledge base)
Ảnh là một đối tượng khá phức tạp về đường nét, độ sáng, dung lượng điểm ảnh, môi trường để thu ảnh phong phú Trong nhiều khâu xử lý và phân tích ảnh ngoài việc đơn giản hóa các phương pháp toán học đảm bảo tiện lợi cho xử lý, người ta mong muốn bắt chước quy trình tiếp nhận và xử lý ảnh của con người Hiện nay, nhiều khâu trong quy trình đã được xử lý theo các phương pháp mô phỏng trí tuệ con người Vì vậy, ở đây các cơ sở tri thức được phát huy
2.1.8 Mô tả
Ảnh sau khi số hóa sẽ được lưu vào bộ nhớ, hoặc truyền sang các khâu tiếp theo để phân tích Nếu lưu trữ ảnh trực tiếp từ các ảnh thô thì sẽ đòi hỏi bộ nhớ cực lớn và không hiệu quả theo quan điểm ứng dụng và công nghệ Thông thường, các ảnh được gọi là các đặc trưng ảnh như: biên ảnh, vùng ảnh
2.2 NHỮNG VẤN ĐỀ TRONG XỬ LÝ ẢNH
2.2.1 Điểm ảnh (Picture Element – Pixel)
Gốc của ảnh(ảnh tự nhiên) là ảnh liên tục về không gian và độ sáng Để xử lý bằng máy tính(số), ảnh cần phải được số hoá Số hoá ảnh là sự biến đổi gần đúng một ảnh liên tục thành một tập điểm phù hợp với ảnh thật về vị trí(không gian) và độ sáng (mức xám) Khoảng cách giữa điểm ảnh đó được thiết lập sao cho mắt người không phân biệt được ranh giới giữa chúng Mỗi một điểm như vậy gọi là điểm ảnh (PEL: Picture Element) hay gọi tắt là Pixel Trong khuôn khổ ảnh hai chiều, mỗi Pixel ứng với cặp tọa độ (x,y)
Như vậy, điểm ảnh (Pixel) là một phần tử của ảnh số tại toạ độ (x,y) với độ xám hoặc màu nhất định Kích thước và khoảng cách giữa các điểm ảnh đó được chọn thích hợp sao cho mắt người cảm nhận sự liên tục về kkhong gian và mức xám (hoặc màu) của ảnh số gần như ảnh thật Mỗi phần tử trong ma trận được gọi là một phần
tử ảnh
Trang 132.2.2 Độ phân giải cùa ảnh
Theo định nghĩa ở trên thi mỗi Pixel gồm một cặp toạ độ (x,y) và màu Độ phân giải của ảnh chính là tích số của giá trị lớn nhất của x với giá trị lớn nhất của y
VD: Màn hình máy tính có nhiều loại với độ phân giải khác nhau: màn hình CGA (Color Graphic Adaptor) có độ phân giảI 320 x 200; màn hình VGA (Video Graphic Array) độ phân giải 1280 x 800;
Rõ ràng màn hình có độ phân giải càng cao thì ta có cảm giác nó càng ‘mịn’ hơn so với loại có độ phân giải thấp hơn
2.2.3 Mức xám cùa ảnh
Mức xám là kết quả sự mã hoá tương ứng một cường độ sáng của mỗi điểm ảnh với một giá trị số – kết quả của quá trình lượng tử hoá
Các thang giá trị mức xám thông thường: 16,32,64,128,256 Trong đó mức
256 được dùng rất phổ biến do máy tính dùng 1 byte(8 bit) để biểu diễn mức xám,
mà mức xám lại dùng 1 byte để biểu diễn: 28 = 256 mức, tức là từ mức 0 đến mức
255
• Ảnh đen trắng: là ảnh có hai màu đen, trắng (không chứa màu khác ) với mức
xám ở các điểm ảnh có thể khác nhau
• Ảnh nhị phân: ảnh chỉ có 2 mức đen trắng phân biệt tức ding 1 bit mô tả
21 mức khác nhau hay mỗi điểm ảnh nhị phân chi có 1 trong 2 giá trị hoặc là
1 hoặc là 2
• Ảnh màu: với mỗi điểm ảnh thì người ta dung 3 byte để mô tả mức màu (do
thế giới màu được tạo nên từ 3 màu cơ bản: đỏ(red), lục(blue) và lơ(green))
Do đó có 28*3 = 224 = 16,7 triệu màu
Trang 142.2.4 Ảnh số (Digital image)
Là tập hợp hữu hạn các điểm ảnh Ảnh có thể được biểu diễn dưới dạng một
ma trận 2 chiều, mỗi phần tử của ma trận tương ứng với một điểm ảnh Mỗi phần tử
này được gọi là một pixel Ảnh có thể được định nghĩa là một hàm 2 chiều f(x,y), trong đó x và y là các tọa độ trong không gian ( spatinal) hoặc mặt phẳng (plane), và
độ lớn (amplitude) của hàm f được gọi là độ sáng (intensity) hay độ xám (gray level) của ảnh tại điểm đó
2.2.5 Quan hệ giữa các điểm ảnh
Một ảnh số giả sử được biểu diễn bằng hàm f(x, y) Tập con các điểm ảnh là S; cặp điểm ảnh có quan hệ với nhau ký hiệu là p, q Chúng ta nêu một số các khái niệm
sau
a) Các lân cận của điểm ảnh (Image Neighbors)
Giả sử có điểm ảnh p tại toạ độ (x, y) p có 4 điểm lân cận gần nhất theo chiều
đứng và ngang (có thể coi như lân cận 4 hướng chính: Đông, Tây, Nam, Bắc)
{(x-1, y); (x, y-1); (x, y+1); (x+1, y)} = N 4 (p)
Trong đó: số 1 là giá trị logic; N 4 (p) tập 4 điểm lân cận của p
Hình 2.2: Lân cận các điểm ảnh của tọa độ
Trang 15Các điểm lân cận chéo: Các điểm lân cận chéo NP(p) (Có thể coi lân cận chéo là 4 hướng: Đông-Nam, Đông-Bắc, Tây-Nam, Tây-Bắc)
N p (p) = { (x+1, y+1); (x+1, y-1); (x-1, y+1); (x-1, y-1)}
Tập kết hợp: N8(p) = N4(p) + NP(p) là tập hợp 8 lân cận của điểm ảnh p Chú ý: Nếu (x, y) nằm ở biên (mép) ảnh; một số điểm sẽ nằm ngoài ảnh b) Các mối liên kết điểm ảnh
Các mối liên kết được sử dụng để xác định giới hạn (Boundaries) của đối tượng vật thể hoặc xác định vùng trong một ảnh Một liên kết được đặc trưng bởi tính liền
kề giữa các điểm và mức xám của chúng
Giả sử V là tập các giá trị mức xám Một ảnh có các giá trị cường độ sáng từ
thang mức xám từ 32 đến 64 được mô tả như sau:
V = {32, 33, … , 63, 64}
Có 3 loại liên kết
• Liên kết 4: Hai điểm ảnh p và q được nói là liên kết 4 với các giá trị
cường độ sáng V nếu q nằm trong một các lân cận của p, tức q thuộc
N4(p)
• Liên kết 8: Hai điểm ảnh p và q nằm trong một các lân cận 8 của p, tức
q thuộc N8(p)
• Liên kết m (liên kết hỗn hợp): Hai điểm ảnh p và q với các giá trị
cường độ sáng V được nói là liên kết m nếu
1 q thuộc N4(p) hoặc
2 q thuộc NP(p)
Trang 16Raspberry Pi 3 là thế hệ máy tính thứ 3 của Raspberry Pi, nó ra đời để thay thế Raspberry Pi 2 vào tháng 1/ 2016 Raspberry Pi 3 có đặc điểm nổi trội hơn các
phiên bản trước là có tích hợp thêm wifi để có thể kết nối mạng internet không dây
và bluetooth 4.1
Hình 2.3 Raspberry Pi 3
Trang 172.3.2 Thông tin cấu hình của Raspberry Pi 3
Thông tin cấu hình Raspberry Pi 3 model B:
• CPU Broadcom BCM2837 64 bit quad-core bộ vi xử lý ARM Cortex A53, tốc
độ 1.2GHz, gấp 10 lần so với thế hệ đầu tiên
• Tích hợp wireless chuẩn 802.11n
• Tích hợp Bluetooth 4.1 (sở hữu tính năng tiết kiệm năng lượng BLE)
• Bộ nhớ RAM 2G
• 4 cổng USB 2.0
• Cổng HDMI, hỗ trợ Full HDMI
• Cổng Ethernet (hay gọi là cổng mạng LAN)
Trang 182.3.3 Ưu và nhược điểm của Raspberry Pi 3
Trang 19GPIO của Raspberry Pi 3 model B có tất cả 40 chân, được chia làm hai hàng, mỗi hàng 20 chân, một hàng gồm các chân đánh số lẽ từ 1–39, một hàng gồm các chân đánh số chẵn từ 2–40 (đánh số theo mạch – BOARD number)
GPIO của Raspberry Pi 3 model B gồm có:
▪ 2 chân có mức điện áp 3.3V (chân số 1 và chân số 17)
▪ 2 chân có mức điện áp 5V (chân số 2, chân số 4)
▪ 8 chân Ground (0V) (chân số 6, 9, 14, 20, 25, 30, 34 và 39)
▪ 28 chân GPIO ( chân số 3, 5, 7, 8, 10, 11, 12, 13, 15 , 16, 18, 19, 20, 21, 22,
nối: SDA (Serial Data) và SCL (Serial Clock) Chúng hoạt động bằng cách gửi dữ
liệu đến và sử dụng kết nối SDA, và tốc độ truyền dữ liệu được điều khiển thông qua chân SCL
• Data: (GPIO 2), Clock (GPIO 3)
• EEPROM Data: (GPIO 0), EEPROM Clock (GPIO 1)
b) Các chân UART
Trang 20Các chân giao tiếp nối tiếp hoặc UART (Universal Asynchronous Receiver/Transmitter – Bộ thu / phát không đồng bộ đa năng) cung cấp cách thức giao tiếp giữa hai bộ vi điều khiển hoặc máy tính Chân TX được sử dụng để truyền
dữ liệu nối tiếp và chân RX được sử dụng để nhận dữ liệu nối tiếp đến từ một thiết bị
nối tiếp khác Có 2 chân liên quan đến giao tiếp UART
• TX (GPIO14)
• RX (GPIO15)
c) Các chân SPI
SPI (Serial Peripheral Interface) là một giao thức được sử dụng cho giao tiếp
chủ-tớ Raspberry Pi sử dụng giao thức này để giao tiếp nhanh chóng giữa một hoặc
nhiều thiết bị ngoại vi Dữ liệu được đồng bộ hóa bằng đồng hồ (SCLK tại chân
GPIO 11) từ thiết bị chính (Raspberry Pi) và dữ liệu được gửi từ Raspberry Pi tới
thiết bị SPI bằng chân MOSI (Master Out Slave In) Nếu thiết bị SPI cần giao tiếp lại với Raspberry Pi, thì nó sẽ gửi dữ liệu trở lại bằng chân MISO (Master In Slave
Out) Có 5 chân liên quan đến giao tiếp SPI:
• GND: Kết nối tất cả các chân GND của tất cả các thành phần tớ (slave) và
bo mạch Raspberry Pi 3 với nhau
• SCLK: Tín hiệu đồng hồ của SPI Kết nối tất cả các chân SCLK với nhau
• MOSI (Master Out Slave In): Chân này được sử dụng để gửi dữ liệu từ chủ
(master) đến tớ (slave)
• MISO (Master In Slave Out): Chân này được sử dụng để nhận dữ liệu từ
slave đến master
• CE (Chip Enable): Chúng tôi cần kết nối một chân CE cho mỗi thiết bị
slave (hoặc các thiết bị ngoại vi) trong mạch của chúng ta Theo mặc định,
Trang 21chúng ta có hai chân CE nhưng chúng ta có thể cấu hình nhiều chân CE hơn từ các chân GPIO có sẵn khác
Các chân SPI trên bo mạch Raspberry Pi 3:
• SPI0: GPIO 9 (MISO), GPIO 10 (MOSI), GPIO 11 (SCLK), GPIO 8
(CE0), GPIO 7 (CE1)
• SPI1: GPIO 19 (MISO), GPIO 20 (MOSI), GPIO 21 (SCLK), GPIO 18
(CE0), GPIO 17 (CE1), GPIO 16 (CE2)
Các chân GPIO chịu mức điện áp tối thiểu là 3V, tối đa là 5V Nếu mức điện
áp nằm ngoài giới hạn này sẽ làm hỏng mạch Thông thường, chúng ta nên sử dụng một mạch mở rộng để kết nối với các thiết bị ngoại vi, không nên kết nối trực tiếp các thiết bị, linh kiện điện tử vào GPIO trên Raspberry Pi 3
d) Các chân PWM
PWM (Pulse Width Modulation – Điều chế độ rộng xung) là một kỹ thuật phổ
biến được sử dụng để thay đổi độ rộng của các xung trong một chuỗi xung PWM có nhiều ứng dụng như điều khiển độ sáng của đèn LED, điều khiển tốc độ của động cơ
DC, điều khiển động cơ servo hoặc nơi bạn phải lấy ngõ ra analog bằng các thiết bị
Trang 222.4 MÀN HÌNH TFT 1.44 INCH SPI
2.4.1 Giới thiệu
Màn hình TFT 1.44 inch SPI à giải pháp tối ưu cho việc hiển thị trên màn
hình LCD, có khả năng giao tiếp với nhiều loại MCU thông qua giao thức SPI
Màn hình TFT 1.44 inch có độ phân giải 128x128, cùng kích thước nhỏ gọn dễ
dàng cho việc lắp đặt với các thiết bị khác Màn hình TFT 1.44 inch được sử dụng
IC ST7735 khá phổ biến để điều khiển màn hình
Hình 2.6 Màn TFT 1.44 inch SPI 2.4.2 Thông số kỹ thuật
Trang 23Hình 2.7 Sơ đồ khối TFT 1.44 inch SPI 2.4.3 Giao diện chân Màn TFT 1.44 inch SPI
1 VCC Đầu vào nguồn 5V/3.3V
3 CS Tín hiệu chọn chip LCD, bật mức thấp
4 RESET Tín hiệu đặt lại LCD, đặt lại mức thấp
5 A0 Thanh ghi màn hình LCD/ tín hiệu chọn dữ liệu, mức cao:
đăng ký, mức thấp: dữ liệu
6 SDA Tín hiệu dữ liệu SPI
7 SCK Tín hiệu đồng hồ SPI
8 LED Điều khiển đèn nền, sáng ở mức cao, nếu không cần điều
khiển , kết nối với 3.3V để tiếp tục
Trang 242.5 ARDUINO UNO R3
2.5.1 Giới thiệu
Arduino Uno R3 là một board mạch vi điều khiển được phát triển bởi Arduino.cc, một nền tảng điện tử mã nguồn mở chủ yếu dựa trên vi điều khiển AVR Atmega328P
Phiên bản hiện tại của Arduino Uno R3 đi kèm với giao diện USB, 6 chân đầu vào analog, 14 cổng kỹ thuật số I / O được sử dụng để kết nối với các mạch điện tử, thiết bị bên ngoài Trong đó có 14 cổng I / O, 6 chân đầu ra xung PWM cho phép các nhà thiết kế kiểm soát và điều khiển các thiết bị mạch điện tử ngoại vi một cách trực quan
Arduino Uno R3 được kết nối trực tiếp với máy tính thông qua USB để giao tiếp với phần mềm lập trình IDE, tương thích với Windows, MAC hoặc Linux Systems, tuy nhiên, Windows thích hợp hơn để sử dụng Các ngôn ngữ lập trình như C và C ++ được sử dụng trong IDE
Hình 2.8 Arduino Uno R3 2.5.2 Thông số kỹ thuật
Trang 25Điện áp hoạt động 5V
Phương pháp trích xuất đặc trưng hình ảnh HOG xuất bản ở hội nghị CVPR
2005 được đề xuất bởi tác giả Navneet Dalal và Bill Triggs Bài báo gốc HOG đề xuất phương pháp trích xuất đặc trưng sử dụng các thống kê histogram về hướng trên ảnh gradient cho bài toán phát hiện người (human detection)
HOG là viết tắt của Histogram of Oriented Gradient - một loại “bộ mô tả đặc trưng” (feature descriptor) Mục đích của bộ mô tả đặc trưng là trừu tượng hóa đối
Trang 26tượng bằng cách trích xuất ra những đặc trưng của đối tượng đó và bỏ đi những thông tin không hữu ích Vì vậy, HOG được sử dụng chủ yếu để mô tả hình dạng và sự xuất hiện của một đối tượng trong ảnh
Thuật toán này sẽ tạo ra các bộ mô tả đặc trưng bằng cách lấy ra 2 ma trận quan trọng giúp lưu thông tin ảnh đó là độ lớn gradient (gradient magnitute) và phương của gradient (gradient orientation) Bằng cách kết hợp 2 thông tin này vào một biểu đồ phân phối histogram, trong đó độ lớn gradient được đếm theo các nhóm bin của phương gradient Cuối cùng ta sẽ thu được véctơ đặc trưng HOG đại diện cho histogram
Nhận diện các vật thể khác: Ngoài ra còn rất nhiều các trường hợp nhận diện vật thể trên ảnh tĩnh như phương tiện, tín hiệu giao thông, động vật…
Tạo đặc trưng cho các bài toán phân loại ảnh: Nhiều bài toán phân loại ảnh được xây dựng trên một bộ dữ liệu kích thước nhỏ thì sử dụng các mạng học sâu chưa chắc đã mang lại hiệu quả và dễ dẫn tới overfiting Nguyên nhân vì dữ liệu ít thường không đủ để huấn luyện cho máy tính nhận tốt các đặc trưng của vật thể Khi đó sử
dụng HOG để tạo đặc trưng sẽ mang lại kết quả tốt hơn
Trang 272.6.3 Cách hoạt động của thuật toán
Điểm mấu chốt trong nguyên lý hoạt động của HOG đó là hình dạng của một vật thể cục bộ có thể được mô tả thông qua hai ma trận đó là ma trận độ lớn gradient (gradient magnitude) và ma trận phương gradient (gradient direction)
Đầu tiên hình ảnh được chia thành 1 lưới ô vuông và trên đó chúng ta xác định rất nhiều các vùng cục bộ liền kề hoặc chồng lấn lên nhau Một vùng cục bộ bao gồm nhiều ô cục bộ (trong thuật toán HOG là 4) có kích thước là 8x8 pixels Sau đó, một biểu đồ histogram thống kê độ lớn gradient được tính toán trên mỗi ô cục bộ Bộ mô
tả HOG (HOG descriptor) được tạo thành bằng cách nối liền (concatenate) 4 véctơ histogram ứng với mỗi ô thành một véctơ tổng hợp Để cải thiện độ chính xác, mỗi giá trị của véctơ histogram trên vùng cục bộ sẽ được chuẩn hóa theo norm chuẩn bậc
2 hoặc bậc 1 Phép chuẩn hóa này nhằm tạo ra sự bất biến tốt hơn đối với những thay đổi trong chiếu sáng và đổ bóng
2.6.4 Phép tính HOG
• Gradient vector
Trong xử lý ảnh, ta muốn biết hướng của các màu thay đổi từ cực này sang cực khác (từ trắng sang đen trong ảnh xám) Do đó, ta cần đo độ dốc gradient trên các pixel Độ dốc trên hình ảnh là rời rạc vì mỗi pixel là độc lập và không thể phân chia thêm
Vectơ độ dốc hình ảnh được xác định là một số liệu cho mỗi pixel riêng lẻ,
chứa các thay đổi màu pixel ở cả trục x và trục y
Giả sử f(x,y) ghi lại màu của pixel tại vị trí (x,y), vectơ gradient của pixel (x,y)
được xác định như sau:
Trang 28Trong đó 𝜕𝑓
𝜕𝑥 là đạo hàm riêng theo trục x, là chênh lệch màu giữa các pixel liền kề bên trái và bên phải của pixel đang tính, f(x+1, y) - f(x-1, y) Tương tự, 𝜕𝑓
𝜕𝑦 là
đạo hàm riêng trên trục y, được đo bằng f(x, y+1) - f(x, y-1), là độ lệch màu giữa các
pixel liền kề bên trên và bên dưới pixel đang tính
Giá trị độ lớn gradient (gradient magnitude) và phương gradient (gradient
direction) có thể được tạo ra từ 2 đạo hàm G x và G y theo công thức bên dưới:
Trang 29Hình 2.9 Ảnh phân tích Histogram Véctơ Histogram sẽ được tạo ra như sau:
Bước 1: Mapping độ lớn gradient vào các bin tương ứng của phương gradient
Hình 2.10 Map giá trị độ lớn gradient vào các bin tương ứng với phương
Giá trị phương gradient bằng x ghép cặp với độ lớn gradient bằng y x ∈ [x 0 ,x 1 ]
tức là phương gradients rơi vào khoảng giữa bin thứ (l−1) và bin thứ l Khi đó tại 2 bin (l−1) và l được điền vào giá trị cường độ theo công thức:
Giá trị tại bin (l-1)
Trang 30𝑥𝑙−1 =(𝑥1− 𝑥)
𝑥1− 𝑥0 𝑦 Giá trị tại bin 1:
𝑥1 =(𝑥 − 𝑥0)
𝑥1− 𝑥0 𝑦 Tính tổng tất cả các độ lớn gradient thuộc cùng 1 bin của véctơ bin ta thu được biểu đồ Histogram of Gradients như hình:
Hình 2.11 Biểu đồ HOG tương ứng với 1 cell Bước 2: Chuẩn hóa véctơ histogram theo block 16x16
Véctơ histogram sẽ bị phụ thuộc vào cường độ các pixel của một bức ảnh Với
2 bức ảnh có cùng nội dung nhưng bức ảnh biến thể tối hơn được tạo thành từ ma trận ảnh gốc nhân 1
2 Khi đó giá trị véctơ histogram của ảnh gốc cũng sẽ gấp đôi véctơ histogram của ảnh biến thể Hiện tại mỗi ô đang mang trong mình histogram trên vùng ảnh 8x8, các thông tin này mang tính chất cục bộ Chính vì thế cần chuẩn hóa véctơ histogram để cả 2 bức ảnh có cùng một véctơ biểu diễn Tác giả đã đưa ra nhiều cách chuẩn hóa khác nhau dựa trên các khối (block) chồng lấn (overlap) nhau
Một block gồm nhiều ô, block 2x2 nghĩa là ta có vùng diện tích của 4 ô liền
kề, block này sẽ phủ trên diện tích = 16x16 pixel Trong quá trình chuẩn hóa, ta sẽ
Trang 31lần lượt chuẩn hóa block 2x2 đầu tiên, rồi dịch block đó sang 1 ô và cũng thực hiện chuẩn hóa cho block này Như vậy, giữa block đầu tiên và block liền kề đã có sự chồng lấn lẫn nhau (2 ô), trong tiếng Anh người ta dùng từ overlap
Công thức chuẩn hóa norm chuẩn bậc 2:
𝑁𝑜𝑟𝑚𝑎𝑙𝑖𝑧𝑒(ℎ) = ℎ
‖ℎ‖2Quá trình chuẩn hóa sẽ thực hiện trên một block kích thước 2x2 trên lưới ô vuông ban đầu (mỗi ô kích thước 8x8 pixel) Như vậy chúng ta sẽ có 4 véctơ histogram kích thước 1x9, nối các véctơ sẽ thu được véctơ histogram tổng hợp kích thước là 1x36 và sau đó chuẩn hóa theo norm chuẩn bậc 2 trên véctơ này
Bước 3: Tính toán HOG theo các block đã chuẩn hóa
2.7 THUẬT TOÁN HAAR-LIKE
2.7.1 Giới thiệu thuật toán Haar-like
Được phát triển bởi Paul Viola và Michael Jones vào năm 2001 Phương pháp này được cho là đơn giản và đạt hiệu quả phát hiện tương đối cao, lên tới 94% Dù
đã được ra đời từ rất lâu nhưng với độ chính xác và tốc độ xử lý mang phương pháp này có thể mang lại, người ta vẫn sử dụng phương pháp này trong bài toán phát hiện khuôn mặt người cho đến ngày nay Các hãng sản xuất máy ảnh nổi tiếng như Canon, Samsung… cũng đã tích hợp nó vào trong các sản phẩm của mình
Trang 322.7.2 Đặc trưng của Haar-like
Các đặc trưng Haar – Like là những hình chữ nhật được phân thành các vùng khác nhau như hình:
Hình 2.12 Các đặc trưng của Haar-like
Đặc trưng do Viola và Jones công bố gồm 4 đặc trưng cơ bản để xác định khuôn mặt người Mỗi đặc trưng Haar-Like là sự kết hợp của hai hay ba hình chữ nhật trắng hay đen như trong hình sau:
Hình 2.13 Các đặc trưng của haar-like sử dụng trong việc phát hiện khuôn mặt
Để sử dụng các đặc trưng này vào việc xác định khuôn mặt người, 4 đặc trưng Haar-Like cơ bản được mở rộng ra và được chia làm 3 tập đặc trưng như sau:
- Đặc trưng cạnh (Edge feature)
Trang 33- Đặc trưng đường (Line feature)
- Đặc trưng xung quanh tâm ( Center-surrounded feature)
Dùng các đặc trưng trên, ta có thể tính được các giá trị của đặc trưng Like là sự chênh lệch giữa tổng của các pixel của vùng đen và vùng trắng như trong công thức sau
Haar-𝑓(𝑥) = 𝑇ổ𝑛𝑔𝑣ù𝑛𝑔 đ𝑒𝑛 (𝑐á𝑐 𝑚ứ𝑐 𝑥á𝑚 𝑐ủ𝑎 𝑝𝑖𝑥𝑒𝑙)
− 𝑇ổ𝑛𝑔𝑣ù𝑛𝑔 𝑡𝑟ắ𝑛𝑔(𝑐á𝑐 𝑚ứ𝑐 𝑥á𝑚 𝑐ủ𝑎 𝑃𝑖𝑥𝑒𝑙)
2.7.3 Khái niệm Intergal Image
Viola và Joines đưa ra một khái niệm gọi là Integral Image, là một mảng 2 chiều với kích thước bằng với kích thước của ảnh cần tính đặ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ó
Hình 2.14 Intergal Image
Công thức tính Intergral Image:
Trang 34Sau 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 giá trị mức xám của vùng D như hình dưới, ta có thể tính được như sau:
D = A+B+C+D-(A+B)-(A+C)+A 𝑃(𝑥, 𝑦) = 𝛴𝑥′ ≤𝑥,𝑦′≤𝑦𝑖(𝑥′, 𝑦′) Với A + B + C + D chính là giá trị tại điểm P4 trên Integral Image, tương tự như vậy A+B là giá trị tại điểm P2, A+C là giá trị tại điểm P3, và A là giá trị tại điểm P1 Vậy ta có thể viết lại biểu thức tính D ở trên như sau:
Hình 2.15 Mô tả Intergal Image
Các đặc trưng Haar-Like vẫn còn tương đối nguyên thủy, khi so sánh với các lựa chọn thay thế khác thí dụ như steerable features Steerable features xuất sắc trong việc phân tích chi tiết các đường biên, nén ảnh và phân tích kết cấu Ngược lại, với các đặc trưng Haar-Like, mặc dù khá nhạy với sự hiện diện của cạnh (edges), thanh (bars) và các cấu trúc ảnh đơn giản, vẫn còn khá thô sơ Các đặc trưng Haar-like chỉ
có các chiều dọc, ngang và chéo Tuy nhiên một bộ các đặc trưng Haar-like có thể dùng để hỗ trợ quá trình học một cách hiệu quả Kết hợp với integral image, hiệu quả của nó có thể bù đắp cho độ linh hoạt hạn chế
Trang 352.7.4 AdaBoost
AdaBoost là một bộ phân loại mạnh phi tuyến phức dựa trên hướng tiếp cận boosting được Freund và Schapire đưa ra vào năm 1995 Adaboost cũng hoạt động trên nguyên tắc kết hợp tuyến tính các bộ lọc yếu (weak classifiers) để hình thành một trong các bộ lọc mạnh
Viola và Jones dùng AdaBoost kết hợp các bộ phân loại yếu sử dụng các đặc trưng Haar-like theo mô hình phân tầng (cascade) như sau:
Hình 2.16 Mô tả bộ lọc Haar-Cascade
Trong đó, hk là các bộ phân loại yếu, được biểu diễn như sau:
ℎ𝑘 = {1, 𝑛ế𝑢 𝑝𝑘𝑓𝑘 < 𝑝𝑘𝜃𝑘
0, 𝑛ế𝑢 𝑛𝑔ượ𝑐 𝑙ạ𝑖 Với:
x: Cửa sổ con cần xét
𝜃𝑘: Ngưỡng
𝑓𝑘: Giá trị đặc trưng của Haar-like
Trang 36𝑝𝑘: Hệ số quyết định chiều của phương trình AdaBoost sẽ kết hợp các bộ phận loại yếu thành bộ phận loại mạnh như sau:
𝐻(𝑥) = 𝛴(𝑎1ℎ1(𝑥) + 𝑎𝑥ℎ2(𝑥) + ⋯ + 𝑎𝑛ℎ𝑛(𝑥)) Với ai >= 0 là hệ số chuẩn hóa cho các bộ phận phân loại yếu
Hình 2.17 Kết hợp các bộ phận phân loại yếu thành bộ phận phân loại mạnh
Viola và Jones sử dụng AdaBoost trong cả 2 việc kết hợp các bộ phân loại và lựa chọn các đặc trưng đại diện cho hình mẫu khuôn mặt người điển hình Ví dụ khuôn mặt người luôn có những đặc điểm chung như phần mắt sẽ tối hơn phần má, phần mũi sẽ sáng hơn phần mắt,…
Hình 2.18 Hai đặc trưng cơ bản nhất để xác định khuôn mặt
Trang 37Bằng việc lựa chọn một tập hợp các đặc trưng cơ bản hợp lý và xử lý theo mô hình phân tầng, thuật toán này có thể đạt được cả độ chính xác cao và thời gian tính toán nhanh Bộ lọc Haar-cascade hoàn chỉnh có tổng cộng 38 tầng với hơn 6000 đặc trưng, đạt độ chính xác xấp xỉ 94% với thời gian xử lý mỗi ảnh (384x288) khoảng 0.067 giây với công nghệ máy tính thời bấy giờ
2.8 PHẦN MỀM PYTHON
2.8.1 Giới thiệu
Python là một ngôn ngữ lập trình bậc cao cho các mục đích lập trình đa năng
do Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991.Python được thiết kế với ưu điểm là dễ đọc,dễ học và dễ nhớ.Python là ngôn ngữ có hình thức rất sáng sủa,cấu trúc rõ ràng,thuận tiện cho người mới học lập trình.Cấu trúc của python còn cho phép người sử dụng viết mã lệnh với số lần gõ phím tối thiểu
Python là một ngôn ngữ lập trình được sử dụng phổ biến ngày nay từ trong môi trường học đường cho tới các dự án lớn.Ngôn ngữ phát triển nhiều loại ứng dụng phần mềm khác nhau như các chương trình chạy trên desktop,server,lập trình các ứng dụng wed…Ngoài ra Python cũng là ngôn ngữ ưa thích trong xây dựng các chương trình trí tuệ nhân tạo trong đó bao gồm machine learning.Ban đầu,Python được phát triển để chạy trên nền Unix ,nhưng sau này nó đã chạy trên mọi hệ điều hành từ MS-DOS đến Mac OS ,Window,Linux và các hệ điều hành khác thuộc họ Unix
Hình 2.19 Phần mềm Python 2.8.2 Ứng dụng của Python
Python được ứng dụng trong nhiều lĩnh vực khác nhau:
Trang 38• Xây dựng các tiện ích nhỏ để tự động hóa các công việc nào đó như: tự động tìm kiếm, phân loại tập tin theo tiêu chí riêng, tự động cập nhật các tập tin văn bản theo yêu cầu nào đó…
• Xây dựng ứng dụng web: Python cung cấp nhiều framework để ta có thể lựa chọn để phát triển ứng dụng web tùy theo mô hình của ứng dụng như: Django, Pyramid, Flask,…
• Lập trình các tính toán khoa học, số liệu nhờ các công cụ và lớp thư viện được xây dựng sẵn như: SciPy, IPython,…
• Lập trình ứng dụng desktop (wxWidgets), lập trình màn hình tương tác (Kivy),…
2.8.3 Đặc điểm nổi bật của Python
Python là ngôn ngữ có hình thức đơn giản,cú pháp ngắn gọn,sử dụng một số
ít các từ khoá,do dó Python là một ngôn ngữ dễ học đối với người mới bắt đầu tìm hiểu.Python là ngôn ngữ có mã lệnh không mấy phức tạp.Cả trường hợp bạn chưa biết gì về Python bạn cũng có thể suy đoán được ý nghĩa của từng dòng lệnh trong source code
Python có nhiều ứng dụng trên nhiều nền tảng,chương trình phần mềm viết bằng ngôn ngữ Python có thể được chạy trên nhiều nền tảng hệ điều hành khác nhau bao gồm Window,Mac OSX,Linux
2.9 PHƯƠNG PHÁP NHẬN DIỆN KHUÔN MẶT
Gồm 2 quá trình chính: Quá trình training và quá trình nhận diện
Trang 392.9.1 Quá trình training
Hình 2.20 Quá trình Traning
• Thu nhận ảnh: chụp ảnh số từ bộ phận thu nhận ảnh số, thường là camera
Ảnh sau khi chụp được đưa sang công đoạn tiền xử lý
• Tiền xử lý ảnh: Chuyển ảnh chụp từ công đoạn thu nhận ảnh sang ảnh xám
Sau đó ứng dụng thuật toán phát hiện khuôn mặt Viola-Jones xuất hiện trong ảnh và loại bỏ phần ảnh thừa không chứa khuôn mặt Sau đó tạo kích thước tập dữ liệu để huấn luyện Đối với nhận diện khuôn mặt thì kích thước dữ liệu phụ thuộc vào số ảnh chụp khuôn của một người Nếu quá ít sẽ không đủ dữ liệu đánh giá và nếu quá nhiều sẽ tốn dung lượng bộ nhớ
• Trích xuất đặc trưng: trích xuất các đặc trưng cơ bản của khuôn mặt bằng
thuật toán HOG để cho ra kết quả là biểu đồ histogram chứa thông tin thể hiện đặc trưng của khuôn mặt và véctơ đặc trưng của tất cả ảnh trong dữ liệu
• Xây dựng bộ phân loại: Dựa trên véctơ đặc trưng HOG và nhãn (label) ứng
với từng người, tiến hành xây dựng mô hình nhận diện
Trang 402.9.2 Quá trình nhận diện khuôn mặt
Hình 2.21 Quá trình nhận diện khuôn mặt
Quá trình nhận diện khuôn mặt có những bước cơ bản khá giống với quá trình training Khác biệt là mỗi lần nhận diện chỉ huấn luyện một ảnh Sau khi thu nhận được đưa qua công đoạn tiền xử lý, trích xuất đặc trưng Sau đó đặc trưng này sẽ làm tập mẫu để bộ phân loại đánh giá miền dữ liệu mà tập mẫu này thuộc về, và trả về nhãn chứa tên người tương ứng với khuôn mặt
• Thu nhận ảnh: chụp ảnh số từ bộ phận thu nhận ảnh số
• Tiền xử lý ảnh: Chuyển ảnh vừa chụp thành ảnh xám, sau đó thuật toán
Haar-like sẽ xác định vùng ảnh chứa khuôn mặt và loại bỏ các vùng ảnh còn lại
• Trích xuất đặc trưng: Trích xuất các đặc trưng cơ bản của ảnh khuôn mặt
bằng thuật toán HOG, trả về véctơ đặc trưng đại diện cho khuôn mặt
• Cơ sở dữ liệu: Là dữ liệu đã được đào tạo trước đó qua quá trình training
• Phân loại: Sử dụng bộ phân loại đã train để phân lớp dữ liệu mới Lúc này sẽ
trả về giá trị sai số khi xếp dữ liệu mới vào phân lớp Giá trị này đánh giá mực