1 BÁO CÁO LUẬN VĂN TỐT NGHIỆP NHẬN DIỆN NGƯỜI ĐEO KHẨU TRANG DÙNG RASPBERRY PI 3 B+ ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN VIỄN THÔNG o0o 2 Lời cảm ơn 3 MỤ.
Trang 1BÁO CÁO LUẬN VĂN TỐT NGHIỆP
NHẬN DIỆN NGƯỜI ĐEO KHẨU TRANG DÙNG RASPBERRY PI 3 B+
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN VIỄN THÔNG
-o0o -
Trang 2Lời cảm ơn
Trang 3MỤC LỤC
CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI NHẬN DIỆN NGƯỜI ĐEO KHẨU TRANG 6
1.1 Tính cấp thiết của đề tài 6
1.2 Đối tượng và phạm vi nghiên cứu 7
1.2.1 Đối tượng 7
1.2.2 Phạm vi nghiên cứu 7
1.3 Nhiệm vụ của đề tài 8
CHƯƠNG 2 LÝ THUYẾT VỀ DEEP LEARNING 9
2.1 Lớp tích chập thông thường 9
2.2 Lớp tích chập Depthwise Seperable 10
2.3 Mô hình mạng Mobilenet 12
2.3.1 Mạng MobileNet v1 12
2.3.2 Mạng MobileNet v2 14
2.4 Mô hình SSD 14
CHƯƠNG 3 THIẾT LẬP VÀ KẾT NỐI RASPBEERY PI 3 17
3.1 Giới thiệu về Raspberry Pi 3 model B+ 20
3.2 RPI Camera Error! Bookmark not defined 3.3 Thiết lập RPI và RPI camera 21
CHƯƠNG 4 XÂY DỰNG HỆ THỐNG NHẬN DIỆN NGƯỜI ĐEO KHẨU TRANG TRÊN RASPBERRY PI 3 24
4.1 Sơ đồ khối của hệ thống 24
4.1.1 Quy trình thực thi của hệ thống 24
4.1.2 Quy trình xây dựng hệ thống 25
4.2 Huấn luyện mô hình nhận diện người đeo khẩu trang 26
4.2.1 Chuẩn bị dữ liệu Error! Bookmark not defined 4.2.2 Cài đặt thông số huấn luyện Error! Bookmark not defined 4.3 Lựa chọn mô hình phát hiện gương mặt Error! Bookmark not defined 4.4 Nhúng mô hình đã huấn luyện lên Raspberry Pi 3 27
CHƯƠNG 5 KẾT QUẢ THỰC HIỆN VÀ ĐÁNH GIÁ MÔ HÌNH 28
5.1 Kết quả thực nghiệm của hệ thống 28
5.2 Ưu điểm, nhược điểm của hệ thống 28
Trang 4CHƯƠNG 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 28 Tài liệu tham khảo 29
Danh sách hình vẽ
Hình 2.2 Ảnh ngõ ra khi thực hiện tích chập thông thường 10 Hình 2.3 Ảnh ngõ ra khi thực hiện tích chập depthwise 10 Hình 2.4 Thực hiện tích chập pointwise, biến đổi ảnh thành 1 channel
Trang 5Danh mục viết tắt
CNN Convolutional Neural Network Mạng nơ ron tích chập
SSD Single Shot MultiBox Detector Mô hình nhận diện
IoU Intersection of Union Tỷ lệ giao nhau giữa 2 khung
hình
Trang 6CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI NHẬN DIỆN NGƯỜI ĐEO KHẨU TRANG
Chương 1 nhằm mục đích giới thiệu đề tài Chương này giới thiệu tính câp thiết của đề tài, mục tiêu, nhiệm vụ và đối tượng nghiên cứu của đề tài này
1.1 Tính cấp thiết của đề tài
Virus Corona mới năm 2019 (còn gọi là Covid-19) là chủng virus hô hấp mới, chưa từng xuất hiện ở người và có nguồn gốc xuất phát ở Vũ Hán Theo số liệu ngày 29/8/2020 của Wikipedia, tại Việt Nam có 1040 ca nhiễm, trong đó có 676 người đã bình phục và 32
ca tử vong Vius này được đánh giá là nguy hiểm và có nguy cơ lây nhiễm cao Việc phòng chống lây lan trong cộng đồng đóng vai trò quan trọng Theo khuyến cáo của Bộ Y tế, mang khẩu trang là một trong những biện pháp phòng chống lây lan virus Corona Theo
đó, nếu như người mang virus và người chưa mang virus đều không mang khẩu trang, nguy
cơ lây nhiễm rất cao Tuy nhiên, nếu cả hai người khẩu trang, nguy cơ lây nhiễm là rất thấp (Như hình 1.1)
Hình 1.1 Tầm quan trọng của việc đeo khẩu trang [1]
Trang 7Việt Nam là một nước có khí hậu nhiệt đới, nhiệt độ thường ở mức cao (khoảng 25°-35°) Việc đeo khẩu trang thường gây nóng hoặc khó chịu dẫn đến nhiều người không
có ý thức tự đeo khẩu trang khi ở nơi công cộng Hiện nay ở nhiều tỉnh thành đã thực hiện việc phạt tiền từ 100.000-300.000 đồng đối với những người không đeo khẩu trang nơi công cộng (công viên, đường phố, phương tiện công cộng ) Tuy nhiên ở những nơi như công sở, trường học, việc kiểm soát còn gặp nhiều khó khăn do thiếu nhân lực, thiếu độ chính xác hoặc việc thực hiện đeo khẩu trang một cách đối phó
Trí tuệ nhân tạo, cụ thể là Computer Vision hiện nay trở nên ngày càng phổ biến Thay vì sử dụng việc giám sát bằng sức người, các hệ thống máy học có độ chính xác cao
và tiết kiệm hơn Convolutional Neural Network (CNN) là một trong những mô hình Deep Learning tiên tiến được sử dụng rộng rãi trong bài toán nhận diện, phân lớp Trên tinh thần nghiên cứu, phát triển ứng dụng sử dụng máy học kết hợp với nhu cầu thực tiễn, đề tài sử dụng mô hình cải tiến của mạng CNN để nhận diện người có đeo khẩu trang hay không
Đề tài góp phần nâng cao ý thức của cộng đồng, đồng thời đẩy lùi dịch bệnh
1.2 Đối tượng và phạm vi nghiên cứu
1.2.1 Đối tượng
Đề tài nghiên cứu cấu trúc và hoạt động của CNN, mô hình MobileNet, mạng SSD ứng dụng mô hình MobileNet vào bài toán nhận dạng người đeo khẩu trang Tìm hiểu cách kết nối và thực thi mô hình trên Raspberry Pi 3 Model B+, sử dụng Raspberry Pi trong bài toán nhận diện người đeo khẩu trang
1.2.2 Phạm vi nghiên cứu
Đề tài nghiên cứu thiết kế một hệ thống nhận diện người đeo khẩu trang bằng camera được xử lý bằng Raspberry Pi Việc nhận diện tập trung vào phân biệt người xuất hiện trong vùng quan sát của camera có đeo khẩu trang hay không
Trang 81.3 Nhiệm vụ của đề tài
Các công việc cần thực hiện trong đề tài là :
- Tìm hiểu về Deep Learning, các thuật toán liên quan đến CNN trong bài toán nhận dạng vật thể
- Tìm hiểu và sử dụng Raspberry trong bài toán nhận dạng
- Thiết kế một hệ thống nhận dạng người đeo khẩu trang
- Đánh giá mô hình, ưu nhược điểm của mô hình
- Đưa ra các phương pháp cải tiến và kết luận
Trang 9CHƯƠNG 2 LÝ THUYẾT VỀ DEEP LEARNING
Chương 2 trình bày một số lý thuyết về deep learning được sử dụng trong đề tài Phần 2.1, 2.2 trình bày về các loại tích chập thông thường và tích chập depthwise separable Phần 2.3 trình bày mô hình mạng mobileNet và phần 2.4 giới thiệu về mô hình SSD
2.1 Lớp tích chập thông thường
Đây là phép tính quan trọng trong CNN Ta thực hiện phép tích chập bằng cách trượt kernel/filter theo kiểu dữ liệu đầu vào Tại mỗi vị trí, ta tiến hành phép nhân ma trận
và tính tổng để đưa vào feature map Feature map này chính là một ma trận 3 chiều, trong
đó bao gồm những con số (parameter)
Tại lớp tích chập, các thông số được sử dụng bao gồm:
- Stride (S) : Số pixel bạn dịch chuyển ở mỗi lần trượt
- Padding (P) :Tăng thêm một số hàng và cột ( thường có giá trị bằng 0) để tránh
việc giảm kích thước ở output cũng như để lấy thông tin ở các pixel ngoài cùng Có
2 loại padding là “valid” tức là padding = 0 và “same” tức là padding để kích thước ngõ ra bằng kích thước ngõ vào
- filters (nc) : Số filter được sử dụng ở mỗi layers
- f : kích thước của mỗi filter là f *f
Hình 2.1 Các thông số của conv layers
Giả sử ảnh đầu vào có kích thước 12x12x3, khi thực hiện 1 phép tích chập có cửa
số 5x5 lên ảnh đó với padding = 0 và stride = 1 Nếu chỉ xét trên chiều dài và rộng của ảnh thì quá trình chập là (12x12) → (5x5) → (8x8) Cửa sổ lướt qua toàn bộ ảnh, mối lần thực hiện 25 phép nhân và trả về 1 điểm ảnh Vì padding =0 nên ngõ ra là (8x8) Tuy nhiên, ảnh đầu vào có 3 chiều, do đó thay vì thực hiện 25 phép nhân, ta phải thực hiện 75 phép nhân cho mỗi lần kernel dịch chuyển Giả sử ta sử dụng 256 kernel, vậy ngõ ra sẽ là 8x8x256
Trang 10Để tạo ra được ngõ ra này, ta phải thực hiện 256x5x5x8x8x 3= 1,228,800 phép nhân Đây
là một con số vô cùng lớn, do đó mạng nơ ron thông thường không thể sử dụng trong các
mô hình nhúng [2]
Hình 2.2 Ảnh ngõ ra khi thực hiện tích chập thông thường Nguồn Viblo
Hình 2.2 mô tả quá trình thực hiện tích chập thông thường Phần tiếp theo chúng ta
sẽ hiểu rõ hơn sự tối ưu của mạng nơ ron sử dụng tích chập Depthwise Seperable thay vì
sử dụng tích chập thông thường
2.2 Lớp tích chập Depthwise Seperable
Thực hiện phép chập depthwise Seperable tức là thực hiện lần lượt phép chập Depthwise và phép chập pointwise Ta thực hiện ví dụ tương tự như mục 3.1 với ảnh đầu vào có kích thước 12x12x3 Đầu tiên, thực hiện chập depthwise bằng cách sử dụng 3 kernel 5x5x1 Ở đây, mỗi kernel sẽ thực hiện phép chập với mỗi channel của ảnh đầu vào, cho ra output 8x8x1, gộp các kết quả lại, chúng ta thu được ảnh đầu ra 8x8x3.[2]
Trang 11Hình 2.3 Ảnh ngõ ra khi thực hiện tích chập depthwise Nguồn Viblo
Để thu được ngõ ra có chiều 8x8x256 như ví dụ ở phần 2.1, tiếp theo cần tăng số lượng channel lên là 256 Đây là nhiệm vụ của tích chập pointwise, nó được đặt tên như vậy vì
nó sử dụng các kernel 1x1 để thực hiện phép chập với từng điểm dữ liệu kernel sẽ có số lượng bằng số lượng channels của ảnh đầu vào với mục đích thu được 1 channel của ảnh đầu ra Ở ví dụ này, kernel sẽ là 1x1x3, sau khi chập ouput sẽ là 8x8x1 như hình 2.4
Hình 2.4 Thực hiện tích chập pointwise, biến đổi ảnh thành 1 channel
Trang 12Tiếp theo tạo ra 256 kernel 1x1x3, ta sẽ được ảnh đầu ra là 8x8x256 như hình 2.5
Hình 2.5 Sử dụng tích chập pointwise với 256 kernels, ngõ ra là ảnh với 256 kernel Như vậy, sau khi thực hiện 2 phép chập với cùng một ngõ vào và ngõ ra, ta so sánh
số phép nhân cần thực hiện để thấy được đặc điểm nổi bật của tích chập depthwise separable so với tích chập thông thường Đối với tích chập thông thường, thực hiện chập
256 kernel 5x5x3 trên 8x8 điểm của ảnh đầu vào, nghĩa là thực hiện 256x3x5x5x8x8 = 1,228,800 phép nhân Đối với tích chập depthwise separable, khi thực hiện phép chập depthwise, sử dụng 3 kernels 5x5x1, kernel dịch chuyển 8 x8 lần, nghĩa là thực hiện 3x5x5x8x8 = 4,800 phép nhân Khi thực hiện chập pointwise, chúng ta có 256 kernel 1x1x3 dịch chuyển 8x8 lần, tức là 256x1x1x3x8x8= 49,152 phép nhân Tổng cộng cả 2 giai đoạn
là 53,952 phép nhân Số 53,953 nhỏ hơn 1,228,800 rất nhiều, do đó mô hình mạng sẽ nhẹ hơn và khả năng thực hiện nhanh hơn rất nhiều lần so với các phép nhân convolution thông thường
2.3 Mô hình mạng Mobilenet
2.3.1 Mạng MobileNet v1
Ở mô hình mạng MobileNet v1, ta sử dụng các lớp tích chập depthwise Seperable, một tích chập tối ưu hơn so với tích chập thông thường như đã trình bày ở phần 2.2 Ở mô hinh này, lớp tích chập depthwise sử dụng những filter đơn lẻ cho từng kênh ngõ vào (input channel) Lớp tích chập pointwise sử dụng tích chập 1x1 để kết hợp các ngõ ra của lớp tích
Trang 13chập depthwise Lớp tích chập thông thường thực hiện cả việc lọc và kết hợp input trong một lần Lớp tích chập depthwise separable chia nó ra làm 2 giai đoan, một giai đoạn riêng cho việc lọc và một giai đoạn riêng cho việc kết hợp Điều này đã giúp mang lại hiệu quả lớn trong việc giảm số lượng tính toán và kích thước mô hình [3]
Ngoài ra, cấu trúc mạng này còn sử dụng một hàm kích hoạt là RELU 6, hàm này tương tự như hàm RELU, tuy nhiên giúp loại bỏ việc hàm kích hoạt có giá trị ban đầu quá lớn Công thức tổng quát là y= min (max(0,x), 6)
Hình 2.6 Đồ thị biểu diễn hàm RELU6
Hình 2.7 Cấu trúc mạng MobileNet v1
Trang 142.3.2 Mạng MobileNet v2
Mạng MobileNet v2 sử dụng các cấu trúc của mạng Mobile Net v1 như depthwise Separable, Relu6 đồng thời sử dụng thêm một số kỹ thuật như lớp dư ngược (inverted Residual) và tuyến tính “cổ chai” ( linear bottleneck) như sơ đồ 2.8
Hình 2.8 Cấu trúc mạng Mobile Net V2 Tiền đề của lớp dư ngược là các feature map có thể được mã hóa trong không gian con có chiều thấp và các kích hoạt phi tuyến dẫn đến mất thông tin dù chúng có khả năng làm tăng độ phức tạp khi thưc hiện Các nguyên tắc này đã dẫn đến hướng thiết kế mới 2.4 Mô hình SSD (Single Shot MultiBox Detector)
Cũng giống như các kiến trúc nhận diện vật thể khác, đầu vào của SSD là tọa độ bounding box của vật thể và nhãn của vật thể chứa trong bounding box Điểm giúp cải thiện tốc độ của SSD model là mô hình sử dụng một mạng neural duy nhất Cách tiếp cận của nó dựa trên việc nhận diện vật thể trong các feature map có độ phân giải khác nhau
Mô hình sẽ tạo ra một lưới các ô vuông gọi là grid cells trên các feature map, mỗi ô được gọi là một cell và từ tâm của mỗi cell xác điịnh một tập hợp các boxes mặc định (default
Trang 15boxes) để dự đoán khung hình có khả năng bao quanh vật thể Tại thời điểm dự báo, mạng neural sẽ trả về 2 giá trị đó là : Phân phối xác suất nhãn và bounding box về đúng với các giá trị ground truth input của mô hình ( gồm nhãn và offsets bounding box)
Mô hình kết hợp nhiều các feature map với những độ phân giải khác nhau giúp phát hiện được những vật thể đa dạng kích thước và hình dạng Trong mô hình SSD, tất cả quá trình phát hiện vật thể và phân loại vật thể được thực hiện trong cùng một mạng Tóm gọn lại, mô hình SSD sẽ kết hợp 2 bước:
- Trích xuất các feature map từ mạng CNN
- Áp dụng convolutional filters ( hoặc kernel filters) để phát hiện vật thể trên các feaature map có độ phân giải (revolution) khác nhau
Một số định nghĩa:
- Scale: Tỷ lệ chiều dài (h) và chiều rộng (w) của khung hình gốc Scale sẽ kết hợp
với aspect ratio để nhận được các khung hình có tỉ lệ cạnh w/ h khác nhau
- Aspect ratio : Tỷ lệ cạnh, được đo bằng tỷ lệ w/h để xác định hình dạng tương đối
của khung hình bao chứa vật thể
- bounding box: khung hình bao chứa vật thể được xác định qua quá trình huấn luyện
- ground truth box : Khung hình được xác định trước từ bộ dữ liệu thông qua tọa độ
(cx, xy, w, h) giúp xác định vật thể
- IoU: Tỷ lệ Intersection of Union là tỷ lệ đo lường mức độ giao nhau giữa 2 khung
hình (thường là khung hình dự báo và khung hình ground truth) để nhằm xác định
2 khung hình overlap không Tỷ lệ này được tính dựa trên phần diện tích giao nhau gữa 2 khung hình với phần tổng diện tích giao nhau và không giao nhau giữa chúng
-
Trang 16Hình 2.9 Mô tả IoU
- Positive matching prediction: Khung dự báo (predict box) là vùng có vật thể là
đúng, được xác định dựa trên tỷ lệ IoU >0.5 giữa predict box với ground truth box
- Negative matching prediction : Khung được dự báo (predicted box) là vùng không
chứa vật thể là đúng, cũng được xác định dựa trên IoU < 0.5 giữa predicted box với ground truth box
Hình 2.10 Cách thức phân chia feature map để nhận diện hình ảnh với kích thước khác
nhau
SSD chỉ sử dụng duy nhất đầu vào là bức ảnh và các ground truth boxes ám chỉ vị trí bounding box các vật thể trong suốt quá trình huấn luyện Trong quá trình phát hiện vật thể, trên mỗi feature map, chúng ta đánh giá các tập hợp nhỏ gồm các default boxes tương ứng với các tỷ lệ cạnh khác nhau (aspect ratio) lên các feature map có kích thước (scales) khác nhau ( chẳng hạn kích thước 8x8 và 4x4 trong hình 2.10 (b) (c)) Đối với mỗi default
box ( các boxes nét đứt trong hình) ta cần dự báo một phân phối xác suất C= (c1, c2,… , cn)
tương ứng với các class C= C , C , … , C Tại thời điểm huấn luyện, đầu tiên chúng ta
Trang 17cần match default boxes với ground truth boxes sao cho mức độ sai số đo lường được qua
localization loss là nhỏ nhất Sau đó ta sẽ tìm cách tối thiểu hóa sai số của nhãn dự báo
tương ứng với mỗi vật thể được phát hiện trong default boxes thông qua confidence loss
(thường là hàm softmax) Như vậy loss function của object detection sẽ khác với loss
function của các tác vụ image classification ở chỗ có thêm localization loss về sai số vị trí
của predicted boxes so với ground truth boxes
Hình 2.11 Cấu trúc mạng SSD SSD dựa trên tiến trình lan truyền thuận của một kiến trúc chuẩn (chẳng hạn
VGG16) để tạo ra một khối feature map output gồm 3 chiều ở giai đoạn đầu Giai đoạn sau
sẽ thêm những kiến trúc nhận diện vật thể như Extra Feature Layers trong sơ đồ hình 2.11
Các layer của mô hình SSD:
- Input Layer: Nhận input đầu vào là các bức ảnh có kích thước 300x300x3 đối với
kiến trúc SSD300
- Conv5_3 Layer: Chính là base network sử dụng kiến trúc VGG16 nhưng loại bỏ
một số layers fully connected ở cuối cùng Output của layer này là một feature map
có kích thước 38x38x512
- Conv4_3 Layer: Có thể coi như là 1 feature map có kích thước 38x38x512 Trên
feature map này sẽ áp dụng 2 biến đổi chính đó là: