Ảnh rời rạc 2 chiều, Im,n biểu diễn thông tin thu được từ cảm biến của một chuỗi các vị trí cố định m=1,2...,M; n=l,2....,N trong tọa độ Cartesian 2 chiều được biến đổi từ tín hiệu liên
Trang 1
ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHE THONG TIN VA TRUYEN THONG
BUI QUANG HUY
XAY DUNG HE THONG CHAM CONG BANG NHAN
DIEN KHUON MAT
DO AN TOT NGHIEP DAI HOC
NGANH CONG NGHE THONG TIN
THAI NGUYEN, NAM 2023
Trang 2
ĐẠI HỌC THÁI NGUYÊN TRUONG DAI HQC CONG NGHE THONG TIN VA TRUYEN THONG
DO AN
TOT NGHIEP DAI HOC
NGANH CONG NGHE THONG TIN
XAY DUNG HE THONG CHAM CONG BANG
NHAN DIEN KHUON MAT
Sinh viên thực hiện: BÙI QUANG HUY Lop: CNTT K17K
Giáo viên hướng dẫn: TH.S NGUYÊN THỊ TUYẾN
THÁI NGUYÊN, NĂM 2023
Trang 3
LOI CAM ON
Báo cáo đồ án này được hoàn thành tại Trường Đại học Công nghệ Thông tin
và Truyền thông dưới sự hướng dẫn của Th.S Nguyễn Thị Tuyền Em xin bày tỏ
lòng biết ơn tới các thầy cô giáo thuộc Trường Đại học Công nghệ Thông tin và
Truyền thông đã tạo điều kiện, giúp đỡ em trong quá trình làm đồ án, đặc biệt em
xin bay tỏ lòng biết ơn tới Th.S Nguyễn Thị Tuyển đã tận tình hướng dẫn và cung
cấp nhiều tài liệu cần thiết để em có thể hoàn thành đồ án đúng thời hạn
Sinh viên thực hiện
Bùi Quang Huy
Trang 4LỜI CAM ĐOAN
Em xin cam đoan báo cáo này do chính em thực hiện, dưới sự hướng dẫn của
cô Nguyễn Thị Tuyển, các kết quả được trình bảy trong báo cáo là do em thực hiện
trong quá trình làm đồ án Em xin hoàn toàn chịu trách nhiệm về kết quả thực hiện
Trang 5MỤC LỤC
LỜI CẢMƠN 02 2122212211221 1122212212211 1g 3 LỜI CAM ĐOAN 0 2121221112122 2 2212122121222 ru 4 MỤC LỤC 52 2122122212111211111121121121121212122121 1212122122111 5 DANH MỤC HÌNH ẢNH 5222 22122122112111211221101112121 1212101 rre 7 DANH MỤC TỪ VIẾT TẮTT -2-©2+2212212221111271221221127111112211211121122112 1 2x0 9
MỞ ĐẦU 202 2221221221122 2112122212221212121221201 222g 10
1 Lý đo chọn để tài - - c E1 E121E11511112111121111211 11g11 1n ng te te 10
2 Mục đích của đề tài xây dựng một dự án phần mềm ứng dụng nhận dạng 211i 11
3 Déi twong va pham vi nghién ctru dé tb ccc cccceceecseeessesessesesseeeseseeeeees 11
CHƯƠNG 1: TÔNG QUAN VỀ CƠ SỞ LÝ THUYẾT C22 21 xe 13 1.1 Giới thiệu về python s- 5s Sc 2E 1 121121111211 2101 22111211 2221 nga 13
IPIC cái 0a 0 15
1.3 Tổng quan về xử lý ảnh 5-21 s21 1521 121121111121 1111212112212 n re 16 1.3.1 Xur ly anh La i) cece cccceccesesesseessessresseessnsaresscessesaresareesesseesareaseees 16 1.3.2 MOt 6 khai miém CO DAN cece cessesseseeceeessessesstsetesecssesietsesteseiteen 18
1.4 Các thư viện sử dụng trong python 2 2 22 2211121121221 12 2111181 re 20 1.4.1 Libraries trong Python ác 1111212211211 111111111211 11111 121111181512 yk 21 1.4.2 Packages trong Python 0 20121112 112212211 19111111111211112 111112 1kg 21 1.4.3 Giới thiệu về thư viện được sử dung trong python -s-c5- 2+2 21
CHƯƠNG 2: XÂY DỰNG HỆ THỒNG ĐIÊM DANH BẰNG 31 NHẬN DIỆN KHUÔN MẶTT -2-2222221122127122221122112112111221121112 226 31
2.1 Téng quan vé bai toate ccccccccsesseseesessessessesesecsesstssessesscssesssnsseteseeess 31 2.1.1 Bải toán điểm danh nhận diện khuôn mặt 222 SE E252 E 55255552522 5552 31
2.1.2 Một số lĩnh vực ứng dụng phát hiện khuôn mặt người trong ảnh 32
2.1.3 Những khó khăn và thách thức trong nhận diện khuôn mặt 33
2.1.4 Hướng giải quyết s- ST 12112121111212122 211111112 rag 36
2.2 Bài toán chấm công bằng nhận diện khuôn mặt - - - - c2 2222221212 s22 37
Trang 62.2.1 Đặc điểm, ưu điểm của chấm cơng nhận diện khuơn mặt 37
2.3 Các phương pháp phát hiện khuơn mặt (Face Detection) ‹- 38 2.3.1 Hướng tiếp cận dựa trên trí thức (knowledge-based) - 5: s2 39
2.3.2 Hướng tiếp cận dựa trên các đặc trưng khơng đơi (feature invariant) 40 2.3.3 Hướng tiếp cận dựa trên phương pháp đối sanh mau (Template
630 HH 41 2.3.4 Hướng tiếp cận dựa trên diện mạo (appearance-based) 41 2.4 Thuật tốn phân lớp Haar 0 22122112212 221121 115111531111 11111211 281 18 re 42 2.5 FHe haarcascade_frontalface_ defậult xmil - ¿5c S2 2222222 zzsxs2 46 2.6 Đặc trưng Haar LLIke L2 20122112122 1121 1112111111111 1 1111111111581 18kg 49 2.6.1 Trích xuất đặc trưng Haar 5 20 22122112211 221151 1151111111111 1 28111123 x k2 50 2.6.2 Mở rộng đặc trưng Haar 2 c1 22 22211211 1211111 111122211811 181 1111111 cay 51 2.7 Bộ phân loại AdaBoost 1 0012011221121 1211111121121111 110121112811 re 54 2.7.1 Ap dụng AdaBoost cho bài tốn phat hiện khuơn mặt 55 2.7.2 Xây dựng các bộ phân lớp mạnh : 222 2212212221221 3 121121115522 55 2.7.3 Xây dựng cascade của các bộ phân lớp mạnh :- 22 2 +52 ss+22 56
2.8 Hệ thống phát hiện và xác định vị trí khuơn mặt trên ảnh - 5 57
2.9 Thuat 0n 59 CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH 5221222211122 1 ccee 63
Ki© 0y án e 63 3.2 Giao diện chương trình - c2 212111211121 121 112115111111 11 1111111115111 128151 ty 64
KET QUẢ VÀ ĐÁNH GIIÁ - 5 2c 222121111111711172121 2111121 rrye 69
0n 70 TÀI LIỆU THAM KHẢO S2 s s21 11551 1115511511512111 1512121181218 nse 71
Trang 7DANH MỤC HÌNH ẢNH
Hình 1 I Quá trình xử lý ảnh 2 2.22221121121211 51 1111111111101 111111110 21111111 E11 ca, 17
Hinh 1 2 Các bước cơ bản trong một hệ thống xử lý ảnh ¿+ 2c 1222122 22x sey 17
Hình 1 4 Giới thiệu về thư viện Keras : 22 2222 2211122221112211112121 0 kg 24
Hình I1 5 Giới thiệu về thư viện Nuimpy 5 s2 2121171112111 1E 25
Hình 1 6 Giới thiệu về thư viện Pandas 2252 22+22221222211121112121 1 27 Hình 1 7 Giới thiệu về thư viện Pillow - -5225:t 2222221112221 tri 28
Hình 1 8 Giới thiệu về thư viện TensorFlow 25 Sans1 121212133151 5511515 155155112555 xe2 29
Hình 1 9 Giới thiệu về thư viện Matplotlib - 5+ s2 2E12151111271211211211111 E110 30
Hinh 2 1 Minh hoa sự thay đôi góc chụp c c2: 1211121121111 1111111111111 15 1811 key 35 Hình 2 2 Minh họa sự thiếu thành phần mm 36
Hình 2 3 Ảnh chụp chân dung người trong các điều kiện ánh sáng khác nhau 37
Hình 2 4 Camera ảnh hướng tới chất lượng của ảnh - 25s E1 SE2E12E5211 11x x2 37 Hinh 2 5 Các bước chính trong một hệ thống nhận dạng mặt n8ười - -:‹- 38 Hinh 2 6 Mô hình thực hiện chương trình 2222221221121 1221 1111811181151 2 11118 2s 38 Hình 2 7 Nhận dang khuôn mặt người bằng caimera 2-5222 2E12E1212E221EE2 x2 40 Hinh 2 8 Nhận dạng dựa trên tr1 thức L2 2211211121111 12111111011 11111112111 11112 re 41 Hình 2 9 Nhận dạng dựa trên phương pháp đối sánh mẫu - 22 22c S22 zzcce 42 Hình 2 10 Cửa số phát hiện đối tượng trong hình ảnh - c2 2c 2 2222222212222 +zx+2 44
Hình 2 11 Ảnh phát hiện khuôn mặt 2 2© s2£EE2E9221512711 2122121121712 221 xe 45 Hình 2 12 Ví dụ về phát hiện sai khuôn mặt trong ảnh Đây là sự cố phô biến khi sử
l8 #2 s3ix91/1ì10051v1 xe 46 Hinh 2 13 Các đặc trưng cơ bản 2 12211211211 12112111111111112 11 111111011 1111115 101 kg 46
Hình 2 14 Lưu đồ thuật toán Haar - 52 2222 22221112221112222122112211121112111 2111 47
Hình 2 15 Các mẫu đặc trưng cơ bản của Haar: (a) các khối và phân phối của nó
theo đề xuất của Viola, (b) ứng dụng trong nhận dạng mặt người 2 5c ssccs se: 51
Hình 2 16 Tính nhanh tông giá tri pixel trong vùng chữ nhật bất kỳ - - 2 se- 52
Trang 8Hình 2 17 Mở rộng đặc trưng Haar : (a) vùng chữ nhật được mở rộng theo hướng
quay 45°, (b) các loại hình dáng của đặc trưng mở rộng - ¿+ 2c 2c ersv2 53
Hình 2 18 Mở rộng đặc trưng Haar bằng cách sử dụng hình bình hành 53
Hinh 2 19 Tinh nhanh đặc trưng Haar: (a) tính nhanh bảng công tích lũy, (b) trích
xuất tông giá trị pIxel trong vùng hình bình hành 2G 2 2222221123112 123 12221212212 <z5 55
Hình 2 20 Mô hình phân tầng kết hợp các bộ phân loại yêu đề xác định khuôn mặt 56
Hình 2 21 Kết hợp các bộ phân loại yếu thành bộ phân loại mạnh - -: 57 Hình 2 22 Casade của các bộ phân lớp mạnh Nơi một vùng ứng viên có thế bị loại
tại bất cứ lal MOAN MAO ee eee 58
Hinh 2 23 Hé théng phat hién va xac định vị trí khuôn mặt người trên ảnh 59
Hinh 2 24 Thuật toán xây dựng CSDL khuôn mặt tự động 22 222cc cc2+ 60 Hình 3 1 Giao điện chính của ứng dụng điểm đanh 2- 5< 5222221272212 2222 65
Hình 3 2 Nhập thông tin ID và Tên đối tượng -2©2s2292E22E2E271272212722121 2 xe 65 Hình 3 3 Chụp ảnh đối tượng - 51 2 1111121121121 1111121212221 12 1121 1n nr rêu 67
lì: hy 67 Hinh 3 5 Nhận diện khuôn mặt - - cecececsccccceccccccesecesevesesstteeetttttteetseeseeeeneees 68 Hình 3 6 Tất ca thông tin đối tượng nhập vào chương trình sẽ được lưu về 01 file
CS N L0 200010 1101111111111111111 1111111111 11111111111 1101 H1 1111111 1111111 H11 1111101111111 11 E11 1x kr 69
Hình 3 7 Kết quả của chương trình trên một ảnh ImẫU 2 TS 1111121511551 11 15115 xey 70
Trang 9DANH MỤC TỪ VIỆT TAT
Perl Practical Extraction and Trích xuất thực tế và
Report Language ngôn ngữ báo cáo PHP Hypertext Preprocessor Bộ tiền xử lý siêu văn
bản LBP Local Binary Patterns Các mẫu nhị phân cục
bộ
PCA Principal Component Analysis Phan tich thanh phan
chinh Pixel Picture Elenment Điểm ảnh JPEG Joint Photo-praphic Experts Phương pháp nén ảnh
Group JPEG
API Application Program Interface Giao diện chương trình
bằng ứng dụng LDA Linear Discriminant Analysis Phan tich phan biét
tuyén tinh
Al Artificial Intelligence Trí tuệ nhân tạo
HOG Histogram of Oriented Biểu đồ của Gradient
Gradients định hướng GIE Graphics Interchange Format Dinh dang trao déi hinh
anh
Adaboost Adaptive Boost Thuat toan AdaBoost
Trang 10
MỞ ĐẦU
1 Lý do chọn đề tài
Với sự phát triển không ngừng của khoa học và công nghệ, đặc biệt là với
những chiếc điện thoại thông minh (smartphone) ngày cảng hiện đại và được sử
dụng phô biến trong đời sông con người đã làm cho lượng thông tin thu được bằng
hình ảnh ngày cảng tăng Theo đó, lĩnh vực xử lý ảnh cũng được chú trọng phát
triển, ứng dụng rộng rãi trong đời sống xã hội hiện đại Không chỉ đừ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 tôi có thé
giải quyết các bài toán nhận dạng chữ viết, nhận đạng dấu vân tay, nhận dạng khuôn
mặt
Một trong những bài toán được nhiều người quan tâm nhất của lĩnh vực xử lý
ảnh hiện nay đó là nhan dang khu6én mat (Face Recognition) Như chúng ta đã biết,
khuôn mặt đóng vai trò quan trọng trong quá trình giao tiếp giữa người với người,
nó mang một lượng thông tin giàu có, chăng hạn như từ khuôn mặt tôi có thê xác
định 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 mỗi quan
hệ với đối tượng (có quen biết hay không) Do đó, bài toán nhận dạng khuôn mặt
đóng vai trò quan trọng trong nhiều lĩnh vực đời sống hằng ngày của con người như
các hệ thống giám sát, quản lý vào ra, tìm kiếm thông tin một người nỗi tiếng, đặc
biệt là an ninh, bảo mật Có rất nhiều phương pháp nhận dạng khuôn mặt để nâng
cao hiệu suất tuy nhiên dù ít hay nhiều những phương pháp này đang vấp phải
những thử thách về độ sáng, hướng nghiêng, kích thước ảnh, hay ảnh hưởng của
tham số môi trường
Bài toán Nhận điện khuôn mặt (Face Recognition) bao gồm nhiều bài toán
khác nhau như: phát hiện mặt người (face detection), đánh dau (facial landmarking),
trích chọn (rút) đặc trưng (feature extration), gan nhan, phan lép (classification)
Trong thực tế, nhan dang khu6n mat ngwoi (Face Recognition) la mot huéng nghién
cứu được nhiều nhà khoa học quan tâm, nghiên cứu để ứng dụng trong thực tiễn
Ở các trường đại học hàng đầu về Công Nghệ Thông Tin như Massachusetts Institute of Technology (MIT), Carnegie Mellon University (CMU), Standford,
Berkeley và các công ty lớn như MicrosoR, Apple, Google, Facebook đều có các
trung tâm về sinh trắc học (Biometrics Center) và nghiên cứu về nhận dang khuôn
mặt người và nó đã trở thành một trong những lĩnh vực nghiên cứu chính cho đến
nay Gần đây, công ty Hitachi Kokusai Electric của Nhật mới cho ra đời một camera
giam sát, có thé chụp ảnh và tìm ra 36 triệu khuôn mặt khác có nét tương ty trong co
sở đữ liệu chỉ trong vòng một p1ây
10
Trang 11Có hai phương pháp nhận dạng phổ biến hiện nay là nhận dạng dựa trên đặc
trưng của các phần tử trên khuôn mặt như biến đôi Gabor Wavelet và mạng Neural,
SVM, .va nhận dạng dựa trên xét tổng thể toàn khuôn mặt như phương pháp PCA,
LDA, LFA Trong đó, PCA là phương pháp trích rút đặc trưng nhằm giảm số chiều
của ảnh tuy đơn giản nhưng mang lại hiệu quả tốt Hệ thống hoạt động ổn định và có
tính thích nghi cao khi dữ liệu đầu vào thay đổi nhiều
Hiện nay, việc điểm danh công nhân vẫn sử dụng biện pháp thủ công chưa
được tự động hóa ở nhiều công ty và nhà xưởng, gây mắt nhiều thời gian, công sức
đôi khi xảy ra tình trạng thất thoát bảng điểm danh thủ công Từ đó, xảy ra nhiều bất
cập, gây khó khăn trong việc quản lý Để giảm thiểu trình trạng trên, trong nghiên
cứu này em xin trình bày phương pháp xây dựng một hệ thống điểm danh công nhân
thông qua nhận dạng khuôn mặt
Đồ án được chia làm 3 chương:
Chương 1: Tông quan về cơ sở lý thuyết
Chương 2: Xây dựng hệ thống nhận diện khuôn mặt
Chương 3: Xây dựng chương trinh
2 Mục đích của đề tài xây dựng một dự án phần mềm ứng dụng nhận dạng
khuôn mặt
- Tìm hiệu về thư viện OpenC$v
Nghiên cứu phương pháp trích chọn đặc trưng Haar Cascade
Tìm hiểu các phương pháp xác định khuôn mặt (Face Detection)
we „ Đôi tượng và phạm vi nghiên cứu đề tài
+ Đối tượng:
-_ Các phương pháp, thuật toán phục vụ cho việc phát hiện và nhận dạng khuôn
mặt người trên ảnh
- Bộ thư viện xử lý ảnh OpenC$v
+ Pham vi nghiên cứu:
- Tập trung tìm hiểu phát hiện khuôn mat (Face Recognition) chứ không chú
trọng tìm hiểu phát hiện khuôn mặt (Face Detection)
-_ Việc xử lý ảnh, nhận dạng khuôn mặt thỏa mãn các điều kiện:
* Ánh sáng bình thường, ngược sáng, ánh sáng đèn điện (Với bộ cở sở dữ liệu
tự thu thập)
11
Trang 1212
* Góc ảnh: Trực diện (frontal) hoặc góc nghiêng
* Không bị che khuât (no occulusion)
* Anh co chất lượng cao (high quality)
Trang 131
CHUONG 1: TONG QUAN VE CO SO LY THUYET
1 Giới thiệu về python
Python là một ngôn ngữ lập trình thông dịch, đa năng và dễ học, được sử dụng trong nhiều lĩnh vực khác nhau Python được thiết kế để đọc đễ hiểu và có cú pháp øọn gàng, øiúp cho người mới học lập trình dễ dàng tiếp cận và phát triển các ứng dụng
Với nhiều tính năng mạnh mẽ như hỗ trợ đa nền tảng, độ tin cậy cao, và bộ thư viện phong phú, Python là một trong những ngôn ngữ lập trình phô biến nhất trên thế giới Nó được sử dụng rộng rãi trong các ứng dụng web, khoa học dữ liệu, trí tuệ nhân tạo, phát triển same, đỗ họa, hệ thống và mạng, và nhiều ứng dụng khác
Các đặc điểm chính của Python bao gồm:
13
Cú pháp đơn giản: Python sử dụng cú pháp đơn giản và dễ đọc, với các từ khóa
và cấu trúc ngôn ngữ dễ hiểu, giúp cho việc viết mã nguồn dé dang hon so voi các ngôn ngữ lập trinh khác
Hỗ trợ đa nền tảng: Python có thê chạy trên nhiều nền tảng khác nhau bao gồm
Windows, Linux và MacOS, và là một ngôn ngữ lập trình có tính đi động cao Kiểu đữ liệu động: Python là một ngôn ngữ lập trình có kiểu dữ liệu động, có nghĩa là các biến không cần phải được khai báo trước khi sử dụng Kiểu đữ liệu được xác định tự động dựa trên giá trị được gán vào biến
Hỗ trợ các thư viện va framework manh mé: Python có một cộng đồng lớn với nhiều thư viện và ffamework phố biến để giúp cho việc phát triển ứng dụng dé đàng hơn Các thư viện phô biến như NumPy, Pandas, Matplotlib, TensorFlow,
Django, Flask va nhiéu hon nia
Hỗ trợ lập trình hướng đối tượng: Python hỗ trợ lập trình hướng đối tượng, cho phép các lập trình viên xây dựng các đối tượng và lớp đối tượng riêng để tạo ra các ứng dụng phức tạp hơn
Tốc độ xử lý cao: Python có tốc độ xử lý tương đối nhanh và được tối ưu hóa cho các tác vụ tính toán khoa học và máy học
Dễ học và dễ sử dụng: Python là một ngôn ngữ lập trình dễ học và dễ sử dụng cho
người mới bắt đâu
Trang 14Python có nguồn gốc từ nhiều ngôn ngữ khác, bao gồm ABC, Modula-3, C, C+t, Algol-68, SmallTalk va Ủnix shell và các ngôn ngữ scrIpt khác
Python có bản quyền giống như Perl, mã nguồn Python hiện có sẵn theo giấy phép GNU (GPL)
Python hiện được duy trì bởi một nhóm phát triển cốt lõi tại viện nghiên cứu
quốc gia về toán học và khoa học máy tính ở Hà Lan Guido van Rossum vẫn giữ
một vai trò quan trọng trone việc chỉ đạo tiến trình của nó
Các tính năng của Python
-_ Dễ học: Python có ít từ khóa, cấu trúc đơn giản và cú pháp được định nghĩa rõ
ràng Điều này cho phép người mới học tiếp cận ngôn ngữ một cách nhanh
chóng
- Dé doc: Ma Python được định nghĩa rõ ràng hơn và có thể nhìn thấy bằng mắt -_ Dễ bảo trì: Mã nguồn của Python khá dễ bảo trì
-_ Một thư viện tiêu chuẩn rộng: Phần lớn thư viện của Python rất đễ đính kèm và
đa nền tảng tương thích trén UNIX, Windows va Macintosh
- Chế độ tương tác: Python có hỗ trợ cho chế độ tương tác cho phép kiểm tra tương tác và debug
- Portable: Python có thể chạy trên nhiều nền tảng phần cứng khác nhau và có cùng giao điện trên tất cả các nền tảng
- Có thể mở rộng: Tôi có thể thêm các module cấp thấp vào trình thông địch Python Các module này cho phép các lập trình viên thêm hoặc tùy chỉnh các công cụ của mình để hiệu quả hơn
- Co sé dir ligu: Python cung cấp phương thức giao tiếp cho tất cả các cơ sở đữ liệu
14
Trang 15-_ Lập trình GUI: Python hỗ trợ các ứng dụng GUI có thể được tạo và chuyển sang nhiều cuộc gọi hệ thông, thư viện và hệ thống cửa số, như Windows MEC, Macintosh và hệ thống X Window cua Unix
- Kha nang mé rong: Python cung cap cau tric va hé trợ tốt hơn cho các chương trình lớn hơn so với kịch bản lệnh shellL
Ngoài các tính năng được đề cập ở trên, Python còn có một danh sách lớn các tính năng khác, một số tính năng được liệt kê bên dưới:
- - Nó hễ trợ các phương pháp lập trình thủ t và có cấu trúc cũng như OOP
- Nó có thể được sử dụng như một ngôn ngữ kịch bản hoặc có thể được biên dịch thành mã byte để xây dựng các ứng dụng lớn
- Nó cung cấp các kiểu đữ liệu động ở mức rất cao và hỗ trợ kiểm tra kiểu động -_ Nó hễ trợ thu gom rac ty động
- Nocé thé dé dang tích hợp voi C, C++, COM, ActiveX, CORBA va Java Python làm được những gì?
- Web Development: Mét sé Framework nhu Flask, DJango, FastAPI giúp xây dựng các ứng dụng Web, Web APIs nhanh và dễ dàng
-_ Desktop GUI: Tôi có thể xây dựng các ưng dụng Desktop với Pythong bằng cách sử dung PyQt5, Tkinter, Kivy
- Tri tuệ nhân tạo & Máy học (AI & ML): Đây có lẽ là một trong những ứng dụng khiến cho Python trở nên rất “hot” như vậy Do có nhiều thư viện hỗ trợ nên Python có thê nói là một ngôn ngữ lập trình rất mạnh mẽ trong ngảnh Trí tuệ nhân tạo và Máy học
- Software Testing/Web Automation: Automation Testing dang ngay cảng trở nên phố biến hon Python có thư viện Selenium dang dugc su dung rat nhiều trong lĩnh vực Automation Testing và lẫy dữ liệu trên các trang web
- Xử lý hình ảnh, video: Công nghệ xử lý ảnh hiện nay đang ngày cảng phát
triển với sự hỗ trợ của nhiều thư viện khác nhau Tiêu biểu nhất phải kê đến
các thư viện như OpenCV, và thư viện này cũng hỗ trợ Python rất mạnh 1.2 Giới thiệu Pycharm
PyCharm là một nền tảng hybrid được JetBrains phát triển như một IDE cho Python Nó thường duoc str dung dé phat triển ứng dụng Python Một số tô chức kỳ lân như Twitter, Facebook, Amazon và Pinterest cũng sử dụng PyCharm làm IDE Python của họ
PyCharm hỗ trợ chạy trên Windows, Linux hoặc Mac OS Ngoài ra, nó chứa cac module va cac package giúp các lập trình viên phát triển phần mềm bang Python tiết kiệm thời gian và công sức Hơn nữa, nó cũng có thế được tùy chỉnh theo yêu cầu của các nhà phát triển
Các tính năng của Pycharm:
- Trinh sửa code thông minh
15
Trang 16-_ Điều hướng mã
- Tái cấu trúc
- Hỗ trợ cho nhiều công nghệ web khác
- H6 tro cho cdc web framework Python phé biến
- H6tro cho Thư viện Khoa hoc Python
Uu va nhuge diém cia viée sir dung PyCharm:
- Uudiém:
+ Cai dat PyCharm rat dé dang
+ PyCharm la mét IDE dé str dung
+ Có rất nhiều plugin hữu ích và phím tắt hữu ích trong PyCharm
+ PyCharm tich hop các tính năng cua thư viện và IDE như tự động hoàn thành
vả tô màu
+ Nó cho phép xem mã nguồn trong một cú nhấp chuột
+ Tiết kiệm thời gian phát triển phần mềm
+ Tính năng đánh dấu lỗi trong code giúp nâng cao hơn nữa quá trình phat trién + Cộng đồng các nhà phát triển Python vô cùng lớn và tôi có thể giải quyết các thắc mắc/ nghỉ ngờ của mình một cách đễ dàng
-_ Nhược điểm:
+ PyCharm không miễn phí và phiên bản Professional của nó khá đắt
+ Tinh nang ty dién (auto-complete) sé khéng tét cho các lập trình viên newbie + Nó có thế gây ra sự cố trong khi sửa chữa các công cụ như venv
ra kết quả mong muốn Kết quả đầu ra của một quá trình xử lý ảnh có thể là một ảnh
“tốt hơn” hoặc một kết luận
16
Trang 17ảnh lý ảnh đoạn anh va m6 tá và nội suy
Ảnh có thể xem là tập hợp các điểm ảnh và mỗi điểm ảnh được xem như là đặc
trưng cường độ sáng hay một dấu hiệu nảo đó tại một vị trí nào đó của đối tượng trong không gian va nó có thể xem như một hàm n biến P(cl, c2, ., cn) Do do, anh trong xử lý ảnh có thể xem như ảnh n chiều Sơ đồ tổng quát của một hệ thống xử lý ảnh:
Anh
So dé trong hinh 1.1 bao gdm các phần sau:
Phan thu nhan anh (Image Acquisition)
Ảnh có thể nhận qua camera màu hoặc đen trắng Thường thì ả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ư loại CCD-Change Coupled Device) là loại photodiot tạo cường độ sáng tại mỗi điểm ảnh Camera thường dùng là loại quét dong; ảnh tạo ra có dạng hai chiều Chất lượng một ảnh thu nhận được phụ thuộc
vào thiết bị thu, môi trường (ánh sáng, thời tiết)
Tiền xir ly (Image Processing)
Sau bộ thu nhận, ảnh có thể bị nhiễu, độ tương phản thấp nên cần đưa vào bộ tiền xử lý để nâng cao chất lượng Chức năng chính của bộ tiền xử lý là lọc nhiễu, tăng độ tương phản để làm ảnh rõ, nét hơn
Phân đoạn (Segmentation) hay phân vùng ảnh
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 dạng ảnh Ví dụ: để nhận dạng chữ (hoặc mã vạch) trên phong
17
Trang 18bị thư cho mục đích phân loại bưu pham, cần chia các câu, chữ, về địa chỉ hoặc tên người thành các từ, các chữ, các số (hoặc các vạch) riêng biệt để nhận dang Day là phần phức tạp khó khăn nhất trong xử lý ảnh và cũng dễ gây lỗi, làm mất độ chính xác của ảnh Kết quả nhận dạng ảnh phụ thuộc rất nhiều vào công đoạn này
Biểu dién anh (Image Representation)
Đầu ra ảnh sau phân đoạn chứa các điểm ảnh của vùng ảnh (ảnh đã phân đoạn) cộng với mã liên kết với các vùng lân cận Việc chọn các tính chất để thể hiện ảnh gọi là trích chọn đặc trưng (Feature Selection) 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 đối tượng khác trong phạm vi ảnh nhận được Ví dụ: trone nhận dạng ký tự trên phong bì thư, tôi miêu tả các đặc trưng của từng ký tự giúp phân biệt ký tự nay voi
ký tự khác
Nhận dạng ánh và nội suy anh (Image Recognition and Interpretation)
Nhận dạng ảnh là quá trình xác định ả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 (Rhoặc lưu từ trước) Nội suy là phân đoán theo ý nghĩa trên cơ sở nhận dạng Ví dụ: một loạt chữ số và nét sạch ngang trên phong bì thư có thé được nội suy thành mã điện thoại Có nhiều cách phân loại ảnh khác nhau về ảnh Theo lý thuyết về nhận dạng, các mô hình toán học về ảnh được phân theo hai loại nhận dạng ảnh cơ bản:
-_ Nhận dạng theo tham SỐ
-_ Nhận dạng theo câu trúc
Một số đối tượng nhận dạng khá phô biến hiện nay đang được áp dụng trong khoa học vả công nghệ lả: nhận dạng ký tự (chữ ¡n, chữ viết tay, chữ ký điện tử), nhận dạng văn bản (Text), nhận dạng vân tay, nhận dạng mã vạch, nhận dạng mặt
nguol
1.3.2 Một số khái niệm cơ bản
Diem anh (Picture Element)
Gốc của ảnh (ảnh tự nhiên) là ảnh liên tục về không gian và độ sáng Đề xử lý
được bằng máy tính (số), ảnh cần phải được số hóa Số hóa ả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 các đ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 anh (PEL: Picture Element) hay 201 tat la Pixel Trong khuôn khổ anh
hai chiều, mỗi pixel ứng với cặp tọa độ (x, y)
18
Trang 19Dinh Nghia: Diém anh (Pixcel) là một phân tử của ảnh số tai toa dé (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ề không ø1lan và mức xám (hoặc màu) của ảnh số gần như ảnh thật Mỗi một phần tử trong ma trận được gọi là
một phân tir anh
Độ phân giái của ảnh
Định nghĩa: Độ phân giải (Resolution) của ảnh là mật độ điểm ảnh được ấn
định trên một ảnh số được hiển thị
Theo định nghĩa, khoảng cách piữa các điểm ảnh phải được chọn sao cho mắt người vẫn thấy được sự liên tục của ảnh Việc lựa chọn khoảng cách thích hợp tạo nên một mật độ phân bổ đó chính là độ phân giải và được phân bố theo trục x và y
trong không gian hai chiều
Ví dụ: Độ phân giải của ảnh trên man hinh CGA (Color Graphic Adaptor) la
một lưới điểm theo chiều ngang màn hình: 320 điểm chiều dọc * 200 điểm ảnh
(3207200) Rõ ràng, cùng màn hình CGA 12 “ta nhận thây min hon man hinh CGA
17” độ phân giải 320200 Lý do: cùng một mật độ (độ phân giải) nhưng điện tích
màn hình rộng hơn thì độ mịn (liên tục của các điểm) kém hơn
Mức xám của ảnh
Một điểm ảnh (pixcel) có hai đặc trưng cơ bản là vị trí (x, y) của điểm ảnh và
độ xám của nó Dưới đây tôi xem xét một số khái niệm và thuật ngữ thường dùng trong xử lý ảnh
Định nghĩa: Mức xám của điểm ảnh là cường độ sáng của nó được gán bằng gia tri số tại điểm đó
-_ Các thang mức xám thông thường: 16,32,64,128, 256 (Mức 256 là mức phô dụng
Lý do: từ kỹ thuật máy tinh ding 1 byte (8bit) để biểu diễn mức xám:
-_ Mức xám dùng 1 byte biểu diễn: 28 = 256, tức là từ 0 đến 255)
- Anh den trang: La ả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ó hai mức đen trắng phân biệt, tức dùng 1 bít mô tả
21mức khác nhau Nói cách khác: mỗi điểm ảnh của ảnh nhị phân chỉ có thể là 0
hoặc 1
- Anh mau: Trong khuôn khổ lý thuyết 3 màu (Red, Blue, Green) để tạo nên thế
giới màu, người ta thường đùng 3 byte để mô tả mức màu, khi đó các giá trị màu:
28*3 =224 ~ 16,7 triệu mau
Định nghĩa ảnh số
19
Trang 20Ảnh số là gi: Ảnh tạo bởi các điểm ảnh, điểm ảnh biểu diễn vô vàn thứ, ví đụ như: ảnh chân dung, ảnh X-quang, ảnh thân nhiệt Điểm ảnh đặc trưng cho một siátr nào đó là một ham n biến Ảnh trong thực tế là một ảnh liên tục về không gian
và về giá trị độ sáng Để có thể xử lý ảnh bằng máy tính cần thiết phải tiến hành số
hoá ảnh là quá trình biến đổi tín hiệu liên tục sang tín hiệu rời rạc thông qua quá trình lấy mẫu (rời rạc hóa về không gian) và lượng tử hoá thành phần giá trị mà về nguyên tắc bằng mắt thường không phân biệt được 2 điểm kề nhau: Ảnh có 2 loại: đạng tín hiệu tương tự (analog), dạng tín hiệu s6(digital)
Anh sé (digital image) co thé được xem là một biểu diễn dữ liệu rời rạc thể hiện thông tin về không gian và cường độ màu Ảnh số gồm một tập hợp hữu hạn các phan tử được biểu diễn bởi 1á trị số ảnh số có thể được biểu diễn dưới dạng ma
trận 2 chiều, mỗi phần tử của ảnh số gọi là diém anh (pixel) Tuy thuộc vả độ phân
giải là cố định hay biến đổi mà điểm ảnh có thế được biểu diễn đưới dạng vector hoặc dạng bitmap Ảnh số được xác định theo mảng 2 chiều biếu diễn cường độ sáng của điểm ảnh với gia tri cô định, cũng có thể được xác định theo hàm 2 chiều f(x,y), trong do x,y la cac toa dé trong khéng gian va độ lớn (amplitude) của hàm f được gọi là độ sang (intensity) hay d6 xam (gray level) của ảnh tại điểm đó Ảnh rời rạc 2 chiều, I(m,n) biểu diễn thông tin thu được từ cảm biến của một chuỗi các vị trí
cố định (m=1,2 ,M; n=l,2 ,N) trong tọa độ Cartesian 2 chiều được biến đổi từ
tín hiệu liên tục không gian 2 chiều thông qua quá trình xử lý tần số liên tục sang
miễn rời rạc
1.4 Các thư viện sử dụng trong python
Python là một ngôn ngữ được sử dụng rộng rãi, từ Data Science dén Scripting, hay Embedded Applications tham chi là cả làm game hay lam desktop
Appliaction và một số yêu cầu cơ bản của người code như làm web, tính toán va
làm những dự án nhỏ
Mặc dù Python có vé không nhanh bằng C++ hay C, nhưng điều đa số người
dùng đánh giá cao ở Python chính là những Libraries và Packages nhiều không kế hết của nó, và điều này thật sự rất có lợi khi phải làm việc với nhiều dòng code,
khiến chúng dễ quản lý và sửa đổi hơn, với hơn 137,000 libraries và 198,826
packages trong céng déng cua Python, moi thir đường như được đơn giản hóa và tối
ưu hơn đối với Python
1.4.1 Libraries trong Python
Một Libraries, hay thường gọi là Modules trong Python co nghia là một dang
như thư viện tôi thường biết, chúng đều chứa những "cuốn sách" mang giá trị thông
tin, tuy nhiên trong Python, thay vì sách, các tôi sẽ truy xuất những Module và áp
20
Trang 21dụng chúng trong quá trình lập trình, thay tôi làm những việc đơn giản nhưng tôn thời gian, có thê hiểu đơn giản là công dụng của chúng giống như một hàm xử lý được tích hợp vào một thư viện
1.4.2 Packages trong Python
Package trong Python là một thư mục chứa một hoặc nhiều modules hay các package khác nhau, nó được tạo ra nhằm mục đích phân bố các modules có cùng chức năng hay một cái gì đó, để để quản lý source code, hay nói là một gói hỗ trợ các module cùng được
1.4.3 Giới thiệu về thư viện được sử dụng trong python
* OpenCV ( Python) — Xw ly hình ảnh
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ề xử lý ảnh,
và các vấ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 đa mạnh của các dòng chíp đa lõi để thực hiện các phép tính toán trong thời gian thự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 (crossplatform), nghĩa là nó có thể chạy trên hệ điều hành Window, Linux, Mac,
¡OS 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 đó tôi có thể sử dụng thư viện này một cách miễn phí cho các mụ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ó được giới thiệu trong một hội nphị của IEEE về
các vấn đề trong thị piác máy và nhận dạ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 OpenCV thế 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 c6 giao diện
của C) và có nhiều điểm khác biệt so với phiên bản thứ nhất Các bản phát hành chính thức hiện đang diễn ra sáu tháng một lần, phiên bản ổn định nhất hiện nay
được phát hành tháng 4 năm 2020 OpenCV 4 3 0 và việc phát triển hiện được thực hiện bởi một nhóm độc lập của Nga được hỗ trợ bởi các tập đoàn thương mại Thư viện OpenCV ban đầu được sự hỗ trợ từ Intel, sau đó được hỗ trợ bởi Willow Garage, mét phong 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
Cấu Trúc tổng quan của OpenCv bao gồm 5 phần chính:
21
Trang 22Hình 1 3 Các thành phần của thư viện OpenCV
CV bao gồm các thư viện cơ bản về xử lý ảnh và các giải thuật về thị piác máy tính (CV cũng bao gồm CvAux thư viện cho việc phát hiện, theo dõi và nhận dạng đối tượng như: khuôn mặt, mắt )
MLL là bộ thư viện về các thuật toán học máy, bao gồm rất nhiều bộ phân cụm
và phân loại thông kê
HighGUI chứa đựng những thủ tục vào ra, các chức năng về lưu trữ cũng như đọc các file ảnh và video
Cxcore chứa đựng các cấu trúc đữ liệu cơ bản (ví dụ như cầu trúc XML, các cây
đữ liệu )
Những khả năng của OpenCV:
OpenCV là một gói mô-đun hình ảnh lý tưởng cho phép tôi đọc và phi, thay
đôi dữ liệu nhiều hình ảnh cùng một lúc
Tạo ra thị giác máy tính cho phép tôi xây dựng lại, gián đoạn và thông hiểu môi trường 3D từ môi trường 2D tương ứng của nó
OpenCV được xử dùng nhiều trong nhận diện vật thể và hình ảnh được thiết lập trước, chẳng hạn như khuôn mặt, động vật, cây cối, các vật thê di chuyền, etc Tôi cũng có thể lưu và chụp bất kỳ khoảnh khắc nào của viđeo và cũng có thé phân tích các thuộc tính khác nhau của nó như chuyền động, nén, etc
OpenCV tương thích với nhiều hệ điều hành như Windows, OS-X, Open BSD
Trang 23Keras chạy trên các thư viện máy mã nguồn mở như TensorFlow, Theano hoặc
Bộ công cụ nhận thức (CNTK) Theano là một thư viện python được sử dụng cho
các tác vụ tính toán số nhanh TensorFlow lả thư viện toán học biểu tượng nỗi tiếng
nhất được sử dụng để tạo mạng nơ-ron và mô hình học sau TensorFlow rất linh hoạt
và lợi ích chính là tính toán phân tân CNTK là khung học sâu được phát triển bởi Microsoft Nó sử dụng các thư viện nhu Python, C #, C ++ hoặc các bộ công cụ học máy độc lập Theano và TensorFlow là những thư viện rất mạnh nhưng khó hiểu để
tạo mạng nơ-ron
Keras dựa trên cấu trúc tối thiểu, cung cấp một cách dễ dàng và dễ dàng để tạo các mô hình học sâu dựa trên TensorFlow hoặc Theano Keras được thiết kế để xác định nhanh các mô hình học sâu Keras là một lựa chọn tối ưu cho các ứng dụng học sau
OMtoet Predicbons
- API nhat quan, don giản và có thê mở rộng
-_ Cấu trúc tối thiêu - đễ dàng đạt được kết quả mà không cần rườm rà
- H6 tro nhiéu nén tang va backend
- Than thign voi ngwoi dung chay trén ca CPU va GPU
- Kha nang mo rộng tính toán cao
Keras năng động, mạnh mẽ và có những ưu điểm sau:
-_ Cộng động lớn hỗ trợ
-_ Dễ dàng để kiểm tra
23
Trang 24Mạng nơ-ron Keras được viết bằng Python giúp mọi thứ đơn giản hơn
Keras hỗ trợ cả mạng convolution và recurrent
Mô hình học sâu là các thành phần rời rạc, do đó, tôi có thê kết hợp thành nhiêu cách
Những khả năng của Keras:
Keras là một thư viện Python mạnh mẽ Nó có khả năng chạy trên Bộ công cụ nhận thire cua Microsoft (Microsoft Cognitive Toolkit), PaidML, TensorFlow
và các nên tảng khác
Thư viện Python này có nhiều cách triển khai từ các khối hình thành mạng nơ-
ron - chức năng, lớp, trình tối ưu hóa, các đối tượng và những thứ khác
Keras cũng có nhiều công cụ hữu ích cho phép tôi làm việc với các hình ảnh và văn bản khác nhau một cách dễ đàng
Nó không chỉ hỗ trợ mạng nơ-ron mà còn cung cấp một môi trường hỗ trợ đầy
đủ cho các mạng nơ-ron tích hợp và tái hiện
Sử dụng Keras, tôi có thể xây dựng các mô hình sâu cho điện thoại thong minh
- cả Android và iOS hoặc cả Java Virtual Machine
* Giới thiệu về thư viện Numpy
Numpy (Numeric Python): là một thư viện toán học rất phổ biến và mạnh mẽ của Python NumPy được trang bị các hàm số đã được tối ưu, cho phép làm việc hiệu quả với ma trận và mảng, đặc biệt là dữ liệu ma trận và mảng lớn với tốc độ xử lý
nhanh hơn nhiều lần khi chỉ sử dụng Python đơn thuần
Hình 1 5 Giới thiệu về thư viện Numpy
Đây là một trong những thư viện hữu ich nhất của python, đặc biệt là nếu tôi đang tìm hiểu về các con số Vì phần lớn Khoa học Dữ liệu và Máy học xoay quanh Thống kê, nên việc thực hành trở nên quan trọng hơn nhiều NumPy được phát triển bởi Jim Hugunin Phiên bản ban đầu là Numarray được phát triển, có một số chức năng bố sung Năm 2005, Travis Oliphant đã tạo ra gói NumPy bằng cách kết hợp các tính năng của Numarray và gói Numeric
24
Sử dụng NumPy, lập trình viên có thể thực hiện các thao tác sau:
Trang 25- Các phép toán toan hoc va logic trén mang
- Cac bién déi Fourier và các quy trình đề thao tac shape
- Cac phép toan lién quan dén dai sé tuyén tinh NumPy tich hop san cac ham cho đại số tuyến tính và tạo số ngẫu nhiên
NumPy - Sự thay thế hoàn hảo cho MatLab
NumPy thường được sử dụng cùng với các gói như SciPy (Python Scientific)
và Mat-plotlib (thư viện vẽ dé thị) Sự kết hợp này được sử dụng rộng rãi để thay thế cho MatLab, một nền tảng phô biến cho tính toán kỹ thuật Tuy nhiên, Python thay thế cho MatLab hiện được xem như một ngôn ngữ lập trình hoàn thiện và hiện đại hơn Điều quan trọng hơn cả là Numpy là một thư viện mã nguồn mở, miễn phí
so với MatLab là một thư viện mã nguồn đóng vả phải trả phí
* Những khả năng của Numpy:
-_ Numpy là một mô-đun mở rộng mã nguồn mở cho Python, cung cấp các chức năng biên dịch nhanh cho các thao tác toán học và số, thậm chí là với những
ma trận và mảng có lượng đữ liệu không lồ Bên cạnh đó các mô-đun cung cấp một thư viện lớn các chức năng toán học cấp cao đề hoạt động trên các ma trận
và mảng một cách dễ dàng và thuận tiện
- Numpy cung cấp những masked arrays đồng thời với mảng gốc Nó cũng đi
kèm với các chức năng như thao tác với hình dạng logic, biến đổi Fourier rời
rạc, đại số tuyến tính tong quat, va nhiều hơn nữa
- Méi khi tôi thay đổi đặc điểm của bất kỳ mảng N chiều nào, Numpy sẽ tạo các mảng mới cho mảng đó và xóa các mảng cũ
-_ Gói mô-đun này cung cấp các công cụ hữu ích để tích hợp với các ngôn ngữ lập trình khác Chẳng han nhu C, C++, và ngôn netr lap trinh Fortran
- Numpy cung cap cac chire nang tuong duong voi MATLAB Cả hai đều cho
phép người dùng thao tác nhanh hơn
* Giới thiệu về thư viện Pandas
Thư viện pandas trong python là một thư viện mã nguồn mớ, hỗ trợ đắc lực trong thao tac dữ liệu Đây cũng là bộ công cụ phân tích và xử lý dữ liệu mạnh mẽ của ngôn ngữ lập trình python Thư viện này được sử dụng rộng rãi trong cả nghiên cứu lẫn phát triển các ứng dụng về khoa học dữ liệu Thư viện này sử dụng một cầu trúc đữ liệu riêng là Dataframe Pandas cung cap rất nhiều chức năng xử lý và làm việc trên cấu trúc đữ liệu này Chính sự linh hoạt và hiệu quả đã khiến cho pandas được sử dụng rộng rãi
25
Trang 26Pandas là một thư viện mã nguồn mở được xây dựng dựa trên NumÐPy, sử dụng thao tác và phân tích dữ liệu, được thiết ké dé cho phép tôi làm việc với dữ liệu được gan nhãn hoặc quan hệ theo cách trực quan hon
Hình 1 6 Giới thiệu về thu vién Pandas
-_ Có thê xử lý tập dữ liệu khác nhau về định dạng: Chuỗi thời gian, bảng không
đồng nhất, ma trận đữ liệu
- Kha nang import dữ liệu từ nhiều nguồn khác nhau như CSV, DB/SQL
- Có thế xử lý vô số phép toán cho tập dữ liệu: Subsetting, slicing, filtering,
merging, groupBy, re-ordering, and re-shaping
- Xử lý đữ liệu mất mát theo ý người dùng mong muốn: Bỏ qua hoặc chuyển
sang 0 Xử lý, phân tích dữ liệu tốt như mô hình hoá và thống kê
- Tích hợp tốt với các thư viện khác của python
- Cung cap hiéu suat tot
Dé cai dat pandas nếu téi co Anaconda chi can g6 conda install pandas hodc str dung tools pip pip install pandas
Sau khi cai dat xong, trong Python, tdi can khai bao import pandas dé co thé bat đầu sử dụng các hàm cua pandas Vi pandas la thu vién duoc su dụng thường xuyên nên nó thường được khai báo gọn lai thanh pd import pandas as pd pd co thé thay thế băng các từ khác, tuy nhiên tôi nên đặt là pd vì các tài liệu hướng dẫn đều ngầm quy ước như thé
Pandas có ba cấu trúc đữ liệu và nó được xây dựng dựa trên thư viện Numpy vậy nên chúng hoạt động rất nhanh và hiệu quả: Series, DataFrame, Panel Trong
đó Panel là mảng 3 chiều Panel thì không được sử dụng rãi như như Series hay DataFrame và nó cũng không dễ hiển thị hay trừu tượng hoá như màn một chiều và hai chiều, nên dưới đây mình chỉ giới thiệu Series và DataFrame
Tại sao lại dùng thư viện pandas?
DataFrame đem lại sự linh hoạt và hiệu quả trong thao tác dữ liệu và lập chỉ mục;
26
Trang 27- Là một công cụ cho phép đọc/ ghi đữ liệu giữa bộ nhớ và nhiều định dạng file: csv, text, excel, sql database, hdf5;
- Lién két dé liéu thông minh, xử lý được trường hợp dữ liệu bị thiếu Tự động đưa
dữ liệu lộn xộn về dang co cau trúc;
- Dé dang thay đổi bố cục của dữ liệu;
- Tích hợp cơ chế trượt, lập chỉ mục, lay ra tập con từ tập dữ liệu lớn;
- Cé thé thêm, xóa các cột dữ liệu;
- Tập hợp hoặc thay đổi đữ liệu với group by cho phép tôi thực hiện các toán tử trên tập dữ liệu;
Hiệu quả cao trong trộn và kết hợp các tập dữ liệu;
-_ Lập chỉ mục theo các chiều của đữ liệu giúp thao tác giữa dữ liệu cao chiều và dữ liệu thấp chiều;
-_ Tối ưu về hiệu năng:
-_ Pandas được sử dụng rộng rãi trong cả học thuật và thương mại Bao gồm thống
kê, thương mại, phân tích, quảng cáo,
* Giới thiệu về thư viện Pillow- Xử lý hình ảnh
Pilow là một phần của PIL- Python Image Libary Pilow được xây dựng trên kiến trúc của PIL, nhưng sau đó, nó chuyên đổi thành một thứ thân thiện và tốt hơn,
những chuyên gia thường nói với nhau Pillow thật ra là bản nâng cấp của PIL
Hình 1 7 Giới thiệu về thư viện Pillow
Những khả năng của Pillow:
-_ Khi sử dụng Pillow, không chỉ có thê mở và lưu hình ảnh, mả còn có thê xử lý
đặc điểm của hình ảnh, chẳng hạn như màu sắc, độ mờ, độ sang, toi
- Pillow hé tro xt ly nhiéu tép hinh anh khac nhau nhu PDF, WebP, PCX, PNG,
JPEG, GIF, PSD, WebP, PCX, GIF, IM, EPS, ICO, BMP, va con nhiéu hon thé
27
Trang 28- V6i Pillow co thé dé dang tao ra nhimg anh thu nho (thumbnails) cho hinh ảnh,
những ảnh thu nhỏ nảy mang hầu hết đặc điểm của hình ảnh và gần như không
khác gì ảnh gốc ngoại trừ chúng được thu nhỏ lại
- Pillow hé tro mét bé suu tap các bộ lọc hình ảnh như - FIND_EDGES, DETAIL,
SMOOTH, BLUR, CONTOUR, SHARPEN, SMOOTH_MORE, etc
- Pillow cung cấp sự hỗ trợ tuyệt vời từ cộng đồng người dùng của nó, những
người luôn sẵn sảng trả lời, thử thách và làm việc thông qua bắt kỳ câu hỏi nảo
* TensorFlow- Machine Learning
TensorFlow là một thư viện miễn phí mã nguồn mở dành cho machine learning
(học máy) Nó rất dễ đàng để học và sử dụng, bên cạnh đó nó còn có một bộ công cụ cực kỳ hữu ích và tiện lợi Tuy nhiên, khả năng của nó không chỉ giới hạn ở machine learning, Ta thể sử cho các luồng đữ liệu và nhiều chương trình khác nhau Rất đơn giản dé sử dụng được nó, bằng cách tải và cài đặt Colab Notebooks tir moi trinh duyệt
Trang 29Một điểm thú vị của thư viện này là nó có thể giúp tôi tiết kiệm thời gian hơn cho
việc debug trong quá trình xây dựng mô hình và training thuật toán bằng cách sử
dung Eager Execution
- Với TensorFlow, tôi có thé dé dang di chuyén cac mé hinh Machine Learning cua
mình trên kho đữ liệu đám mây, trên mọi thiết bị hoặc bất kỳ trình duyệt nào
-_ TensorFlow đi kèm với một kiến trúc đễ học Tôi có thể nhanh chóng phát triển
mô hình của mình thành code và tạo ra các sản phâm dễ dàng hơn
* Matplotlib- Vẽ đồ thi 2D
Mapplotlib là một thư viện python sử dung Python Script dé giúp tôi tạo ra các
dé thi 2D thường được ứng dụng trong toán học và khoa học đữ liệu Thư viện này
có hỗ trợ tạo nhiều giao điểm giữa hai trục số trong cùng một lúc Bên cạnh đó, tôi cũng có thê dùng Matplotlib để thao tác trực tiếp đến các đặc điểm khác nhau của đồ
Hình 1 9 Giới thiệu về thư viện Matplotlib
Những khả năng của Matplotlib:
- Matplotlib co thé tao ra những dé thi chất lượng và xuất ra một cách dễ đàng và thuận tiện, hoàn toàn đáp ứng nhu cầu của mọi ngành học Các đồ thị được tạo ra bằng Matplotlib có sẵn bản sao cứng trên các nền tảng tương tác khác nhau
- Tôi có thể dung Matplotlib voi nhiều bộ céng cu nhu Python Scripts, [Python
Shells, Jupyter Notebook, va nhiéu céng cụ khác
29
Trang 3030
Một số thư viện của bên thứ ba có thể được tích hợp với các ứng dụng Matplotlib Chăng hạn như seaborn, søplot, và các bộ công cụ chiếu xạ, mapping khác như basemap
Một cộng đồng các nhà phát triển tích cực luôn sẵn sàng trợ giúp tôi với bất kỳ thắc mắc nảo của tôi với Matplotlib Sự đóng góp của họ cho Matplotlib là rất
đáng khen ngợi
Ngoài ra, tôi còn có thê theo dõi bat kỳ lỗi nào phát sinh trong quá trình lập trình,
các bản vá mới, đồng thời còn có thê đóng góp các tính năng mới tại GitHub Đó
là một trang chính thức để nêu ra các vấn đề liên quan đến Matplotlib và cùng
giải quyết chúng
Trang 31CHUONG 2: XAY DUNG HE THONG DIEM DANH BANG
NHAN DIEN KHUON MAT
2.1 Téng quan vé bai toan
2.1.1 Bài toán điểm danh nhận diện khuôn mặt
Hiện nay, bài toán nhận dạng được ứng dụng khá rộng rãi trong việc xác mình tội phạm, trong các ứng dụng bảo mật của máy tính hoặc trong việc nhận dạng khuôn mặt của người rút tiền tại các trạm rút tiền tự động ATM,
Trong phạm vi bài báo này sẽ giới thiệu một phương pháp để xây dựng một cơ
sở dữ liệu khuôn mặt từ ảnh tĩnh một cách tự động phục vụ nhận dạng dựa trên thuật toán phát hiện khuôn mặt sử dụng bộ phân loại mạnh AdaBoost Bên cạnh đó, nó còn tạo tiền đề cho việc trích lọc tất cả các khuôn mặt người có trong một video khi kết hợp cơ sở đữ liệu này với các thuật toán theo dõi đối tượng và giúp xây đựng chức năng đếm tong số các khuôn mặt xuất hiện trong đoạn video
Xây dựng CSDL khuôn mặt tự động từ ảnh
Một số hình thức điểm danh hiện nay:
e Điểm danh bằng cách gọi tên:
+ Ưu điểm: Không mắt phí, thực hiện đơn giản
+ Nhược điểm: Tốn nhiều thời gian, không chính xác
e© Điểm danh bằng vân tay:
+ Ưu điểm: Nhanh, bảo mật cao
+ Nhược điểm: Khó bảo trì sửa chữa, đễ lây bệnh truyền nhiễm
e©_ Điểm danh bằng thẻ:
+ Ưu điểm: Nhanh
+ Nhược điểm: Khó bảo trì sửa chữa, bảo mật kém
Từ những bất cập trên em đã tìm hiểu và phát triển hệ thống điểm danh dựa
vào nhận dạng khuôn mặt Trone đó hệ thống điểm danh bằng nhận dạng khuôn
mặt thực hiện tự động hoản toàn qua hình ảnh camera Hệ thống điểm danh tự động bằng nhận diện khuôn mặt đảm bảo tính chính xác, bảo mật cao đồng thời không gây phiền hà cho người sử dụng
Điểm danh bằng nhận diện khuôn mặt thông minh là giải pháp được sử dụng
và hoạt động dựa trên nền tảng của trí tuệ nhân tạo (AI) Nó có thể tự động xác định
hoặc nhận diện một đối tượng từ hình ảnh kỹ thuật số hoặc khung hình từ nguồn
video và so sánh, phân tích với hình ảnh khuôn mặt đã được lưu trữ trước đó
31
Trang 32Giải pháp nhận diện khuôn mặt ứng dụng công nghệ sinh trắc học khá hiệu quả
và được ứng dụng rộng rãi tại các khu công nghiệp, văn phòng và ở các trường đại
học Giải pháp giúp người quản lý tiết kiệm được thời gian và chi phí nhân lực
nhưng vẫn đảm bảo độ chính xác của các dữ liệu được thu thập Quá trình hoạt động của hệ thống điểm danh bằng nhận diện khuôn mặt bao gồm những quá trình sau đây:
«_ Lấy mẫu: Camera giám sát sẽ tiến hành quét đối tượng và lấy mẫu khuôn mặt của đối tượng
« Phân tích dữ liệu: Các dữ liệu sau khi được thu thập sẽ được lưu trữ và trích xuất thành các hình ảnh, các mẫu
« So sánh dữ liệu: Các dữ liệu hệ thống vừa thu thập sẽ được đối chiếu với dữ liệu
đã được lưu trữ trước đó
«Hiến thị kết quả: Hệ thống điểm danh bằng nhận diện khuôn mặt sau khi phân
tích, đối chiếu sẽ cho ra kết quả nhận diện có hợp lệ hay không
2.1.2 Một số lĩnh vực ứng dụng phát hiện khuôn mặt người trong ảnh
Nhận dạng đối tượng giúp cơ quan chức năng quản lý: Dựa vào ảnh một người, nhận dạng xem người đấy có phải là tội phạm hay không bằng cách so sánh với các ảnh tội phạm đang được lưu trữ
Hệ thống camera quan sát, theo dõi và bảo vệ: Sử dụng camera để quan sát, theo dõi và phát hiện tội phạm trong đám đông Ví dụ như người đó có lấy trộm đồ, xâm nhập bất hợp pháp hay không- Giúp con người bảo mật: Các ứng dụng về bảo mật rat đa dạng, một trong số đó là công nghệ nhận dạng mặt người Ví đụ như công nghệ nhận dạng mặt người của laptop, để vào được laptop người dùng phải ngôi trước máy tính và phải sử dụng webcam để chụp ảnh khuôn mặt mình và cho máy
“học” thuộc các đặc điểm của khuôn mặt giúp cho quá trình đăng nhập sau này Lưu trữ khuôn mặt: Xác định mặt người có thê được ứng dụng trong các trạm rút tiền tự động đề lưu trữ khuôn mặt của người rút tiền đề tránh trường hợp chủ thẻ
bị mắt thẻ khi đó sẽ giúp nhân viên ngân hàng xử lý dễ dàng hơn
Một số ứng dụng khác của bài toán nhận dạng mặt người:
Ứng dụng của bài toán nhận diện khuôn mặt có rất nhiều và đã được triển khai tương đối hiệu quả trong quá trình thực tế Có thê kê đến một số ứng dụng điển hình sau đây:
Xac minh tội phạm
32
Trang 33Dựa vào ảnh của một người, nhận dạng xem người đây có phải là tội phạm hay không bằng cách so sánh với các ảnh tội phạm đang được lưu trữ Hoặc có thé str dung camera dé phat hiện tội phạm trong đám đông Ứng dụng nảy giúp cơ quan an ninh quản lý con người tốt hơn
Camera chống trộm
Các hệ thống camera sẽ xác định đâu là con người và theo dõi xem con người
đó có làm gì phạm pháp không, ví dụ như lấy trộm đồ, xâm nhập bất hợp pháp vào một khu vực nào đó
Bảo mật
Các ứng dụng về bảo mật rất đa dạng, một trong số đó là công nghệ nhận dạng mặt người của laptop, công nghệ này cho phép chủ nhân của máy tính chỉ cần ngồi trước máy tính là có thể đăng nhập được Để sử dụng công nghệ này, người dùng phải sử dụng một webcam để chụp ảnh khuôn mặt của mình và cho máy “học” thuộc các đặc điểm khuôn mặt giúp cho quá trình đăng nhập sau này
Lưu trữ khuôn mặt
Xác định mặt người có thể được ứng dụng trong các trạm rút tiền tự động(ATM) để lưu trữ khuôn mặt của người rút tiền Hiện nay có những người bị người khác lay trộm thẻ ATM và mã PIN, và bị rút tiền trộm, hoặc có những chủ tài khoản ổi rút tiền nhưng lại báo với ngân hàng là bị mắt thẻ và bị rút trộm tiền Nếu lưu trữ được khuôn mặt của người rút tiền, ngân hàng có thê đối chứng và xử lý dễ đàng hơn
Các ứng dụng khác
Điều khiến vào ra:
- Văn phòng, công ty, trụ so
- An ninh sân bay, xuất nhập cảnh
- Tìm kiếm và tô chức dữ liệu liên quan đến con người thông qua khuôn mặt
người
- Kiểm tra trạng thái người lái xe
- Điểm danh ở doanh nghiệp, trường học
2.1.3 Những khó khăn và thách thức trong nhận diện khuôn mặt
Bài toán nhận dạng mặt người là bài toán đã được nghiên cứu từ những năm
70 Tuy nhiên, đây là một bài toán khó nên những nghiên cứu hiện tại vẫn chưa đạt
được những kết quả mong muốn Chính vì thế, vấn đề này vẫn đang được nhiều
33
Trang 34nhóm trên thế giới quan tâm nghiên cứu Khó khăn của bài toán nhận dạng mặt người có thê kế đến như sau:
Tư thế chụp, góc chụp: Ảnh chụp khuôn mặt có thể thay đối rất nhiều bởi vì góc chụp giữa camera và khuôn mặt Chắng hạn như: chụp thắng, chụp chéo bên trái 45° hay chụp chéo bên phải 45°, chụp từ trên xuống, chụp từ dưới lên, v v 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 chí khuát hết
Hình 2 1 Minh họa sự thay đôi góc chụp
Sự xuất liện hoặc thiểu ruột số thành phần của khuôn mặt: Các đặc trưng như: râu mép, râu hàm, mắt kính, v v có thê xuât hiện hoặc không Vân đề này làm cho bài toán cảng trở nên khó hơn rât nhiều
Hình 2 2 Minh họa sự thiếu thành phần
34
Trang 35Sự biểu cảm của khuôn mặt: Biêu cảm của khuôn mặt con người có thê làm ảnh hưởng đáng kế lên các thông số của khuôn mat Chang han, cùng một khuôn mặt một người, nhưng có thể sẽ rất khác khi họ cười hoặc sợ hãi, v v d Sự che khuất: Khuôn mặt có thể bị che khuất bởi các đối tượng khác hoặc các khuôn mặt khác
Hướng của đnh (pose variafions): Các ảnh khuôn mặt có thê biên doi rat
nhiều với các góc quay khác nhau của trục camera Chăng hạn chụp với trục máy ảnh nghiêng làm cho khuôn mặt bị nghiêng so với trục của ảnh
Điều kiện của ảnh: Ảnh được chụp trong các điêu kiện khác nhau về: chiêu sáng, về tính chât camera (máy kỹ thuật sô, máy hông ngoại, v v ), ảnh có chat
lượng thấp ảnh hưởng rất nhiều đến chất lượng ảnh khuôn mặt
Trang 36
iPhone 8 Plus iPhone X
Hình 2 4 Camera ảnh hưởng tới chất lượng của ảnh 2.1.4 Hướng giải quyết
Hệ thống nhận điện gương mặt được chia thành hai giai đoạn chính là phát hiện sương mặt (Face Detection) và nhận diện sương mặt (Face Verifiaction) Mỗi giai đoạn hiện nay đều có nhiều thuật toán và các mô hình khác nhau Đề lựa chọn được mô hình phù hợp ta sẽ so sánh dựa trên 3 yếu tố sau: tốc độ xử lý, độ chính xác
và độ lớn của mô hình Sau khi lựa chọn được mô hình phù hợp và hiệu quả nhất, ta
sẽ xây dựng một hệ thống nhận diện pương mặt theo các mô hình được chọn
Quá trình xử lý của hệ thông có thê được mô tả theo như hình ở phía dưới:
VỊ trí i - Phân đoạn khuôn mặt ˆ khuôn mặt Phát hiện
khuôn mặt (Theo dõi)
Chỉ sô khuôn mặt
Khuôn mặt đã được phân đoạn
Véc-to ~ Rút trích band Phân lớp
36