Công nghê v nhâ vn dạng khuôn mă vt.Nhâ 9n d;ng khuôn mă 9t là một Gng dHng mCy tZnh tự động xCc đVnh hoặc nhận d;ng một người nào đA từ một bGc hgnh dnh kI thuật sQ hoặc một khung hgnh
Trang 1ĐẠI HỌC ĐÀ NẴNGTRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA ĐIỆN – ĐIỆN TỬ
ĐỒ ÁN 2 NGÀNH: KỸ THUẬT ĐIỆN TỬ VIỄN THÔNG
CHUYÊN NGÀNH: ĐIỆN TỬ VIỄN THÔNG
ĐỀ TÀI: NHẬN DIỆN NGƯỜI ĐEO KHẨU TRANG SỬ DỤNG RASPBERRY PI
Người hướng dẫn : Nguyễn Linh Nam
Sinh viên thực hiện : Bùi Xuân Quang 1911505410148 Trần Duy Tân 1911505410153 Lớp: 19DT1
Đà Nẵng,…/2022
Trang 2MỤC LỤC CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 1
1.1 Tổng quan 1
1.2 Lý do chọn đề tài 2
1.3 Vấn đề giải quyết 3
1.4 Nội dung thực hiện 3
CHƯƠNG 2 : CƠ SỞ LÝ THUYẾT4 2.1 Giới thiệu là Máy tính nhúng Raspiberry Pi 3 Model B+ và Camera 5MP 4
2.1.1 Raspberry Pi là gì ? 4
2.1.2 Raspberry Pi dùng để làm gì ? 5
2.1.3 Một số hệ điều hành chạy trên Raspiberry Pi 6
2.1.4 Ưu điểm của Rasberry Pi là gì ? 7
2.2 Giới thiệu về Raspiberry pi 3 B+ 7
2.3 Rasberry Camera 12
2.3.1 Khái niệm 12
2.3.2 Ứng dụng 13
2.4 Một số khái niệm cơ bản về xử lý ảnh 13
2.4.1 Xử lý ảnh 13
2.4.2 Nhận dạng hình ảnh 15
2.5 Giới thiệu về ngôn ngữ lập trình Python và OpenCV 15
2.5.1 Giới thiệu OpenCV 15
2.5.2 Ngôn ngữ Python 16
CHƯƠNG 3: PHÂN TÍCH THIẾT KẾ HỆ THỐNG 25 3.1 Thuật toán thu thập dữ liệu 25
3.2 Thuật toán huấn luyện mô hình 32
3.3 Thuật toán phát hiện người đeo khẩu trang 32
CHƯƠNG 4: Chạy mô phỏng và kết quả 32
4.1 Chương trình mô phỏng 33
4.1.1 Chương trình mô phỏng 33
4.1.2 Kết quả 34
Trang 4MỞ ĐẦU
Trang 5Ngày nay khoa h7c công nghê 9 ngày càng đ;t đư<c nh=ng thànhtựu to lớn, k?o theo đA là sự phCt triDn vư<t bâ 9c trong cCc ngành nghF cAGng dHng khoa h7c kI thuâ 9t Nh=ng năm gần đây, khCi niê 9m vF Internet
of thing (IoT) không cOn xa l; trong cuô 9c sQng cRa chSng ta n=a NhTt làkhi hiê 9n nay, cCc thiUt bV IoT đW đư<c sX dHng tràn ngâ 9p, rô 9ng rWi khYpthU giới ĐiFu đA cho ta thTy đư<c l<i Zch cRa cCc thiUt bV này như thUnào trong cuô 9c sQng con người
Với sự phCt triDn nhanh chAng cRa h7c sâu, đặc biệt là m;ng ron tZch chập (CNN), thV giCc mCy tZnh đW đ;t đư<c nh=ng tiUn bộ đCng
nơ-kD trong nh=ng năm gần đây vF nhận d;ng và phCt hiện đQi tư<ng [2][3].Viê 9c kUt h<p mô 9t sdn phem IoT cA Gng dHng cRa trZ tuê 9 nhân t;o
là tTt yUu cfng là xu hướng hiê 9n nay Với đF tài “Phát hiện người đeo khẩu trang ” cRa nhAm chSng em đang thực hiê 9n, chZnh là sự kUt h<p
đA với mong muQn tgm hiDu và phCt triDn mô 9t sdn phem công nghê 9 theo
xu hướng nhưng Gng dHng hiê 9u qud trong ngành y tU nAi riêng và ngành
y tU nAi chung
Trang 6CHƯƠNG I: TỔNG QUAN ĐỀ TÀI
I Tsng quan
1 Lí do chtn đề tài:
Việc đeo kheu trang nơi công cộng đW gAp phần h;n chU đư<c sự lây lan cRa dVch bệnh covid 19 trên toàn cầu GiCm sCt người dân thực hiện đSng chR trương, chZnh sCch cRa Nhà nước trong việc đeo kheu trang nơi công cộng hoàn toàn cA thDđư<c thực hiện một cCch tự động Bằng việc Gng dHng công nghệ xX lý dnh, nhAm
em đW cùng nhau xây dựng nên chương trgnh phCt hiện người dân cA đeo kheu trang hay không và nhYc nhở Chương trgnh dựa trên ngôn ng= python và một sQ thư viện mW nguồn mở như Open CV, Keras, Mô hgnh đư<c thực hiện đ;t độ chZnh xCc cao lên đUn 98, 99% khi tiUn hành phCt hiện người đeo kheu trang trên tập d= liệu thX nghiệm
2 Vấn đề cun giả quyết:
Với đF tài này chSng ta xCc đVnh mHc tiêu là người cA đeo kheu trang haykhông Yêu cầu đă 9t ra này gồm cCc tiêu chZ:
- Nhâ 9n diê 9n cA đô 9 chZnh xCc cao
- Cho ph?p lưu khuôn mă 9t vào d= liê 9u hê 9 thQng
- TQc đô 9 xX lý nhanh, khi cA người không đeo kheu trang đGng trong khunghgnh cRa camera lập tGc cA kOi bCo
- Sdn phem cA tZnh them mI,nhỏ g7n
3 Nô v i dung thwc hiê v n:
SX dHng cCc kiUn thGc đW h7c trong 2 h7c phần môn vi điFu khiDn và trZ tuê 9nhân t;o đD tgm hiDu:
- TiUn hành thiUt lâ 9p sơ đồ khQi hê 9 thQng
- XX lZ cCc quC trgnh nhâ 9n diê 9n và thông bCo đSng lSc
- Thực hiê 9n lYp đă 9t phần cGng và viUt n;p code theo yêu cầu chGc năng
4
Trang 7II Công nghê v nhâ v n dạng khuôn mă v t.
Nhâ 9n d;ng khuôn mă 9t là một Gng dHng mCy tZnh tự động xCc đVnh hoặc nhậnd;ng một người nào đA từ một bGc hgnh dnh kI thuật sQ hoặc một khung hgnhvideo từ một nguồn video Một trong nh=ng cCch đD thực hiện điFu này là so sCnhcCc đặc điDm khuôn mặt ch7n trước từ hgnh dnh và một cơ sở d= liệu vF khuônmặt
Hệ thQng này thường đư<c sX dHng trong cCc hệ thQng an ninh và cA thD đư<c sosCnh với cCc d;ng sinh trYc h7c khCc như cCc hệ thQng nhận d;ng vân tay hay trOngmYt
- Nhâ v n dạng truyền thống.
Một sQ thuật toCn nhận d;ng khuôn mặt xCc đVnh cCc đặc điDm khuôn mặt bằngcCch trZch xuTt cCc ranh giới, hoặc đặc điDm, từ một hgnh dnh khuôn mặt cRa đQitư<ng VZ dH, một thuật toCn cA thD phân tZch cCc vV trZ tương đQi, kZch thước,và/hoặc hgnh d;ng cRa mYt, mfi, gO mC, và cằm Nh=ng tZnh năng này sau đA đư<c
sX dHng đD tgm kiUm cCc hgnh dnh khCc với cCc tZnh năng phù h<p CCc thuật toCnbgnh thường hAa một bộ sưu tập cCc hgnh dnh khuôn mặt và sau đA n?n d= liệukhuôn mặt, chỉ lưu d= liệu hgnh dnh nào là h=u Zch cho việc nhận d;ng khuôn mặt.Một hgnh dnh mẫu sau đA đư<c so sCnh với cCc d= liệu khuôn mặt Một trongnh=ng hệ thQng thành công sớm nhTt dựa trên cCc kI thuật phù h<p với mẫu CpdHng cho một tập h<p cCc đặc điDm khuôn mặt nổi bật, cung cTp một d;ng đ;i diệncRa khuôn mặt đư<c n?n
CCc thuật toCn nhận d;ng cA thD đư<c chia thành hai hướng chZnh, là hgnh h7c,
đA là nhgn vào tZnh năng phân biệt, hoặc trYc quang (đo sCng), là sX dHng phươngphCp thQng kê đD 'chưng cTt' một hgnh dnh thành nh=ng giC trV và so sCnh cCc giC trVvới cCc mẫu đD lo;i bỏ chênh lệch
5
Trang 8Một l<i thU cRa nhận d;ng khuôn mặt 3D là nA không bV dnh hưởng bởi nh=ngthay đổi trong Cnh sCng như cCc kI thuật khCc NA cfng cA thD xCc đVnh một khuônmặt từ một lo;t cCc gAc nhgn, trong đA cA gAc nhgn nghiêng CCc điDm d= liệu bachiFu từ một khuôn mặt cdi thiện lớn độ chZnh xCc cho nhận d;ng khuôn mặt.Nghiên cGu 3D đư<c tăng cường bởi sự phCt triDn cRa cCc bộ cdm biUn tinh vi giSpnYm bYt hgnh dnh chHp khuôn mặt 3D đư<c tQt hơn CCc cdm biUn ho;t động bằngcCch chiUu Cnh sCng cA cTu trSc lên gương mặt Hàng chHc hoặc nhiFu hơn n=a cCc
bộ cdm biUn hgnh dnh này cA thD đư<c đặt lên trên cùng một con chip CMOS-mỗicdm biUn sẽ thu một phần khCc nhau cRa hgnh dnh
6
Trang 9CHƯƠNG II: CƠ SỞ LÝ THUYẾT
I Hê v thống nhâ v n diê v n khuôn mă v t
1 Cấu trúc chương trình
Hê 9 thQng nhâ 9n d;ng mă 9t người là mô 9t hê 9 thQng nhâ 9n vào mô 9t dnh hoă 9c đo;nvideo (mô 9t dOng gồm cCc dnh liên tHc) Qua quC trgnh xX lZ, tZnh toCn hê 9 thQngxCc đVnh vV trZ mă 9t người cA trong dnh và xCc đVnh là người nào trong sQ nh=ngngười mà hê 9 thQng biUt (qua quC trgnh h7c) hoă 9c người l;
CTu trSc chương trgnh gồm 3 bước đư<c thD hiện trên Hgnh 1
Bước 1: Thu thập d= liệu: SX dHng mW nguồn mở OpenCV đD phCt hiện, lưu tr= 500 bGc dnh cRa người đeo kheu trang và 500 bGc dnh cRa người không đeo kheu trang
Bước 2: SX dHng nguồn d= liệu đW thu thập đư<c ở bước 1 đD huTn luyện mô hgnh dựa trên mô hgnh m;ng nơron tZch chập CNN
Bước 3: PhCt hiện người đeo kheu trang hay không Bước này sẽ tiUn hành so sCnh d= liệu đư<c trZch xuTt từ camera (sau khi đW đư<c xX lý d= liệu đầu vào) với d= liệu đW đư<c huTn luyện đD trZch xuTt kUt qud và cdnh bCo bằng gi7ng nAi
2 Những tham số của hình ảnh khuôn mă v t
Khuôn mă 9t con người vQn d} đa d;ng ĐiFu này khiUn cho hgnh dnh thu đư<ccRa khuông mă 9t rTt phong phS, cA thD chỉ ra mô 9t sQ tham sQ cho cCc hgnh dnhnày như:
- GAc quay xung quanh trHc thẳng đGng: tham sQ này dnh hưởng tới tZnhđQi xGng cRa khuôn mă 9t, đồng thời che lTp mô 9t con mYt và làm thay đổihgnh dnh hiDn thV cRa nh=ng chi tiUt khCc trên khuôn mă 9t
- GAc quay xung quanh trHc nằm ngang: Gng với tư thU ngeng hay cSi đầucRa đQi tư<ng thu nhâ 9p trước mCy quay, tham sQ này dnh hưởng tới sựhiê 9n diê 9n cRa mô 9t sQ chi tiUt quan tr7ng trên khuôn mă 9t như đôi mYt, vùngtrCn hay vùng miê 9ng
7
Trang 10- GAc quay xung quanh trHc nQi liFn khuôn mă 9t với mCy quay: tham sQ nàykhông biDu hiê 9n đUn nh=ng chi tiUt trên khuôn mă 9t và cA thD khôi phHc vF
vV trZ thẳng đGng bằng ph?p xX lZ quay hgnh
- KZch thước khuôn mă 9t
- Tỉ lê 9 cRa cCc chiFu cRa khuôn mă 9t
- Cdm xSc cRa khuôn mă 9t: tham sQ này làm thay đổi hgnh dnh hiDn thV cRanh=ng chi tiUt trên khuôn mă 9t
3 Giới thiệu về Raspberry Pi
3.1Raspberry Pi Foundation, một tổ chGc từ thiện ở Anh đư<c hỗ tr<
bởi Khoa Khoa h7c mCy tZnh trường đ;i h7c Cambridge và hWng chip Broadcom,
đW thiUt kU Raspberry Pi, với mong muốn thúc đẩy việc đưa khoa htc máy tính vào trường htc và giúp trẻ em ở các nước phát triển có "máy tính giá rẻ" để htc tập Raspberry Pi chZnh thGc trgnh làng công nghệ từ 2012, kD từ đA đUn nay
cCc phiên bdn Raspberry Pi đW đư<c đưa ra với cCc cdi thiện khCc nhau
-Raspberry Pi là tên cRa một chuỗi cCc sdn phem thuộc dOng mCy tZnh đơn
board (single board computer) ch;y hệ điFu hành Linux
-Raspberry Pi là một mCy tZnh bdng đơn nhỏ Bằng cCch kUt nQi cCc thiUt bV
ngo;i vi như Bàn phZm, chuột, màn hgnh với Raspberry Pi, nA sẽ ho;t động như một mCy tZnh cC nhân mini
-Raspberry Pi đư<c sX dHng phổ biUn cho XX lý hgnh dnh/video thời gian
thực, Gng dHng dựa trên IoT và Gng dHng Robotics
-Raspberry Pi chậm hơn mCy tZnh xCch tay hoặc mCy tZnh đD bàn nhưng vẫn là
một mCy tZnh cA thD cung cTp tTt cd cCc tZnh năng hoặc khd năng mong đ<i vớimGc tiêu thH điện năng thTp
8
Trang 11Hệ điFu hành Raspbian là Hệ điFu hành chZnh thGc đư<c cung cTp miễnphZ Hệ điFu hành này đư<c tQi ưu hAa hiệu qud đD sX dHng với Raspberry
Pi Raspbian cA GUI bao gồm cCc công cH đD Duyệt web, lập trgnh Python, vănphOng, trO chơi, v.v
Raspberry Pi không chỉ là mCy tZnh vg nA cung cTp quyFn truy cập vào phầncGng trên chip, tGc là GPIO đD phCt triDn Gng dHng Bằng cCch truy cập GPIO,chSng ta cA thD kUt nQi cCc thiUt bV như đèn LED, động cơ, cdm biUn, v.v và cfng
cA thD điFu khiDn chSng.NA cA SoC Bộ xX lý Broadcom dựa trên ARM cùng vớiGPU trên chip (Bộ xX lý đồ h7a).TQc độ CPU cRa Raspberry Pi thay đổi từ 700MHz đUn 1,2 GHz Ngoài ra, nA cA SDRAM tZch h<p trong khodng từ 256 MB đUn
1 GB.Raspberry Pi cfng cung cTp cCc mô-đun SPI, I2C, I2S và UART trên chip
Phun cứng Raspiberry Pi
3.2 Raspberry Pi dùng để làm gì ?
Với khd năng tùy biUn cao, Raspberry Pi cA thD biUn thành rTt nhiFu thiUt bV từphần cGng đUn phần mFm, cA thD kD đUn một sQ công dHng như sau:
- Đầu coi phim HD giQng như TV Box, hỗ tr< KODI đầy đR
- MCy chơi game cầm tay, console, game thùng Chơi như mCy điện tX băng ngày xưa,gid lập đư<c nhiFu hệ mCy
- CYm mCy tdi Torrent 24/24
9
Trang 212 OpenCV
- OpenCV là thư viện nguồn mở hàng đầu cho Computer Vision và Machine Learning, và hiện cA thêm tZnh năng tăng tQc GPU cho cCc ho;t động theo real-time
- NA cA trên cCc giao diện C++, C, Python và Java và hổ tr< Windows,
Linus, Mac OS, OpenCV đư<c thiUt kU đD hổ tr< hiệu qud vF tZnh toCn và chuyên dùng cho cCc Gng dHng real-time (thời gian thực) NUuđư<c viUt trên C/C++ tQi ưu, thư viện này cA thD tận dHng đư<c bộ cX
lý đa lõi( multi-core processing )
Chức năng:
- OpenCV đa d;ng, khC nhiFu vF tZnh năng như:
+ XX lý và hiDn thV hgnh dnh/Video/I/O( core, imgpoc, highgui)+ PhCt hiện cCc vật thD ( objdetect, features2d, nonfree)
+ Machine learning và clustering (ml, flann)
+ CUDA acceleration
- OpenCV hiện đư<c Gng dHng rộng rWi trên toàn cầu, với nhiFu mHc
đZch và tZnh năng khCc nhau từ interactive art, đUn khai thCc web map
19
Trang 22hoặc robotic cao cTp Tuy nhiên ở trong đF tài chỉ sX dHng OpenCv đD
xX lý và hiDn thV hgnh dnh
3 Ngôn ngữ Python
Python là một ngôn ng= lập trgnh đư<c sX dHng rộng rWi trong cCc Gng dHng web,phCt triDn phần mFm, khoa h7c d= liệu và mCy h7c (ML) CCc nhà phCt triDn sX dHng Python vg nA hiệu qud, dễ h7c và cA thD ch;y trên nhiFu nFn tdng khCc nhau Phần mFm Python đư<c tdi xuQng miễn phZ, tZch h<p tQt với tTt cd cCc lo;i hệ thQng và tăng tQc độ phCt triDn
Một số thư viện Python
Matplotlib
CCc nhà phCt triDn sX dHng Matplotlib đD hiDn thV d= liệu dưới d;ng đồh7a hai và ba chiFu (2D và 3D) chTt lư<ng cao Thư viện này thường đư<c sXdHng trong cCc Gng dHng khoa h7c Với Matplotlib, b;n cA thD trực quan hAa d=liệu bằng cCch hiDn thV d= liệu dưới d;ng cCc biDu đồ khCc nhau, chẳng h;n nhưbiDu đồ cột và biDu đồ đường B;n cfng cA thD hiDn thV nhiFu biDu đồ cùng lSc
và cCc chi tiUt đồ h7a cA thD đư<c di chuyDn qua m7i nFn tdng
Pandas
Pandas cung cTp cTu trSc d= liệu đư<c tQi ưu hAa và linh ho;t mà b;n cAthD sX dHng đD thao tCc với d= liệu chuỗi thời gian và d= liệu cA cTu trSc, chẳngh;n như bdng và nhAm VZ dH, b;n cA thD sX dHng Pandas đD đ7c, ghi, h<p nhTt,l7c và nhAm d= liệu Thư viện này đư<c nhiFu người sX dHng cho cCc tCc vHkhoa h7c d= liệu, phân tZch d= liệu và ML
NumPy
NumPy là một thư viện phổ biUn mà cCc nhà phCt triDn sX dHng đD dễdàng t;o và qudn lý nhAm, thao tCc với cCc hgnh d;ng logic và thực hiện cCcph?p toCn đ;i sQ tuyUn tZnh NumPy hỗ tr< tZch h<p với nhiFu ngôn ng= như C
Trang 23đF, thêm tham sQ URL, bổ sung d= liệu và thực hiện nhiFu tCc vH khCc khi giaotiUp với cCc Gng dHng web
OpenCV-Python
OpenCV-Python là một thư viện mà cCc nhà phCt triDn sX dHng đD xX lýhgnh dnh cho cCc Gng dHng thV giCc mCy tZnh Thư viện này cung cTp nhiFu hàmcho cCc tCc vH xX lý hgnh dnh như đ7c và ghi hgnh dnh cùng lSc, xây dựng môitrường 3D từ môi trường 2D cfng như chHp và phân tZch hgnh dnh từ video
Keras
Keras là thư viện m;ng nơ-ron chuyên sâu cRa Python với khd năng hỗtr< tuyệt vời cho việc xX lý d= liệu, trực quan hAa và hơn thU n=a Keras hỗ tr<nhiFu m;ng nơ-ron Thư viện này cA cTu trSc mô-đun mang l;i sự linh ho;t choviệc lập trgnh cCc Gng dHng sCng t;o
21
Trang 24CHƯƠNG III: PHÂN TÍCH THIẾT KẾ HÊv THỐNG
I Thuật toán thu thập dữ liệu.
Hgnh 1.Thuật toCn thu thập d= liệu
ĐD thu thập d= liệu, thay vg lTy nguồn d= liệu trên m;ng, nhAm tCc gid đW thực hiện thu thập bằng chương trgnh đư<c viUt trên ngôn ng= python, sX dHng thư viện mW nguồn mở OpenCV đD phCt hiện khuôn mặt người
Hgnh 1 ThD hiện thuật toCn thu thập d= liệu D= liệu sau khi thu thập dưới d;ng file dnh jpg sẽ đư<c lưu tr= ở hai file riêng biệt: Một file chGa 500 bGc dnh
mô td khuôn mặt đeo kheu trang và file cOn l;i chGa 500 bGc dnh mô td khuôn mặt không đeo kheu trang Mỗi file d= liệu trên sẽ đư<c chia làm hai phần chZnh nhờ hàm split trong python, bao gồm:
- Tập d= liệu phHc vH quC trgnh thX nghiệm cuQi cùng - Testing set (chiUm 20%);
- Tập d= liệu phHc vH quC trgnh huTn luyện (chiUm 80%)
22
Trang 25II Thuật toán huấn luyện mô hình
viện cần thiUt
Nhập cCc thư viện cần thiUt như OpenCV, Keras, Numpy (đD xX lý d= liệu),
Os (đD qudn lý file),…
2 XX lý tiFn d= liệu và xX lý d= liệu
Việc tiFn xX lý d= liệu nhằm đưa tTt cd cCc dnh vF cùng kZch thước, sau đA cCc dnh này sẽ đư<c chuyDn đổi đD phHc vH cho quC trgnh xX lý dnh ở bước sau
3 Xây dựng cCc lớp cho mô hgnh
CCc lớp đư<c xây dựng dựa trên mô hgnh m;ng nơron tZch chập CNN (m;ng nơron tZch chập đư<c thiUt kU đặc biệt đD xX lý d= liệu đầu vào) KiUn trSc cRa CNN cA ba phần chZnh:
-Một lớp phGc h<p trZch xuTt cCc đặc trưng từ một hgnh dnh nguồn ĐD trZch xuTt đặc tZnh từ dnh ban đầu, ta tiUn hành tZch chập hai ma trận bao gồm ma trận dnh nguồn và bộ l7c với kZch thước 3x3
-Một lớp tổng h<p đD gidm kZch thước cRa nơron đi và tập trung vào cCc phần tX quan tr7ng nhTt Trong phần này ta sX dHng lớp pooling cA kZch thước (2x2) và sX dHng kiDu max pooling hay lTy giC trV lớn nhTt
23