TRƯỜ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ÁO CÁO ĐỜ ÁN 5
ĐỀ TÀI:
XÂY DỰNG HỆ THỐNG CHẤM CÔNG
VÀ ĐIỂM DANH NHẬN DIỆN BẰNG
KHUÔN MẶT
Sinh viên thực hiện :
Lớp:
GVHD:
Nguyễn Duy Sỹ
Nguyễn Thị Nguyệt Minh
18IT5 + 18IT2
TS Nguyễn Quang Vũ
Đà Nẵng, tháng 06 năm 2021
TRƯỜ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ÁO CÁO ĐỜ ÁN 5
ĐỀ TÀI:
XÂY DỰNG HỆ THỐNG CHẤM CÔNG
VÀ ĐIỂM DANH NHẬN DIỆN BẰNG
KHUÔN MẶT
Sinh viên thực hiện :
Lớp
GVHD
:
:
Nguyễn Duy Sỹ
Nguyễn Thị Nguyệt Minh
18IT5 + 18IT2
TS Nguyễn Quang Vũ
Đà Nẵng, tháng 06 năm 2021
MỤC LỤC
LỜI CẢM ƠN...........................................................................................................6
LỜI NÓI ĐẦU.........................................................................................................7
CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI...............................................................8
1.1 Giới thiệu về đề tài..............................................................................................8
1.2 Lý do chọn đề tài.................................................................................................8
1.3 Mục đích của đề tài.............................................................................................9
1.4 Vấn đề cần giải quyết..........................................................................................9
1.5 Đề xuất nội dung thực hiện..................................................................................9
1.6 Tổng quan về xử lý ảnh.....................................................................................10
1.6.1 Xử lý ảnh là gì?..............................................................................................10
1.6.2 Các quá trình của xử lý ảnh...........................................................................10
1.6.3 Những vấn đề cơ bản trong hệ thống xử lý ảnh..............................................12
1.7 Giới thiệu về python..........................................................................................15
1.8 Giới thiệu về các thư viện..................................................................................16
1.8.1 Tổ chức thư viện OpenCV..............................................................................17
1.8.2 Hàm cho một số chức năng cụ thể.................................................................18
CHƯƠNG 2. TÌM HIỂU VÀ PHÂN TÍCH CÁC THUẬT TỐN FACENET
TRONG KERAS..........................................................................................................20
2.1 Hệ thống nhận diện khuôn mặt..........................................................................20
2.1.1 Các ứng dụng phổ biến...................................................................................20
2.1.2 Các loại hệ thống xác thực..............................................................................20
2.1.3 Các phương pháp xác thực khuôn mặt............................................................20
2.2 Các bài toán khác nhau về face..........................................................................22
2.3 Thuật toán Facenet............................................................................................23
2.3.1 Khái quát thuật toán........................................................................................23
2.3.2 Triple loss.......................................................................................................23
2.3.3 Lựa chọn triple image input............................................................................25
2.3.4 Các pretrain model Facenet............................................................................26
2.3.5 Một số bộ dữ liệu public về face.....................................................................26
2.4 Tổng quan về Keras...........................................................................................26
2.4.1 Đặc trưng của Keras.......................................................................................26
2.4.2 Lợi ích............................................................................................................27
CHƯƠNG 3. DEMO SẢN PHẨM.......................................................................28
CHƯƠNG IV. ĐÁNH GIÁ KẾT QUẢ ĐẠT ĐƯỢC VÀ HƯỚNG PHÁT
TRIỂN ĐỀ TÀI............................................................................................................29
4.1. Đánh giá kết quả đạt được:...............................................................................29
4.2. Hướng phát triển đề tài:....................................................................................30
KẾT LUẬN............................................................................................................31
TÀI LIỆU THAM KHẢO.......................................................................................32
MỤC LỤC HÌNH ẢNH
Hình 1. 1 Nhận diện các đặc điểm trên khn mặt....................................................9
Hình 1. 2 Q trình xử lý ảnh..................................................................................10
Hình 1. 3 Các thành phần cơ bản của hệ thơng xử lý ảnh........................................13
Hình 2. 1 Phương pháp nhận diện truyền thống......................................................21
Hình 2. 2 Phương pháp nhận diện 3D......................................................................21
Hình 2. 3 Bài tốn tìm kiếm khn mặt đại diện ( face clustering).........................22
Hình 2. 4 Triple loss..............................................................................................................................24
Hình 3. 1 Cài đặt python..........................................................................................28
Hình 3. 2 Cài đặt Visual Studio Code......................................................................28
Hình 3. 3 Cài đặt development with C++................................................................28
Hình 3. 4 Xác nhận điểm danh................................................................................29
Hình 3. 5 Lấy mẫu nhận diện..................................................................................30
Hình 3. 6 Thêm User...............................................................................................30
Hình 3. 7 Danh sách User........................................................................................31
Hình 3. 8 Danh sách được điểm danh......................................................................31
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
…………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
Chữ ký của giảng viên hướng dẫn
………………………………
LỜI CẢM ƠN
Trên thực tế khơng có sự thành cơng nào mà không gắn liền với những sự hỗ trợ,
giúp đỡ dù ít hay nhiều, dù trực tiếp hay gián tiếp của người khác. Trong suốt quãng
thời gian từ khi bắt đầu học tập tại giảng đường Trường Đại học Công nghệ thông tin và
Truyền thông Việt Hàn - Đại học Đà Nẵng, chúng tôi đã nhận được rất nhiều sự quan
tâm, giúp đỡ của thầy cô và các bạn.
Với lịng biết ơn sâu sắc nhất, nhóm chúng tơi xin gửi lời cảm ơn chân thành tới
toàn thể các thầy cô giáo trong khoa Công nghệ thông tin và truyền thông Đại học Việt
Hàn, những người đã dạy dỗ và truyền đạt vốn kiến thức vô cùng quý báu của mình cho
chúng tơi trong suốt qng thời gian học tại đây. Những tình cảm và kiến thức mà thầy
cơ đã gửi trao cho chúng tôi sẽ là hành trang cho chúng tơi để bước đi trên những đoạn
đường tương lai.
Nhóm chúng tôi cũng xin gửi lời cảm ơn sâu sắc tới Thầy Nguyễn Quang Vũ,
người đã tận tình hỗ trợ và dẫn dắt nhóm chúng tơi trong suốt q trình thực hiện đồ án
để có được kết quả một cách tốt nhất.
Một lần nữa nhóm chúng tơi xin được chân thành cảm ơn!
LỜI NĨI ĐẦU
Trí tuệ nhân tạo (AI) đang là xu hướng phát triển có nhiều tiềm năng trong lĩnh vực
cơng nghệ thơng tin, nắm giữ vai trị chủ đạo trong dịng chảy cơng nghệ hiện đại với
nhiều ứng dụng trong mọi lĩnh vực của đời sống xã hội như trợ lí ảo, nhà thơng minh, xe
tự lái, các hệ thống nhận diện,… Nhận diện khuôn mặt là một là một lĩnh vực nghiên
cứu của ngành thị giác máy tính, và cũng được xem là một lĩnh vực nghiên cứu của
ngành sinh trắc học tương tự như nhận dạng vân tay, hay nhận dạng mống mắt.
Nhận dạng hay nhận biết là một trong những khả năng của con người cũng như các
loài vật, theo một cách bản năng nhất của loài vật qua cảm nhận từ các cơ quan như
mắt, mũi, miệng,..bằng hành động nhìn nghe ngửi… có thể cảm nhận được ngay được
đối tượng đang tiếp xúc với mình là cái gì quen hay lạ. Chính vì vậy, có thể nói rằng cơ
thể của mỗi lồi vật chính là một hệ thống nhận dạng tối ưu nhất.
Với sự phát triển của khoa học công nghệ đặc biệt là khoa học về robot thì ngày
càng mong ước tạo ra một nhận dạng máy học có khả năng tương tự và vượt trội hơn hệ
thống nhận dạng sinh học là một khát khao cháy bỏng của các nhà khoa học.
Một hệ thống nhân dạng đối tượng là một hệ thống nhận vào một ảnh hoặc một
đoạn video (một chuỗi các ảnh). Qua xử lý tính tốn hệ thống xác định được vị trí đối
tượng trong ảnh (nếu có) là đối tượng nào trong số đối tượng hệ thống đã biết (qua quá
trình học) hay là đối tượng mới. Yêu cầu đặt ra đối với hệ thống nhận dạng đối tượng là
độ chính xác cao, vì vậy hệ thống địi hỏi phải có các đặc trưng tốt. Hệ thống phải chọn
đặc trưng nào để biểu diễn tốt một thông tin đối tượng cần nhận dạng. Đồng thời đặc
trưng phải được tính tốn nhanh để khơng làm chậm q trình nhận dạng. Thêm vào đó
hệ thống phải có phương pháp học hiệu quả, có khả năng nhận biết được các mẫu mới
chứ không chỉ làm tốt trên những mẫu đã học.
Đồ án môn học của chúng tôi gồm 4 chương:
Chương 1: Tổng quan về đề tài
Chương 2: Cơ sở lý thuyết
Chương 3: Phân tích
Chương 4: Đánh giá kết quả đạt được và hướng phát triển
CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI
1.1 Giới thiệu về đề tài
Ngày nay, cùng với những tiến bộ vượt bậc của khoa học kỹ thuật nói chung, bộ
mơn khoa học xử lý ảnh đã và đang thu được những thành tựu lớn lao và chứng tỏ vai
trị khơng thể thiếu với những ứng dụng sâu rộng trong khoa học kỹ thuật cũng như đời
sống xã hội. Một bộ phận của khoa học xử lý ảnh là lĩnh vực thị giác máy tính hiện
đang thu hút rất nhiều sự quan tâm của các nhà nghiên cứu xử lý ảnh với mục tiêu xây
dựng nên một thế giới trong đó hệ thống thị giác kỳ diệu của con người có thể được mơ
phỏng bởi các hệ thống máy tính, đem lại khả năng cảm nhận bằng thị giác cho các hệ
thống về môi trường xung quanh. Mơ ước về một hệ thống máy tính có thể hồ nhập
vào thế giới con người với đầy đủ các giác quan trong đó thị giác đóng vai trị quan
trọng đang dần dần được hiện thực hố với những đóng góp nghiên cứu của các nhà
khoa học trên phạm vi toàn thế giới.
Đồng thời việc phát triển của các thiết bị phần cứng cả về phƣơng diện thu nhận,
hiển thị, tốc độ xử lý đã mở ra nhiều hướng mới cho công nghệ xử lý ảnh. Nó có thể
giải quyết các bài tốn như giám sát tự động phục vụ trong cơ quan, ngân hàng, kho
bạc, ... hoặc trong việc giám sát giao thông tự động, phục vụ tại bãi đỗ xe, trạm thu phí
tự động hoặc việc phát hiện và nhận dạng mặt người phục vụ trong công tác quân sự, an
ninh.
1.2 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ỉ 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 chúng ta có thể giải quyết các bài toán
nhận dạng chữ viết, nhận dạng dấu vân tay, nhận dạng khn mặt...
Một trong những bài tốn được nhiều người quan tâm nhất của lĩnh vực xử lý ảnh
hiện nay đó là nhận dạng khn mặt (Face Recognition). Như chúng ta đã biết, khn
mặt đóng vai trị quan trọng trong quá trình giao tiếp giữa người với người, nóng một
lượng thơng tin giàu có, chẳng hạn như từ khn mặt chúng ta 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 tốn nhận dạng khn 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.
1.3 Mục đích của đề tài
Xây dựng một phần mềm ứng dụng nhận diện khn mặt.
Tìm hiểu về một số thư viện như opencv, phần mềm visual studio code.
Tìm hiểu các phương pháp nhận diện khn mặt( Face Detection).
Tìm hiểu về các phương pháp xử lý ảnh.
1.4 Vấn đề cần giải quyết
Hệ thống nhận dạng khn mặt là một ứng dụng máy tính tự động xác định hoặc
nhận dạng một người nào đó từ một bức hình ảnh kỹ thuật số hoặc một khung hình
video từ một nguồn video. Một trong những cách để thực hiện điều này là so sánh các
đặc điểm khuôn mặt chọn trước từ hình ảnh và một cơ sở dữ liệu về khuôn mặt.
Hệ thống này thường được sử dụng trong các hệ thống an ninh và có thể được so
sánh với các dạng sinh trắc học khác như các hệ thống nhận dạng vân tay hay trịng mắt.
Từ đó thu thập, phân tích các tài liệu về nhận dạng khn mặt, tìm hiểu các phương
pháp nhận dạng khn mặt, nghiên cứu các công cụ xây dựng hệ thống
1.5 Đề xuất nội dung thực hiện
Hình 1. 1 Nhận diện các đặc điểm trên khuôn mặt
Đối với đề tài Tìm hiểu, nghiên cứu và thực hiện xây dựng hệ thống nhận diện
gương mặt. Việc hệ thống có thể nhận dạng chính xác là một việc quan trọng. Đối với
đề tài này, chúng em thực hiện xây dựng hệ thống nhận diện gương mặt sử dụng Deep
learning với khả năng “Nhận dạng gương mặt nhanh chóng và chính xác”.
Với hệ thống này, chúng em sẽ sử dụng các thư viện được cung cấp bởi PIP trong
python và sử dụng Visual Studio Code để lập trình.
1.6 Tổng quan về xử lý ảnh
1.6.1 Xử lý ảnh là gì?
Xử lý ảnh (XLA) là đối tượng nghiên cứu của lĩnh vực thị giác máy, là quá trình
biến đổi từ một ảnh ban đầu sang một ảnh mới với các đặc tính và tuân theo ý muốn của
người sử dụng. Xử lý ảnh có thể gồm q trình phân tích, phân lớp các đối tượng, làm
tăng chất lượng, phân đoạn và tách cạnh, gán nhãn cho vùng hay quá trình biên dịch các
thơng tin hình ảnh của ảnh.
Cũng như xử lý dữ liệu bằng đồ hoạ, xử lý ảnh số là một lĩnh vực của tin học ứng
dụng. Xử lý dữ liệu bằng đồ họa đề cập đến những ảnh nhân tạo, các ảnh này được xem
xét như là một cấu trúc dữ liệu và được tạo bởi các chương trình. Xử lý ảnh số bao gồm
các phương pháp và kỹ thuật biến đổi, để truyền tải hoặc mã hoá các ảnh tự nhiên. Mục
đích của xử lý ảnh gồm:
Biến đổi ảnh làm tăng chất lượng ảnh.
Tự động nhận dạng ảnh, đoán nhận ảnh, đánh giá các nội dung của ảnh.
Nhận biết và đánh giá các nội dung của ảnh là sự phân tích một hình ảnh thành
những phần có ý nghĩa để phân biệt đối tượng này với đối tượng khác, dựa vào đó ta có
thể mơ tả cấu trúc của hình ảnh ban đầu. Có thể liệt kê một số phương pháp nhận dạng
cơ bản như nhận dạng ảnh của các đối tượng trên ảnh, tách cạnh, phân đoạn hình ảnh,…
Kỹ thuật này được dùng nhiều trong y học (xử lý tế bào, nhiễm sắc thể), nhận
dạng chữ trong văn bản.
1.6.2 Các quá trình của xử lý ảnh
Hình 1. 2 Quá trình xử lý ảnh
Sơ đồ này gồm các thành phần sau:
a) Phần thu nhận ảnh (Image Acquisition)
Ảnh có thể nhận qua camera màu hoặc đen trắng. 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ố (như loại CCD – Charge Coupled Device) là loại photodiode tạo
cường độ sáng tại mỗi điểm ảnh.
Camera thường dùng là loại quét dòng ; ả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, vào môi trường (ánh sáng, phong
cảnh)
b) Tiền xử lý (Image Processing)
Sau bộ thu nhận, ảnh có thể 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õ hơn, nét hơn.
c) 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 bì thư
cho mục đích phân loại bưu phẩm, 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 dạng. Đây 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.
d) Biểu diễn ảnh (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 biến đổi các số liệu này thành dạng thích hợp
là cần thiết cho 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 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.
e) Nhận dạng và nội suy ảnh (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 (hoặ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. 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 tố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ữ in, 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 người…
f) Cơ sở tri thức (Knowledge Base)
Như đã nói ở trên, ảnh là một đối tượng khá phức tạp về đường nét, độ sáng tối,
dung lượng điểm ảnh, môi trường để thu ảnh phong phú kéo theo nhiễu. Trong nhiều
khâu xử lý và phân tích ảnh ngồ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 theo
cách của con người. Trong các bước xử lý đó, nhiều khâu hiện nay đã xử lý theo các
phương pháp trí tuệ con người. Vì vậy, ở đây các cơ sở tri thức được phát huy.
1.6.3 Những vấn đề cơ bản trong hệ thống xử lý ảnh
a) Điểm ảnh (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ý 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 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 ả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).
Đ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ề không 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.
b) Mức xám của ảnh
Mức xám của điểm ảnh: là cường độ sáng của nó được gán bằng giá trị số của nó
tại điểm đó
Đ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ề không 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.
Độ phân giải của ảnh: Độ 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ị. Khoảng cách giữ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
Các thang giá trị mức sáng 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 tính dùng 1 byte (8 bit) để biểu diễn mức xám: Mức
xám dùng 1 byte biểu diễn: 2 8=256 mức, tức là từ 0 đến 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 dùng 1 bit mô tả 21 mứ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.
Ảnh màu: trong khuôn khổ lý thuyết ba màu (Red, Blue, Green) để tạo nên thế
giới màu, người ta thường dùng 3 byte để mô tả mức màu, khi đó các giá trị màu:
28*3=224≈ 16,7 triệu màu.
c) Các thành phần cơ bản của hệ thống xử lý ảnh
Hình 1. 3 Các thành phần cơ bản của hệ thông xử lý ảnh
Thiết bị thu nhận ảnh: Là thiết bị biến đổi quang điện, cho phép biến đổi hình ảnh
quang học thành tín hiệu dưới dạng analog hay trực tiếp dưới dạng số. Có nhiều dạng
cảm biến cho phép làm việc với ánh sáng nhìn thấy hoặc hồng ngoại. Hai loại thiết bị
biến đổi quang – điện chủ yếu thường được sử dụng là đèn ghi hình điện tử và chip
CCD (Charge Coupled Device – linh kiện ghép điện tích).
Bộ xử lý ảnh chuyên dụng: Sử dụng chip xử lý ảnh chuyên dụng, có khả năng thực
hiện nhanh các lệnh trong xử lý ảnh. Cho phép thực hiện các quá trình xử lý ảnh như
lọc,làm nổi đường bao, nén và giải thích video v.v.. Trong bộ xử lý thường thường tích
hợp hợp bộ nhớ đệm có tốc độ cao.
Bộ nhớ trong và bộ nhớ ngoài: Trong các hệ thống xử lý ảnh số thường có dung
lượng rất lớn dùng để lưu trữ ảnh tĩnh và động dưới dạng số.Bộ nhớ số trong hệ thống
xử lý ảnh có thể chia làm 3 loại :
Bộ nhớ đệm trong máy tính để lưu ảnh trong q trình xử lý. Bộ nhớ này có khả
năng ghi/đọc rất nhanh (ví dụ 25 hình /s).
Bộ nhớ ngồi có tốc độ truy cập tương đối nhanh, dùng để lưu thơng tin thường
dùng.Các bộ nhớ ngồi có thể là ổ cứng, thẻ nhớ. thẻ nhớ flash .v.v..
Bộ nhớ dùng để lưu trữ dữ liệu .Loại bộ nhớ này thường có dung lượng lớn, tốc
độ truy cập khơng cao.Thông dụng là đĩa quang ghi 1 lần (ROM) hoặc nhiều lần (ROM)
như đĩa DVD có dung lượng 4.7 GB(một mặt ) .
Ngoài ra trong hệ thống xử lý ảnh còn sử dụng các thiết bị cho phép lưu ảnh trên
các vật liệu khác như giấy in, công nghệ nung nóng v.v..
Màn hình hiển thị: Hệ thống biến đổi điện –quang hay đèn hình ( đen trắng cũng
như màu) có nhiệm vụ biến đổi tín hiệu điện có chứa thơng tin của ảnh (tín hiệu video)
thành hình ảnh trên màn hình . Có hai dạng display được sử dụng rộng rãi là đèn hình
CRT ( Cathode – Ray Tube ) và màn hình tinh thể lỏng LCD (Liquid Crystal Display).
Đèn hình CRT thường có khả năng hiển thị màu sắc tốt hơn màn hình LCD nên được
dùng phổ biến trong các hệ thống xử lý ảnh chun nghiệp.
Máy tính: Có thể là máy tính để bàn cũng như siêu máy tính có chức năng điều
khiển tất cả các bộ phận chức năng trong hệ thống xử lý ảnh số.
d) Các khái niệm về đường viền ảnh, biên ảnh và vùng bao lồi của ảnh
Đường viền ảnh(border) của một vùng ảnh R là tập hợp các điểm ảnh trong vùng
đó mà có 1 hay nhiều lân cận bên ngồi vùng ảnh R.
Biên ảnh: một điểm ảnh có thể coi là biên nếu ở đó có sự thay đổi đột ngột về mức
xám.tập hợp các điểm biên tạo thành đường bao của ảnh.
Vùng bao lồi: Được sử dụng để mô tả các thuộc tính hình học của đối tượng.Vùng
bao lồi là vùng nhỏ nhất chứa đối tượng, sao cho bất kỳ điểm ảnh nào của vùng đều có
thể được nối với nhau bởi 1 đường thẳng, và tất cả các điểm ảnh đó đều thuộc vào vùng.
e) Các thiết bị thu nhận ảnh và một số quy trình khác
Các thiết bị thu nhận ảnh: Bộ cảm biến ảnh camera, màn hình video, máy tính.
Các thiết bị thu nhận ảnh bao gồm camera, scanner các thiết bị thu nhận này có thể cho
ảnh đen trắng Các thiết bị thu nhận ảnh có 2 loại chính ứng với 2 loại ảnh thơng dụng
Raster, Vector. Các thiết bị thu nhận ảnh thông thường Raster là camera các thiết bị thu
nhận ảnh thông thường Vector là sensor hoặc bàn số hoá Digitizer hoặc được chuyển đổi
từ ảnh Raster. Nhìn chung các hệ thống thu nhận ảnh thực hiện 1 quá tŕnh. Cảm biến:
biến đổi năng lượng quang học thành năng lượng điện .Tổng hợp năng lượng điện thành
ảnh.
Số hóa ảnh: Ảnh thu vào được từ các thiết bị thu nhận ảnh có thể là ảnh tương tự
hoặc ảnh số.Trong trường hợp ảnh tương tự, chúng ta phải tiến hành q trình số hóa
ảnh để có thể xử lý được bằng máy tính.
Q trình lượng hóa: Lượng tử hóa về mặt biên độ (độ sáng) cho dịng ảnh vừa
được rời rạc hóa.
Lấy mẫu là một quá tŕnh, qua đó ảnh được tạo nên trên một vùng có tính liên tục
được chuyển thành các giá trị rời rạc theo tọa độ nguyên. Quá tŕnh này gồm 2 lựa chọn:
Một là khoảng lấy mẫu. Hai là cách thể hiện dạng mẫu. Lựa chọn thứ nhất được đảm
bảo nhờ lư thuyết lấy mẫu của Shannon. Lựa chọn thứ hai liên quan đến độ đo (Metric)
được dùng trong miền rời rạc.
1.7 Giới thiệu về python
Python là một ngôn ngữ mạnh và dễ học. Python có tính hiệu quả rất cao với các
cấu trúc dữ liệu và đơn giản nhưng lại rất hữu dụng với ngơn ngữ lập trình hướng đối
tượng. Cú pháp Python gọn gàng và có tính năng gõ động, cùng với tính diễn dịch tự
nhiên, làm Python là một ngôn ngữ lý tưởng dành cho viết kịch bản và phát triển nhanh
chóng trong nhiều lĩnh vực trên nhiều nền tảng khác nhau.
Python có nhiều tính năng như:
- Đơn giản: Python là ngơn ngữ đơn giản. Đọc một chương trình Python có cảm
giảm như đọc tiếng Anh, mặc dù ở dạng rút gọn. Tính tự nhiên của mã giả trong Python
là một trong các điểm mạnh nhất của ngôn ngữ này. Điều này giúp cho lập trình viên
tập trung vào giải pháp giải quyết vấn đề hơn là tập trung vào ngôn ngữ.
- Dễ học: Python dễ học vì có cú pháp cực kỳ đơn giản.
- Miễn phí và mã nguồn mở: Python là một ví dụ của FLOSS (Free/Libre and Open
Source Software). Vì vậy bạn có thể tự do phân phối bản sao chép các phần mềm,
chương trình mới. Một trong những lý do Python là ngơn ngữ mạnh vì nó được cộng
đồng thường xuyên phát triển và nâng cấp.
- Ngôn ngữ bậc cao: Khi sử dụng Python, bạn sẽ không bao giờ phải để ý các chi
tiết mức thấp như quản lý bộ nhớ cho chương trình của bạn và vân vân.
- Khả năng bỏ túi: Do tính tự nhiên mã mở của Python, Python cũng xây dựng chạy
trên các nền tảng khác nhau. Bạn có thể sử dụng Python trên GNU/Linux, Windows,
FreeBSD, Macintosh, Solaris, OS/2, Amiga, AROS, Á/400,BeOS, OS/390, z/OS, Palm
OS, QNX, VMS, Psion, Acorn RÍC OS, VxWorks, PlayStation, Sharp Zaurus, Windows
CE và PocketPC. Bạn có thể dùng một nền tảng như Kivy để tạo các trò chơi trên máy
tính dành cho iPad, và Android.
- Diễn dịch: Khi một chương trình được viết bằng ngơn ngữ biên dịch như (C hoặc
C++) thì nó được chuyển đổi từ mã ngơn ngữ (C/C++) thành ngơn ngữ máy tính có hiểu
được bằng cách dùng một trình biên dịch với các chức năng và các cờ khắc nhau. Trái
lại, Python không cần biên dịch ra nhị phân. Chương trình viết bằng Python chạy trực
tiếp bằng mac nguồn. Cụ thể, Python sẽ chuyển mã nguồn thành một dạng trung gian
thành ngôn ngữ mà máy tính có thể hiểu được.
- Hướng đối tượng: Python là ngơn ngữ hỗ trợ cho lập trình hướng đối tượng lẫn cả
lập trình thủ tục. Nếu so sánh với C++ hoặc Java, Python rất mạnh nhưng cực kỳ đơn
giản để thực hiện lập trình hướng đối tượng.
- Tính mở rộng: Nếu bạn cần một đoạn mã chạy nhanh hoặc một vài thuật tốn
đóng, bạn có thể lập trình ở C/C++ và sau đó sử dụng nó cho chương trình Python.
Python cho phép tích hợp các chương trình ở các ngơn ngữ khác.
- Khả năng nhúng: Bạn có thể nhúng Python bên trong chương trình C/C++ đẻ
mang lại các khả năng kịch bản cho người dùng chương trình.
- Thư viện mở rộng: Thư viện tiêu chuẩn Python thì rất lớn. Thư viện giúp bạn làm
nhiều thứ khác nhau liên quan đến biểu thức chính quy, giao tài liệu, tiến trình/tiểu trình,
database, trình duyệt web, CGI, FTP, email, XML, XML-RPC, HTML, tập tin WAV, mã
hóa, GUI, và các phần khác. Tất cả thứ này đều sẵn có khi cài đặt Python.
1.8 Giới thiệu về các thư viện
Opencv (Open Computer Vision library) do Intel phát triển, được giới thiệu năm
1999 và hoàn thiện thành phiên bản 1.0 năm 2006. Thư viện opencv – gồm khoảng 500
hàm – được viết bằng ngơn ngữ lập trình C và tương thích với các hệ điều hành
Windows, Linux, Mac OS… đóng vai trò xác lập chuẩn giao tiếp, dữ liệu, thuật tốn
cho lính vực CV và tọa điều kiện cho mọi người tham gia nghiên cứu và phát triển ứng
dụng
Trước Opencv khơng có một cơng cụ chuẩn nào cho lĩnh vực xử lí ảnh. Các đoạn
code đơn lẻ do các nhà nghiên cứu tự viết thường không thống nhất và không ổn định.
Các bộ công cụ thương mại như Matlab, Simulink,..v.v.. lại có giá cao chỉ thích hợp cho
các cơng ty phát triển các ứng dụng lớn. Ngồi ra cịn có các giải phảp kèm theo thiết bị
phần cứng mà phần lớn là mã đóng và được thiết kế riêng cho tứng thiết bị, rất khó khan
cho việc mở rộng ứng dụng.
OpenCV là cơng cụ hữu ích cho những người bước đầu làm quen với xử lí ảnh số vì
các ưu điểm sau:
OpenCV là công cụ chuyên dụng: được Intel phát triển theo hướng tối ưu hóa
cho các ứng dụng xử lí và phân tích ảnh, với cấu trúc dữ liệu hợp lí, thư viện tạo
giao diện, truy xuất thiết bị phần cứng được tích hợp sẵn. OpenCV thích hợp để
phát triển nhanh ứng dụng
OpenCV là công cụ mã nguồn mở: Khơng chỉ là cơng cụ miễn phí, việc được xây
dựng trên mã nguốn mở giúp OpenCV trở thành cơng cụ thích hợp cho nghiên
cứu và phát triển, với khả năng thay đổi và mở rộng các mơ hình, thuật toán
OpenCV đã được sử dụng rộng rãi: Từ năm 1999 đến nay, OpenCV đã thu hút
được một lượng lớn người dung, trong đó có các cơng ty lớn như Microsoft,
IBM, Sony, Siemens, Google và các nhóm nghiên cứu ở Standford, MIT, CMU,
Cambridge,… Nhiều forum hỗ trợ và cộng đồng người dung đã được thành lập,
tạo nên kênh thông tin rộng lớn, hữu ích cho việc tham khảo, tra cứu
1.8.1 Tổ chức thư viện OpenCV
- CXCORE chứa các định nghĩa kiểu dữ liệu cơ sở. Ví dụ, các cấu trúc dữ liệu cho
ảnh, điểm và hình chữ nhật được định nghĩa trong cxtypes.h .
-CXCORE cũng chứa đại số tuyến tính và phương pháp thống kê, chức năng duy
trì và điều khiển chuỗi. Một số ít, các chức năng đồ họa để vẽ trên ảnh cũng được đặt ở
đây.
- CV chứa các thuật toán về xử lý ảnh và định kích cỡ camera. Các chức năng hình
họa máy tính cũng được đặt ở đây.
- CVAUX được mơ tả trong tài liệu của OpenCV như chứa các mã cũ và thứ
nghiệm. Tuy nhiên, các giao diện đơn cho sự nhận diện ảnh ở trong module này. Code
sau này chúng được chuyên dụng cho nhận diện mặt và chúng được ứng dụng rộng rãi
cho mục đích đó.
- HIGHGUI và CVCAM được đặt trong cùng thư mục là “otherlibs”.
+ HIGHGUI : chứa các giao diện vào ra cơ bản, nó cũng chứa các khả năng cửa sổ
mở rộng và vào ra video.
+ CVCAM : chứa các giao diện cho video truy cập qua DirectX trên nền Windows
32 bits.
Kèm theo thư viện là tài liệu hướng dẫn và các ví dụ mẫu thể hiện một phần các
chức năng của công cụ OpenCV.
Các chức năng của openCV tập trung vào thu thập ảnh, xử lí ảnh và các thuật tốn
phân tích dữ liệu ảnh, bao gồm:
- Truy xuất ảnh và phim: đọc ảnh số từ camera, từ file, ghi ảnh và phim
- Cấu trúc dữ liệu ảnh số và các dữ liệu hỗ trợ cần thiết: ma trận, vector, chuỗi, xâu
và cây
- Xử lí ảnh căn bản: các bộ lọc có sẵn, tìm chi tiết cạnh, góc, chỉnh đổi màu, phóng
to thu nhỏ, và hiệu chỉnh histograms
- Xử lí cấu trúc: tìm viền, nhận chuyển động, thay đổi trong không gian 3D, đối
chiếu bản mẫu, xấp xỉ các đơn vị hình học cơ sở - mặt phẳng, đa giác, ellipse, đường
thẳng...
- Phân tích dữ liệu ảnh: nhận dạng thực thể, theo dõi các chi tiết và phân tích
chuyển động
- Tạo giao diện đơn giản: hiển thị ảnh, thao tác bàn phím, chuột, thanh trượt để
chỉnh thơng số (nếu cần thiết các bạn có thể tự tạo thêm các phím điều khiển thơng qua
thao tác chuột, hoặc tích hợp thêm các thư viện về giao diện như wxWidgets)
- Chức năng vẽ, chú thích lên ảnh.
1.8.2 Hàm cho một số chức năng cụ thể
a) Load ảnh.
•IplImage: Kiểu cấu trúc lưu giữthông tin file ảnh cần load, như: định dạng, kích
thước, dung lượng, màu sắc,…
• cvLoadImage(): Hàm load ảnh.
• cvNamedWindow(): Thiết lập cửa sổ để hiện thị ảnh.
• cvShowImage(): Hiển thi ảnh.
• cvWaitKey(0): Chờ bấm phím bất kỳ để kết thúc chương trình.
• cvReleaseImage( ): Xóa ảnh
• cvDestroyWindow( ): Xóa cửa sổ.
b) Chức năng Lọc Nhiễu.
• cvCreateImage(): Tạo 1 ảnh mới có các thơng số tương ưng với ảnh gốc.
• cvSmooth(): Thưc hiện bộ lọc trung bình.
• cvNamedWindow(): Tạo cửa sổ hiển thị ảnh. Nhận dạng ảnh sử dụng thuật tốn.
c) Đổi màu ảnh
• cvCvtColor(): Đổi màu ảnh.
d) Đọc ảnh từ VIDEO.
• cvNamedWindow( ): Tạo cửa sổ để hiển thị ảnh.
• CvCapture: Cấu trúc chứa thơng tin của File AVI.
• cvCreateFileCapture(): Lấy thơng số từ File Avi được Load. hệ thống sẽ đọc các
ảnh từ đoạn VIDEO và xếp chúng thành một dãy các ảnh động liên tiếp nhau nên ta
cũng có cảm giác như đang xem một VIDEO.
e) Đọc ảnh từ Camara
• cvCreateCameraCapture(0): Hoạt động tương tự như hàm
•
cvCreateFileCapture(): Webcam máy tính sẽ bật lên,hệ thống sẽ nhận ảnh từ
CAMERA.
CHƯƠNG 2. TÌM HIỂU VÀ PHÂN TÍCH CÁC THUẬT TỐN
FACENET TRONG KERAS
2.1 Hệ thống nhận diện khuôn mặt
2.1.1 Các ứng dụng phổ biến
Vào năm 2012, facebook bắt đầu có chức năng nhận diện khuôn mặt.
Vào năm 2018, apple bắt đầu tích hợp chức năng nhận diện khn mặt trong các
dịng sản phẩm iphone X. Sau đó, một xu hướng các smart phone ứng dụng nhận diện
khuôn mặt ra đời.
Một số ngân hàng ở Autralia bắt đầu ứng dụng xác thực khuôn mặt trong các giao
dịch ATM.
Tại Trung Quốc, hệ thống nhận diện khn mặt được triển khai trên tồn quốc giúp
chấm điểm công dân và đồng thời xác minh nhiều tội phạm lẩn trốn.
Cịn tại cơ quan tơi, hệ thống nhận diện khuôn mặt được nghiên cứu in-house áp
dụng để chấm công cho nhân viên.
Tôi nghĩ rằng nhận diện khuôn mặt có tính ứng dụng cao. Rất nhiều cơng ty, doanh
nghiệp và quốc gia đang cần.
2.1.2 Các loại hệ thống xác thực
Hầu hết các hệ thống xác thực sẽ dựa trên thông tin sinh trắc để định danh một
người. Các thông tin sinh trắc là những thông tin duy nhất với mỗi người. Đó có thể là
vân tay, ADN, vân mắt, khuôn mặt (không phẫu thuật thẩm mỹ, hãy thả lỏng khn mặt
nhất có thể, khơng chu mơi, nháy mắt, tạo kiểu cute các thứ), hình dạng, dáng đi,….
Theo đó, có vơ số các phương pháp xác thực khác nhau, tùy vào việc sử dụng thông
tin sinh trắc nào. Ở Việt Nam thì chắc phổ biến nhất là xác thực bằng vân tay.
Trước đây khi computer vision chưa phát triển thì các hệ thống xác thực bằng vân
tay, bằng vân mắt được áp dụng khá phổ biến. Vài năm gần đây, xác thực bằng khuôn
mặt mới được áp dụng rộng rãi. Xét về độ chính xác thì các hệ thống xác thực vân tay,
vân mắt đáng tin cậy hơn so với nhận diện khn mặt vì dữ liệu khơng thay đổi, trong
khi khn mặt một người có thể thay đổi qua thời gian và chịu sự co dãn.
Tuy nhiên hệ thống nhận diện khn mặt được ưa chuộng vì q trình xác thực
nhanh, có thể xác thực từ xa, khơng cần phải tiếp xúc như vân tay, vân mắt. Bạn được
phép nhìn người khác nhưng muốn động chạm thì cần phải được sự xin phép của họ.
2.1.3 Các phương pháp xác thực khuôn mặt
a. Phương pháp truyền thống
Các phương pháp truyền thống: Xác thực khn mặt bằng cách trích xuất ra một
land mark cho face. Land mark như là một bản đồ xác định các vị trí cố định trên khuôn
mặt của một người như mắt, mũi, miệng, lông mày,….
Như
thay
vậy
land
Hình 2. 1 Phương pháp nhận diện truyền thống
mark face đã loại bỏ những phần thông tin không cần thiết và giữ lại những thơng tin
chính. Khi đó mỗi khn mặt sẽ được nén thành một véc tơ n chiều. Thông thường là 68
chiều.
Sử dụng đầu vào là land mark face, áp dụng các thuật toán cổ điển như SVM, kNN, Naive Bayes, Random Forest, MLP, … để phân loại khuôn mặt cho một người.
b. Nhận diện 3D
Kĩ thuật nhận diện 3D sẽ sử dụng không gian 3 chiều để biểu diễn khn mặt. Từ
thơng tin này có thể xác định các đặc trưng khác nhau trên bề mặt khuôn mặt như các
đường countour của mắt, mũi, cằm.
Một lợi thế của nhận diện khuôn mặt 3D là không bị ảnh hưởng bởi những thay đổi
về ánh sáng như các phương pháp 2D. Dữ liệu 3D đã cải thiện đáng kể độ chính xác của
nhận dạng khn mặt.
Để tạo ra một ảnh 3D, một cụm ba camera được áp dụng. Mỗi camera sẽ hướng vào
một góc khác nhau. Tất cả các camera này phối hợp cùng nhau trong việc theo dõi
khuôn mặt của một người trong thời gian thực và có thể nhận diện chúng.
Hình 2. 2 Phương pháp nhận diện 3D
c. Các phương pháp nhận diện khác
Ngồi ra cịn có một số phương pháp nhận diện khuôn mặt như nhận diện cảm biến
da và phương pháp kết hợp.
Phương pháp kết hợp có thể sử dụng nhiều thơng tin từ đồng thời land mark face,
nhận diện 3D, nhận diện cảm biến da và mang lại độ chính xác cao hơn vì nó nhận diện
tốt được trong các trường hợp khn mặt có các biểu cảm như cau mày, chớp mắt, co
dãn khi cười, nói và ít nhạy cảm với chiếu sáng.
2.2 Các bài tốn khác nhau về face
Có nhiều lớp bài toán khác nhau liên quan đến dữ liệu face. Một trong số 4 bài toán
phổ biến nhất dựa trên nhu cầu thực tế cần áp dụng đó là:
Nhận diện khn mặt (face identification): Đây là bài toán match one-many. Bài
toán này sẽ trả lời cho câu hỏi “người này là ai?” bằng cách nhận input là ảnh khuôn
mặt và output là nhãn tên người trong ảnh. Tác vụ này thường được áp dụng trong các
hệ thống chấm công, hệ thống giám sát công dân, hệ thống cammera thông minh tại các
đô thị.
Xác thực khuôn mặt (face verification): Đây là bài toán match one-one. Bài toán
này trả lời cho câu hỏi “có phải 2 ảnh đầu vào là cùng một người khơng?” Kết quả
output sẽ là yes hoặc no. Bài tốn thường được dùng trong các hệ thống bảo mật. Xác
thực khuôn mặt trên điện thoại của bạn là một bài tốn như vậy.
Do có mối quan hệ khá gần nên face recognition là tên gọi chung cho cả hai thuật
toán face identification và face verification.
Tìm kiếm khn mặt đại diện (face clustering): Chắc hẳn bạn đã từng đọc hoặc
xem video về người có khn mặt đặc trưng nhất thế giới. Đơn giản là ta chỉ cần tính ra
trung bình của các ảnh khn mặt để thu được centroid image. Tính similarity giữa
centroid với tồn bộ khn mặt cịn lại để thu được khuôn mặt đặc trưng nhất similarity
nhất với centroid. Tương tự như vậy bạn cũng có thể tìm ra khn mặt đặc trưng nhất
của nam, nữ các quốc gia.
Hình 2. 3 Bài tốn tìm kiếm khn mặt đại diện ( face clustering)
Tìm kiếm khn mặt tương đương (face similarity): Chắc các bạn đã từng
nghịch qua một số ứng dụng của facebook như bạn giống diễn viên điện ảnh nào nhất.
Thuật toán này khá đơn giản, chỉ cần đo lường ảnh mà bạn upload lên với các ảnh diễn
viên sẵn có và chọn ra một cái gần nhất. Nhưng đừng tin là mình là họ nhé. Có thể đây
chỉ là 1 hình ảnh hai số phận.
2.3 Thuật tốn Facenet
Facenet chính là một dạng siam network có tác dụng biểu diễn các bức ảnh trong
một không gian eucledean chiều (thường là 128) sao cho khoảng cách giữa các véc tơ
embedding càng nhỏ, mức độ tương đồng giữa chúng càng lớn.
2.3.1 Khái quát thuật tốn
Hầu hết các thuật tốn nhận diện khn mặt trước facenet đều tìm cách biểu diễn
khn mặt bằng một véc tơ embedding thơng qua một layer bottle neck có tác dụng
giảm chiều dữ liệu.
Tuy nhiên hạn chế của các thuật tốn này đó là số lượng chiều embedding
tương đối lớn (thường >= 1000) và ảnh hưởng tới tốc độ của thuật toán.
Thường chúng ta phải áp dụng thêm thuật toán PCA để giảm chiều dữ liệu để
giảm tốc độ tính tốn.
Hàm loss function chỉ đo lường khoảng cách giữa 2 bức ảnh. Như vậy trong
một đầu vào huấn luyện chỉ học được một trong hai khả năng là sự giống
nhau nếu chúng cùng 1 class hoặc sự khác nhau nếu chúng khác class mà
không học được cùng lúc sự giống nhau và khác nhau trên cùng một lượt
huấn luyện.
Facenet đã giải quyết cả 2 vấn đề trên bằng các hiệu chỉnh nhỏ nhưng mang lại hiệu
quả lớn:
Base network áp dụng một mạng convolutional neural network và giảm
chiều dữ liệu xuống chỉ cịn 128 chiều. Do đó q trình suy diễn và dự báo
nhanh hơn và đồng thời độ chính xác vẫn được đảm bảo.
Sử dụng loss function là hàm triplot loss có khả năng học được đồng thời sự
giống nhau giữa 2 bức ảnh cùng nhóm và phân biệt các bức ảnh khơng cùng
nhóm. Do đó hiệu quả hơn rất nhiều so với các phương pháp trước đây.
2.3.2 Triple loss
Trong facenet, quá trình encoding của mạng convolutional neural network đã giúp
ta mã hóa bức ảnh về 128 chiều. Sau đó những véc tơ này sẽ làm đầu vào cho hàm loss
function đánh giá khoảng cách giữa các véc tơ.
Để áp dụng triple loss, chúng ta cần lấy ra 3 bức ảnh trong đó có một bức ảnh là
anchor. Trong 3 ảnh thì ảnh anchor được cố định trước. Chúng ta sẽ lựa chọn 2 ảnh còn
lại sao cho một ảnh là negative (của một người khác với anchor) và một ảnh là positive
(cùng một người với anchor).
Hình 2. 4 Triple loss
Kí hiệu ảnh Anchor, Positive, Negative lần lược là A, P, N
Mục tiêu của hàm loss function là tối thiểu hóa khoảng cách giữa 2 ảnh khi chúng là
negative và tối đa hóa khoảng cách khi chúng là positive. Như vậy chúng ta cần lựa
chọn các bộ 3 ảnh sao cho:
Ảnh Anchor và Positive khác nhau nhất: cần lựa chọn để khoảng cách lớn.
Điều này cũng tương tự như bạn lựa chọn một ảnh của mình hồi nhỏ so với
hiện tại để thuật tốn học khó hơn. Nhưng nếu nhận biết được thì nó sẽ thông
minh hơn.
Ảnh Anchor và Negative giống nhau nhất: cần lựa chọn để khoảng cách
nhỏ. Điều này tương tự như việc thuật toán phân biệt được ảnh của một
người anh em giống bạn với bạn.
Triplot loss function luôn lấy 3 bức ảnh làm input và trong mọi trường hợp ta kì
vọng:
d(A,PB) < d(A,N)
(1)
Để làm cho khoảng cách giữa vế trái và vế phải lớn hơn, chúng ta sẽ cộng thêm vào
vế trái một hệ số không âm rất nhỏ. Khi đó (1) trở thành:
Như vậy hàm loss function sẽ là:
Trong đó n là số lượng các bộ 3 hình ảnh được đưa vào huấn luyện.
Sẽ khơng ảnh hưởng gì nếu ta nhận diện đúng ảnh Negative và Positive là cùng cặp
hay khác cặp với Anchor. Mục tiêu của chúng ta là giảm thiểu các trường hợp hợp mơ
hình nhận diện sai ảnh Negative thành Postive nhất có thể. Do đó để loại bỏ ảnh hưởng
của các trường hợp nhận diện đúng Negative và Positive lên hàm loss function. Ta sẽ
điều chỉnh giá trị đóng góp của nó vào hàm loss function về 0.
Tức là nếu:
sẽ được điều chỉnh về 0. Khi đó hàm loss function trở thành:
Như vậy khi áp dụng Triple loss vào các mơ hình convolutional neural network
chúng ta có thể tạo ra các biểu diễn véc tơ tốt nhất cho mỗi một bức ảnh. Những biểu
diễn véc tơ này sẽ phân biệt tốt các ảnh Negative rất giống ảnh Positive. Và đồng thời
các bức ảnh thuộc cùng một label sẽ trở nên gần nhau hơn trong không gian chiếu
euclidean.
Một chú ý quan trọng khi huấn luyện mơ hình siam network với triplot function đó
là chúng ta luôn phải xác định trước cặp ảnh (A, P) thuộc về cùng một người. Ảnh (N)
sẽ được lựa chọn ngẫu nhiên từ các bức ảnh thuộc các nhãn còn lại. Do đó cần thu thập
ít nhất 2 bức ảnh/1 người để có thể chuẩn bị được dữ liệu huấn luyện.
2.3.3 Lựa chọn triple image input
Nếu lựa chọn triple input một cách ngẫu nhiên có thể ảnh khiến cho bất đẳng thức
(1) dễ dàng xảy ra vì trong các ảnh ngẫu nhiên, khả năng giống nhau giữa 2 ảnh là rất
khó. Hầu hết các trường hợp đều thỏa mãn bất đẳng thức (1) và không gây ảnh hưởng
đến giá trị của loss function do giá trị của chúng được set về 0. Như vậy việc học những
bức ảnh Negative quá khác biệt với Anchor sẽ khơng có nhiều ý nghĩa.
Để mơ hình khó học hơn và đồng thời cũng giúp mơ hình phân biệt chuẩn xác hơn
mức độ giống và khác nhau giữa các khuôn mặt, chúng ta cần lựa chọn các input theo
bộ 3 khó học (hard triplets).
Ý tưởng là chúng ta cần tìm ra bộ ba (A,N,P B) sao cho (1) là gần đạt được đẳng
thức (xảy ra dấu =) nhất. Tức là d(A,P) lớn nhất và d(A,N) nhỏ nhất. Hay nói cách khác
với mỗi Anchor A cần xác định:
Hard Positive: Bức ảnh Positive có khoảng cách xa nhất với Anchor tương ứng với
nghiệm:
Hard Negative: Bức ảnh Negative có khoảng cách gần nhất với Anchor tương ứng
với nghiệm:
Với i,j là nhãn của người trong ảnh.