Và đối với một trường công nghệ thông tin thì việc áp dụng khoa học kĩ thuật để hỗ trợ quản lý trong trường hợp này là điều nên có.. Vì lẽ đó nhóm chúng em quyết định thực hiện đề tài “X
Trang 1i
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN &
TRUYỀN THÔNG VIỆT HÀN
Khoa Khoa Học Máy Tính
ĐỒ ÁN CHUYÊN NGÀNH 2
XÂY DỰNG ỨNG DỤNG NHẬN BIẾT
THÔNG TIN SINH VIÊN VKU
Sinh viên thực hiện: Nguyễn Bảo Minh Hoàng
Nguyễn Đình Trọng
Giảng viên hướng dẫn: PGS.TS Huỳnh Công Pháp
Đà Nẵng, tháng 05 năm 2021
Trang 2ii
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN &
TRUYỀN THÔNG VIỆT HÀN Khoa Khoa Học Máy Tính
ĐỒ ÁN CHUYÊN NGÀNH 2 XÂY DỰNG ỨNG DỤNG NHẬN BIẾT
THÔNG TIN SINH VIÊN VKU
Nguyễn Đình Trọng – 17IT112
Giảng viên hướng dẫn: PGS.TS Huỳnh Công Pháp
Đà Nẵng, tháng 05 năm 2021
Trang 3iii
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
Ký, ghi rõ họ tên
Trang 4iv
LỜI CẢM ƠN
Trong xã hội loài người phát triển, trong thời đại đang diễn ra cuộc cách mạng công nghiệp lần thứ 4, con người đang đòi hỏi nhiều hơn từ sự trợ giúp của máy móc trong nhiều lĩnh vực như: y tế, kinh doanh, học tập, Và dưới sự phát triển của AI, thế giới đang có bước chuyển mình đột phá trong nhiều lĩnh vực, một trong số đó là giao thông với việc ra đời của xe tự lái Và để phát triển hoàn thiện xe tự lái thì không thể thiếu sự hiện diện của xử lý ảnh, thị giác máy tính trong việc xử lý các tín hiệu xung quanh, từ con người, vật cản, các biển báo, Chính vì lẽ đó nên chúng em quyết định chọn đề tài “Xây dựng ứng dụng nhận biết thông tin sinh viên VKU” để hiểu rõ hơn về các công nghệ áp dụng AI nói chung và xử lý ảnh nói riêng
Trong quá trình thực hiện đề tài vẫn còn những hạn chế về kiến thức và công nghệ, nếu có chỗ nào sai sót, mong quý thầy cô nhận xét để đề tài hoàn thiện hơn nữa trong tương lai
Đặc biệt em xin chân thành gửi lời cảm ơn sâu sắc đến thầy giáo PGS TS Huỳnh Công Pháp và ThS Nguyễn Anh Tuấn, người đã tận tình hướng dẫn, trực tiếp chỉ bảo và tạo mọi điều kiện giúp đỡ em trong suốt quá trình làm đồ án học phần Đồ
Trang 5v
MỤC LỤC
DANH MỤC CÁC TỪ VIẾT TẮT VI DANH MỤC HÌNH VẼ VII
MỞ ĐẦU 1
1 GIỚI THIỆU 1
2 MỤC TIÊU CỦA ĐỀ TÀI 1
3 NỘI DUNG VÀ KẾ HOẠCH THỰC HIỆN 1
4 BỐ CỤC BÁO CÁO 2
CHƯƠNG 1 TỔNG QUAN VỀ LÝ THUYẾT 3
1 GIỚI THIỆU VỀ PYTHON 3
2 GIỚI THIỆU VỀ AI,MACHINE LEARNING VÀ DEEP LEARNING 4
3 GIỚI THIỆU VỀ KERAS 7
4 GIỚI THIỆU VỀ TRANSFER LEARNING 12
5 GIỚI THIỆU VỀ NHẬN DIỆN KHUÔN MẶT 14
6 GIỚI THIỆU VỀ MTCNN 15
7 GIỚI THIỆU VỀ VGG16 MODEL 15
8 GIỚI THIỆU VỀ PYQT5 15
9 KẾT CHƯƠNG 1 16
CHƯƠNG 2 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 17
1 YÊU CẦU BÀI TOÁN 17
2 TRIỂN KHAI 17
3 KẾT CHƯƠNG 2 21
CHƯƠNG 3 XÂY DỰNG ỨNG DỤNG 22
1 GIAO DIỆN 22
2 CHỨC NĂNG 23
3 KẾT CHƯƠNG 3 23
CHƯƠNG 4 KẾT LUẬN 24
1 KẾT QUẢ ĐẠT ĐƯỢC 24
2 HƯỚNG NGHIÊN CỨU 25
PHỤ LỤC 27
Trang 6vi
DANH MỤC CÁC TỪ VIẾT TẮT
VIẾT TẮT NỘI DUNG
Trang 7vii
DANH MỤC HÌNH VẼ
Hình 1-1 Mô hình CNN 6
Hình 1-2 Mối liên hệ giữa AI, ML và DL 7
Hình 1-3 So sánh mô hình ML truyền thống và Transfer Learning 13
Hình 1-4 Kiến trúc của mạng VGG16 15
Hình 2-1 Các bước thực hiện 17
Hình 3-1 Giao diện ứng dụng 1 22
Hình 3-2 Giao diện ứng dụng nhận dạng khuôn mặt 23
Hình 4-1 Biểu đồ loss 24
Hình 4-2 Biểu đồ accuracy 25
Trang 8Và đối với một trường công nghệ thông tin thì việc áp dụng khoa học kĩ thuật
để hỗ trợ quản lý trong trường hợp này là điều nên có Với sự phát triển của AI, Machine Learning, Data Processing trong những năm gần đây chính là công cụ cần thiết để áp dụng vào bài toán lần này Vì lẽ đó nhóm chúng em quyết định thực hiện đề tài “Xây dựng ứng dụng nhận biết thông tin sinh viên VKU” với sự hỗ trợ của Deep Learning để nhận dạng khuôn mặt đối tượng và cho ra thông tin của đối tượng đó nhằm biết được một đối tượng có phải là sinh viên của trường VKU hay không
2 Mục tiêu của đề tài
Từ vấn đề đặt ra ở trên, mục tiêu của chúng em chính là tạo 1 sản phẩm ứng dụng nhằm kiểm soát hay theo dõi được quá trình ra/vào của các sinh viên(sau này có thể mở rộng ra gồm CBVC) trong trường
3 Nội dung và kế hoạch thực hiện
Đầu tiên phải tìm hiểu các phương pháp nhận biết/nhận dạng khuôn mặt phổ biến hiện nay Ưu và nhược điểm của mỗi loại Sau đó chọn phương pháp thích hợp, tối ưu nhất cho bài toán
Thực nghiệm trên máy tính cá nhân trước với số face ít Sau khi thu được kết quả tốt mới tăng số lượng data
Trang 92
Chương trình được viết hoàn toàn bằng ngôn ngữ lập trình Python Giao diện được xây dựng trên nền tảng PyQt5
4 Bố cục báo cáo
Sau phần Mở đầu, báo cáo được trình bày trong ba chương, cụ thể như sau:
Chương 1 Tổng quan về lý thuyết: Trong chương này, báo cáo trình bày các
khái niệm, đặc điểm,
Chương 2 Phân tích thiết kế hệ thống
Chương 3 Xây dựng ứng dụng
Cuối cùng là Kết luận, Tài liệu tham khảo và Phụ lục liên quan đến đề tài
Trang 103
Chương 1 TỔNG QUAN VỀ LÝ THUYẾT
1 Giới thiệu về Python
1.1 Khái niệm
Python là một ngôn ngữ lập trình thông dịch (interpreted), hướng đối tượng (object-oriented), và là một ngôn ngữ bậc cao (high-level) ngữ nghĩa động (dynamic semantics) Python hỗ trợ các module và gói (packages), khuyến khích chương trình module hóa và tái sử dụng mã Trình thông dịch Python và thư viện chuẩn mở rộng có sẵn dưới dạng mã nguồn hoặc dạng nhị phân miễn phí cho tất cả các nền tảng chính và
có thể được phân phối tự do
1.2 Đặc điểm
Có các bộ thư viện chuẩn và các module ngoài, đáp ứng tất cả các nhu cầu lập trình
Jython, hoặc Net cho IronPython)
1.3 Ưu điểm
và CORBA, Java… Python cũng được hỗ trợ bởi Internet Communications Engine (ICE) và nhiều công nghệ kết nối khác
Trang 114
những hệ điều hành khác Thậm chí có cả những phiên bản chạy trên NET, máy ảo Java, và điện thoại di động (Nokia Series 60) Với cùng một mã nguồn sẽ chạy giống nhau trên mọi nền tảng
mã nguồn mở được chia sẻ trên mạng
Cài đặt Python dùng giấy phép nguồn mở nên được sử dụng và phân tối tự do, ngay cả trong việc thương mại Giấy phép Python được quản lý bởi Python Software Foundation
1.4 Nhược điểm
lặp do…while và switch….case
2 Giới thiệu về AI, Machine Learning và Deep Learning
Tuy nhiên hiện nay, công nghệ AI vẫn đang còn rất nhiều hạn chế Đơn cử như Alexa - một quản gia tuyệt vời, một trong những biểu tượng phổ biến nhất về ứng dụng của trí thông minh nhân tạo nhưng vẫn không thể vượt qua bài kiểm tra Turing
Trang 125
Tóm lại, những gì chúng ta đang thực hiện với AI hiện nay nằm trong khái niệm “AI hẹp” (Narrow AI) Công nghệ này có khả năng thực hiện các nhiệm vụ cụ thể một cách tương tự, hoặc tốt hơn con người Ví dụ về “AI hẹp” trong thực tế như công nghệ phân loại hình ảnh của Pinterest hay nhận diện khuôn mặt để tag bạn bè trên Facebook
2.2 Giới thiệu về Machine Learning
Machine Learning là một thuật ngữ rộng để chỉ hành động bạn dạy máy tính cải thiện một nhiệm vụ mà nó đang thực hiện Cụ thể hơn, machine learning đề cập tới bất
kỳ hệ thống mà hiệu suất của máy tính khi thực hiện một nhiệm vụ sẽ trở nên tốt hơn sau khi hoàn thành nhiệm vụ đó nhiều lần Hay nói cách khác, khả năng cơ bản nhất của machine learning là sử dụng thuật toán để phân tích những thông tin có sẵn, học hỏi từ nó rồi đưa ra quyết định hoặc dự đoán về một thứ gì đó có liên quan Thay vì tạo
ra một phần mềm với những hành động, hướng dẫn chi tiết để thực hiện một nhiệm vụ
cụ thể, máy tính được “huấn luyện” bằng cách sử dụng lượng dữ liệu và các thuật toán
Sau khi máy đã nhận được đủ dữ liệu cần thiết về mèo, nó phải biết cách tìm một con mèo trong một bức tranh - “Nếu trong hình ảnh có chứa các chi tiết X, Y, hoặc Z nào đó, thì 95% khả năng đó là một con mèo”
Trang 136
2.3 Giới thiệu về Deep Learning
Deep Learning là một phương pháp của Học máy Nó cho phép chúng ta huấn luyện một AI có thể dự đoán được các đầu ra dựa vào một tập các đầu vào Cả hai phương pháp có giám sát và không giám sát đều có thể sử dụng để huấn luyện
Mạng nơ ron
Cũng giống động vật, bộ não của AI cũng có các nơ ron Chúng được biểu diễn bằng các vòng tròn Các nơ ron này đều đã được liên kết
Hình 1-1 Mô hình CNN
Các nơ ron được nhóm vào 3 loại layer khác nhau:
trong việc tạo mạng nơ ron là quyết định số lượng các hidden layer này, cũng như số các nơ ron cho mỗi layer
Trang 147
Hình 1-2 Mối liên hệ giữa AI, ML và DL
3 Giới thiệu về Keras
Keras là một library được phát triển vào năm 2015 bởi François Chollet, là một
kỹ sư nghiên cứu deep learning tại google Nó là một open source cho neural network được viết bởi ngôn ngữ python keras là một API bậc cao có thể sử dụng chung với các thư viện deep learning nổi tiếng như Tensorflow(được phát triển bởi Google), CNTK(được phát triển bởi Microsoft), Theano(người phát triển chính Yoshua Bengio) Keras có một số ưu điểm như:
Xây dựng bộ xương cho model
Gồm 2 module nhỏ:
Models sub-module
Trang 158
Layers sub-module chứa các layers chuyên dụng để ta build các model như
CNN,RNN,GANs… Có rất nhiều layers nên ta chỉ quan tâm đến một số layer
thường sử dụng
thường Các tham số quan tâm
units chiều output
activation dùng để chọn activation
input_dim chiều input nếu là layer đầu tiên
use_bias có sử dụng bias ko,true or false
kernel_initializer khởi tạo giá trị đầu cho tham số trong layer trừ bias
bias_initializer khởi tạo giá trị đầu cho bias
kernel_regularizer regularizer cho coeff
bias_regularizer regularizer cho bias
activity_regularizer có sử dụng regularizer cho output không?
kernel_constraint,bias_constraint có ràng buộc về weight không?
activation thay thế)
overfiting Tham số cần chú ý :
o rate tỉ lệ dropout
Trang 169
image tham số cần chú ý:
filters số filter của convolution layer
kernel_size size window search trên image
strides bước nhảy mỗi window search
padding same là dùng padding, valid là không
data_format format channel ở đầu hay cuối
o UpSampling1D, UpSampling2D: ngược lại với convolution layer size
o ZeroPadding1D,ZeroPadding2D dùng để padding trên image
max) và giúp giảm parameter khi training
pool_size size pooling
o AveragePooling1D,AveragePooling2D giống như maxpooling nhưng dùng Average
o GlobalMaxPooling1D,GlobalMaxPooling2D
o LSTM Long Short-Term Memory layer
embbding sang một không gian mới có chiều nhỏ hơn và được learning from data thay cho one-hot lad hard code
layer như các vector
Trang 1710
o Add: cộng các layers
o Subtract: trừ các layers
o Multiply: nhân các layer
o Average tính trung bình các layers
o Dot: Nhân matrix giữ 2 layers
muốn, gồm 3 method chúng ta cần chú ý là build,call và compute_output_shape Tiền xử lý dữ liệu
o TimeseriesGenerator dùng để tạo dữ liệu cho time series
o skipgrams tạo data trong model skip gram,kết quả trả về 2 tuple nếu word xuất hiện cùng nhau là 1 nếu ko là 0
documment
o text_to_word_sequence covert text thành sequence
Function trong bộ xương của model
o binary_crossentropy dùng trong classifier 2 class
thực nghiệm
Trang 1811
class
o SGD Stochastic gradient descent optimizer
o RMSprop RMSProp optimizer
o Adam Adam optimizer
o linear như trong linear regression
o softmax dùng trong multi classifier
o tanh range (-1,1)
model để chạy lại thì callback giúp t làm điều này
categories, and 10,000 test images
o mnist data 70k image data hand written
o fashion_mnist Dataset of 70k 28x28 grayscale images of 10 fashion categories
o reuters 11,228 newswires from Reuters, labeled over 46 topics
Trang 1912
tiếng.Xception,VGG16,VGG19,resnet50,inceptionv3,
InceptionResNetV2,MobileNet,DenseNet,NASNet cẩu trúc chung như sau :
pretraining
thì nó dùng những thư viện đã xây dựng sẵn rồi và dùng thôi Giúp tiết kiệm dc thời gian và chí phí Trong keras có hỗ trợ 3 backend là tensorflow,theano và CNTK
kernel_initializer and bias_initializer mặc định là glorot_uniform phân phối uniform với giá trị 1/căn(input+output)
thường dùng là L1 và L2
o plot_model giúp chúng ta plot model
o to_categorical covert class sang binary class matrix
4 Giới thiệu về Transfer Learning
Transfer learning là việc ứng dụng kỹ năng/tri thức mình học được từ vấn đề này, với ứng dụng này sang vấn đề khác với ứng dụng khác có liên quan
Transfer learning nhằm cải thiện việc học hàm cho ứng dụng
Trang 2013
Hình 1-3 So sánh mô hình ML truyền thống và Transfer Learning
Trong Machine Learning và Deep Learning, thì transfer learning là kỹ thuật cho phép tận dụng những gì mình học được từ tập dữ liệu/ứng dụng/kiến trúc này sang tập
dữ liệu/ứng dụng/kiến trúc khác Khác với học máy thông thường, từng nhiệm vụ sẽ có một hệ thống học riêng như ở hình ví dụ trên
Tại sao nên dùng Transfer Learning?
Không đủ dữ liệu: DL cần rất nhiều dữ liệu, và ngốn rất nhiều tài nguyên để
học trên tập dữ liệu và ứng dụng đó và việc huấn luyện DL trên tập dữ liệu ít phần nhiều là không hiệu quả Vậy ngoài kỹ thuật data augmentation trước đó, transfer learning cũng là một giải pháp cho vấn đề này
Không đủ tài nguyên: Việc học trên tập dữ liệu lớn rất ngốn nhiều tài nguyên
Transfer learning sẽ góp phần giảm phần nào thời lượng training
Cải thiện chất lượng: Rất nhiều trường hợp transfer learning cải thiện chất
lượng dự đoán của Target Task so với việc train lại từ đầu Lý do có thể do Source Network được train với dữ liệu lớn và học được tính khái quát hóa tốt hơn, hay việc train với Target Task trong khi mạng vẫn có thông tin của Source Task cho tách động
của multi-task learning
Phương thức Transfer Learning
Trang 2114
Transfer learning as a starting point: Dùng kết quả của mạng pre-trained như
VGG19, InceptionNet, ResNet101 làm kết quả dự đoán ban đầu Thiết kế thuật toán fusion kết quả của nhiều mạng pre-trained
Transfer learning for representation: Lấy đầu ra của layer gần cuối và coi như
là feature vector Trong bài toán nhận dạng vật thể, mạng neural network có thể coi như một thuật toán tự học cách biểu diễn dữ liệu cho bài toán nhận dạng (learned representation) với phần nhận dạng đơn giản (thường dùng Softmax và one-hot coding) Vector biểu diễn đó có thể đưa vô các thuật toán phân loại phức tạp hơn như SVM
Warm restart via fine tuning: Sử dụng mạng đã train từ tập dữ liệu lớn như
ImageNet, rồi train lại với dữ liệu khác ở learning rate nhỏ hơn
5 Giới thiệu về nhận diện khuôn mặt
Công nghệ AI nhận dạng khuôn mặt là công nghệ cho phép nhận dạng một người cụ thể từ ảnh hoặc 1 đoạn video Cách thức làm việc của công nghệ này là so sánh hình ảnh khuôn mặt với những hình ảnh sẵn có trong cơ sở dữ liệu để đưa ra kết quả
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
Quá trình mà sinh trắc học nhận diện khuôn mặt hoạt động bao gồm:
phải tách khuôn mặt ra khỏi khung cảnh còn lại trước đã
hệ thống nhận diện cũng vậy, nhưng nó thực hiện đánh giá các đặc điểm ở 1 mức độ cao hơn
nên các đặc điểm của khuôn mặt Các hệ thống nhận diện gương mặt định nghĩa những điểm này là những điểm nút
không