Hiện nay Trí Tuệ Nhân Tạo đang là một xu hướng có tiềm năng tronglĩnh vực công nghệ thông tin và là yếu tố then chốt với vô số ứng dụng trong mọikhía cạnh của cuộc sống như Smart Home, x
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
VÀ TRUYỀN THÔNG VIỆT – HÀN KHOA KHOA HỌC MÁY TÍNH
BÀI TẬP LỚN
XÂY DỰNG MÔ HÌNH NHẬN DẠNG TRÁI CÂY DỰA TRÊN NỀN TẢNG DEEP LEARNING
Sinh viên thực hiện : Nguyễn Trí Mùi - 21AD039
Giảng viên hướng dẫn : TS Trần Uyên Trang
Trang 2Đà Nẵng, 20 tháng 10 năm 2024TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
VÀ TRUYỀN THÔNG VIỆT – HÀN KHOA KHOA HỌC MÁY TÍNH
BÀI TẬP LỚN
XÂY DỰNG MÔ HÌNH NHẬN DẠNG TRÁI CÂY DỰA TRÊN NỀN TẢNG DEEP LEARNING
Sinh viên thực hiện : Nguyễn Trí Mùi - 21AD039
Giảng viên hướng dẫn : TS Trần Uyên Trang
Đà Nẵng, 20 tháng 10 năm 2024
Trang 3LỜI CẢM ƠN
Trước hết em xin gửi tới các thầy cô Trường Đại học CNTT & TT Việt Hàn lời chào trân trọng, lời chúc sức khỏe và lời cảm ơn sâu sắc Với sự quan tâm, dạy dỗ, chỉ bảo tận tình chu đáo của thầy cô, đến nay em đã có thể hoàn thành đề tài: "Xây dựng kho dữ liệu quản lý các ca tai nạn giao thông tại US" Đặc biệt chúng em xin gửi lời cảm ơn chân thành nhất tới Giảng viên –
hoàn thành tốt tiểu luận này trong thời gian qua.
Em xin bày tỏ lòng biết ơn đến lãnh đạo Trường Đại học CNTT & TT Việt Hàn, các Khoa Phòng ban chức năng đã trực tiếp và gián tiếp giúp đỡ em trong suốt quá trình học tập và nghiên cứu đề tài.
Với điều kiện thời gian cũng như kinh nghiệm còn hạn chế của một học viên, tiểu luận này không thể tránh được những thiếu sót Em rất mong nhận được sự chỉ bảo, đóng góp ý kiến của các thầy để em có điều kiện bổ sung, nâng cao ý thức của mình, phục vụ tốt hơn công tác thực tế sau này.
Em xin chân thành cảm ơn!
Trang 4MỤC LỤC
Mở đầu 5
Tổng quan 5
Mục đích 6
Phương pháp 6
Nội dung 7
Chương 1: Nghiên cứu tổng quan 7
1.Các phương pháp 7
1.1Bài toán nhận dạng mẫu 7
1.2 Tổng quan kiến trúc của một hệ thống nhận dạng mẫu 7
1.3 Hạn chế tồn tại của bài toán nhận dạng 9
1.4 Công nghệ thực hiện 9
Chương 2 Tổng quan về Nhận Dạng Trái Cây 14
2 Hệ thống phát hiện đối tượng 14
2.1 Định nghĩa 14
2.2 Tổng quan về kỹ thuật phát hiện 16
2.2.1 Kỹ thuật phát hiện Haar Cascade Classifer 16
2.3 Kỹ thuật huấn luyện ảnh 24
2.4 Thư viện Tensorow 29
2.5 Tập dữ liệu hình ảnh trái cây ền đề 31
Chương 3 Phân tích và triển khai xây dựng 34
3 Phân tích thiết kế hệ thống 34
3.1 Phân ch 34
3.2 Phân ch thiết kế 35
3.3 Triển khai cài đặt, mô phỏng hệ thống 37
KẾT LUẬN 48
Kết quả đạt được 48
Những hạn chế 49
Trang 5Mục Lục Hình Ảnh
Hình 1: Các bước xử lý chính trong bài toán nhận dạng 10
Hình 2: Ngôn ngữ lập trình Python 12
Hình 3: Thư viện OpenCV 13
Hình 4: Thư viện Tensorflow 15
Hình 6: Phát hiện vật thể 16
Hình 7 Đặt trưng Haar-like cơ bản 22
Hình 8 Cách tính Integral Image của ảnh 23
Hình 9 Cascade of classifiers 25
Hình 10 Cascade of boosting classifiers 25
Hình 11: Mô hình CNN - Deep Learning 26
Hình 12 Lớp convolutional neural networks 27
Hình 13: Lớp Convolutional layers 28
Hình 14: Lớp Pooling layers 29
Hình 15: Lớp fully connected layers 30
Hình 16 Lớp loss layers 30
Hình 17 Lớp recurrent netral network 31
Hình 18: Lớp Deep belief network 31
Hình 19 Mô hình CNN khi sử dụng thư viện Tensorflow 32
Hình 20 Cấu trúc mạng neural trong mô hình và mô phỏng 33
Hình 21 Sơ đồ ngữ cảnh hệ thống 37
Hình 22 Huấn luyện mô hình CNN sử dụng tập dữ liệu trái cây 37
Hình 23 Sơ đồ hệ thống phát hiện trái cây và lưu vào tập dữ liệu 37
Hình 24 Sơ đồ hệ thống huấn luyện mô hình 38
Hình 25 Sơ đồ hệ thống nhận dạng trái cây 38
Hình 26 Sơ đồ tổng thể của hệ thống nhận dạng trái cây 38
Hình 27 Tải và cài đặt môi trường Python 39
Hình 28 Tạo môi trường Python trên Pycharm 39
Hình 29 Kiểm tra OpenCV có được hỗ trợ trong Python 40
Hình 30 Kiểm tra quá trình import thư viện 40
Hình 31 Cài đặt thư viện Numpy 41
Hình 32 Cài đặt thư viện Pillow 41
Hình 33 Cài đặt framwork Flask 41
Trang 6Hình 34 Cài đặt thư viện Tensorflow 41
Hình 35 Sơ đồ thư mục đồ án 42
Hình 36 Tập dữ liệu của 131 loại trái cây được thu thập trong đồ án 42
Hình 37 Hình ảnh của 1 loại trái cây cụ thể trong tập dữ liệu 42
Hình 38 Hàm tạo 2 biểu đồ đánh giá quá trình huấn luyện 43
Hình 39 Hàm chuyển đổi màu RGB sang HSV và xám 43
Hình 40 Hàm thay đổi màu sắc và độ bão hòa theo điều kiện ánh sáng 43
Hình 41 Lớp network xây dựng mô hình từ hình ảnh 44
Hình 42 Hàm train_and_evaluate_model 45
Hình 44 Thực hiện việc lưu hình ảnh từ website gửi về 46
Hình 45 Thực hiện công việc so sánh và gửi trả kết quả về website 46
Hình 46 Quá trình huấn luyện của tập dữ liệu 47
Hình 47 Kết thúc của mỗi vòng lặp huấn luyện 47
Hình 48 Mô hình độ chính xác (trái) và mô hình độ hao hụt của quá trình huấn luyện .48 Hình 49 Trang website chính của hệ thống nhận dạng 49
Hình 50 Trái Táo với độ chính xác 99.9% 49
Trang 7Mở đầu Tổng quan
Dưới công cuộc phát triển vượt trội cả cuộc cách mạng 4.0 cùng với các vấn
đề liên quan như Trí Tuệ Nhân Tạo, Điện Toán Đám Mây, Internet Vạn Vật vàBigData Hiện nay Trí Tuệ Nhân Tạo đang là một xu hướng có tiềm năng tronglĩnh vực công nghệ thông tin và là yếu tố then chốt với vô số ứng dụng trong mọikhía cạnh của cuộc sống như Smart Home, xe tự hành, hệ thống nhận dạng.Hiện nay, do sự phổ biến theo nhu cầu của con người đã làm cho lượng thôngtin thu được bằng hình ảnh ngày càng tăng Theo đó lĩnh vực xử lý ảnh cũng đượcchú trọng và phát triển, ứng dụng rộng rãi trong đời sống xã hội hiện đại Khôngchỉ dừng lại ở việc chỉnh sửa, tăng chất lượng hình ảnh mà với công nghệ xử lýảnh hiện nay giúp con người có thể giải quyết các bài toán nhận dạng chữ viết,nhận dạng vân tay, nhận dạng thực phẩm an toàn
Nhận dạng thực phẩm là một mô hình mới được triển khai gần đây Có thểđược ứng dụng trong công nghiệp, nông nghiệp và dịch vụ Khi áp dụng hệ thốngvào đời sống, việc lựa chọn thực phẩm sạch, an toàn được cải thiện như nhận biếtđược trái cây đang trong tình trạng như thế nào, đánh giá tình trạng thực phẩmdựa trên bề mặt của nó hoặc với ứng dụng trong mô hình nông nghiệp, hệ thốngnhận dạng có thể dự đoán những trái xoài hay trái thơm khi nào có thể thu hoạchtrên diện rộng
Và được tích lũy kinh nghiệp từ hệ thống nhận dạng khuôn mặt ở đồ án cơ sở
3 và bài báo kỹ thuật tự động chấm công trong dạy học thông minh dựa trênphương pháp Machine Learning ở Hội thảo CITA 2020 Chính vì thế, nhờ nhữngyếu tố trên, nhóm đồ án đưa ra mô hình hệ thống nhận dạng trái cây dựa trênnền tảng Deep Learning
Trang 8Mục đích
- Xây dựng Mô hình hệ thống nhận dạng trái cây
- Tìm hiểu về mô hình mạng neural tích chập(CNN)
- Tìm hiểu thư viện của Python trong việc tiền xử lý hình ảnh
- Tìm hiểu về Deep Learning và Machine Learning
Trang 9Nội dung Chương 1: Nghiên cứu tổng quan
1.Các phương pháp
1.1Bài toán nhận dạng mẫu
Nhận dạng mẫu là một ngành thuộc lĩnh vực học máy (machine learning) Nóicách khác, nó có thể được xem là việc “cần thực hiện một tác động vào dữ liệu thô
mà tác động cụ thể là gì sẽ tùy thuộc vào loại dữ liệu đó” Nhận dạng mẫu nhằm mụcđích phân loại dữ liệu dựa trên: kiến thức tiên nghiệm hoặc dựa vào thông tin thống
kê được trích rút từ các mẫu có sẵn Các mẫu cần được phân loại thường được biễudiễn thành các nhóm của các dữ liệu đo đạc hay quan sát được, mỗi nhóm là mộtđiểm ở trong một không gian đa chiều phù hợp Đó là không gian của các đặc tính đểdựa vào đó ta có thể phân loại
Việc phân loại thường dựa vào sự có sẵn của một tập các mẫu mà đã đượcphân loại sẵn Tập các mẫu này được gọi là tập huấn luyện và chiến lược học nhằmphân loại mẫu vào một trong các lớp có sẵn được gọi là học có giám sát Việc họccũng có thể là không có giám sát, theo nghĩa là hệ thống không được cung cấp cácmẫu được đánh nhã tiên nghiệm mà nó được tự đưa ra các lớp để phân loại dựa vàotính ổn định trong thông kê của các mẫu
Các ứng dụng phổ biến là nhận dạng tiếng nói tự động, phân loại văn bảnthành nhiều loại các nhau, nhận dạng tự động các mã bưu điện viết tay trên các baothư, hay hệ thông nhận dạng danh tính dựa vào mặt người Cả ba ví dụ cuối tạo thànhlĩnh vực con phân tích ảnh của nhận dạng mẫu với đầu vào là các ảnh số
1.2 Tổng quan kiến trúc của một hệ thống nhận dạng mẫu
Cùng với sự phát triển của kinh tế xã với ngành kỹ thuật hiện nay Đòi hỏi sự quản lý và xử lý thông tin chính xác mà nó vượt quá sức của con người Vì vậy chúng
ta cần có máy móc hoặc giảm tải hoặc thay thế công việc nặng nhọc, đòi hỏi sự chínhxác cao và tiết kiệm nhân lực sức người Việc giúp máy móc nhận dạng (thu thập,
Trang 10phân loại thông tin) như con người sẽ giúp máy móc hoạt động hiệu quả như conngười và độ chính xác cao hơn nhiều.
Một số ứng dụng của bài toán nhận dạng
Nhận dạng giọng nói: ứng dụng này được tích hợp trên nhiều sản phẩm, bạn sẽđiều khiển các thiết bị qua giọng nói của mình thay vì phải thao tác trực tiếp bằng tay,như trong mô hình nhà thông minh, trên điện thoại, … Ví dụ: ứng dụng Jibbigo trênđiện thoại di động Ứng dụng này có thể dịch được tiếng nói của người sử dụng với 8ngôn ngữ khác nhau như tiếng Anh, Pháp, Đức, Nhật, Hàn Quốc, Tây Ban Nha,Trung Quốc
Nhận dạng dấu vân tay: thuộc ngành sinh trắc học, ở Việt Nam đã được sử dụngtrong việc chấm công, điểm danh và làm khóa an toàn cho các loại cửa sắt, máy tínhxách tay, … Nó tạo sự tiện dụng và tính an toàn
Nhận dạng khuôn mặt: thuộc ngành sinh trắc học Tương tự như ở nhận dạngdấu vân tay Sử dụng một mẫu huấn luyện cho trước để có thể so sánh với khuôn mặtcủa người dùng Hiện nay đang được phát triển mạnh mẽ trong việc quản lý côngdân, giám sát và kiểm tra thông qua camera, giúp nhà nước quản lý dễ dàng hơn
Thông thường, một bài toán nhận dạng thường có các bước xử lý sau:
Hình 1: Các bước xử lý chính trong bài toán nhận dạng
Trang 111.3 Hạn chế tồn tại của bài toán nhận dạng
Bài toán nhận dạng là bài toán đã được nghiên cứu từ những năm 70 Tuy nhiên,đây là bài toán khó nên những nghiên cứu hiện tại vẫn chưa được kết quả mongmuốn Chính vì thế, vấn đề này vẫn đang được nhiều nhóm nghiên cứu trên thế giớiquan tâm Khó khăn của nhận dạng có thể kể đến như sau:
a) Tư thế chụp, góc chụp: ảnh chụp có thể đánh giá chất lượng rất nhiều bởi vìgóc chụp giữa camera và vật thể không chính xác hoàn toàn Ở cả bước tiền xử
lý tập dữ liệu và nhận dạng Chẳng hạn như: chụp thẳng, chụp chéo bên trái độhay chụp chéo bên phải 45 độ, chụp từ trên xuống hay chụp từ dưới lên, …Với các tư thế khác nhau, các thành phần trên khuôn mặt như mắt, mũi, miệng
có thể bị khuất môt phần hoặc thậm khuất hoàn toàn
b) Sự xuất hiện hoặc mất một số thành phần của vật thể: các đặc trưng của vật thể
có thể xuất hiện hoặc không Vấn đề này làm bài toán trở nên khó khăn hơnnhiều
c) Sự che khuất: Vật thể có thể bị che khuất bởi các đối tượng khác hoặc vật thểkhác
d) Hướng của ảnh: Các ảnh khuôn mặt có thể biến đổi rất nhiều với các góc quaykhác nhau của trục camera Chẳng hạn chụp với trục máy ảnh nghiêng làm chovật thể bị nghiêng so với trục
e) Điều kiện của ảnh: Ảnh được chup trong các điều kiện khác nhau về: chiếusang, tính chất camera, ảnh có chất lượng thấp so với chất lượng vật thể Việcnhận dạng thay đổi theo thời gian còn là một vấn đề khó khăn, ngay cả đối vớikhả năng nhận dạng của con người
1.4 Công nghệ thực hiện
Để giải quyết bài toán phát hiện trái cây sử dụng thư viện OpenCV, chúng ta
có thể sử dụng các ngôn ngữ lập trình như: NET C#, IronPython, Java, C++,…
Trong đồ án này ngôn ngữ lập trình được sử dụng là Python, được viết trênphần mềm Pycharm làm giao diện lập trình và sử dụng môi trường Python 3.8 Trong
hệ thống nhận diện trái cây, nhóm đồ án sử dụng nhiều thư viện của python cụ thểnhư: Numpy, Tensorflow, Keras, Pillow, OpenCV, …
Trang 121.4.1 Giới thiệu về thư viện OpenCV
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 mạnh là dễ đọc, dễ học và dễ nhớ Python là ngôn ngữ có hình thức rấtsá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ủaPython 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 hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tự động; dovậy nó tương tự như Perl, Ruby, Scheme, Smalltalk, và Tcl Python được phát triểntrong một dự án mã mở, do tổ chức phi lợi nhuận Python Software Foundation quảnlý
Ban đầu, Python được phát triển để chạy trên nền Unix Nhưng rồi theo thờigian, Python dần mở rộng sang mọi hệ điều hành từ MS-DOS đến Mac OS, OS/2,Windows, Linux và các hệ điều hành khác thuộc họ Unix Mặc dù sự phát triển củaPython có sự đóng góp của rất nhiều cá nhân, nhưng Guido van Rossum hiện nay vẫn
là tác giả chủ yếu của Python Ông giữ vai trò chủ chốt trong việc quyết định hướngphát triển của Python
Hình 2: Ngôn ngữ lập trình Python
1.4.2 Giới thiệu về thư viện OpenCV
OpenCv (Open Source Computer Vision) là một thư viện mã nguồn mở về thịgiác máy với hơn 500 hàm và hơn 2500 các thuật toán đã được tối ưu về XLA, và cácvấn đề liên quan tới thị giác máy OpenCv được thiết kế một cách tối ưu, sử dụng tối
Trang 13đa mạnh của các dòng chip đa lõi… để thực hiện các phép tính toán trong thời gianthực, nghĩa là tốc độ đáp ứng của nó thể đủ nhanh cho các ứng dụng thông thường.OpenCv là thư viện được thiết kế để chạy trên nhiều nền tảng khác nhau(cross-platform), nghĩa là nó có thể chạy trên hệ điều hành Window, Linux, Mac,iOS… Việc sử dụng thư viện OpenCv tuân theo các quy định về sử dụng phần mềm
mã nguồn mở BSD do đó bạn có thể sử dụng thư viện này một cách miễn phí cho cácmục đích phi thương mại lẫn thương mại
Dự án về OpenCv được khởi động từ những năm 1999, đến năm 2000 nó đượcgiới thiệu trong một hội nghị của IEEE về các vấn đề trong thị giác máy và nhậndạng, tuy nhiên bản OpenCV 1.0 mãi tới tận năm 2006 mới chính thức được công bố
và năm 2008 bản 1.1 (prerelease) mới được ra đời Tháng 10 năm 2009, bản OpenCVthế hệ thứ hai ra đời (thường gọi là phiên bản 2.x), phiên bản này có giao diện của C++ (khác với phiên bản trước có giao diện của C) và có nhiều điểm khác biệt so vớiphiên bản thứ nhất
Thư viện OpenCV ban đầu được sự hỗ trợ từ Intel, sau đó được hỗ trợ bởiWillow Garage, một phòng thí nghiệm chuyên nghiên cứu về công nghệ robot Chođến nay, OpenCV vẫn là thư viện mở, được phát triển bởi nguồn quỹ không lợi nhuận(none-profit foundation) và được sự hưởng ứng rất lớn của cộng đồng
Trang 14Hình 3: Thư viện OpenCV
1.4.3 Giới thiệu về thư viện Tensorflow
Trong đồ án này, với mục đích triển khai đào tạo và thử nghiệm network.Nhóm đồ án đã sử dụng thư viện Tensorflow Đây là mã nguồn mở dành cho học máy
do Google tạo ra để tính toán số sử dụng biểu đồ luồng dữ liệu Các nút trong biểu đồđại diện cho các phép toán, trong khi các cạnh của đồ thị đại diện cho các mảng dữ liệu nhiều chiều được gọi là tensors Các thành phần chính trong Tensorflow là máykhách, sử dụng giao diện Session để giao tiếp với máy chủ và một hoặc nhiều quytrình công nhân, với mỗi quy trình công nhận chịu nhiều trách nhiệm phân xử quyềntruy cập vào môt hoặc nhiều thiết bị tính toán để thực hiện các nút đồ thị trên các thiết
bị đó
Tensorflow cung cấp một số tính năng mạnh mẽ như: nó cho phép ánh xạ tínhtoán với nhiều máy, không giống như hầu hết các framework tương tự khác; nó đãđược tích hợp hỗ trợ tính toán gradient tự động; nó có thể thực thi một phần các đồ thịcon của toàn bộ đồ thị và nó có thể thêm các ràng buộc cho các thiết bị, như đặt cácnút trên một loại thiết bị nhất định, đảm bảo rằng hai hoặc nhiều đối tượng được đặttrong cùng một không gian, v.v Bắt đầu với phiên bản 2.0, TensorFlow bao gồm cáctính năng của khung Keras Keras cung cấp các trình bao bọc cho các hoạt động đượctriển khai trong TensorFlow, đơn giản hóa đáng kể các cuộc gọi và giảm lượng mãtổng thể cần thiết để đào tạo và kiểm tra một mô hình
TensorFlow được sử dụng trong một số dự án, chẳng hạn như Mô hình phânloại hình ảnh ban đầu Dự án này đã giới thiệu một mạng hiện đại để phân loại vàphát hiện trong Thử thách nhận dạng hình ảnh quy mô lớn ImageNet năm 2014.Trong dự án này, việc sử dụng tài nguyên máy tính được cải thiện bằng cách điềuchỉnh chiều rộng và chiều sâu của mạng trong khi vẫn giữ ngân sách tính toán khôngđổi Một dự án khác sử dụng khung công tác TensorFlow là DeepSpeech, được pháttriển bởi Mozilla Kiến trúc là một hệ thống nhận dạng hiện đại được phát triển bằngcách sử dụng học sâu end-to-end Đơn giản hơn là các kiến trúc khác và không cầncác thành phần được thiết kế thủ công cho tiếng ồn xung quanh, độ vang hoặc sự biến
Trang 15đổi của loa Chúng tôi sẽ trình bày các phương pháp và kiểu dữ liệu được sử dụngquan trọng nhất từ TensorFlow cùng với mô tả ngắn gọn cho từng phương pháp đó
Hình 4: Thư viện Tensorflow
1.4.4 Môi trường lập trình Visual Studio Code
Visual Studio Code là một trình biên tập mã được phát triển bởi Microsoft dànhcho Windows, Linux và macOS Nó hỗ trợ chức năng debug, đi kèm với Git, cósyntax highlighting, tự hoàn thành mã thông minh, snippets, và cải tiến mã nguồn Nócũng cho phép tùy chỉnh, do đó, người dùng có thể thay đổi theme, phím tắt, và cá tùychọn khác Nó miễn phí và là phần mềm mã nguồn mở, mặc dù gói tải xuống chínhthì là có giấy phép
Visual Studio Code được dựa trên Electron, một nền tảng được sử dụng để triểnkhai các ứng dụng Node.js máy tính cá nhân chạy trên động cơ bố trí Blink Mặc dù
nó sử dụng nền tảng Electron nhưng phần mềm này không phải là một bản khác củaAtom, nó thực ra được dựa trên trình biên tập của Visual Studio Online (tên mã là
"Monaco")
Trang 16nh 5: Môi trường lập trình Visual Studio Code
Chương 2 Tổng quan về Nhận Dạng Trái Cây
2 Hệ thống phát hiện đối tượng
2.1 Định nghĩa
Phát hiện đối tượng (ObjectDetection) là một công nghệ máy tính liên quanđến thị giác máy tính và xử lý hình ảnh nhằm phát hiện các trường hợp đối tượngđược nghiên cứu kỹ lưỡng bao gồm phát hiện khuôn mặt và phát hiện người đi bộ.Phát hiện đối tượng có ứng dụng trong nhiều lĩnh vực của thị giác máy tính, bao gồmtruy xuất hình ảnh và giám sát video
Phát hiện đối tượng được sử dụng rộng rãi trong các tác vụ thị giác máy tínhnhư chú thích hình ảnh, nhận dạng hoạt động, phát hiện khuôn mặt, nhận dạng khuônmặt, đồng phân đoạn đối tượng video Cũng như được sử dụng để theo dõi đối tượng,
ví dụ theo dõi một quả bóng trong trận đấu bóng đá, theo dõi chuyển động của gậycricket hoặc theo dõi một người trong video
Trang 17Hình 6: Phát hiện vật thể
2.1.1 Một số phương pháp xác định khuôn mặt người
Các phương pháp phát hiện đối tượng thường rơi vào cách tiếp cận dựa trên máyhọc hoặc tiếp cận dựa trên học sâu Đối với các phương pháp tiếp cận Học máy, trướctiên cần xác định các tính năng bằng một trong các phương pháp bên dưới, sau đó sử dụng kỹ thuật như support vector machine(SVM) để thực hiện phân loại Mặt khác,các kỹ thuật học sâu có thể thực hiện phát hiện đối tượng end-to-end mà không cầnxác định cụ thể các tĩnh năng và thường dựa trên mạng nơron tích chập (CNN)
• Các phương pháp tiếp cận máy học:
o Khung phát hiện đối tượng Viola – Jones dựa trên các tính năng Haar oChuyển đổi tính năng bất biến tỷ lệ
o Biểu đồ của các tính năng gradient có định hướng (HOG)
Trang 18đến là bước trích chọn đặc điểm (feature extraction), ở bước này một phương pháptrích chọn đặc điểm nào đó (mẫu nhị phân cục bộ – Local Binary Pattern – LBP,Gabor wavelets, …) sẽ được sử dụng với ảnh mặt để trích xuất các thông tin đặctrưng cho ảnh, kết quả là mỗi ảnh sẽ được biểu diễn dưới dạng một vector đặc điểm(feature vector), bước tiếp theo là bước nhận dạng (recognition) hay phân lớp(classification), tức là xác định danh tính (identity) hay nhãn (label) của ảnh – đó làảnh của ai.
Ở bước classification, thường thì phương pháp k-láng giềng gần nhất (knearestneighbor: kNN) sẽ được sử dụng, thực tế cho thấy việc dùng SVM (Support VectorMachine) không mang lại hiệu quả cao hơn mà còn chậm hơn
Dữ liệu cho một hệ thống nhận dạng mặt được chia làm 3 tập: tập huấn luyện(training set), tập tham chiếu (reference set hay gallery set) và tập để nhận dạng(probe set hay query set, đôi khi còn gọi là test set) Trong nhiều hệ thống, tậptraining trùng với tập reference
Tập training gồm các ảnh được dùng để huấn luyện (hay học-learning), thôngthường tập này được dùng để sinh ra một không gian con (projection subspace) làmột ma trận và phương pháp hay được sử dụng là PCA (Principal ComponentAnalysis), WPCA (Whitened PCA), LDA (Linear Discriminant Analysis), KPCA(Kernel PCA) Tập reference gồm các ảnh đã biết danh tính được chiếu (projected)vào không gian con ở bước training
Bước training nhằm 2 mục đích: giảm số chiều (dimension reduction) của cácvector đặc điểm (feature vector) vì các vector này thường có độ dài khá lớn (vàinghìn tới vài trăm nghìn) nên nếu để nguyên thì việc tính toán sẽ rất rất lâu, thứ hai làlàm tăng tính phân biệt (discriminative) giữa các ảnh khác lớp (định danh khác nhau),ngoài ra có thể làm giảm tính phân biệt giữa các ảnh thuộc về một lớp (tùy theophương pháp, ví dụ như Linear Discriminant Analysis LDAcòn gọi là Fisher LinearDiscriminant Analysis-Fisherface là một phương pháp làm việc với tập training màmỗi đối tượng có nhiều ảnh mặt ở các điều kiện khác nhau)
Trang 19Sau khi thực hiện chiếu tập reference vào không gian con, hệ thống lưu lại kếtquả là một ma trận với mỗi cột của ma trận là một vector tương ứng với ảnh (địnhdanh đã biết) để thực hiện nhận dạng (hay phân lớp) Nhận dạng (hay phân lớp) đượcthực hiện với tập các ảnh probe, sau khi tiền xử lý xong, mỗi ảnh sẽ được áp dụngphương pháp trích chọn đặc điểm (như với các ảnh thuộc tập training và reference) vàđược chiếu vào không gian con Tiếp đến việc phân lớp sẽ dựa trên phương pháp k-
NN, định danh của một ảnh cần xác định sẽ được gán là định danh của ảnh có khoảngcách (distance) gần với nó nhất Ở đây cần lưu ý là mỗi ảnh là một vector nên có thểdùng khái niệm hàm khoảng cách giữa hai vector để đo sự khác biệt giữa các ảnh.2.2 Tổng quan về kỹ thuật phát hiện
2.2.1 Kỹ thuật phát hiện Haar Cascade Classifier
2.2.1.1 Tổng quan về Adaboost
Học theo adaboost là một cách trong hướng tiếp cận dựa trên diện mạo, Viola
và AdaBoost kết hợp cascade để xác định khuôn mặt người [1] với các đặc trưngdạng Haar wavelet-like Tốc độ xử lý khá nhanh và tỷ lệ chính xác hơn 80% trên ảnhxám
2.2.1.2 Tiếp cận Boosting
Về lịch sử, boosting bắt nguồn từ câu nói nổi tiền được đưa ra bởi Kearns vàođầu năm 1989: “Liệu có thể tạo ra một strong classifier từ một tệp các bộ phân loạiyếu?” Năm 1990, Robert Schapire và Simard kiểm nghiệm trong các chương trìnhnhận dạng (OCR application) Freund đã tiếp tục các nghiên cứu của Schapire và đếnnăm 1995 thì ông cùng với Schapire phát triển boosting thành adaboost Như vậy,nguyên lý cơ bản của boosting là sự kết hợp các weak classifiers thành một strongclassifiers Trong đó, weak classifiers là các bộ phân loại đơn giản chỉ cần có độchính xác trên 50% Bằng cách này, chúng ta nói bộ phân loại đã được “boost”.Như vậy, nguyên lý cơ bản của boosting là sự kết hợp các weak classifiers thànhmột strong classifiers Trong đó, weak classifiers là các bộ phân loại đơn giản chỉ cần
có độ chính xác trên 50% Bằng cách này, chúng ta nói bộ phân loại đã được “boost”
Trang 20Để hiểu cách hoạt động của thuật toán boosting, ta xét một bài toán phân loại 2lớp (mẫu cần nhận dạng chỉ thuộc một trong hai lớp) với D là tập huấn luyện gồm có
n mẫu Trước tiên, chúng ta sẽ chọn ngẫu nhiên ra n1 mẫu từ tập D (n1<n) để tạo tậpD1 Sau đó, chúng ta sẽ xây dựng weak classifier đầu tiên C1 từ tập D1 Tiếp theo,chúng ta xây dựng tập D2 để huấn luyện bộ phân loại C2 D2 sẽ được xây dựng saocho một nửa số mẫu của nó được phân loại đúng bởi C1 và nửa còn lại bị phân loạisai bởi C1 Bằng cách này, D2 chứa đựng những thông tin bổ sung cho C1 Bây giờ chúng ta sẽ xây huấn luyện C2 từ D2
Tiếp theo, chúng ta sẽ xây dựng tập D3 từ những mẫu không được phân loạitốt bởi sự kết hợp giữa C1 và C2: những mẫu còn lại trong D mà C1 và C2 cho kếtquả khác nhau Như vậy, không hiệu quả Sau cùng, chúng ta sẽ huấn luyện bộ phânloại C3 từ D3 Bây giờ chúng ta đã có một strong classifier: sự kết hợp C1, C2 và C3.Khi tiến hành nhận dạng một mẫu X, kết quả sẽ được quyết định bởi sự thỏa thuậncủa 3 bộ C1, C2 và C3: Nếu cả C1 và C2 đều phân X vào cùng một lớp thì lớp nàychính là kết quả phân loại của X; ngược lại, nếu C1 và C2 phân X vào 2 lớp khácnhau, C3 sẽ quyết định X thuộc về lớp nào
Để có thể kết hợp các bộ phân loại yếu, adaboost sử dụng một trọng số (weight)
để đánh dấu các mẫu khó nhận dạng Trong quá trình huấn luyện, cứ mỗi weakclassifier được xây dựng, thuật toán sẽ tiến hành cập nhật lại trọng số để chuẩn bị choviệc xây dựng weak classifier tiếp theo: tăng trọng số của các mẫu bị nhận dạng sai
và giảm trọng số của các mẫu được nhận dạng đúng bởi weak classifier vừa xâydựng Bằng cách này, các weak classifier sau có thể tập trung vào các mẫu mà các
Trang 21weak classifier trước đó chưa thực hiện tốt Sau cùng các weak classifier sẽ được kếthợp tùy theo mức độ ‘tốt’ của chúng để tạo nên một strong classifier.
Các weak classifiers hk(x) là các bộ phân loại yếu, được biểu diễn như sau:
Trong đó: x: mẫu hay cửa sổ con cần xét (x = (x1, x2, …, xn) là vector đặctrưng của mẫu) θk: ngưỡng fk: giá trị của đặc trưng Haar-like
pk: hệ số quyết định chiều của bất phương trình
Công thức trên có thể diễn giải như sau: Nếu giá trị đặc trưng của mẫu cho bởihàm đánh giá của bộ phân loại vượt qua một ngưỡng cho trước thì mẫu đấy là khuônmặt (gọi là object: đối tượng cần nhận dạng), ngược lại thì mẫu là background (khôngphải là đối tượng)
Thuật toán adaBoost:
• Cho một tập gồm n mẫu có đánh dấu (x1,y1), (x2,y2),… (xn,yn) với xk = (xk1,xk2, … , xkm) là vector đặc trưng và yk {-1, 1} là nhãn của mẫu (1 ứng vớiobject, -1 ứng với background)
• Khởi tạo trọng số ban đầu cho tất cả các mẫu: với m là số mẫu đúng (ứng vớiobject và y = 1) và l là số mẫu sai (ứng với background và y = -1) Xây dựng Tweak classifiers:
Lặp t = 1, …, T
Với mỗi đặc trưng trong vector đặc trưng, xây dựng một weak classifier
hj với ngưỡng θj và lỗi εj
Chọn ra hj với εj nhỏ nhất, ta được ht:
Cập nhật lại trọng số:
Trang 22Trong đó:
Zt: Hệ số dùng để đưa Wt+1 về đoạn [0,1] (normalization factor)
Strong classifier được xây dựng:
2.2.2.4 Các đặc trưng Haar-Like
Viola và Jones dùng 4 đặc trưng cơ bản [20] để 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 7 Đặt trưng Haar-like cơ bản
Để áp dụng các đặt trưng này vào việc bài toán xác định mặt người, 4 đặt trưngHaar-like cơ bản được mở rộng ra, và được chia làm 3 tập đặc trưng như sau:
1 Đặc trưng cạnh (edge features):
2 Đặc trưng đường (line features):
Trang 233 Đặc trưng xung quanh tâm (center-surround features):
Lợi ích của các đặc trưng Haar-like là nó diễn đạt được tri thức về các đốitượng trong ảnh (bởi vì nó biểu diễn mối liên hệ giữa các bộ phận của đối tượng),điều mà bản thân từng điểm ảnh không diễn đạt được Để tính giá trị các đặc trưnghaar-like, ta tính 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ùngtrắng như trong công thức sau:
f(x) = Tổngvùng đen(pixel) - Tổngvùng trắng(pixel)Như vậy ta có thể thấy rằng, để tính các giá trị của đặc trưng Haar-like, ta phảitính tổng của các vùng pixel trên ảnh Nhưng để tính toán các giá trị của các đặctrưng Haar-like cho tất cả các vị trí trên ảnh đòi hỏi chi phí tính toán khá lớn, khôngđáp ứng được cho các ứng dụng đòi hỏi tính run-time Do đó Viola và Jones đưa ramột khái niệm gọi là Integral Image để tính toán nhanh cho các đặc trưng cơ bản Saunày, Lienhart kế thừa Integral Image (SAT) và đưa thêm khái niệm Rotated SummedArea Table (RSAT) dùng để tính toán nhanh cho các đặc trưng xoay 1 góc 45o.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, 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
Trang 24Hình 8 Cách tính Integral Image của ảnh
2.2.2.5 Cascade of Classifiers
Ta thấy quá trình huấn luyện, bộ phân loại phải duyệt qua tất cả các đặc trưngcủa các mẫu trong tập training Việc này tốn rất nhiều thời gian Tuy nhiên, trong cácmẫu đưa vào, không phải mẫu nào cũng thuộc loại khó nhận dạng, có những mẫubackground rất dễ nhận ra (ta gọi đây là những mẫu background đơn giản) Đối vớinhững mẫu này, ta chỉ cần xét một hay vài đặc trưng đơn giản là có thể nhận diệnđược chứ không cần xét tất cả các đặc trưng Nhưng đối với các bộ phân loại thôngthường thì cho dù mẫu cần nhận dạng là dễ hay khó thì nó vẫn sẽxét tất cả các đặctrưng mà nó rút ra được trong quá trình học Do đó, chúng tốn thời gian xử lý mộtcách không cần thiết
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 Cascade tree 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à đốitượng thì nó cần phải đi qua hết tất cả các stages của cây Các stage classifiers ở stagesau được huấn luyện bằng những mẫu negative mà stage classifier trước nó nhậndạng sai, tức là nó sẽ tập trung học từ các mẫu background khó hơn, do đó sự kết hợpcác stage classifiers này lại sẽ giúp bộ phân loại có false alarm thấp Với cấu trúc này,
Trang 25những mẫu background dễ nhận diện sẽ bị loại ngay từ những stages đầu tiên, giúpđáp ứng tốt nhất đối với độ phức tạp gia tăng của các mẫu đưa vào, đồng thời giúp rútngắn thời gian xử lý.
Thuật toán Cascade training:
1 Gọi:
F: là giá trị false alarm và d là độ chính xác của weak classifier ở mỗistage
Ftarget: Giá trị max false alarm
P, N: là số lượng mẫu positive và negative
Pi, Ni: là tập positive và negative cho bộ phân lớp ở tầng thứ i
Fi, Di: Giá trị false alarm và độ chính xác của cascade trước khi đến tầngthứ i
2 Khởi tạo i=0; F0=1.0; D0 = 1.0
N = {số mẫu sai ở stage hiện tại phân loại sai}
P = {số mẫu positive mà stage hiện tại phân loại đúng}
Hình 9 Cascade of classifiers
2.2.2.6 Cascade of boosting classifiers
Trang 26Cascade of boosting classifiers là mô hình cascade of classifiers với mỗiclassifier được xây dựng bằng Adaboost sử dụng haar-like.
Hình 10 Cascade of boosting classifiers
Viola và Jones đã sử dụng rất thành công cascade of boosting classifiers chobài toán nhận dạng mặt người Với tập huấn luyện gồm 4196 hình mặt người đượcđưa về ảnh grayscale kích thước 24x24 và 9500 hình background, hai ôngđã xâydựng cấu trúc cascade tree gồm 38 stage với tổng cộng 6060 đặc trưng haarlike Thựcnghiệm đã cho thấy classifier ở stage đầu tiên sử dụng 2 đặc trưng và loại đượckhoảng 50% mẫu background (không phải mặt người) và có độ chính xác là d =100% Classifier ở stage thứ 2 sử dụng 10 đặc trưng loại được 80%0020mẫubackground với độ chính xác vẫn là 100% Hệ thống này được so sánh với hệ thốngcủa Rowley-Baluja-Kanade (sử dụng mạng neural), Schneiderman-Kanade (sử dụngphương pháp thống kê), và cho thấy tỉ lệ nhận dạng là ngang nhau, trong khi hệ thốngcủa Viola và Jones chạy nhanh hơn đến 15 lần so với hệ thống của Rowley-Baluja-Kanade và nhanh hơn 600 lần hệ thống của Schneiderman-Kanade
Lý do mà cấu trúc cascade đạt tốc độ nhận dạng nhanh chính là nhờ nó sớmloại bỏ được các mẫu background đơn giản (thường có số lượng lớn hơn nhiều so vớicác mẫu chứa object – các mẫu chưa khuôn mặt cần tiến hành nhận dạng) Bên cạnh
đó, hệ thống của Viola và Jones cũng đạt được độ chính xác khá cao nhờ vào thuậttoán cascade training, các bộ nhận dạng được huấn luyện bằng AdaBoost với đặctrưng Haar-like mô tả tốt thông tin đối tượng, cùng với cách Integral Image tínhnhanh các đặc trưng, không làm giảm tốc độ nhận dạng của hệ thống Như vậy, môhình Cascade of Boosted Classifiers thật sự là một cách tiếp cận tốt cả về tốc độ lẫnkhả năng nhận dạng, rất phù hợp với bài nhận dạng mặt người