- Nội dung sơ sài- Trình bầy kém, mắc nhiều lỗi chính tả- Nội dung khá sơ sài và hạn chế- Trình bầy còn hạn chế- Mắc tương đối nhiều lỗi chính tả- Bố cục rõ ràng- Nội dung khá đầyđủ chín
Trang 1ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG CƠ KHÍKHOA CƠ ĐIỆN TỬ
~~~~~ ~~~~~
BÁO CÁO BÀI TẬP LỚNHỌC PHẦN: XỬ LÝ ẢNH
Đề tài: Nhận dạng đối tượng thời gian thực
và điều khiển bàn xoay Giảng viên hướng dẫn: TS Dương Văn Lạc
Sinh viên thực hiện: Trần Ngọc Thuận 20195192
Vũ Duy Minh 20195100 Hoàng Xuân Đích 20194946
Hà Nội, 1/2024
Trang 2- Mắc tương đối nhiều lỗi chính tả
- Bố cục rõ ràng
- Nội dung khá đầy
đủ chính xác
- Trình bầy tương đối tốt
- Mắc ít lỗi chính tả
- Bố cục của bài viết rõ ràng
- Nội dung đầy đủ, chính xác
- Tính thẩm mỹ còn hạn chế
- Sản phẩm hoạt động
- Sản phẩm tương đối hoàn thiện, chức năng khá đầy đủ
- Sản phẩm có tính thẩm mỹ
- Sản phẩm hoạt động tốt
- Sản phẩm hoàn thiện, chức năng đầy đủ
- Sản phẩm có tính thẩm mỹ
- Sản phẩm hoạt động tin cậy
- Hiểu, vận dụng các kiếm thức đã học còn hạn chế
- Trả lời tương đối tốt các câu hỏi
- Hiểu, vận dụng các kiếm thức đã học tương đối tốt
- Trả lời đúng và đầy đủ tất các các câu hỏi
- Hiểu, vận dụng tốt kiếm thức đã học
- Có khả năng phân tích, đánh giá, sáng tạo
II ĐIỂM ĐÁNH GIÁ CHÍNH THỨC
STT Họ tên MSSV Điểm quyểnbáo cáo Đ BC
(10%)
Điểm sản phẩm Đ SP
(40%)
Điểm bảo vệ *
Đ BV
(50%)
ĐIỂM KẾT QUẢ
Đ KQ = 10%Đ +40%Đ +50%Đ BC SP BV
1 Trần Ngọc Thuận 20195192
2 Vũ Duy Minh 20195100
3 Hoàng Xuân Đích 20194946
* Lưu ý: Đ BV ≤ min {Đ BC , Đ SP }.
Trang 3PHÂN CÔNG NHIỆM VỤ
Tìm hiểu thời gianthực, viết codechương trình nhậndạng python, chuẩn bịphần cứng
Tìm hiểu về thuật toánchương trình python vàarduino, chuẩn bị báocáo
3 Hoàng Xuân Đích 20194946
Viết chương trìnharduino, chuẩn bị báocáo
Trang 4Tuy mới xuất hiện chưa lâu nhưng nó đã rất được quan tâm vì tính ứng dụng thực tếcủa bài toán cũng như sự phức tạp của nó Bài toán nhận dạng có rất nhiều lĩnh vựcnhư: nhận dạng vật chất (nước, lửa, đất, đá, gỗ, ), nhận dạng chữ viết, nhận dạnggiọng nói, nhận dạng vật thể, nhận dạng khuôn mặt, trong đó phổ biến và được ứngdụng nhiều hơn cả là bài toán nhận dạng vật thể Các ứng dụng liên quan đến nhận dạngvật thể có thể kể như: Nhận dạng phương tiện giao thông, Nghiên cứu về việc nhận dạng
và phân loại các đối tượng trong môi trường công nghiệp, hệ thống tìm kiếm thông tintrên ảnh, video dựa trên nội dung, Cho đến tận bây giờ, các nhà nghiên cứu vẫn chưađạt được sự ưng ý trong việc giải quyết các khó khăn của bài toán và cho kết quả hoàntoàn đúng Tuy nhiên, những gì đã đạt được cũng đủ để chúng ta áp dụng rộng rãi vàđem lại những lợi ích to lớn trong cuộc sống
Với sự hấp dẫn của bài toán và những thách thức còn đang ở phía trước, với niềmđam mê công nghệ hiện đại và những ứng dụng thực tế tuyệt với của nó, với khát khaokhám phá và chinh phục những tri thức mới mẻ, nhóm em đã chọn đề tài nghiên cứu:
“Nhận dạng đối tượng thời gian thực và điều khiển bàn xoay” làm để tài bài tập lớnmôn Xử lý ảnh Em xin cảm ơn các thầy cô bộ môn của Trường Cơ khí-Đại học BáchKhoa Hà Nội đã trang bị đầy đủ những kiến thức chuyên ngành cần thiết, đặc biệt emxin gửi lời cảm ơn đến thầy Dương Văn Lạc, đã tận tình hướng dẫn, trực tiếp đánh giá,nhận xét giúp đỡ em rất nhiều trong quá trình hoàn thiện bài tập lớp môn học
Chúng em xin chân thành cảm ơn!
Trang 5MỤC LỤC
Trang 6Trang 5
CHƯƠNG 1: KẾT QUẢ 1.1 Nội dung bài toán
Đầu vào: Ảnh và thông tin kèm theo của những người tham gia thực nghiệm
Đầu ra: Nhận diện được khuôn mặt và trả về thông tin của người nhận dạng được
1.2 Các thành phần cơ bản
Phần cứng:
Camera
Máy tính
Trang 7Chúng ta có thể chạy PyCharm trên Windows, Linux hoặc Mac OS.
Trang 8Trang 7
Ngoài ra, nó chứa các module và các package giúp các lập trình viên pháttriển phần mềm bằng Python tiết kiệm thời gian và công sức Hơn nữa, nócũng có thể được tùy chỉnh theo yêu cầu của các nhà phát triển
+Python 3.9.10
Trang 9+ Firebase.
Firebase là một nền tảng do Google cung cấp để hỗ trợ việc phát triểncác ứng dụng web và di động1 Firebase có nhiều chức năng như lưu trữ dữliệu thời gian thực, phân tích ứng dụng, tiếp thị sản phẩm và khắc phục sự cố.Firebase có nhiều dịch vụ khác nhau cho các nhà phát triển ứng dụng Mộttrong số dịch vụ nổi bật là “Realtime Database: lưu trữ và đồng bộ dữ liệungười dùng theo thời gian thực”
+Thư viện Opencv
Project OpenCV được bắt đầu từ Intel năm 1999 bởi Gary Bradsky.OpenCV viết tắt cho Open Source Computer Vision Library OpenCV là thưviện nguồn mở hàng đầu cho Computer Vision và Machine Learning, và hiện
có thêm tính năng tăng tốc GPU cho các hoạt động theo real-time
OpenCV được phát hành theo giấy phép BSD, do đó nó miễn phí cho
cả học tập và sử dụng với mục đích thương mại Nó có trên các giao diện C++, C, Python và Java và hỗ trợ Windows, Linux, Mac OS, iOS và Android.OpenCV được thiết kế để hỗ trợ hiệu quả về tính toán và chuyên dùng cho cácứng dụng real-time (thời gian thực) Nếu được viết trên C/C++ tối ưu, thưviện này có thể tận dụng được bộ xử lý đa lõi (multi-core processing)
Trang 10Trang 9
+Thư viện Face-Recognition
Thư viện Face-Recognition là một thư viện nhận dạng khuôn mặt rấtnổi tiếng và độ chính xác khá tốt xây dựng dựa trên dlib của python và đượcviết bằng C++1 Thư viện này có thể thực hiện các bài toán như:
Face Detection: phát hiện khuôn mặt trong ảnh hoặc video2
Face Embedding: biểu diễn khuôn mặt bằng một vector số2
Face Recognition: xác định hoặc xác minh người trong ảnh hoặc video23
Độ chính xác của thư viện này trên tập Labeled Faces in the Wild là 99,38%
1.3 Chương trình nhận diện khuân mặt thời gian thực
Tải dữ liệu lên firebase
Trang 11Nếu khoảng cách giữu 2 lần ghi nh n liêp tiếp
true
Chạy chương trình nhận diện
counter += 1
Trang 12Vẫn còn xảy ra hiện tượng giật lag do sự truyền tải dữ liệu thời gianthực giữa thiết bị và Firebase.
Một số kết quả thực nghiệm như sau:
Trang 131.5 Thảo luận kết quả thực nghiệm
Sau 4 tháng học môn Xử lý ảnh kết hợp với sự tìm tòi, học hỏi, nghiêncứu từ bạn bè, thầy cô giáo và mạng Internet, nhóm đã đạt được mục tiêu đềra:
Sử dụng tốt ngôn ngữ Python, thư viện OpenCV và face_recognition,tìm hiểu và áp dụng thành công cơ sở dữ liệu Firebase, hoàn thiện các thuậttoán đáp ứng yêu cầu đề ra
Đây là lần đầu nhóm thực hiện mô hình nên còn nhiều thiếu xót, cũngnhư chưa hoàn thiện về giao diện phần mềm và các thiết bị về hệ thống cơkhí
Trang 14Trang 13
CHƯƠNG 3: KẾT LUẬN 3.1 Kết luận
Sau thời gian nghiên cứu dưới sự hướng dẫn của PGS.TS Mạc ThịThoa, hệ thống đã đáp ứng các yêu cầu đề ra Các khối chức năng hoạt độngđúng, đảm bảo cập nhật đầy đủ dữ liệu, hệ thống chạy ổn định trong thời giandài không phát sinh lỗi hoặc xác suất thấp Hệ thống thu được kết quả với độchính xác cao nhưng vẫn chưa xử lý được hiện tượng giật lag Nhu cầu về cácbài toán nhận dạng khuôn mặt đang rất cấp thiết trong cuộc sống, hệ thốngnày tuy còn sơ khai nhưng là bước đầu để xây dựng nên một hệ thống nhậndạng hoàn chỉnh với sự chính xác, tốc độ ưu việt và quy mô cơ sở dữ liệurộng hơn
3.2 Hướng phát triển đề tài trong tương lai
Xử lý nhiễu với các luồng sáng khác nhau
Thiết kế hệ thống cơ khí hoàn chỉnh cho toàn bộ hệ thống
Nhận dạng được khuôn mặt khi đeo khẩu trang hoặc bị che một phầnkhuôn mặt
Phát triển trợ lý ảo hướng dẫn cũng như đưa ra thông tin trong quá trìnhnhận dạng
Trang 15CHƯƠNG 4: TÀI LIỆU THAM KHẢO
Trang 16-Trang 15
CHƯƠNG 5: PHỤ LỤC
1.Chương trình tải thông tin lên
firebase import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
Trang 18from firebase_admin import credentials
from firebase_admin import storage
Trang 19for img in imagesList:
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
Trang 20from firebase_admin import credentials
from firebase_admin import db
from firebase_admin import storage
Trang 22ret, img = cap.read()
imgS = cv2.resize(img,(0,0),None, 0.25, 0.25) #giam kich thước ảnh để xử
lý nhanh hơn
imgS = cv2.cvtColor(imgS, cv2.COLOR_BGR2RGB)
faceCurFrame = face_recognition.face_locations(imgS) #lấy từng khuân mặt và vị trí khuân mặt hiện tại
Trang 23encodeCurFrame = face_recognition.face_encodings(imgS, faceCurFrame)
y1, x2, y2, x1 = faceLoc
y1, x2, y2, x1 = y1*4, x2*4, y2*4, x1*4
bbox = 55 + x1, 162+y1, x2-x1, y2-y1
imgBackground = cvzone.cornerRect(imgBackground, bbox, rt=0)
Trang 25if modeType != 3:
if counter <= 10:
imgBackground[44:44 + 633, 808:808 + 414] =imgModeList[modeType]
cv2.putText(imgBackground, str(studentInfo['total_attendance']),(861,125),cv2.FONT_HERSHEY_COMPLEX,1,(255,255,255),1)
cv2.putText(imgBackground, str(studentInfo['major']),
(1000, 550), cv2.FONT_HERSHEY_COMPLEX, 0.5,(255, 255, 255), 1)
cv2.putText(imgBackground, str(id),
(1006, 493), cv2.FONT_HERSHEY_COMPLEX, 0.5,(255, 255, 255), 1)
cv2.putText(imgBackground, str(studentInfo['Class']),
(910, 625), cv2.FONT_HERSHEY_COMPLEX, 0.5,(100,100,100), 1)
cv2.putText(imgBackground, str(studentInfo['total_attendance']),
Trang 26Trang 25
(1025, 625), cv2.FONT_HERSHEY_COMPLEX, 0.6,(100,100,100), 1)
cv2.putText(imgBackground, str(datetime.now().strftime("%H:%M:
%S")),
(1125,625), cv2.FONT_HERSHEY_COMPLEX, 0.4,(100,100,100), 1)
(w,h), _ = cv2.getTextSize(studentInfo['name'],cv2.FONT_HERSHEY_COMPLEX, 1, 1)
#(width, height), baseline :baseline: vị trí của baseline trong vănbản
# Baseline là đường thẳng ở phía dưới của các chữ cái
if counter>=20:
counter = 0
modeType = 0
studentInfo = []
Trang 27imgStudent = []
imgBackground[44:44 + 633, 808:808 + 414] =imgModeList[modeType]
Trang 28Trang 27
MỤC LỤC
BẢN NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 1
PHÂN CÔNG NHIỆM VỤ 2
CHƯƠNG 1: ĐẶT VẤN ĐỀ 3
CHƯƠNG 2: KẾT QUẢ 4
2.1 Nội dung bài toán 4
2.2 Các thành phần cơ bản 4
2.3 Chương trình nhận diện khuân mặt thời gian thực 7
2.4 Kết quả thực nghiệm 9
2.5 Thảo luận kết quả thực nghiệm 10
CHƯƠNG 3: KẾT LUẬN 11
3.1 Kết luận 11
3.2 Hướng phát triển đề tài trong tương lai 11
CHƯƠNG 4: TÀI LIỆU THAM KHẢO 12
CHƯƠNG 5: PHỤ LỤC 13