Trên thực tếcó nhiều loại khóa cửa thông minh yêu cầu xác minh 2 lớp, kết hợp với điện thoạithông minh.Các công trình nghiên cứu:+ Trong nghiên cứu “Design And Implementation Of A Door L
Tình hình nghiên cứu
Ổ khóa là thiết bị an ninh quan trọng giúp bảo vệ tài sản khỏi kẻ trộm Trên thị trường hiện nay có nhiều loại khóa như khóa số, khóa chìa, khóa vân tay, khóa chốt và khóa điện tử, mỗi loại đều có ưu và nhược điểm riêng Khóa chốt và khóa chìa có giá thành rẻ nhưng bảo mật kém, dễ bị xâm nhập Ngược lại, khóa vân tay và khóa điện tử cung cấp mức độ bảo mật cao nhưng có giá thành cao, thường được sử dụng trong văn phòng, công ty và các tòa nhà cao cấp Nhiều thương hiệu điện tử nổi tiếng như Samsung, Kaadas và Adel cũng đã sản xuất các loại khóa cửa thông minh.
Khóa thông minh bao gồm ba phần chính: điện tử điều khiển, ruột khóa và vỏ Hoạt động của khóa thông minh dựa trên việc xác minh danh tính người dùng, yêu cầu họ phải xác thực trên hệ thống đã đăng ký Các phương thức xác minh danh tính bao gồm nhận diện vân tay, nhận diện khuôn mặt, thẻ từ hoặc mật khẩu Nhiều loại khóa cửa thông minh hiện nay còn yêu cầu xác minh hai lớp, kết hợp với điện thoại thông minh để tăng cường bảo mật.
Các công trình nghiên cứu:
+ Trong nghiên cứu “Design And Implementation Of A Door Locking System Using Android App” [1] đã thiết kế hệ thống khóa cửa sử dụng ứng dụng trên điện thoại thông minh.
+ Trong nghiên cứu “Face Recognition Based Door Locking System” [2] đã thiết kế một hệ thống khóa nhà thông minh bằng việc xử lý nhận dạng khuôn mặt.
Mục đích
Qua những dẫn chứng cụ thể, tầm quan trọng của ổ khóa thông minh trong việc bảo vệ tài sản được khẳng định Tôi sẽ thiết kế hệ thống khóa nhà sử dụng nhận dạng khuôn mặt và câu lệnh mở cửa, nhằm khắc phục hạn chế của các ổ khóa hiện tại và ngăn ngừa hậu quả tiêu cực Bên cạnh đó, tôi cũng muốn tìm hiểu quy trình thực hiện đồ án để rút ra những kinh nghiệm quý giá cho bản thân.
Bố cục
Bài viết này được chia thành 5 chương, mỗi chương đóng vai trò quan trọng và liên kết chặt chẽ với nhau, nhằm đảm bảo cấu trúc hoàn chỉnh cho đồ án tốt nghiệp.
Chương 1: Tổng quan đề tài
+ Tổng quan về vấn đề
Chương 2: Cơ sở lý thuyết
+ Giới thiệu về học máy, học sâu
+ Tổng quan về hệ thống xử lý ảnh
+ Bài toán về nhận dạng đối tượng
Chương 3: Tính toán và thiết kế
+ Giới thiệu các linh kiện sử dụng
+ Xây dựng sơ đồ khối hệ thống
Chương 4: Thi công hệ thống
Ý nghĩa thực tiễn
Những ý nghĩa và ứng dụng thực tiễn mà hệ thống mang lại:
- Ứng dụng trong công nghiệp:
Hệ thống này không chỉ đảm bảo an ninh mà còn là công cụ quản lý nhân sự hiệu quả, thúc đẩy tự động hóa và giảm thiểu chi phí vận hành.
+ Theo dõi và kiểm soát các hoạt động vào/ra của nhân viên trong các công ty, doanh nghiệp.
Để giảm thiểu chi phí phát sinh, như chi phí làm lại khóa khi nhân viên nghỉ việc, chủ doanh nghiệp chỉ cần kiểm soát ra/vào bằng cách truy cập và xóa thông tin truy cập của nhân viên trên hệ thống.
+ Hạn chế truy cập đến các khu vực nhạy cảm như phòng điều hành, phòng dữ liệu.
- Ứng dụng trong hộ gia đình:
+ Đảm bảo sự an toàn so với các sản phẩm khóa thông thường.
+ Giảm được chi phí hơn so với các loại khóa thông thường mỗi khi sảy ra sự cố như quên chìa khóa, gãy khóa.
CƠ SỞ LÝ THUYẾT 15
Giới thiệu về học máy, học sâu
Trong lĩnh vực trí tuệ nhân tạo, học máy (machine learning) là một nhánh nghiên cứu về khả năng tự học của máy tính mà không cần cài đặt các quy tắc quyết định Mặc dù chưa có định nghĩa chính thức, học máy cho phép máy tính tự động phân loại thông tin, như việc nhận diện email thư rác mà không cần chỉ định trước bất kỳ quy tắc nào Điều này giúp máy tính phát triển khả năng cảm quan và tư duy giống như con người Nói một cách đơn giản, học máy là phương pháp vẽ các đường thể hiện mối quan hệ giữa các tập dữ liệu.
Học máy và thống kê đều liên quan đến phân tích dữ liệu, nhưng học máy chú trọng vào sự phức tạp của các thuật toán tính toán Nhiều bài toán suy luận được coi là khó khăn, do đó, một phần quan trọng của học máy là nghiên cứu phát triển các thuật toán suy luận xấp xỉ có khả năng xử lý hiệu quả.
Có2loạiMLchínhbaogồm học cógiámsát(supervisedlearning) vàhọc khônggiámsát(unsupervisedlearning).
+Tronghọccógiámsát,máytínhhọccáchmôhìnhhóacác mối quan hệ dựatrêndữliệuđượcgánnhãn(labeleddata).Saukhitìm hiểu cáchtốtnhấtđểmôhìnhhóacácmốiquanhệchodữliệuđược gắn nhãn, các thuật toán được huấnluyệnđượcsửdụngchocácbộ dữliệumới.
+ Ảnh đen trắng: Là ảnh có 2 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 màu được tạo ra từ sự kết hợp của ba màu cơ bản, mang đến một thế giới màu sắc sinh động Để mô tả mức độ màu, người ta thường sử dụng 3 byte, cho phép hiển thị khoảng 16,7 triệu màu khác nhau.
Lọc nhiễu ảnh là một bước quan trọng trong kỹ thuật xử lý ảnh, nhằm loại bỏ các nhiễu không mong muốn Các toán tử không gian được phân loại theo chức năng như làm trơn và nổi biên Để tách nhiễu, người ta thường sử dụng bộ lọc tuyến tính như lọc trung bình và lọc thông thấp, hoặc bộ lọc phi tuyến như lọc trung vị và lọc đồng hình Nhiễu thường tương ứng với tần số cao, do đó, lọc thông thấp được áp dụng để loại bỏ nhiễu, trong khi lọc thông cao và lọc Laplace được sử dụng để làm nổi bật các cạnh Phương pháp lọc nhiễu có thể chia thành hai loại chính: lọc tuyến tính và lọc phi tuyến.
Lọc nhiễu trong chụp ảnh là cần thiết để cải thiện chất lượng hình ảnh Các phương pháp lọc cơ bản bao gồm lọc trung bình và lọc thông thấp Cụ thể, với lọc trung bình, mỗi điểm ảnh sẽ được thay thế bằng giá trị trung bình trọng số của các điểm ảnh xung quanh, giúp loại bỏ nhiễu hiệu quả.
Lọc phi tuyến là một kỹ thuật phổ biến trong tăng cường ảnh, với các phương pháp cơ bản như lọc trung vị và lọc ngoài Trong lọc trung vị, điểm ảnh đầu vào được thay thế bằng giá trị trung vị của các điểm ảnh xung quanh, trong khi lọc giả trung vị sử dụng trung bình cộng của hai giá trị "trung vị" để cải thiện chất lượng hình ảnh.
Lọc trung vị là một kỹ thuật xử lý hình ảnh, yêu cầu sắp xếp giá trị các điểm ảnh trong cửa sổ theo thứ tự tăng hoặc giảm so với giá trị trung vị Kích thước cửa sổ thường được chọn là số lẻ để đảm bảo tính chính xác trong quá trình lọc.
Lọc ngoài là phương pháp xác định nhiễu dựa trên ngưỡng nhất định, có thể tham khảo từ lược đồ xám Quá trình này bao gồm việc so sánh giá trị độ xám của một điểm ảnh với trung bình số học của 8 điểm lân cận Nếu độ lệch lớn hơn ngưỡng quy định, điểm ảnh sẽ được xác định là nhiễu và sẽ được thay thế bằng giá trị trung bình của 8 điểm lân cận đã tính toán.
Trong xử lý ảnh, do số lượng điểm ảnh lớn, việc tính toán trở nên phức tạp, đòi hỏi dung lượng bộ nhớ cao và thời gian xử lý lâu Các phương pháp khoa học cổ điển thường khó áp dụng trong lĩnh vực này Để đơn giản hóa quá trình, người ta sử dụng các phép toán tương đương hoặc chuyển đổi sang miền xử lý khác, giúp việc tính toán dễ dàng hơn Sau khi hoàn tất xử lý, các biến đổi ngược được áp dụng để trở về miền xác định ban đầu Một số biến đổi phổ biến trong xử lý ảnh bao gồm:
+ Biến đổi Fourier, Cosin, Sin
+ Biến đổi (mô tả) bằng tích chập, tích Kronecker
+ Các biến đổi khác như Karhumen Loeve, Hadamard
Nén ảnh là một kỹ thuật quan trọng giúp giảm kích thước tệp hình ảnh, tiết kiệm không gian lưu trữ Quá trình nén ảnh được chia thành hai thế hệ, với các chuẩn MPEG hiện nay đang được áp dụng hiệu quả trong việc tối ưu hóa hình ảnh.
Các phương pháp nén thế hệ 1:
+ Mã hóa loạt dài RLC (Run Length Coding)
+ Mã hóa Lempel Ziv-Wench
+ Mã hóa khối (Block Coding)
Các phương pháp nén thế hệ 2:
+ Kim tự tháp Laplace (Pyramide Laplace)
+ Mã hóa dựa vào vùng gia tăng
Tỷ số nén Độ phức tạp
Chất lượng Nhạy cảm với nhiễu
RLC 10 Đơn giản Rất tốt Lớn Nhị phân
Dự đoán 2-4 Đơn giản Rất tốt Trung bình Mọi ảnh
Biến đổi 10-15 Phức tạp Tốt Rất kém Đa cấp xám
5-10 Trung bình Tốt Lớn Đa cấp xám
20-30 Phức tạp Trung bình Rất lớn Đa cấp xám
Tách và hợp 60-70 Rất phức tạp
Trung bình Rất lớn Đa cấp xám
Bảng 2.1 Bảng so sánh kết quả của một số phương pháp nén
Mỗi phương pháp nén có những ưu và nhược điểm riêng, ảnh hưởng đến hiệu quả không chỉ qua tỉ số nén mà còn qua nhiều yếu tố khác như độ phức tạp tính toán, độ nhạy cảm với nhiễu, chất lượng và kiểu ảnh Bảng tổng kết cung cấp cái nhìn tổng quan về các phương pháp nén.
Ảnh thu nhận sau quá trình số hóa thường được lưu trữ để phục vụ cho các xử lý tiếp theo hoặc truyền đi Trong kỹ thuật xử lý ảnh, có nhiều định dạng khác nhau, bao gồm ảnh đen trắng (IMG), ảnh đa cấp xám và ảnh màu (BMG, JPEG, GIF).
● Các phần mềm hỗ trợ xử lý ảnh
Hiện nay, xử lý ảnh là một lĩnh vực được giảng dạy tại các trường đại học và ứng dụng rộng rãi trong thực tế, đặc biệt trong các phần mềm chỉnh sửa hình ảnh và nhận diện khuôn mặt Do đó, có nhiều công cụ lập trình sẵn có để phát triển ứng dụng trong lĩnh vực này, nổi bật là MATLAB và Python.
2.3 Bài toán nhận dạng đối tượng
Nhận dạng đối tượng là khả năng tự nhiên của con người và động vật, cho phép chúng ta nhận biết các đối tượng thông qua các giác quan như mắt, mũi và tay Sự phát triển của công nghệ, đặc biệt là trong lĩnh vực robot, đã thúc đẩy ước mơ tạo ra hệ thống nhận dạng máy học có khả năng vượt trội hơn so với nhận dạng sinh học Hệ thống nhận dạng đối tượng hoạt động bằng cách tiếp nhận hình ảnh hoặc video, sau đó xác định vị trí và danh tính của đối tượng trong ảnh Để đạt được độ chính xác cao, hệ thống cần có các đặc trưng tốt và khả năng chọn lựa các đặc trưng phù hợp để biểu diễn thông tin đối tượng Đồng thời, việc tính toán đặc trưng phải nhanh chóng để không làm chậm quá trình nhận dạng, và hệ thống cần có phương pháp học hiệu quả để nhận dạng tốt các mẫu mới, không chỉ những mẫu đã được học.
Việc nhận dạng đối tượng trong ảnh đối với con người là đơn giản, nhưng đối với hệ thống nhân tạo, điều này trở nên phức tạp và đòi hỏi giải quyết nhiều vấn đề Chính vì lý do này, nhiều nhóm nghiên cứu trên toàn thế giới đang chú trọng vào lĩnh vực này Một số khó khăn trong việc nhận dạng bao gồm độ chính xác, sự đa dạng của đối tượng và điều kiện ánh sáng khác nhau.
+ Tư thế, 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.
Hình 2.7: Minh họa sự thay đổi góc chụp
Bài toán nhận dạng đối tượng
Nhận dạng đối tượng là khả năng tự nhiên của con người và động vật, cho phép chúng cảm nhận và phân biệt các đối tượng qua các giác quan như mắt, mũi, và tay Sự phát triển của công nghệ, đặc biệt là trong lĩnh vực robot, đã thúc đẩy mong muốn tạo ra hệ thống nhận dạng máy học vượt trội hơn so với nhận dạng sinh học Hệ thống nhận dạng đối tượng hoạt động bằng cách tiếp nhận hình ảnh hoặc video, sau đó xử lý và xác định vị trí cùng loại đối tượng trong ảnh Để đạt được độ chính xác cao, hệ thống cần có các đặc trưng tốt và khả năng chọn lọc thông tin hiệu quả, đồng thời phải tính toán nhanh chóng để không làm chậm quá trình nhận dạng Hơn nữa, hệ thống cần có phương pháp học hiệu quả để nhận dạng tốt các mẫu mới, không chỉ giới hạn ở những mẫu đã học.
Việc nhận dạng đối tượng trong ảnh đối với con người là điều tương đối đơn giản, nhưng đối với hệ thống nhân tạo, quá trình này gặp nhiều khó khăn Để nhận diện một đối tượng từ hình ảnh, hệ thống cần giải quyết nhiều vấn đề phức tạp, do đó, lĩnh vực này vẫn thu hút sự quan tâm nghiên cứu của nhiều nhóm trên toàn thế giới Những khó khăn trong việc nhận dạng bao gồm nhiều yếu tố cần được xem xét.
+ Tư thế, 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.
Hình 2.7: Minh họa sự thay đổi góc chụp
Sự hiện diện hoặc vắng mặt của các thành phần trong hình ảnh có thể làm tăng độ khó trong việc nhận dạng đối tượng Các yếu tố này đóng vai trò quan trọng trong quá trình phân tích và nhận diện, khiến cho bài toán trở nên phức tạp hơn.
Hình 2.8: Minh họa sự thiếu thành phần
Sự biến dạng của đối tượng có ảnh hưởng lớn đến các thông số của nó Ví dụ, cùng một khuôn mặt, nhưng biểu cảm sẽ thay đổi rõ rệt khi người đó cười hoặc cảm thấy sợ hãi.
Hình 2.9: Minh họa sự biến dạng
+ Sự che khuất: Đối tượng có thể bị che khuất bởi các đối tượng khác
Hình 2.10: Minh họa sự che khuất
+ Sự phức tạp của hình nền: Hình nền phức tạp sẽ khiến việc nhận dạng trở nên khó khăn.
Hình 2.11: Minh họa hình nền phức tạp
Điều khiển chất lượng ảnh phụ thuộc vào nhiều yếu tố, bao gồm điều kiện ánh sáng và loại camera sử dụng, như máy kỹ thuật số hay máy hồng ngoại Những yếu tố này có ảnh hưởng đáng kể đến chất lượng cuối cùng của bức ảnh.
Hình 2.12: Minh họa sự thay đổi độ sáng
● Các ứng dụng nhận dạng đối tượng
Bài toán nhận dạng đối tượng có ứng dụng rộng rãi trong nhiều lĩnh vực thực tiễn, điều này thu hút sự quan tâm của nhiều nhóm nghiên cứu trong thời gian dài Một số ứng dụng tiêu biểu liên quan đến nhận dạng đối tượng bao gồm
Hệ thống phát hiện tội phạm sử dụng camera lắp đặt tại các điểm công cộng để giám sát an ninh Khi phát hiện sự xuất hiện của các đối tượng tình nghi, hệ thống ngay lập tức gửi thông điệp đến trung tâm xử lý, giúp tăng cường khả năng phản ứng nhanh chóng đối với các tình huống tội phạm.
+ Hệ thống theo dõi nhân sự trong một đơn vị: giám sát giờ ra vào của từng nhân viên và chấm công.
Hệ thống giao tiếp người máy đang cách mạng hóa cách thức tương tác giữa con người và máy móc, thay thế những phương pháp truyền thống như bàn phím và chuột Thay vào đó, nó sử dụng các giao tiếp trực quan như biểu cảm khuôn mặt, dấu hiệu và cử chỉ tay, mang đến trải nghiệm tương tác tự nhiên và hiệu quả hơn.
Hệ thống tìm kiếm thông tin trên ảnh và video dựa vào nội dung cho phép người dùng tìm kiếm nhanh chóng các đoạn video liên quan đến các nhân vật nổi bật như Obama hoặc Trump Ví dụ, đài truyền hình Việt Nam (VTV) có một kho dữ liệu video tin tức lớn, và hệ thống này giúp họ dễ dàng xác định những video có sự xuất hiện của các nhân vật này.
+ Các hệ thống bảo mật dựa trên thông tin trắc sinh học: mặt người, vân tay,… thay vì xác nhận mật khẩu, khóa,…
+ Phần mềm nhận dạng chữ in, đặc biệt dành riêng cho ngôn ngữ tiếng Việt.
Công nghệ nhận dạng hình ảnh xe và biển số xe có khả năng quản lý và giám sát hiệu quả các phương tiện giao thông, đặc biệt là ở những khu vực nhạy cảm như sân bay và bến cảng Hệ thống này có thể phát hiện sự không khớp giữa thông tin xe với cơ sở dữ liệu, từ đó hỗ trợ trong việc giám sát bãi đỗ xe và đảm bảo an ninh giao thông.
TÍNH TOÁN VÀ THIẾT KẾ 30
Linh kiện sử dụng
Raspberry Pi là một loại máy tính nhỏ gọn, chỉ bằng kích thước thẻ tín dụng, được phát triển bởi Raspberry Pi Foundation tại Anh Sản phẩm này nhằm mục đích khuyến khích việc giảng dạy khoa học máy tính cơ bản tại các trường học và hỗ trợ các nước đang phát triển.
Raspberry Pi không thể thay thế hoàn toàn máy tính để bàn hoặc laptop, vì nó không hỗ trợ chạy Windows do cấu trúc ARM của BCM2835 không tương thích với mã x86/x64 Tuy nhiên, thiết bị này có thể chạy Linux và thực hiện nhiều tác vụ như lướt web và sử dụng môi trường Desktop Với phần cứng giá rẻ và tính năng đa năng, Raspberry Pi là lựa chọn lý tưởng cho các dự án điện tử, DIY và thiết lập hệ thống tính toán tiết kiệm cho việc học lập trình.
Raspberry Pi có hai phiên bản chính, Model A có giá 25$ và Model B có giá 35$. Model B thì thông dụng hơn cả.
The Broadcom BCM2711 is a powerful quad-core Cortex-A72 (ARM v8) 64-bit system-on-chip (SoC) operating at 1.5GHz It offers flexible memory options with 2GB, 4GB, or 8GB of LPDDR4-3200 SDRAM, depending on the model Additionally, it supports dual-band wireless connectivity with 2.4 GHz and 5.0 GHz IEEE 802.11ac, along with Bluetooth 5.0 and BLE networking, ensuring high-speed Ethernet capabilities for enhanced performance.
+ Đầu cắm GPIO 40 chân tiêu chuẩn Raspberry Pi (tương thích ngược hoàn toàn với các bo mạch trước đó)
+ 2× cổng micro-HDMI (hỗ trợ lên đến 4kp60)
+ Cổng hiển thị MIPI DSI 2 làn
+ Cổng camera MIPI CSI 2 làn
+ Cổng video tổng hợp và âm thanh stereo 4 cực
+ H.265 (giải mã 4kp60), H264 (giải mã 1080p60, mã hóa 1080p30)
+ Khe cắm thẻ nhớ Micro-SD để tải hệ điều hành và lưu trữ dữ liệu
+ 5V DC qua đầu nối USB-C (tối thiểu 3A *)
+ 5V DC qua đầu cắm GPIO (tối thiểu 3A *)
+ Bật nguồn qua Ethernet (PoE) (yêu cầu PoE HAT riêng)
+ Nhiệt độ hoạt động: 0-50 độ C
●Hệ điều hành và phần mềm
Raspberry Pi hỗ trợ nhiều hệ điều hành Linux, nhưng vẫn thiếu Ubuntu do hạn chế của CPU ARMv6 Một số phân phối Linux nhúng có thể chạy trên Raspberry Pi bao gồm Raspbian, Pidora, openSUSE, OpenWRT và OpenELEC Raspbian, một hệ điều hành miễn phí dựa trên Debian, được tối ưu hóa cho phần cứng Raspberry Pi và cung cấp hơn 35,000 gói phần mềm đã được biên dịch sẵn, giúp việc cài đặt trở nên dễ dàng hơn.
Raspberry Pi cung cấp một phiên bản Linux dựa trên Debian, tương tự như Ubuntu, với giao diện LXDE thay vì GNOME Hệ điều hành này đi kèm với đầy đủ trình duyệt web, trình phát media và các công cụ cần thiết, giúp người dùng dễ dàng sử dụng Raspberry Pi như một máy tính cá nhân.
Dự án Raspberry Pi ban đầu nhằm tạo ra một máy tính giá rẻ cho sinh viên và học sinh, nhưng đã thu hút sự quan tâm từ nhiều đối tượng khác nhau Nhờ vào sức sáng tạo không giới hạn của con người, Raspberry Pi đã được phát triển thành nhiều sản phẩm đa dạng với khả năng ứng dụng tuyệt vời.
Một số ứng dụng thực tế đã được thực hiện:
+ Làm xe ô tô điều khiển từ xa
+ Thiết bị hỗ trợ chụp Time-laspe
+ Hệ thống máy tính cho ô tô
Arduino Uno R3 là phiên bản thứ ba trong dòng sản phẩm Arduino, giúp người dùng dễ dàng tiếp cận lập trình và phát triển phần cứng với các tính năng mong muốn một cách nhanh chóng và tiết kiệm chi phí.
+ Điện áp vào khuyên dùng: 7-12V
+ Điện áp vào giới hạn: 6-20V
+ Digital I/O pin: 14 (trong đó 6 pin có khả năng băm xung)
+ Cường độ dòng điện trên mỗi I/O pin: 20 mA
+ Cường độ dòng diện trên mỗi 3.3V pin: 50 mA
+ Flash Memory: 32 KB (Atmega328P) và 0.5 KB được sử dụng bởi bootloader + SRAM: 2KB (ATmega328P)
Hình 3.4 Sơ đồ chân của Arduino Uno R3
Là một trình soạn thảo giúp bạn có để viết code và nạp vào linh kiện arduino của mình
Hình 3.5 Phần mềm Arduino IDE
Arduino IDE đóng vai trò quan trọng trong việc nạp chương trình vào các linh kiện Arduino, giống như dây dẫn điện cung cấp năng lượng cho động cơ quạt hoạt động Được phát triển bằng ngôn ngữ lập trình Java, phần mềm này là ứng dụng đa nền tảng Các chương trình cho Arduino sử dụng ngôn ngữ C hoặc C++, và Arduino IDE tích hợp thư viện phần mềm gọi là "wiring" để hỗ trợ lập trình.
Việc sử dụng "wiring" gốc giúp đơn giản hóa quá trình lập trình Trong Arduino, một chương trình được gọi là sketch và được lưu dưới định dạng ino.
Arduino Uno R3 là một bo mạch linh hoạt, có thể được sử dụng trong các mạch đơn giản như cảm biến ánh sáng để bật tắt đèn hoặc điều khiển động cơ Ngoài ra, nó còn có khả năng phát triển các sản phẩm phức tạp như máy in 3D, robot, khinh khí cầu, máy bay không người lái và nhiều ứng dụng lớn khác.
3.1.3 Module nhận dạng giọng nói
Module Nhận Dạng Giọng Nói là một thiết bị nhỏ gọn và dễ sử dụng, cho phép nhận diện giọng nói qua micro với khả năng hỗ trợ lên đến 80 lệnh Nó có thể xử lý tối đa 7 lệnh giọng nói đồng thời và cũng cho phép sử dụng âm thanh để điều khiển Để bắt đầu sử dụng, người dùng cần cài đặt mô-đun, có thể thực hiện qua chương trình cài đặt đầy đủ chức năng hoặc thông qua mã và cổng serial với tính năng hạn chế.
Hình 3.6 Module nhận dạng giọng nói
+ Giao tiếp: 5V TTL level for UART hoặc GPIOs
+ Độ chính xác: 99% (theo môi trường lý tưởng)
+ Hỗ trợ tối đa 80 lệnh bằng giọng nói, với mỗi 1500ms giọng nói lệnh + Thư viện Arduino được cung cấp
+ Điều khiển dễ dàng: UART / GPIO
+ Người dùng kiểm soát chung Pin Output
Servo là một loại động cơ điện đặc biệt, chỉ quay khi được điều khiển bằng xung PPM, với góc quay từ 0° đến 180° Các loại servo có kích thước, khối lượng và cấu tạo khác nhau, từ những servo nhẹ chỉ 9g cho đến những loại mạnh mẽ với momen lực lên đến vài chục Newton/m Động cơ servo SG90 là một trong những loại phổ biến nhất, thường được sử dụng cho các mô hình nhỏ hoặc các cơ cấu kéo nhẹ.
Động cơ RC Servo 9G có khả năng phản ứng nhanh với góc quay 180 độ Tuy nhiên, cần lưu ý rằng các bánh răng được làm bằng nhựa, do đó khi nâng tải nặng có thể gây hư hỏng Đặc biệt, động cơ này tích hợp sẵn driver điều khiển bên trong, giúp dễ dàng điều chỉnh góc quay thông qua phương pháp điều độ rộng xung PWM.
Hình 3.7 Động cơ servo SG90
+ Điện áp hoạt động: 4.8-5VDC
+ Tốc độ: 0.12 sec/ 60 deg (4.8VDC)
3.1.5 Một số linh kiện khác
Quạt Tản Nhiệt Sunon 4x4x1cm có kích thước nhỏ gọn, lý tưởng cho việc tản nhiệt hiệu quả Sản phẩm này được ứng dụng rộng rãi trong các thiết bị như quạt điều hòa mini và hệ thống tản nhiệt cho sò nóng lạnh, giúp nâng cao hiệu suất làm mát.
● Camera và màn hình cho Pi 4
Hình 3.9 Camera và màn hình cho Raspberry 4
3.2 Sơ đồ khối hệ thống
Hình 3.10 Sơ đồ khối hệ thống
● Khối xử lý trung tâm:
Raspberry Pi 4 có khả năng nhận tín hiệu hình ảnh từ khối thu khi được điều khiển bởi Arduino Uno Sau khi xử lý và phân tích hình ảnh, Raspberry Pi 4 sẽ trả lại kết quả cho Arduino Uno và tiếp tục chờ lệnh tiếp theo Sản phẩm sử dụng kit Raspberry Pi 4 Model B.
Chương trình hoạt động
Hình 3.11 Sơ đồ chương trình hoạt động
Chương trình hoạt động qua hai đoạn:
Giai đoạn 1 là quá trình huấn luyện và xử lý Raspberry Pi với dữ liệu khuôn mặt, bao gồm hình ảnh tự chụp hoặc trích xuất từ video Dữ liệu này sẽ được gán nhãn tương ứng, và với bộ dữ liệu lớn hơn, độ chính xác trong nhận diện khuôn mặt sẽ cao hơn Hệ thống hiện tại yêu cầu 51 hình ảnh cho mỗi khuôn mặt, thể hiện các góc cạnh và cảm xúc khác nhau Sau khi hoàn tất huấn luyện, một tệp tin xml chứa các đặc trưng được trích xuất cho từng khuôn mặt sẽ được tạo ra.
Bên cạnh đó, sẽ thu câu lệnh mở cửa “Open” bằng module điều khiển giọng nói để cho Arduino xử lý.
Giai đoạn 2 là giai đoạn hoạt động của chương trình, trong đó dữ liệu huấn luyện và câu lệnh thu thập được ở giai đoạn 1 sẽ được sử dụng để mở cửa.
3.3.1 Chương trình nhận dạng khuôn mặt
Chương trình nhận dạng khuôn mặt được chia thành 3 bài toán:
● Bài toán 1: Phát hiện khuôn mặt
Để bắt đầu phát hiện khuôn mặt, bước đầu tiên là khai báo thư viện và mở camera Sử dụng OpenCV, ta cần tập tin đặc trưng xml, cụ thể là "haarcascade_frontalface_default.xml" Mã lệnh để thực hiện bao gồm việc nhập các thư viện cần thiết, khởi tạo camera với `cv2.VideoCapture(0)`, và tạo đối tượng `face_cascade` từ file xml đã chỉ định Thêm vào đó, ta cần xác định `face_id` và khởi tạo biến đếm `count` để quản lý số lượng khuôn mặt được phát hiện.
Bước 2: Đọc hình ảnh đầu vào bằng cách lấy dữ liệu từ video và chuyển đổi nó sang ảnh xám để phục vụ cho quá trình xử lý Sử dụng đoạn mã ret, frame = cap.read() và gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) để thực hiện các bước này.
Bước 3: Để phát hiện khuôn mặt trong ảnh, sử dụng lệnh face_cascade.detectMultiScale() Câu lệnh này sẽ nhận đầu vào là ảnh xám và các tham số như scaleFactor = 1.1 và minNeighbors = 5 để xác định vị trí khuôn mặt.
Bước 4: Khoanh vùng khuôn mặt và lưu hình ảnh với ID tương ứng Chọn màu sắc cho khung chữ nhật xác nhận khuôn mặt từ ba màu cơ bản: đỏ, xanh lá và xanh dương (R, G, B) Tạo một thư mục tên "dataset" để lưu trữ hình ảnh Sử dụng đoạn mã sau để vẽ khung quanh khuôn mặt và lưu ảnh: ```pythonfor (x, y, w, h) in faces: cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2) count += 1 cv2.imwrite("dataset/User.1" + "." + str(count) + ".jpg", gray[y:y+h, x:x+w])```
+ Bước 5: Hiển thị hình ảnh.Muốn hiển thị các khuôn mặt đã được lưu trước đó gõ lệnh cv2.imshow. cv2.imshow('frame',frame)
● Bài toán 2: Huấn luyện khuôn mặt
Dữ liệu huấn luyện vừa thu thập được lưu trữ trong tập tin trainer/trainer.xml Sử dụng Python và OpenCV, chúng ta áp dụng mô hình thuật toán nhị phân cục bộ (LBPH) để xử lý hình ảnh Thuật toán này là một toán tử kết cấu đơn giản nhưng hiệu quả, gán nhãn các pixel của hình ảnh bằng cách phân chia vùng lân cận của mỗi pixel và coi kết quả dưới dạng số nhị phân.
Thuật toán LBP (Local Binary Patterns) được giới thiệu lần đầu tiên vào năm 1994 và đã chứng minh là một công cụ mạnh mẽ cho phân loại kết cấu Nghiên cứu cho thấy khi LBP được kết hợp với biểu đồ HOG (Histogram of Oriented Gradients), hiệu suất phát hiện trên nhiều bộ dữ liệu được cải thiện đáng kể Việc sử dụng LBP cùng với biểu đồ cho phép chúng ta biểu diễn hình ảnh khuôn mặt dưới dạng một vectơ dữ liệu đơn giản Với tính chất mô tả trực quan của LBP, thuật toán này cũng rất hữu ích trong các tác vụ nhận dạng khuôn mặt.
● Các tham số trong LBPH:LBPH sử dụng 4 tham số
Bán kính (Radius) là yếu tố quan trọng trong việc xây dựng mô hình nhị phân cục bộ tròn, biểu thị bán kính xung quanh pixel trung tâm Số lượng điểm mẫu (Neighbors) cần thiết để xây dựng mô hình này thường được đặt là 8, tuy nhiên, cần lưu ý rằng việc bao gồm nhiều điểm mẫu sẽ làm tăng chi phí tính toán.
+ Lưới X: Số lượng ô theo hướng ngang Càng nhiều ô, lưới càng mịn, thì chiều của vectơ đặc trưng kết quả càng cao Nó thường được đặt là 8.
+ Lưới Y: Số lượng ô theo hướng dọc Càng nhiều ô, lưới càng mịn, thì chiều của vectơ đặc trưng kết quả càng cao Nó thường được đặt là 8.
Để đào tạo thuật toán nhận diện khuôn mặt, cần sử dụng một bộ dữ liệu chứa hình ảnh khuôn mặt của những người cần nhận diện, cùng với việc gán ID (số hoặc tên) cho mỗi hình ảnh Thuật toán sẽ sử dụng thông tin này để nhận diện hình ảnh đầu vào và cung cấp kết quả đầu ra Các hình ảnh của cùng một người phải có cùng ID Sau khi xây dựng tập huấn luyện, chúng ta sẽ tiến hành các bước tính toán LBPH.
● Áp dụng thao tác LBP
Bước đầu tiên trong quy trình LBPH là tạo ra một hình ảnh trung gian để mô tả hình ảnh gốc một cách hiệu quả hơn, thông qua việc làm nổi bật các đặc điểm khuôn mặt Thuật toán thực hiện điều này bằng cách áp dụng khái niệm cửa sổ trượt, dựa trên bán kính tham số và các lân cận.
Hình 3.12: Mô tả thuật toán LBPH (1)
Dựa trên hình ảnh trên, có thể chia nó thành nhiều bước nhỏ để có thể hiểu nó dễ dàng:
+ Giả sử có một hình ảnh khuôn mặt trong thang độ xám Có thể lấy một phần của hình ảnh này dưới dạng cửa sổ 3x3 pixel.
Nó có thể được biểu diễn dưới dạng ma trận 3x3, trong đó mỗi phần tử chứa cường độ của từng pixel với giá trị từ 0 đến 255 Tiếp theo, giá trị trung tâm của ma trận sẽ được sử dụng làm ngưỡng.
+ Giá trị này sẽ được sử dụng để xác định các giá trị mới từ 8 lân cận.
Để xử lý giá trị xung quanh ngưỡng trung tâm, hãy thiết lập một giá trị nhị phân mới Gán giá trị 1 cho những giá trị bằng hoặc cao hơn ngưỡng và gán giá trị 0 cho những giá trị thấp hơn ngưỡng.
Ma trận hiện tại chỉ chứa các giá trị nhị phân, bỏ qua giá trị trung tâm Mỗi giá trị nhị phân từ từng vị trí trong dòng ma trận sẽ được nối lại theo từng dòng để tạo thành một giá trị nhị phân mới, ví dụ như 10001101 Giá trị nhị phân này sau đó sẽ được chuyển đổi thành giá trị thập phân và được đặt làm giá trị trung tâm của ma trận, đại diện cho một pixel từ ảnh gốc.
+ Vào cuối quy trình này (thủ tục LBP), một hình ảnh mới thể hiện rõ hơn các đặc điểm của hình ảnh gốc.
Hình 3.13: Mô tả thuật toán LBPH (2)
Phép nội suy song tuyến cho phép ước tính giá trị của điểm dữ liệu mới bằng cách sử dụng các giá trị từ 4 pixel gần nhất (2x2) khi các điểm dữ liệu nằm giữa các pixel.
THI CÔNG HỆ THỐNG 43
Thi công hệ thống
Trước khi thi công hệ thống, cần thiết lập mối liên hệ giữa các khối để điều khiển chương trình hiệu quả Sơ đồ chân kết nối giữa các linh kiện được thiết kế bằng phần mềm Fritzing, chuyên dụng cho việc vẽ sơ đồ nguyên lý.
Hình 4.1 Sơ đồ chân kết nối giữa các linh kiện
Sau khi hoàn thiện mạch nguyên lý cơ bản, chúng ta sẽ tiến hành lắp đặt hệ thống mở khóa sử dụng công nghệ nhận dạng khuôn mặt và giọng nói.
Hình 4.2 Mặt trước hệ thống
Hình 4.3 Mặt trong hệ thống
Tiến hành thử nghiệm và kết quả
● Các bước truy cập, lập trình trên Python
Ngay sau khi cài đặt xong Raspbian lên Raspberry Pi 4, có hai cách điều khiển Pi4 thông dụng:
+ Cách 1: Điều khiển trực tiếp: Dùng chuột, bàn phím màn hình gắn vào Raspberry Pi điều khiển trực tiếp thông qua các cổng giao tiếp có sẵn.
Để điều khiển Raspberry Pi 4 qua laptop, bạn cần sử dụng dây LAN để kết nối giữa hai thiết bị Sau đó, sử dụng phần mềm Remote Desktop Connection để truy cập vào địa chỉ IP của Raspberry Pi 4.
- Tạo địa chỉ IP tĩnh cho Pi và máy tính, cho phép máy tính chia sẻ mạng choRaspberry.
Hình 4.4 Tạo địa chỉ IP tĩnh
- Sau đó, sử dụng Advanced IP Scanner để tìm địa chỉ IP chính xác và kiểm tra xem Raspberry có hoạt động hay không
Hình 4.5 Phần mềm Advanced IP Scanner
To access the operating system of the Raspberry Pi 4, utilize the Remote Desktop Connection software available on Windows 10 Simply open the Run dialog and enter the software name to launch it.
Hình 4.6 Phần mềm Remote Desktop Connection
- Sau đó nhập tài khoản, mật khẩu để truy cập vào hệ điều hành Rasbpian, mặc định tài khoản: “pi”, mật khẩu: “1”
Hình 4.7 Giao diện đăng nhập vào Raspberry
Sau khi hoàn tất việc xử lý chương trình phát hiện khuôn mặt và huấn luyện dữ liệu, chúng tôi đã thu được một tệp dữ liệu (dataset) gồm 51 bức ảnh khuôn mặt với kích thước và trạng thái đa dạng.
Hình 4.8 Tệp tin dataset chứa dữ liệu
Tiếp tục chạy chương trình nhận dạng khuôn mặt để nhận dạng được đúng khuôn mặt đã huấn luyện lúc trước
Hình 4.9 Giao diện nhận dạng khuôn mặt
Cuối cùng, kết hợp với chương trình nhận dạng giọng nói để mở cửa
Hình 4.10 Kết quả thu được
Nhận xét đánh giá
● Nhận xét chung:Hệ thống đã áp ứng được cơ bản yêu cầu của đồ án gồm nhận dạng khuôn mặt và tiếng nói để mở cửa.
+Tính bảo mật nâng cao hơn
Trong quá trình nhận dạng tiếng nói và khuôn mặt, nhiều khó khăn đã xuất hiện Kết quả nghiên cứu hiện tại chỉ dừng lại ở mô hình hệ thống mà chưa được khảo sát thực tế Đặc biệt, thuật toán LPBH vẫn chưa đạt độ chính xác cao, thường nhận sai khuôn mặt và chỉ có thể nhận dạng khuôn mặt thẳng với điều kiện ánh sáng đủ tốt.
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Sau gần 3 tháng nghiên cứu, em đã hoàn thành đồ án tốt nghiệp mang tên “Ứng dụng xử lý ảnh thiết kế khóa nhà thông minh” nhờ vào nỗ lực cá nhân, sự hướng dẫn tận tình của cô Vũ Anh Đào và sự hỗ trợ từ các anh chị, bạn bè.
+ Tìm hiểu về thuật toán LPBH và áp dung trong bài toán nhận dạng khuôn mặt + Tìm hiểu về nhận dạng giọng nói
+ Tìm hiểu về hệ điều hành của Raspberry Pi 4 Model B
+ Tìm hiểu về ngôn ngữ Python và thư viện OpenCV
+ Xây dựng được hệ thống mô hình khóa cửa bằng công nghệ nhận diện khuôn mặt và tiếng nói
● Hướng phát triển đề tài
+ Ứng dụng các công nghệ nhận dạng khác như vân tay, thẻ từ xây dựng hệ thống bảo mật an toàn cho nhà thông minh
+ Sử dụng các thuật toán khác khắc phục những hạn chế mà thuật toán LPBH còn gặp phải để có thể đưa vào khảo sát thực tế
[1] PGS TS Nguyễn Quang Hoan, Giáo trình “Xử lý ảnh”, Học viện Công nghệ Bưu chính Viễn thông, Hà Nội, 2006.
[2] ThS Trần Thúy Hà, Bài giảng “Xử lý ảnh”, Học viện Công nghệ Bưu chính Viễn thông, 2013.
[3] TS Lê Ngọc Thúy, Bài giảng “Thị giác máy tính”, Học viện Công nghệ Bưu chính Viễn thông, 2019.
[4] Lương Mạnh Bá, Nguyễn Thanh Thủy, Giáo trình “Nhập môn xử lý ảnh”, Đại học Bách Khoa Hà Nội, 2008.
[5] Phạm Hồng Ngữ, “Nhận dạng đối tượng sử dụng thuật toán Adaboost”, Luận văn thạc sĩ khoa học công nghệ thông tin, Huế, 2009.
[1] Agbo David O, Madukwe Chinaza, Odinya Jotham O, “Design And Implementation Of A Door Locking System Using Android App”, International Journal of Scientifi and Technology Research Volume 06, Issue 08, August 2017.
[2]Ketki Prasade, Supriya Nalavade, Devaki Pathak,“Face Recognition Based Door Locking System”, International Research Journal of Engineering and Technology Volume 05, Issuse 08, July 2018.
[3] Md Nasimuzzaman Chowdhury, Md ShibleeNooman, SrijonSarker, “Access Control of Door and Home Security by Raspberry Pi through Internet”, International Journal of Scientific & Engineering Research, Volume 4, Issue11, November 2013.
Chương trình nhận dạng giọng nói
{ pinMode(cam, INPUT); myVR.begin(9600);
Serial.begin(115200); myservo.attach(11); myservo.write(75); if(myVR.clear() == 0){
Serial.println("Not find VoiceRecognitionModule."); Serial.println("Please check connection and restart Arduino."); while(1);
} if(myVR.load((uint8_t)command) >= 0){
{ int ret; ret = myVR.recognize(buf, 50); if(ret>0 && buf[1]==command && analogRead(cam)>500) { myservo.write(170); delay(2000); myservo.write(75);