Đặc biệt, nhóm cũng xin gửi lời cảm ơn sâu sắc đến tới thầy Th.S Lê Quang Vũ giảng viên thuộc bộ mô điện ô tô của trường Đại học Sư phạm Kỹ Thuật Thành Phố Hồ Chí Minh đã hướng dẫn tận t
TỔNG QUAN VỀ ĐỀ TÀI NGHIÊN CỨU
Đặt vấn đề
Trong vài thập kỷ qua, sự phát triển vượt bậc của khoa học kỹ thuật đã đưa xử lý ảnh, mặc dù còn tương đối mới mẻ so với nhiều ngành khác, trở thành một lĩnh vực phát triển nhanh chóng và thu hút sự quan tâm lớn từ cộng đồng khoa học Điều này đã thúc đẩy sự hình thành và phát triển của nhiều trung tâm nghiên cứu và ứng dụng trong lĩnh vực này Xử lý ảnh giữ một vai trò thiết yếu trong nhiều ứng dụng thực tế như kỹ thuật và đời sống xung quanh chúng ta: như sản xuất cần độ chính xác cao, kiểm tra chất lượng tốt sản phẩm, xe tự hành, tiền va chạm, phát hiện biển báo an giao thông, trong y học thì phát hiện nhận biết khối u ác tính,… Nhưng đối với ngành ô tô ngày này việc các nhà sản xuất xe hơi nổi tiếng như mercedes-benz, BMW, Audi,… Họ không chỉ tập chung phát triển hiệu suất của xe, khả năng tăng tốc, tiết kiệm nhiên liệu, những thiết kế độc lạ về body xe và phần không thể thiếu được hệ thống tiện nghi trên xe vô cùng tiên tiến được nâng cấp qua từng năm của mỗi hãng xe Ngày nay, việc tạo ra các sản phẩm và dịch vụ phù hợp với nhu cầu cá nhân của từng khách hàng đang trở thành một trong xu thế mà các nhà sản xuất đang hướng tới Xu hướng này cho thấy mong muốn mà người tiêu dùng được sở hữu các sản phẩm độc đáo, theo sở thích của họ Đối với ngành công nghiệp ô tô, việc cá nhân hóa chiếc xe trở thành xu thế ngày càng tăng của khách hàng Điều này cho phép khách hàng tạo ra những chiếc xe theo sở thích của họ, tạo ra trải nghiệm độc đáo và mang tính cá nhân hoá cao Để tăng tính thoải mái cho người dùng việc thích hợp xử lý ảnh trong việc thao tác thay vì nhấn nút sẽ làm cho người sử dụng cảm thấy mọi thứ xung quanh đều thông minh và có thể điều khiển theo sở thích của mình Cụ thể là việc khi người ngồi trên xe không cần nhấn gọi ghế đã lưu chỉ cần quét khuôn mặt và tự động đưa về vị trí trước đó Nhận thấy được sự tiện lợi đó nhóm quyết định chọn đề tài “Nghiên cứu, thiết kế và thi công mô hình điều khiển ghế thông minh bằng nhận diện khuôn mặt” Với mục đích giúp sinh viên tìm hiểu và nghiên cứu về công nghệ xử lý ảnh, đồng thời làm rõ ứng dụng của công nghệ này trong các hệ thống ô tô như xe tự lái, khóa bảo mật, phanh khẩn cấp, và đỗ xe tự động, Từ đó, chúng ta có thể nhận thấy tầm quan trọng của trí tuệ nhân tạo đối với con người và sự phổ biến của các ứng dụng của nó trong đời sống
Mục tiêu đề tài
• Tìm hiểu về ghế điện
• Tìm hiểu lý thuyết xử lý ảnh
• Tìm hiểu lý thuyết các phương pháp, thuật toán và xây dựng chương trình sử dụng cho bài toán nhận dạng đối tượng
• Nghiên cứu thiết kế giao diện giao tiếp với người dùng
• Nghiên cứu thiết kế mạch bộ nhớ ghế
• Kiểm nghiệm và đánh giá hệ thống.
Đối tượng nghiên cứu
• Raspberry PI 4 và bộ điều khiển nhớ ghế
• Ngôn ngữ lập trình C trên Arduino, Python và các thư viện khác trên Pycharm
• Thư viện Tkinter để thiết kế giao diện người dùng
• Quản lý cơ sở dữ liệu SQLite
• Sơ đồ mạch điện ghế RX300 đời 1999 không có bộ nhớ ghế.
Mục đích
Mở rộng kiến thức về mảng xử lý ảnh, nhằm cho mục đích hiểu hơn về các công nghệ có liên quan như tiền va chạm, xe tự hành,… như hiểu được tầm quan trọng của
AI đối với cuộc sống ngày nay Nghiên cứu tạo cơ sở để có thể nâng cấp, ứng dụng thực tế cũng như phát triển các tiện ích khác trên ô tô
Tiếp thu và tích luỹ kiến thức làm hành trang cho kỹ sư trong tương lai và phục vụ cho những người cần tài liệu tham khảo sau này.
Giới hạn đề tài
• Dùng camera để phát hiện và nhận dạng khuôn mặt người dùng
• Cách thức nhận dạng đối tượng bằng cách sử dụng các phương pháp kỹ thuật như Haar cascade, Local Binary Patterns Histogram, Resnet
• Bộ nhớ ghế nhớ điều khiển nhớ ba motor , và nhớ được tối đa ba khuôn mặt
• Camera sẽ nhận dạng kém hiệu quả trong môi trường có cường độ ánh sáng mạnh hoặc quá yếu và bức xạ nhiệt lớn
• Sử dụng framework, thư viện, cấu trúc đã được công bố trước đó
• Hệ thống camera nhận diện và các thuật toán phát hiện khuôn mặt thường hoạt động tốt nhất ở khoảng cách trung bình, khoảng từ 0,8 mét đến 1 mét Ở những khoảng cách quá xa hoặc quá gần, độ chính xác của việc nhận diện và phát hiện khuôn mặt có thể bị giảm sút.
Phương pháp nghiên cứu
Tra cứu tài liệu trong và ngoài nước, tìm kiếm những trang web uy tín và các giáo trình có liên quan.
Kết cấu các chương của khoá luận tốt nghiệp
Nội dung của bài khoá luận tốt nghiệp gồm:
• Chương 1: Tổng quan về đề tài nghiên cứu
• Chương 2: Cơ sở lý thuyết
• Chương 3: Thiết kế hệ thống
• Chương 4: Thi công hệ thống
• Chương 5: Kết quả, nhận xét và đánh giá
• Chương 6: Kết luận và hướng phát triển
CƠ SỞ LÝ THUYẾT
Cơ sở lý thuyết ghế điện trên ô tô
2.1.1 Lịch sử và quá trình phát triển
Khi ô tô mới xuất hiện vào cuối thế kỷ thứ XIX, khi đó ghế ô tô cho tài xế và hành khách khá đơn giản cấu tạo bao gồm tựa lưng và đệm mông, để cho người ngồi cảm thấy dễ chịu khi đi qua những con đường xấu thì người ta đã thêm vào lò xo hoặc cao su vào phần đệm mông để người trên xe có trải nghiệm tốt hơn, và vị trí ghế được lắp cố định khá bất tiện đối với những người không đủ tiêu chuẩn về chiều cao Những năm sau đó, khi này vị trí ghế đã có thể di chuyển được nhưng chỉ có thể thay đổi hai hướng tiến và lùi, nhưng cũng không đáng kể Nhận thấy được điều đó, hãng xe Ford đã giới thiệu dòng xe Ford Thunderbird vào năm 1950 đã thích hợp ghế điện điều chỉnh bốn hướng tiến/ lùi và lên/ xuống Lúc đó khách hàng rất hài lòng về tính năng này, chỉ vài năm sau đó ghế điện điều chỉnh sáu hướng được ra đời vào năm 1955 Ngày nay, hầu hết các xe có ghế chỉnh điện đều điều chỉnh sáu hoặc tám hướng.
Với sự phát triển vượt bậc của công nghệ và kèm theo nhu cầu của con người càng cao, đòi hỏi nhiều tiện lợi cho chính mình Có một vấn đề là mỗi khi tài xe cho người khác mượn xe để di chuyển thì vị trí thoải mái của mình bị thay đổi, như vậy rất bất tiện đối với khách hàng của mình Lại một lần nữa hãng công ty Ford Motor Company đã thấu hiểu điều đó đã cho ra mắt hai mẫu xe Ford Thunderbird và Mercury Turnpike Cruiser sử dụng bộ nhớ để nhớ vị trí ghế vào năm 1957 Ghế “Dial - a - Matic” sử dụng núm xoay có chữ và số để điều chỉnh ghế tiến/ lùi hoặc lên/ xuống Khi công tắc tắt, ghế lúc này sẽ di chuyển xuống ở vị trí thấp nhất để tài xế có thể ra vào dễ dàng hơn Ngược lại nếu công tắc được bật, ghế sẽ di chuyển đến vị trí mà ta đã thiết lập trước đó [1]
2.1.2 Các loại ghế trên ô tô hiện nay
Loại ghế cứng được cố định bằng bu lông ở một vị trí nhất định ở trên xe Nó là loại ghế cơ bản thường được sử dụng ở những xe đời cũng, xe bus, tàu lửa, máy bay, Ghế cứng này không thể điều chỉnh được các hướng như lên/ xuống, tiến/ lùi
Hình 2 1 Ghế cứng ở trên xe khách GAZ 24 chỗ [2]
Bảng 2 1 Ưu điểm và nhược điểm ghế cứng Ưu điểm Nhược điểm
• Dễ dàng bảo dưỡng, thay thế khi ghế bị hưng hỏng tốn ít thời gian.
• Thiết kế đơn giản nhưng cũng tương đối đẹp.
• Hạn chế điều chỉnh nhiều hướng khác nhau.
• Đi xa gây cảm giác khó chịu cho người ngồi trên xe.
2.1.2.2 Ghế điều chỉnh hướng bằng cơ khí Ở loại ghế này ta có thể điều chỉnh được bốn hướng là tiến/ lùi, lên/ xuống Nhưng ở đây ta dùng tay để thao tác điều chỉnh ghế theo mong muốn của mình như là kéo cần gạt, hay thanh trượt bằng cơ khí Cơ cấu điều chỉnh bốn hướng sử dụng hoàn toàn bằng cơ khí như lẫy, thanh trượt, cần gạt, bi,
Hình 2 2 Ghế điều chỉnh bằng cơ khí [3]
Bảng 2 2 Ưu điểm và nhược điểm của ghế điều chỉnh bằng cơ khí Ưu điểm Nhược điểm
• Có thể di chuyển đến nhiều vị trí khác nhau.
• Cũng giống như ghế cứng chi phí bảo dưỡng, sửa chữa và thay thế tương đối thấp.
• Áp dụng cho nhiều dòng xe khác nhau.
• Ở thế hệ này vẫn chưa có giảm xóc.
• Khi di chuyển vị trí ghế có phát ra tiếng ma sát của các chi tiết.
• Điều chỉnh hướng thực hiện hoàn toàn bằng tay
2.1.2.3 Ghế có hệ thống treo a) Ghế có hệ thống treo khí nén
Ghế hơi đã trở thành một lựa chọn phổ biến trên các phương tiện hạng nặng như xe tải, xe buýt và xe cần cẩu Những chiếc ghế này được trang bị hệ thống giảm xóc bằng khí nén, mang lại sự thoải mái cho người lái và hành khách khi vận hành các phương tiện trong những điều kiện đường xá khác nhau Ghế hơi có một lịch sử phát triển lâu đời, trải qua nhiều lần cải tiến qua nhiều năm để đạt được độ hoàn thiện như hiện nay.
Hình 2 3 Ghế có điều khiển bằng khí nén [4] [5] b) Ghế có hệ thống treo lò xo
Cũng giống như ghế có hệ thống treo khí nén thì loại ghế này có vào những năm
1970 thường được sử dụng cho các xe hạng nặng sau này mới phát triển lên hệ thống treo khí nén Với loại ghế này thiết kế hoàn toàn bằng cơ khí
Hình 2 4 Cấu tạo bao gồm ghế và lò xo [6]
Hình 2 5 Cấu tạo bao gồm ghế, lò xo và thanh bản lề [6]
Bảng 2 3 Ưu điểm và nhược điểm ghế có hệ thống treo Ưu điểm Nhược điểm
• Có thiết kế rộng rãi và thoải mái.
• Được trang bị hệ thống treo nên tăng cảm giác lái cho người ngồi Có nhiều loại bộ giảm xóc kép phù hợp cho địa hình khó khăn và trọng lượng người lớn.
• Chi phí sửa chữa, bảo dưỡng và thay thế tương đối nhẹ.
• Vẫn còn điều chỉnh tay.
• Phù hợp cho xe hạng nặng, xe tải và xe thường đi những chuyến đi xa.
• Diện tích và khối lượng khá lớn
2.1.2.4 Ghế có điều chỉnh điện tử
Với sự phát triển không ngừng của khoa học - công nghệ đặc biệt là về ô tô, để tạo cảm giác thoải mái và nhiều tiện ích cho tài xế và hành khách trong xe đặc biệt là ghế ngồi Các kỹ sư không ngừng cải tiến và phát triển không ngừng cho đến ngày nay thì những loại ghế điều khiển cơ khí đã được điều khiển hoàn toàn bằng điện thông qua nút nhấn Những chiếc ghế điện này ta chỉ cần thao tác bằng cách nhấn nút thay vì là dùng tay để đẩy hoặc kéo cần trước đây, các chức năng trước đó có thì ghế điện đều có nhưng ở đây việc điều chỉnh hướng không chỉ là bốn hướng nữa mà nó có thể lên tới 30 hướng đối với xe sang Và đặc biệt thích hợp nhiều tính năng như nhớ ghế, sưởi, massage thông
9 qua hộp điều khiển ECU Với ghế điện thông thường được chia theo các kiểu điều chỉnh hướng như sau: a) Điều chỉnh sáu hướng
Ngày nay các xe tầm trung sẽ sử dụng kiểu điều chỉnh sáu hướng để điều chỉnh vị trí đặt chân một cách thoải mái nhất Cụ thể sáu hướng như sau:
• Hướng tiến/ lùi: Giúp người ngồi điều điều chỉnh được vị trí xa hay gần vô lăng
• Hướng lên/ xuống phần lưng: Giúp người ngồi điều chỉnh ngả lưng
• Hướng lên/ xuống phần đùi: Giúp người ngồi điều chỉnh được khoảng cách đầu gối so với vô lăng
Hình 2 6 Sáu hướng điều chỉnh của ghế [7] b) Điều chỉnh tám hướng
Thay vì chỉ điều chỉnh ở sáu hướng cơ bản, ghế công thái học có thể điều chỉnh tám hướng giúp người ngồi cảm thấy thoải mái hơn Tám hướng điều chỉnh này bao gồm: chiều cao ghế, chiều cao tựa lưng, độ nghiêng tựa lưng, độ sâu của đệm ngồi, vị trí tựa đầu (nếu có), điều chỉnh phần đùi (ghế văn phòng cao cấp) và điều chỉnh phần mông Với những tùy chỉnh toàn diện này, ghế công thái học giúp hỗ trợ phù hợp với mọi vóc dáng và nhu cầu, đảm bảo nâng đỡ tối ưu và giảm đau nhức trong khi làm việc hay học tập trong thời gian dài.
Ghế chỉnh điện ở xe SUV, CUV hoặc Sedan hạng D có thể điều chỉnh ở mười vị trí khác nhau, bao gồm tám hướng điều chỉnh cơ bản như đã đề cập và thêm hai hướng hỗ trợ là bơm lưng và nâng đỡ cột sống, giúp giảm tình trạng đau lưng cho người ngồi.
2.1.3 Cấu tạo và nguyên lý hoạt động
Khung ghế được làm từ sắt được phun sơn chống rỉ, với hai phần chính:
• Phần lưng bao gồm sắt tròn được uốn thành khung hình chữ nhật và phần lưới sắt được hàn cố định trên khung Ở hai bên hông khung ghế được hàn thêm hai bản lề để lắp motor bơm lưng và túi khí
• Phần đệm mông và phần chân ghế được làm sắt dày hơn do chịu trực tiếp trọng lượng của người ngồi Xung quanh được bố trí nơi lắp công tắc ghế, motor ngả lưng và khóa dây an toàn, còn ở bên dưới ghế được bố trí ba motor trượt, nâng đùi và nâng mông
Hình 2 9 Bố trí các bộ phận và khung ghế
Ngày nay, các thiết bị ứng dụng chuyển động quay cơ bản ở trên xe ô tô như cần gạt mưa, gương, bơm, thì sử dụng động cơ DC (Direct Current) nam châm vĩnh cửu Bởi vì, việc sử dụng và điều khiển chúng dễ dàng hơn là động cơ xoay chiều AC (Alternating Current) do chỉ điều khiển tốc độ động cơ, vị trí và mô men xoắn
12 Đối với nhánh motor DC thì có hai loại thường bắt gặp là động cơ có chổi than và động cơ không có chổi than (BLDC) Công dụng của chổi than là đảo chiều dòng điện để sinh ra lực làm motor quay được, đến với thế hệ động cơ đời mới thay vì chuyển mạch cơ học trước đó giờ đây điều khiển bằng điện tử Trên thực tế, thì cả hai động cơ này đều sử dụng nguyên tắc đẩy khi hay cực của nam châm cùng cực và hút khi khác cực lúc đó chúng sinh ra lực từ làm quay motor Tuy vậy mỗi motor đều có ưu và nhược điểm riêng tùy vào mục đích sử dụng
2.1.3.2.1 Động cơ DC có chổi than
Hình 2 10 Cấu tạo động cơ một chiều có chổi than [8] Động cơ một chiều có chổi than có những bộ phận chính sau đây:
Cơ sở lý thuyết xử lý ảnh
2.2.1 Giới thiệu xử lý ảnh
Xử lý ảnh là một lĩnh vực thuộc thị giác máy, tập trung vào việc biến đổi hình ảnh ban đầu thành hình ảnh mới với các đặc điểm và mục đích mong muốn của người dùng Quá trình này bao gồm nhiều bước, từ phân tích và phân loại đối tượng trong ảnh đến nâng cao chất lượng, phân đoạn và tách cạnh, gán nhãn cho vùng và trích xuất thông tin
Xử lý ảnh số là một lĩnh vực quan trọng trong tin học ứng dụng, tương tự như xử lý dữ liệu bằng đồ hoạ Trong xử lý dữ liệu bằng đồ hoạ, ta làm việc với ảnh nhân tạo, được coi là một cấu trúc dữ liệu được tạo ra bởi các chương trình khác nhau Xử lý ảnh số sử dụng nhiều 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 tiêu của xử lý ảnh bao gồm cải thiện chất lượng ảnh, nhận dạng tự động, dự đoán và đánh giá nội dung của ảnh
Xử lý ảnh có ứng dụng rộng rãi trong nhiều lĩnh vực thực tế, gồm như:
• Lĩnh vực quân sự: Sử dụng xử lý ảnh để phân tích và nhận dạng ảnh quân sự, như nhận dạng mục tiêu, phân tích hình ảnh từ máy bay không người lái (drone), hay phân tích hình ảnh từ hệ thống giám sát
• Lĩnh vực giao tiếp người máy: Sử dụng xử lý ảnh để nhận dạng ảnh, xử lý âm thanh và đồ họa trong các hệ thống giao tiếp người máy, như hệ thống nhận diện giọng nói, hệ thống nhận diện khuôn mặt, hoặc hệ thống nhận biết cử chỉ
• Lĩnh vực an ninh và bảo mật: Sử dụng xử lý ảnh để nhận dạng khuôn mặt, nhận dạng vân tay, hay phân tích hình ảnh từ các hệ thống an ninh và giám sát
• Lĩnh vực giải trí: Xử lý ảnh số được sử dụng trong công nghệ trò chơi điện tử, cho phép tạo ra đồ họa chân thực và hiệu ứng hình ảnh đẹp mắt
• Lĩnh vực y tế: Xử lý ảnh y sinh được sử dụng trong chụp X-quang, MRI và các công nghệ hình ảnh y tế khác, để hỗ trợ chẩn đoán và điều trị bệnh
• Lĩnh vực công nghiệp: Sử dụng xử lý ảnh để nhận dạng và phân loại sản phẩm trong quá trình sản xuất, như nhận dạng và phân loại trái cây trong ngành nông nghiệp hoặc nhận dạng sản phẩm trong quá trình kiểm tra chất lượng
Xử lý ảnh số đã và đang mang lại nhiều tiềm năng và ứng dụng đa dạng trong nhiều lĩnh vực khác nhau, đóng góp quan trọng vào sự tiến bộ và phát triển của công nghệ và xã hội Để dễ hình dung, đây là quy trình xử lý ảnh như sau:
Hình 2 34 Quy trình xử lý ảnh a) Thu nhận ảnh
Công đoạn đầu tiên trong xử lý ảnh là quan trọng vì tại đây, ảnh đầu vào được thu thập và số hóa Các thông số quan trọng ảnh hưởng đến chất lượng ảnh gồm độ phân giải, chất lượng, màu sắc và tốc độ thu nhận ảnh Tiếp theo, ảnh trải qua bước tiền xử lý để cải thiện độ tương phản, giảm nhiễu, tăng tính rõ nét bằng cách áp dụng các bộ lọc, trong đó bộ lọc trung bình được sử dụng phổ biến.
Bộ lọc trung bình thay đổi mỗi điểm ảnh bằng giá trị trung bình có trọng số của các điểm lân cận xung quanh, nhằm loại bỏ nhiễu và giảm biến đổi lớn giữa các điểm ảnh gần nhau c) Phân đoạn ảnh
Phân vùng ảnh là quá trình chia một ảnh đầu vào thành các vùng thành phần riêng biệt để thực hiện phân tích và nhận dạng Mục tiêu của quá trình này là tách các thành phần quan trọng trong ảnh để đạt được hiểu biết về nội dung và cấu trúc của ảnh Ví dụ, trong việc nhận dạng chữ (hoặc mã vạch) trên một phong bì thư để phân loại bưu phẩm, cần phân chia các câu chữ thành các từ, chữ cái, số (hoặc dấu gạch ngang) riêng biệt để thực hiện quá trình nhận dạng Phân vùng ảnh là một phần phức tạp và khó khăn trong
38 quá trình xử lý ảnh, và nó có thể gây ra lỗi và làm mất độ chính xác của kết quả nhận dạng ảnh Tuy nhiên, kết quả nhận dạng ảnh dựa nhiều vào quá trình phân vùng này d) Biểu diễn và mô tả
Sau khi phân đoạn, chúng ta thu được vùng ảnh chứa các điểm ảnh đã được phân đoạn, cùng với mã liên kết của các vùng lân cận Để tiếp tục xử lý bằng máy tính, chúng ta cần chuyển đổi số liệu này sang dạng phù hợp với chúng Quá trình này được gọi là trích xuất đặc trưng (Feature Extraction), trong đó chúng ta lựa chọn những thuộc tính quan trọng để biểu diễn ảnh Trích xuất đặc trưng giúp chúng ta rút trích thông tin định lượng từ các điểm ảnh và mã liên kết, hoặc sử dụng chúng làm cơ sở để phân loại và phân biệt các đối tượng trong ảnh Ví dụ, trong nhận dạng ký tự trên phong bì thư, chúng ta có thể mô tả những đặc trưng của từng ký tự để phân biệt ký tự đó với các ký tự khác e) Nhận dạng và nội suy
Nhận dạng ảnh là quá trình xác định và nhận biết nội dung của một hình ảnh Thông thường, quá trình này được thực hiện bằng cách so sánh ảnh đó với các mẫu chuẩn đã được học hoặc lưu trước đó Nội suy là quá trình đưa ra dự đoán hoặc giả định dựa trên quá trình nhận dạng Ví dụ, một chuỗi các đường gạch dọc gần nhau trên một tờ giấy có thể được nội suy thành một mã barcode Có nhiều phương pháp phân loại ảnh khác nhau Theo lý thuyết nhận dạng, các mô hình toán học về ảnh có thể được phân loại thành hai loại cơ bản: nhận dạng theo tham số và nhận dạng theo cấu trúc Các ứng dụng phổ biến của nhận dạng ảnh trong khoa học và công nghệ bao gồm 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, nhận dạng vân tay, nhận dạng mã vạch, nhận dạng khuôn mặt và nhiều ứng dụng khác
2.2.2 Những vấn đề trong xử lý ảnh
THIẾT KẾ HỆ THỐNG
Giới thiệu phần mềm sử dụng
PyCharm là một môi trường phát triển tích hợp (IDE) được phát triển bởi JetBrains để lập trình và phát triển trên ứng dụng Python Nó được sử dụng rộng rãi bởi nhiều ứng dụng lớn như Twitter, Facebook, Amazon và Pinterest làm IDE chính cho Python PyCharm có thể hoạt động trên các hệ điều hành Windows, Linux và macOS Nó cũng đi kèm với các module và gói hỗ trợ lập trình viên phát triển phần mềm Python một cách hiệu quả và tiết kiệm thời gian Hơn nữa, PyCharm cũng cho phép người dùng tùy chỉnh theo nhu cầu của mình Các tính năng của Pycharm sau đây
Trình chỉnh sửa mã thông minh: [28]
• Giúp các lập trình viên viết mã chất lượng cao
• Bao gồm các lược đồ màu cho các từ khóa, lớp và hàm Điều này giúp tăng khả năng đọc và hiểu mã
• Xác định lỗi một cách dễ dàng
• Cung cấp tính năng tự động hoàn thiện và hướng dẫn hoàn thiện mã Điều hướng mã: [28]
• Giúp các nhà phát triển trong việc chỉnh sửa và nâng cao mã với ít nỗ lực và thời gian hơn
• Với việc điều hướng mã, nhà phát triển có thể dễ dàng điều hướng một lớp,hàm hoặc tệp
• Lập trình viên có thể xác định vị trí của một phần tử, một ký hiệu hoặc một biến trong mã nguồn trong thời gian ngắn khi sử dụng PyCharm
• Bằng việc sử dụng chế độ thấu kính, nhà phát triển có thể kiểm tra và gỡ lỗi toàn bộ mã nguồn
• Sử dụng Pycharm có lợi thế là thực hiện các thay đổi hiệu quả và nhanh chóng đối với cả biến cục bộ và biến toàn cục
• Tái cấu trúc trong PyCharm cho phép các nhà phát triển cải thiện cấu trúc bên trong mà không thay đổi hiệu suất bên ngoài của mã
• Nó cũng cho phép phân chia các lớp với các chức năng mở rộng hơn
SQLite Studio là một công cụ quản lý cơ sở dữ liệu SQLite, giúp tạo, chỉnh sửa và truy vấn cơ sở dữ liệu SQLite một cách dễ dàng Một số thông tin cơ bản về SQLite Studio:
• SQLite: SQLite là một hệ quản trị cơ sở dữ liệu quan hệ nhẹ, có mã nguồn mở và miễn phí Nó được thiết kế để nhúng vào các ứng dụng và hỗ trợ các tính năng SQL tiêu chuẩn SQLite không cần máy chủ riêng biệt và dữ liệu được lưu trữ trong một tệp cơ sở dữ liệu duy nhất trên đĩa
• SQLite Studio: SQLite Studio là một công cụ GUI (Graphical User Interface) cho
SQLite Nó cung cấp một giao diện đồ họa để quản lý cơ sở dữ liệu SQLite Bằng cách sử dụng SQLite Studio, ta có thể tạo, chỉnh sửa và xem dữ liệu trong cơ sở dữ liệu SQLite một cách dễ dàng và thuận tiện
• Giao diện người dùng: SQLite Studio cung cấp một giao diện người dùng trực quan và dễ sử dụng Giao diện chia thành các mục như cơ sở dữ liệu, bảng, truy vấn và trình chỉnh sửa SQLite thông qua giao diện này
• Đa nền tảng: SQLite Studio có sẵn trên nhiều nền tảng, bao gồm Window, macOS và Linux Điều này cho phép sử dụng công cụ này trên hầu hết các hệ điều hành phổ biến
• Tích hợp với SQLite: SQLite Studio được phát triển đặc biệt để làm việc với cơ sở dữ liệu SQLite Nó tương thích với phiên bản SQLite mới nhất và hỗ trợ các tính năng và câu lệnh SQL của SQLite
Chức năng của SQLite Studio: SQLite Studio cung cấp nhiều tính năng hữu ích để làm việc với cơ sở dữ liệu SQLite, bao gồm:
• Tạo cơ sở dữ liệu mới trong bảng cơ sở dữ liệu
• Chỉnh sửa cấu trúc của bảng, bao gồm thêm/xóa cột, thay đổi kiểu dữ liệu và ràng buộc
• Chèn, cập nhật và xóa dữ liệu trong bảng
• Thực thi truy vấn SQL để truy xuất và cập nhật dữ liệu
• Xem và chỉnh sửa các chỉ mục, ràng buộc và khóa ngoại
• Sao lưu và khôi phục cơ sở dữ liệu SQLite
Hình 3 3 Giao diện SQLite Studio
Arduino IDE là một phần mềm nguồn mở, được sử dụng chủ yếu để lập trình và biên dịch mã cho các mạch vi điều khiển Arduino Nó bao gồm cả phần cứng và phần mềm
Hệ sinh thái Arduino bao gồm nhiều bo mạch có sẵn cùng các cảm biến và linh kiện điện tử phong phú Arduino IDE đóng vai trò là nền tảng lập trình dễ sử dụng, cho phép người dùng khai thác các cảm biến và linh kiện của bo mạch Arduino một cách trực quan và linh hoạt Môi trường này hỗ trợ đa dạng các ứng dụng, giúp hệ sinh thái Arduino trở nên đa năng và đáp ứng nhiều nhu cầu sử dụng.
Hình 3 4 Trang web chính thức Arduino
Phần mềm Proteus được sử dụng để thiết kế và mô phỏng mạch điện Với Proteus, người dùng có thể tạo, vẽ và mô phỏng các mạch điện tử 2D trên máy tính Thay vì lắp ráp mạch điện thực tế, Proteus cho phép kỹ sư thiết kế và mô phỏng các mạch, tiết kiệm thời gian và chi phí Phần mềm này cũng giảm lỗi do kết nối lỏng lẻo hoặc sai sót mạch Ngoài ra, Proteus giúp kiểm tra thông số kỹ thuật của mạch, chẳng hạn như dòng điện, điện áp và điện trở, những thông số khó quan sát trên mạch vật lý Proteus cung cấp các công cụ điện tử ảo, chẳng hạn như máy hiện sóng, cho phép người dùng theo dõi và phân tích mạch một cách dễ dàng, giúp quá trình thiết kế và mô phỏng hiệu quả hơn.
Hình 3 5 Trang web chính thức của Proteus
SOLIDWORKS là một phần mềm thiết kế 3D chạy trên hệ điều hành Windows, được phát triển bởi công ty Dassault Systèmes SOLIDWORKS Corp., một nhánh của Dassault Systèmes, S.A (Vélizy, Pháp) Nó đã có mặt trên thị trường từ năm 1997 và hiện nay được sử dụng bởi hơn 2 triệu kỹ sư và nhà thiết kế từ hơn 165.000 công ty trên toàn thế giới Phiên bản đầu tiên của SOLIDWORKS được ra mắt vào năm 1995 và ViHoth đã bắt đầu phân phối phần mềm này từ năm 2011 cho đến nay SOLIDWORKS đã trải qua nhiều bước phát triển đáng kể về tính năng, hiệu suất và khả năng đáp ứng nhu cầu thiết kế 3D trong các ngành kỹ thuật và công nghiệp Ngoài ra, SOLIDWORKS cũng được áp dụng rộng rãi trong các ngành khác như đường ống, kiến trúc, nội thất, xây dựng vì tính năng thiết kế 3D mạnh mẽ và danh mục các giải pháp hỗ trợ đa dạng SOLIDWORKS cung cấp các dòng sản phẩm phân tích và mô phỏng, giúp giải quyết các vấn đề liên quan đến lắp ghép, truyền động, động học (Motion), độ bền, ứng suất, mô phỏng dòng chảy và áp suất Bên cạnh đó, SOLIDWORKS CAM là một sản phẩm mới hỗ trợ lập trình gia công phay
Hình 3 6 Giao diện của SolidWorks
CorelDRAW là một phần mềm đồ họa vector, tương tự như Adobe Illustrator, được nhiều nhà thiết kế tin dùng để tạo ra những tác phẩm sáng tạo và độc đáo Những nhà thiết kế thường sử dụng CorelDRAW để thiết kế các bảng quảng cáo, tranh ảnh, bộ nhận diện thương hiệu, in ấn và thiết kế thời trang Phần mềm này cung cấp các công cụ và tính năng mạnh mẽ, cho phép người dùng tạo ra các hình ảnh vector chất lượng cao, điều chỉnh màu sắc, vẽ đường cong, tạo hiệu ứng và thực hiện các công việc thiết kế phức tạp Do những yếu tố trên nhóm đã quyết định sử dụng phần mềm này
Hình 3 7 Giao diện phần mềm CorelDraw 2021
EAGLE (Easily Applicable Graphical Layout Editor) là một phần mềm mạnh mẽ được sử dụng rộng rãi trong lĩnh vực thiết kế mạch điện tử Được phát triển bởi CadSoft Computer GmbH, EAGLE cung cấp một bộ công cụ toàn diện cho việc thiết kế sơ đồ nguyên lý và bố trí mạch in (PCB) Dưới đây là một số đặc điểm và tính năng nổi bật của EAGLE:
• Giao diện người dùng thân thiện: EAGLE có giao diện trực quan, dễ sử dụng, phù hợp cho cả người mới bắt đầu và các chuyên gia trong lĩnh vực thiết kế mạch điện tử
Thiết kế hệ thống
3.2.1 Yêu cầu và mô tả hoạt động của hệ thống
• Giao diện giao tiếp người dùng trực quan, đơn giản và dễ sử dụng
• Nhận diện được khuôn mặt và tiến hành xử lý ảnh thông qua hình ảnh được chụp và ghi lại nhờ Webcam Logitech
• Hệ thống hoạt động thời gian dài, ổn định và không bị lỗi
• Đảm bảo được độ chính xác cao trong quá trình vận hành
• Hệ thống có thể được hoàn thiện và nâng cấp, cải tiến chương trình trong những lần tiếp theo
3.2.2 Sơ đồ khối của hệ thống
Nhóm tiến hành thiết kế sơ đồ khối của hệ thống như sau:
Hình 3 9 Sơ đồ khối của hệ thống Chức năng từng khối:
Khối xử ảnh đảm nhận vai trò trung tâm trong hệ điều hành máy tính, nhận tín hiệu từ các khối khác như nhận tín hiệu hình ảnh, tín hiệu tương tác người dùng Xử lý tín hiệu và hình ảnh đầu vào, ứng dụng các điều khiển chương trình được lập trình trước để đảm bảo tính thống nhất và chính xác trong quá trình xử lý Sau đó, khối xử ảnh sẽ truyền tín hiệu ngõ ra cho cơ cấu chấp hành để thực hiện các hành động cụ thể Đồng thời, truyền tín hiệu hiển thị lên khối hiển thị, đảm bảo thông tin hình ảnh được hiển thị một cách trực quan và dễ hiểu cho người dùng.
• Khối hiển thị và tương tác người dùng: có chức năng hiển thị thông tin và giao tiếp với người sử dụng
• Khối thu tín hiệu (1) (hình ảnh): Có chức năng thu thập tín hiệu hình ảnh từ thực tế, sau đó chuyển dữ liệu thu thập được về cho khối xử lý trung tâm
• Khối xử lý nhớ ghế: Sẽ nhận các tín hiệu từ khối khác như nhận tín hiệu từ xử lý ảnh, tín hiệu từ cảm biến vị trí ghế, sau đó xuất ra khối hiển thị vị trí ghế, điều khiển motor đến vị trí đã lưu trước đó
• Khối thu tín hiệu (2) (cảm biến): Có chức năng thu thập điện áp và từ đó đưa vào khối xử lý nhớ ghế để biết được vị trí của ghế hiện tại, các tín hiệu từ công tắc ghế
• Khối điều khiển motor ghế: Có chức năng xuất tín hiệu điều khiển các mạch cầu
• Khối hiển thị vị trí ghế: Có chức năng hiển thị vị trí ghế hiện tại lên LCD 2004
3.2.3 Thiết kế và thi công phần cơ khí
Sau khi cùng nhau vẽ nhiều bản thiết kế khác nhau và lắng nghe các đề xuất từ thầy, nhóm đã quyết định thiết kế phần khung cho hệ thống như sau:
Hình 3 10 Bảng vẽ 3D khung ghế điện
Hình 3 11 Bảng vẽ 2D khung ghế điện Lựa chọn vật liệu:
Có thể sử dụng nhiều loại vật liệu khác nhau để làm khung xe đẩy, như sắt đen, thép, inox và sắt mạ kẽm Mỗi vật liệu có những ưu và nhược điểm riêng Trong trường hợp
99 sử dụng sắt hộp mạ kẽm, vật liệu này có các ưu điểm sau: Giá thành hợp lý, Độ bền và khả năng chịu lực cao, Chống rỉ sét: Dễ gia công, Trọng lượng nhẹ và ít biến dạng khi va đập Nhóm chọn hai kích thước chính để thi công mô hình là: 50x25x1.5 và 25x25x1.5 (mm)
Hình 3 12 Khung sắt hoàn chỉnh của nhóm
3.2.4 Thiết kế bảng điều khiển
Sau khi cùng nhau vẽ nhiều bản thiết kế khác nhau và lắng nghe các đề xuất từ thầy, nhóm đã quyết định thiết kế phần bảng điều khiển như sau:
Hình 3 13 Bảng điều khiển ghế điện thông minh
3.2.5 Thiết kế bộ điều khiển
Với ghế điện thông minh, nhóm có phần điều khiển riêng biệt như sau:
• Hộp điều khiển ghế điện nhớ
• Hộp điều khiển nhận diện khuôn mặt
3.2.5.1 Bộ điều khiển ghế điện nhớ
3.2.5.1.1.1 Arduino Mega 2560 Để lập trình một thuật toán điều khiển tuỳ theo nhu cầu làm việc của mỗi người, có nhiều lựa chọn board Arduino trên thị trường như Arduino UNO, Arduino Nano, Arduino Due, Arduino Mega, v.v Do khối lượng công việc đòi hỏi nhiều chân tín hiệu từ Arduino, nên nhóm đã quyết định chọn board Arduino Mega 2560 với số lượng chân tín hiệu rất lớn, bao gồm 54 chân digital và 16 chân analog
Arduino là một nền tảng với mã nguồn mở được sử dụng để thiết kế các ứng dụng tương tác với môi trường xung quanh một cách dễ dàng và thuận lợi Nó được ví như một chiếc máy tính thu nhỏ, cho phép người dùng lập trình và thực hiện các dự án điện tử mà không cần sử dụng các công cụ chuyên dụng để nạp mã a) Thông số kỹ thuật của Arduino Mega 2560
Bảng 3 1 Thông số kỹ thuật Arduino Mega 2560
Vi điều khiển chính ATmega2560
IC nạp và giao tiếp UART ATmega16U2
IC giao tiếp USB Host MAX3421E
Nguồn nuôi mạch cổng USB 5VDC
Nguồn ngoài cắm từ giắc tròn DC 7-9VDC
Số chân Digital 54 (15 chân PWM)
Giao tiếp UART 4 bộ UART
Giao tiếp SPI 1 bộ ( chân 50 -> 53 )
Thông thường Arduino Mega 2560 có thể được cấp nguồn 5V thông qua cổng USB hoặc cấp nguồn từ nguồn bên ngoài với cổng tròn với điện áp khuyến nghị của nhà sản
102 xuất từ 7-12VDC và giới hạn từ 6-20VDC Thông thường, việc cấp nguồn bằng một pin vuông 9V là tùy chọn tốt nhất nếu không có nguồn từ cổng USB Tuy nhiên, nếu ta cấp nguồn vượt quá giới hạn tối đa, Arduino Mega 2560 có thể bị hỏng c) Các chân năng lượng của bo mạch
GND (Ground): Cực âm Arduino Mega 2560
Vin (Voltage Input): Để cấp nguồn ngoài cho Arduino Mega 2560, chúng ta sẽ nối cực dương của nguồn với chân này và cực âm của nguồn với chân GND Nếu ta lắp nguồn ngoài mà chân GND không nối với GND của Arduino thì các thiết bị ngoại vi có thể không hoạt động được
IOREF: Chân trên Arduino Mega 2560 có thể được sử dụng để đo điện áp hoạt động của vi điều khiển, và giá trị đo luôn là 5V Tuy nhiên, không nên sử dụng chân này để lấy nguồn 5V cho các mục đích khác vì chức năng chính của nó không phải là cấp nguồn RESET: Khi nhấn nút Reset trên board, vi điều khiển sẽ được reset tương đương với việc chân RESET được kết nối với GND thông qua một điện trở 10K d) Các loại bộ nhớ trên vi điều khiển
Bộ nhớ Flash dung lượng 256 KB được sử dụng để lưu trữ các đoạn lệnh khi lập trình vi điều khiển Thông thường, chỉ một phần nhỏ khoảng vài KB được dành cho bootloader Trong phần bộ nhớ Flash này, hiếm khi cần sử dụng tới hơn 20 KB.
Sơ đồ mạch của toàn bộ hệ thống
Hình 3 34 Sơ đồ mạch của toàn bộ hệ thống
Hình 3 36 Công tắc ghế và motor bơm lưng
Hình 3 37 Raspberry PI 4, Camera, LCD 7 INCH và LED tín hiệu nhớ ghế
Hình 3 38 Mạch cầu H, LCD 2004 và 4 motor ghế
THI CÔNG HỆ THỐNG
Giới thiệu
Hiện nay công nghệ xử lý ảnh đã đi vào nhiều mặt của đời sống, và ứng dụng nhận diện khuôn mặt cũng cực kỳ quan trọng trong thời đại công nghệ hiện nay Đề tài này được ứng dụng thông qua việc xử lý hình ảnh, nhận dạng ảnh, điều khiển nhớ ghế điện đáp ứng nhu cầu tiện nghi trên ô tô Ở phần này, nhóm sẽ trình bày tiến trình nhóm chúng tôi thi công hệ thống Tuy quá trình thi công thực hiện chưa thực sự tốt và chuyên nghiệp nhất nhưng nhóm cũng đã làm ra mô hình và vận hành với độ chính xác tương đối cao.
Mô tả hoạt động của hệ thống
Hệ thống nhận diện khuôn mặt người dùng được giám sát và điều khiển bởi một giao diện trên màn hình cảm ứng, đảm bảo cung cấp sự trực quan nhất Giao diện có các nút nhấn “REGISTER”, nút “TRAIN DATA”, “CHECK FACE”, “DELETE FACE”,
Khi đăng ký mới, người dùng tiến hành điều chỉnh vị trí ghế ngồi sao cho thoải mái và phù hợp nhất Tiếp theo, người dùng nhấn “REGISTER” nhập tên người dùng, lúc đó phần chương trình lấy dữ liệu hoạt động, truy cập CSDL để kiểm tra thông tin có bị trùng hoặc đã hết vị trí đăng ký mới hay không Nếu trùng tên, hệ thống sẽ yêu cầu nhập lại tên khác Nếu đã hết vị trí đăng ký mới, hệ thống sẽ yêu cầu xóa dữ liệu để trống vị trí đăng ký mới Vì giới hạn phần cứng nên nhóm chỉ thiết lập cho 3 vị trí nhớ ghế Khi thông tin người dùng hợp lệ đã được đăng ký mới, Hệ thống sẽ xác định khuôn mặt của người dùng và chụp 100 tấm ảnh và lưu vào file data_face để lưu trữ dữ liệu Tên và số
Lưu trữ ID người dùng vào cơ sở dữ liệu, gắn nhãn cho 100 ảnh với tên "User.[mã ID].[số thứ tự ảnh]" Trong quá trình thu thập dữ liệu, chỉ chụp khuôn mặt xuất hiện trong khung hình, xoay nhiều góc cạnh Hoàn tất thu thập dữ liệu, xuất tín hiệu nhớ vị trí ghế được thiết lập trước Nhấn "TRAIN DATA" để hệ thống huấn luyện và lưu trữ dữ liệu Các lần sau cần nhận dạng người dùng, nhấn "CHECK FACE", hệ thống bật camera xác định khuôn mặt và so sánh với dữ liệu được đào tạo.
125 đã được huấn luyện Khi đã xác định được đúng người dùng đã đăng ký trước, hệ thống sẽ hiển thị thông tin lên màn hình và tiến hành xuất tín hiệu gọi vị trí cho bộ điều khiển vị trí ghế Nếu người dùng xác nhận đúng thông tin, có thể nhấn “ CONFIRM” để lưu thông tin vào file Excel để có thể quản lý thông tin được tốt hơn
Ngoài ra, hệ thống có phím ”MONITOR” để giám sát người dùng qua camera Khi nhấn phím, camera bật lên và hiển thị người dùng trực tiếp kèm hiển thị thông tin trên màn hình.
Thi công phần cứng hệ thống
4.3.1 Chuẩn bị linh kiện phần cứng
Sau khi đã tính toán và thiết kế hệ thống, ta tiến hành chuẩn bị linh kiện để lắp ráp như sau:
Bảng 4 1 Linh kiện cho hệ thống
STT Tên linh kiện Giá trị Số lượng
1 Raspberry Pi 4 Model B Điện áp: 5VDC
2 Màn hình LCD 1024x600 Điện áp: 5 VDC
3 Webcam Logitech C270 Điện áp: 5VDC
5 Adapter nguồn 5V-3A Input: 220VAC-50/60Hz
6 Ốc, vít, trụ đồng cho Raspberry
Pi 4 và màn hình 8 bộ
9 Arduino Mega 2560 Pro Điện áp: 5VDC
10 Màn hình LCD 2004 Điện áp: 5 VDC 1
14 Ốc, vít, trụ đồng cho Raspberry
Pi 4 và màn hình 4 bộ
Hình 4 1 Sơ đồ kết nối các thiết bị khác
Hình 4 2 Sơ đồ kết nối các thiết bị bộ nhớ ghế ở vị trí trượt
Cài đặt hệ điều hành và các thiết bị ngoại vi cho Raspberry PI 4
4.4.1 Thiết bị cần để cài đặt
• Thẻ nhớ Micro SD có dung lượng tối thiểu là 4GB, nhóm sử dụng 32 GB để thoải mái lưu trữ
• Một máy tính cá nhân
• Một đầu đọc thẻ Micro SD
4.4.2 Cài đặt hệ điều hành cho Raspberry
Bước 1: Cắm đầu đọc thẻ nhớ có chứa thẻ nhớ vào máy tính
Bước 2: Cài đặt phần mềm Raspberry Pi Imager cho Windows: Ta cần truy cập vào
Website và chọn Download for Windows https://www.raspberrypi.com/software/
Hình 4 3 Trang Web tải hệ điều hành cho Raspberry
Bước 3: Ta cần khởi động phần mềm Raspberry Pi Imager đã tải về trong thư mục downloads của máy tính
Bước 4: Tiến hành cài đặt như sau:
Hình 4 4 Mục Raspberry Pi Device (chọn thiết bị) -> chọn Raspberry Pi 4
Hình 4 5 Mục Operating System(hệ điều hành) -> chọn Raspberry Pi OS(64-bit)
Hình 4 6 Mục Storage(chọn thiết bị lưu trữ) -> chọn USB Device để lưu vào thẻ nhớ
Hình 4 7 Chọn nơi lưu trữ và đợi tầm 30 phút sẽ cài đặt xong
4.4.3 Cài đặt thư viện cho Pycharm a) Chương trình 1
Trước khi cài các thư viện thì ta cần cài đặt phần mềm Pycharm trên Raspberry Pi 4 Sau khi cài đặt xong ta sẽ cài các thư viện cần thiết thông qua cửa sổ dòng lệnh Terminal trên Pycharm
Hình 4 8 Giao diện Pycharm trên Raspberry PI 4
Cài đặt thư viện Numpy:
• Đối với window: pip install numpy
• Đối với Linux: sudo apt-get install numpy
Cài đặt thư viện Pillow:
• Đối với window: pip install pillow
• Đối với Linux: sudo apt-get install pillow
Cài đặt thư viện Opencv:
• Đối với window: pip install opencv-contrib-python
• Đối với Linux: sudo apt-get install opencv-contrib-python
Cài đặt thư viện RPi.GPIO:
• Đối với window: pip install RPi GPIO
• Đối với Linux: sudo apt-get install RPi.GPIO b) Chương trình 2
Thiết lập môi trường ảo Miniconda cho chương trình:
• Cài đặt thư viện dlib: conda install -c conda-forge dlib
• Cài đặt thư viện opencv: conda install -c conda-forge opencv
• Cài đặt thư viện numpy: conda install -c conda-forge numpy
• Cài đặt thư viện sklearn.svm: conda install -c conda-forge scikit-learn
• Cài đặt thư viện joblib: conda install -c conda-forge joblib
4.4.4 Cài đặt kết nối camera qua cổng USB cho Raspberry PI 4
Bước 1: Kết nối camera, gắn camera USB vào một trong các cổng USB trên Raspberry
Bước 2: Cấu hình Raspberry Pi để nhận diện camera USB, sau đó mở ở Terminal trên
Raspberry Pi hoặc kết nối từ xa vào Raspberry Pi qua SSH Sau đó:
• Gõ lệnh sau để mở cấu hình Raspberry Pi: sudo raspi-config
• Trong cấu hình, sử dụng các phím mũi tên để di chuyển đến “ Interfacing Option” và ấn Enter
• Di chuyển đến “Camera” và nhấn Enter
• Chọn “Yes” để bật camera
• Nhấn Tab, sau đó Enter để thoát khỏi cấu hình và khởi động lại Raspberry Pi
Bước 3: Cài đặt và cấu hình phần mềm hỗ trợ camera USB, kế đó mở Terminal và cài đặt gói “fswebcam” bằng lệnh sau: sudo apt-get install fswebcam
Bước 4: Kiểm tra Camera bằng cách chụp ảnh và đọc ảnh
• Để chụp ảnh từ camera qua USB, nhập lệnh sau trong Terminal: Fswebcam image.jpg
• Nếu camera hoạt động đúng, ta sẽ thấy một tệp “image.jpg” được tạo trong thư mục hiện tại
• Để xem ảnh đã chụp, nhập lệnh : eog image.jpg
Sau các bước trên, Camera đã được kết nối với Raspberry và hoạt động bình thường
4.4.5 Cài trình điều khiển từ xa cho Raspberry PI 4
Bằng cách thiết lập điều khiển gián tiếp qua laptop: Sử dụng VNC Viewer trên laptop để điều khiển từ xa
Bước 1: Cấp nguồn cho Raspberry Pi đồng thời mở laptop
Bước 2: Tải phần mềm PuTTy và RealVNC Viewer
Hình 4 9 Phần mềm PuTTy và RealVNC Viewer
Bước 3: Kết nối cáp Ethernet (dây mạng LAN) từ Raspberry Pi 4 qua laptop, mở ứng dụng PuTTy
Hình 4 10 Giao diện ứng dụng PuTTy
Bước 4: Ở mục Host Name, nhập “ raspberrypi” sau đó nhấn Open, cửa sổ dòng lệnh
Terminal của Raspberry Pi 4 hiện ra, nhập tên và mật khẩu (đã cài đặt trước lúc cài đặt hệ điều hành cho Raspberry Pi 4) để tiến hành đăng nhập
Hình 4 11 Cửa sổ dòng lệnh Terminal của raspberry pi 4
Bước 5: Gõ vào cửa sổ Terminal dòng lệnh “ifconfig” để lấy địa chỉ IP của Raspberry
Bước 6: Sau đó mở phần mềm RealVNC Viewer lên, nhập địa chỉ IP đã lấy được
Hình 4 13 Giao diện VNC trên máy tính
Bước 7: Nhập tên đăng nhập và mật khẩu, sau đó nhấn OK để tiến hành điều khiển
Hình 4 14 Giao diện đăng nhập VNC
Sau khi đã điều khiển ta có thể tiến hành thao tác trên giao diện của raspberry pi trên laptop
Lập trình hệ thống
4.5.1.1 Thiết kế giao diện hệ thống Để giao tiếp với người dùng, Tkinter là một thư viện giao diện hệ thống các phím nhấn và hiển thị thông tin Tkinter khá phổ biến và tương đối dễ sử dụng
Label là nơi hiển thị văn bản và hình ảnh, văn bản được hiển thị trong Label có thể thay đổi bất kì lúc nào theo ý muốn
Cú pháp: Đây là cú pháp tạo Label: W=Label (master, option,…)
• master: Đại diện cho cửa sổ chính
• option: Là danh sách các tùy chọn thường được sử dụng cho Label Các tùy chọn này được biểu diễn bằng một từ khóa và giá trị , chúng ngăn cách nhau bằng dấu phẩy
Bảng 4 2 Các tùy chọn của Label
1 anchor Tùy chỉnh vị trí của văn bản: Left, Center và Right
2 bg Màu nền của Label
3 bitmap Tùy chọn một đối tượng ảnh và Label sẽ hiển thị ảnh đó
4 bd Kích thước đường viền trong Label
5 cursor Tùy chỉnh hiển thị của con trỏ (mũi tên, dấu chấm,…), con trỏ sẽ thay đổi khi ở trên Label đó thay đổi khi ở trên Label đó
6 font Tùy chỉnh phông chữ của Label
7 fg Tùy chọn màu của văn bản
8 height Kích thước dọc của khung
9 image Hiển thị hình ảnh trong Label
10 justify Tùy chỉnh căn chỉnh các dòng văn bản: Left, Center và
11 padx Thêm khoảng trắng vào bên trái, phải của văn bản Mặc định là 1
12 relief Tùy chỉnh các kiểu đường viền của Label Mặc định là
13 text HIển thị một hoặc nhiều dòng văn bản trong Label
14 underline HIển thị gạch dưới(_)bên dưới chữ cái thứ n của văn bản, tính từ 0 Mặc định là gạch dưới =-1, có nghĩa là không có gạch dưới
15 width Tùy chỉnh chiều rộng của Label được tính bằng ký tự
Nếu tùy chỉnh không được thiết lập trì Label sẽ có kích thước vừa khung với nó
16 textvariable Để bổ sung nội dung văn bản được hiển thị trong Label thành một biến điều khiển(stringvar)
17 wraplength Giới hạn số lượng ký tự của một dòng
Thư viện Button dùng để thêm các nút ứng dụng trong Python Các nút này có thể hiển thị văn bản hoặc hình ảnh Nút bấm có thể được liên kết với một hàm để thực hiện khi nút được nhấn.
Cú pháp: Đây là cú pháp đơn giản cho Button: w=Button(master, option=value,…) Trong đó:
• option: là danh sách các tùy chọn thường được sử dụng cho Button Các tùy chọn này được biểu diễn bằng một từ khóa và giá trị, chúng ngăn cách nhau bằng dấu phẩy
Bảng 4 3 Các tùy chọn của Button
1 Activebackground Màu nền của nút khi đưa trỏ vào
2 Activeforeground Màu nền của nút trước khi đưa con trỏ vào
3 Bd Chiều rộng của đường viền được tính bằng pixel Mặc định là 2
4 Bg Màu nền của nút
5 Command Hàm hoặc chức năng được gọi khi nút được nhấn
6 Fg Màu nền của văn bản
7 Font Phông chữ văn bản của nút
8 Height Chiều cao của nút
9 Image Hình ảnh hiển thị trên nút
10 Justify Hiển thị nhiều dòng văn bản:Left, center và right
11 Padx Khoảng trắng bên trái và bên phải của văn bản
12 Pady Khoảng trắng bên trên và dưới của văn bản
13 Relife Thiết lập các dạng đường viền của Button
14 State Thiết lập DISABLED làm mờ và tắt phản hồi của
Button có giá trị ACTIVE khi di chuyển chuột qua nó Mặc định là NORMAL
15 Underline Hiển thị gạch dưới(_)bên dưới chữ cái thứ n của văn bản, tính từ 0 Mặc định là gạch dưới =-1,có nghĩa là không có gạch dưới
16 Width Chiều rộng của Button
17 Wraplength Giới hạn số lượng ký tự của một dòng
4.5.1.1.3 Cấu trúc giao diện của hệ thống
Hình 4 16 Giao diện hoàn chỉnh của hệ thống
Phần giao diện hiển thị chia làm 2 phần chính:
• Label: hiển thị các thông tin về tên đề tài, tên giáo viên, tên sinh viên,…
• Button: hiển thị tên các nút nhấn và thiết lập các chế độ giao tiếp để chạy các chương trình tương ứng
Chức năng của các nút Button:
• Nút REGISTER: chụp hình người dùng để đưa và cơ sở dữ liệu với thông tin tên và ID tương ứng, số lượng là 100 tấm ảnh, đồng thời xuất tín hiệu nhớ vị trí ghế
• Nút TRAIN DATA: tiến hành huấn luyện dữ liệu đã thu thập
• Nút CHECK FACE: Kiểm tra người dùng, đồng thời xuất tín hiệu gọi vị trí ghế
• Nút DELETE FACE: Xóa dữ liệu đã được đăng ký để có thể lưu dữ liệu mới
• Nút CONFIRM: Để lưu thông tin người dùng vào file Excel để người chủ xe có thể quản lý được lịch sử nhận diện
• Nút MONITOR: Để giám sát trực tiếp và hiển thị tên người dùng qua video camera theo thời gian thực
4.5.1.2 Lưu đồ lập trình hệ thống
4.5.1.2.1 Lưu đồ giải thuật tổng thể
Hình 4 17 Lưu đồ tổng thể hệ thống Giải thích lưu đồ giải thuật tổng:
• Đầu tiên, hệ thống sẽ chờ nhấn nút
• Nếu nút “REGISTER” được nhấn Hệ thống sẽ tiến hành lấy dữ liệu của người dùng: Tên người dùng Sau đó, hệ thống sẽ kiểm tra dữ liệu trong CSDL hay không, nếu còn trống sẽ tiến hành lưu tên vào CSDL và chụp ảnh khuôn mặt người dùng, sau đó xuất tín hiệu nhớ ghế Trường hợp CSDL đầy, nếu nút nhấn DELETE FACE được nhấn, xóa dữ liệu tên người dùng đã có trong cơ sở dữ liệu
• Nếu nút TRAIN DATA được nhấn, hệ thống sẽ tiến hành huấn luyện dữ liệu với tất cả các ảnh đã thu thập được và kết thúc
• Nếu nút “ CHECK FACE” được nhấn, hệ thống sẽ tiến hành nhận dạng khuôn mặt và xuất tín hiệu gọi vị trí
• Nếu nút “ GS “ được nhấn, hệ thống sẽ hiển thị camera theo thời gian thực với thông tin người dùng và kết thúc trong 10s
4.5.1.2.2 Lưu đồ giải thuật lấy dữ liệu
Hình 4 18 Lưu đồ giải thuật lấy dữ liệu Giải thích lưu đồ giải thuật lấy dữ liệu:
• Đầu tiên, hệ thống yêu cầu nhập tên người dùng để lưu vào cơ sở dữ liệu Database.db
• Tiếp theo, Camera sẽ bật lên Hệ thống sẽ dùng bộ nhận diện Haarcasde ( bằng Haarcasde_frontalface_default.xml) hoặc bộ phát hiện của Dlib Nếu có hệ thống sẽ xác định vị trí khuôn mặt và vẽ hình chữ nhật quanh khuôn mặt đã xác định
• Hệ thống sẽ cắt từng khuôn mặt trong các khung hình chữ nhật đó và lưu vào file data_face với thông tin của khung hình bao gồm: Tên và Id
• Nếu hệ thống xác định rằng trong khung hình đó không có khuôn mặt thì sẽ lấy khung hình tiếp theo từ Camera để xử lý
• Nếu 100 ảnh khuôn mặt người dùng được lưu vào file data_face, hệ thống sẽ kết thúc chương trình
4.5.1.2.3 Lưu đồ giải thuật huấn luyện dữ liệu a) Sử dụng trích xuất đặc trưng LBPH
Hình 4 19 Lưu đồ giải thuật huấn luyện dữ liệu của LBPH Giải thích lưu đồ Huấn luyện dữ liệu:
• Đầu tiên, hệ thống sẽ trỏ vào thư mục chứa các khung hình thu thập được: data_face
• Tiền xử lý: ảnh sẽ được chuyển thành xám, sau đó chuyển thành ma trận các điểm ảnh và thay đổi kiểu dữ liệu unit8
• Đồng thời, lấy thông tin ID tương ứng với các hình ảnh thông qua trích xuất tên tệp
Mảng ma trận điểm ảnh và ma trận nhãn tương ứng được đưa vào hệ thống để trích xuất đặc trưng bằng phương pháp LBP của từng ảnh Các đặc trưng trích xuất được sẽ được lưu vào tập tin huanluyen.yml.
• Hệ thống sẽ huấn luyện lần lượt hết các ảnh trong thư mục data_face Hệ thống hiển thị số lượng đối tượng đã được huấn luyện trong mô hình
146 b) Sử dụng trích đặc trưng bằng mạng nơ – ron CNN
Hình 4 20 Lưu đồ giải thuật huấn luyện dữ liệu của mạng nơ – ron CNN
Giải thích lưu đồ huấn luyện dữ liệu:
• Đầu tiên, hệ thống sẽ trỏ vào thư mục chứa các khung hình thu thập được: data_face
• Dùng thư viện Dlib để tạo một đối tượng nhận dạng khuôn mặt và một đối tượng xác định khuôn mặt bằng thư viện dlib
• Đồng thời, lấy thông tin ID tương ứng với các hình ảnh thông qua trích xuất tên tệp
• Mảng ma trận hình dạng các đặc trưng và ma trận nhãn tương ứng được đưa vào hệ thống, dùng mạng CNN có sẵn trong thư viện dlib để trích xuất các mạng cách vec-tơ đặc trưng và khoảng các giữa chúng
• Dữ liệu đã được xử lý ở trên sẽ được đưa vào mô hình huấn luyện SVM và lưu lại mô hình đã được huấn luyện Hệ thống sẽ huấn luyện lần lượt hết các ảnh trong thư mục data_face
4.5.1.2.4 Lưu đồ giải thuật Kiểm tra a) Sử dụng trích xuất đặc trưng LBPH
Hình 4 21 Lưu đồ giải thuật Kiểm tra của LBPH Giải thích lưu đồ nhận diện khuôn mặt:
• Đầu tiên, hệ thống sẽ đọc file dữ liệu lưu thông tin của người dùng: Database.db và tệp huấn luyện huanluyen.yml
• Tiếp theo bật camera lên và hệ thống sẽ lấy một khung hình từ camera theo thời gian thực để tiến hành nhận diện
Mô hình sử dụng bộ nhận diện khuôn mặt Haarcascade để xác định sự hiện diện của khuôn mặt trong khung hình Nếu có khuôn mặt, mô hình sẽ cắt khuôn mặt, chuyển đổi thành ảnh xám và trích xuất đặc trưng bằng phương pháp LBPH Sau đó, mô hình so sánh các đặc trưng này với dữ liệu đã huấn luyện để đưa ra kết quả nhận dạng khuôn mặt.
• Nếu đối tượng có đặc trưng giống với đặc trưng của dữ liệu đã huấn luyện Hệ thống sẽ đưa thông tin của người dùng đó hiển thị lên màn hình theo thời gian thực Nếu đối tượng đó có đặc trưng không giống với đặc trưng dữ liệu đã được huấn luyện, hệ thống sẽ hiển thị “Unknown”
• Nếu trong khung hình không có khuôn mặt thì hệ thống sẽ lấy khung hình tiếp theo từ Camera
• Thông tin người dùng sử dụng sẽ được lưu vào file Excel: Details.csv bao gồm: Tên, ID, Ngày, Giờ để dễ quản lý và theo dõi
• Hệ thống sẽ xuất tín hiệu gọi vị trí ghế theo thông tin có trong cơ sở dữ liệu
• Hệ thống kết thúc chương trình
150 b) Sử dụng trích đặc trưng bằng mạng nơ – ron CNN
Hình 4 22 Lưu đồ giải thuật Kiểm tra của mạng nơ – ron CNN
Giải thích lưu đồ nhận diện khuôn mặt:
• Đầu tiện, hệ thống sẽ đọc file dữ liệu lưu thông tin của người dùng: Database.db và tệp mô hình đã được huấn luyện
• Tạo đối tượng nhận dạng và đối tượng phát hiện các đặc trưng của khuôn mặt trong thư viện dlib
• Tiếp theo bật camera lên và hệ thống sẽ lấy một khung hình từ camera theo thời gian thực để tiến hành nhận diện
• Mô hình sẽ tiến hành xác định xem trong khung hình có khuôn mặt hay không bằng bộ phát hiện tích hợp trong thư viện dlib Nếu có khuôn mặt trong khung hình, hệ thống sẽ tiến hành cắt khuôn mặt đó
Lắp đặt hệ thống
Sau khi nhóm lấy mạch in về nhóm có kiểm tra lại các chân tiếp xúc và các via có vài chỗ không thông với nhau, nhóm tiến hành xử lý mà đấu bên ngoài của mạch in
Hình 4 36 Sau và trước khi lắp linh kiện trên mạch PCB
Hình 4 37 Các bo mạch được đặt và cố định trên mica
Hình 4 38 Các vị trí đặt cảm biến
Hình 4 39 Mô hình hoàn thiện
KẾT QUẢ THỰC NGHIỆM
Kết quả
• Hệ thống đã phát hiện và nhận dạng được khuôn mặt bằng ngôn ngữ Python
• Thiết lập giao tiếp giữa raspberry với module relay và Arduino qua các cổng GPIO
• Thiết kế và thi công thành công mô hình nhận dạng khuôn mặt để điều khiển vị trí ghế trên ô tô
• Thiết kế và chế tạo được mạch điều khiển vị trí ghế
• Thi công chế tạo và lắp đặt các cảm biến
• Lập trình được hệ thống nhận diện khuôn mặt và bộ nhớ ghế
5.1.2 Kết quả chưa đạt được
Do bộ xử lý xử lý ảnh của Raspberry Pi 4 tương đối yếu, dẫn đến tình trạng giật hình và không đủ khả năng chạy các thuật toán tiên tiến hơn Vấn đề này cản trở khả năng so sánh các thuật toán Vì vậy, nhóm nghiên cứu đã sử dụng thêm máy tính để hỗ trợ việc xử lý và so sánh thuật toán một cách hiệu quả hơn.
• Bộ phát hiện và nhận diện khuôn mặt còn một số hạn chế trong điều kiện khác nhau
• Vị trí đặt cảm biến của nhóm chưa thật sự tối ưu nên trong một số trường hợp lệch 1 đến 2 xung trong nhiều lần thử thì 20 lần lệch nhưng lâu lâu lại về vị trí cũ
• Nhóm chỉ nhớ được 3 motor ghế.
Đánh giá thực tế
5.2.1.1 Nhận dạng khuôn mặt vị trí góc thẳng đứng
• Trường hợp đủ sáng góc thẳng đứng:
Hình 5 1 Kết quả nhận diện khuôn mặt đủ sáng góc thẳng đứng
• Trường hợp thừa sáng góc thẳng đứng:
Hình 5 2 Kết quả nhận diện khuôn mặt thừa sáng góc thẳng đứng
• Trường hợp thiếu sáng góc thẳng đứng: không phát hiện được
• Trường hợp ngược sáng góc thẳng đứng:
Hình 5 3 Kết quả nhận diện khuôn mặt ngược sáng góc thẳng đứng
Bảng 5 1 Độ chính xác kết quả nhận dạng khuôn mặt ở vị trí góc thẳng đứng
(tính trên 20 lần thử) Điều kiện Đủ ánh sáng Thừa ánh sáng Thiếu ánh sáng Ngược sáng Độ chính xác (%) 90% 85% 0% 30%
5.2.1.2 Nhận dạng khuôn mặt ở vị trí góc nghiêng
• Trường hợp đủ sáng góc nghiêng:
Hình 5 4 Kết quả nhận diện khuôn mặt đủ sáng góc nghiêng
• Trường hợp thừa sáng góc nghiêng:
Hình 5 5 Kết quả nhận diện khuôn mặt thừa sáng góc nghiêng
• Trường hợp thiếu sáng góc nghiêng: Không nhận diện được khuôn mặt
• Trường hợp ngược sáng góc nghiêng:
Hình 5 6 Kết quả nhận diện khuôn mặt ngược sáng góc nghiêng
Bảng 5 2 Độ chính xác kết quả nhận dạng khuôn mặt ở vị trí góc nghiêng
(tính trên 20 lần thử) Điều kiện Đủ ánh sáng Thừa ánh sáng Thiếu ánh sáng Ngược sáng Độ chính xác (%) 75% 30% 0% 10%
5.2.2 Đánh giá kết quả chương trình 2
5.2.2.1 Nhận dạng khuôn mặt ở vị trí góc thẳng đứng
• Trường hợp đủ sáng góc thẳng đứng:
Hình 5 7 Kết quả nhận diện khuôn mặt đủ sáng góc thẳng đứng
• Trường hợp thiếu sáng góc thẳng đứng:
Hình 5 8 Kết quả nhận diện khuôn mặt thiếu sáng góc thẳng đứng
• Trường hợp thừa sáng góc thẳng đứng:
Hình 5 9 Kết quả nhận diện khuôn mặt thừa sáng góc thẳng đứng
• Trường hợp ngược sáng góc thẳng đứng:
Hình 5 10 Kết quả nhận diện khuôn mặt ngược sáng góc thẳng đứng
Bảng 5 3 Độ chính xác kết quả nhận dạng khuôn mặt ở vị trí góc thẳng đứng (tính trên 20 lần thử) Điều kiện Đủ ánh sáng Thừa ánh sáng Thiếu ánh sáng Ngược sáng Độ chính xác (%) 95% 90% 90% 65%
5.2.2.2 Nhận dạng khuôn mặt ở vị trí góc nghiêng
• Trường hợp đủ sáng góc nghiêng:
Hình 5 11 Kết quả nhận diện khuôn mặt đủ sáng góc nghiêng
• Trường hợp thừa sáng góc nghiêng:
Hình 5 12 Kết quả nhận diện khuôn mặt thừa sáng góc nghiêng
• Trường hợp thiếu sáng góc nghiêng:
Hình 5 13 Kết quả nhận diện khuôn mặt thiếu sáng góc nghiêng
• Trường hợp ngược sáng góc nghiêng:
Hình 5 14 Kết quả nhận diện khuôn mặt ngược sáng góc nghiêng
Bảng 5 4 Độ chính xác kết quả nhận dạng khuôn mặt ở vị trí góc nghiêng
(tính trên 20 lần thử) Điều kiện Đủ ánh sáng Thừa ánh sáng Thiếu ánh sáng Ngược sáng Độ chính xác (%) 95% 90% 80% 50%
Nhận xét và đánh giá
• Trong môi trường thuận lợi, ánh sáng vừa phải, không có quá nhiều đối tượng trong khung hình thì tỷ lệ nhận dạng là trên 90% Tốc độ lấy dữ liệu, huấn luyện dữ liệu và kiểm tra khuôn mặt tương đối
• Những người đeo kính có thể bị nhận diện sai, nhưng tỉ lệ sai số có thể chấp nhận được
Mô hình nhận diện khuôn mặt hoạt động hiệu quả khi camera không bị ảnh hưởng bởi ánh sáng trực tiếp (chống chói) và không có nhiều yếu tố ngoại cảnh phía sau (phù hợp khi sử dụng trên xe ô tô).
• Bộ phát hiện còn tương đối yếu trong các trường hợp thừa ánh sáng và không thể nhận dạng trong trường hợp bị thiếu ánh sáng
• Khi nhận dạng góc nghiêng thì bộ phát hiện kém chính xác và chỉ có thể nhận diện góc nghiêng khi đủ sáng, còn các trường hợp khác thì không chính xác hoặc không thể nhận diện
• Ở trường hợp ngược sáng chỉ nhận diện được khi camera bắt được đường nét của khuôn mặt với độ chính xác thấp
• Chương trình phát hiện chính xác 100% trong điều kiện ánh sáng lý tưởng (đủ sáng và thừa sáng)
• Ở các điều kiện thiếu sáng chương trình nhận diện tương đối chính xác
• Nhận diện ở góc nghiêng khuôn mặt đạt độ chính xác cao, và góc nghiêng lớn
• Ở điều kiện ngược sáng chương trình nhận diện với độ chính xác không cao
5.3.2 Đánh giá a) Về kết quả hệ thống:
Bảng 5 5 Bảng kết quả hệ thống
Thời gian lấy dữ liệu nhanh Thời gian lấy dữ liệu lâu
Thời gian huấn luyện dữ liệu nhanh Thời gian huấn luyện dữ liệu lâu
Chế độ giám sát được khởi động nhanh Chế độ giám sát kiểm tra khởi động lâu
Hiện tượng giật lag rất ít Hiện tượng giật lag nặng và có thể bị đơ với phần cứng yếu b) Về kết quả chương trình
Bảng 5 6 Bảng kết quả chương trình
Phát hiện khuôn mặt nhanh chóng với độ chính xác cao trong điều kiện ánh sáng lý tưởng, tuy nhiên độ chính xác có thể giảm khi ánh sáng thay đổi hoặc góc nhìn khuôn mặt khác nhau Mặt khác, một số công cụ có thể xử lý hiệu quả các trường hợp ánh sáng khác nhau, ngoại trừ ngược sáng, và chính xác hơn khi khuôn mặt được quan sát từ nhiều góc độ.
Với những kết quả đạt được, chương trình 2 hoàn toàn tối ưu hơn chương trình 1, cả về thuật toán và độ chính xác, nhưng qua quá trình thử nghiệm tụi em đã không áp dụng được vào mô hình vì phần cứng của tụi em không đủ mạnh để xử lý chương trình thứ 2 Vì vậy nhóm đã quyết định áp dụng mô hình 1 vào mô hình thực tế, mặc dù tính chính xác của chương trình 1 là thấp hơn