Báo cáo nghiên cứu nhận dạng đối tượng trong video, hình ảnh, webcam sử dụng YOLO. Gồm các phần chính: CHƯƠNG1: GIỚI THIỆU VỀ YOLO1. Lý do chọn đề tài.2. Mục đích nghiên cứu3. Đối tượng, phạm vi nghiên cứu4. Ý nghĩa khoa học và thực tiễn đề tài5. Khái quát về YOLO6. Cơ sở xử lý ảnh7. Tổng quan về Học máy (Machine Leaning)CHƯƠNG 2:HƯỚNG DẪN CÀI ĐẶT VÀ XÂY DỰNG CHƯƠNG TRÌNH1. Môi trường và công cụ sử dụng2. Google Colab và Google Drive3. Sử dụng Yolo để nhận diện đối tượng4. Đào tạo Yolo để phát hiện súngKẾT LUẬNTÀI LIỆU THAM KHẢO
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC MỎ ĐỊA CHẤT 0O0 BÁO CÁO TỔNG KẾT ĐỀ TÀI: NGHIÊN CỨU NHẬN DẠNG ĐỐI TƯỢNG TRONG VIDEO SỬ DỤNG YOLO HÀ NỘI, 06/2020 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC MỎ ĐỊA CHẤT 0O0 BÁO CÁO TỔNG KẾT ĐỀ TÀI: NGHIÊN CỨU NHẬN DẠNG ĐỐI TƯỢNG TRONG VIDEO SỬ DỤNG YOLO Trưởng nhóm nghiên cứu Nguyễn Ngọc Hưng - 1721050323 - DCCTMM62B Các thành viên tham gia thực Đinh Việt Anh - 1721050496 - DCCTMM62B Giảng viên hướng Th.S Phạm Đình Tân Lê Thế Quý - 1721050540 - DCCTMM62B dẫn HÀ NỘI, 06/2020 Báo cáo nghiên cứu khoa học MỤC LỤC Báo cáo nghiên cứu khoa học DANH MỤC CÁC HÌNH ẢNH Báo cáo nghiên cứu khoa học LỜI MỞ ĐẦU Trong trình học tập, nghiên cứu đề tài “Nghiên cứu nhận dạng đối tượng sử dụng YOLO.” nhóm em nhận giúp đỡ, bảo nhiệt tình thầy giáo, cô giáo trường Đại học Mỏ Địa Chất Hà Nội để nhóm hồn thành đề tài nghiên cứu khoa học Đặc biệt, nhóm xin bày tỏ lịng biết ơn sâu sắc tới thầy GV.ThS.Phạm Đình Tân, thầy trực tiếp hướng dẫn, giúp đỡ trình thực đề tài Do kiến thức thời gian hạn chế, báo cáo nghiên cứu khoa học nhiều khiếm khuyết Nhóm mong đóng góp ý kiến thầy, cô người để đề tài nghiên cứu khoa học hoàn thiện Báo cáo nghiên cứu khoa học CHƯƠNG 1: GIỚI THIỆU VỀ YOLO Lý chọn đề tài Xã hội ngày phát triển cơng nghệ ngày phát triển theo từ cách mạng công nghiệp đến cách mạng công nghiệp 4.0 Là cách mạng mà cốt lõi công nghệ thông tin với thiết bị thông minh robot hay xe tự tái để tăng suất lao động phục vụ cho nhu cầu đời sống người Cùng với phát triển khoa học công nghệ, trí tuệ nhân tạo xem nhân tố định hình tương lai Với phát triển nhanh chóng năm gần đây, trí tuệ nhân tạo vào thực tiễn sống Hàng loạt cơng nghệ sử dụng trí tuệ nhân tạo đời giúp ích cho người nhiều lĩnh vực an ninh, y học, giáo dục, bảo mật, … Machine learning lĩnh vực trí tuệ nhân tạo (AI) Nguyên tắc cốt lõi Machine learning máy tiếp nhận liệu tự học Machine learning phương pháp phân tích liệu mà tự động hóa việc xây dựng mơ hình phân tích Sử dụng thuật tốn lặp để học từ liệu, cho phép máy tính tìm thấy thơng tin giá trị ẩn sâu khơng lập trình cách rõ ràng nơi để tìm Một kỹ thuật sử dụng phổ biến Machine learning kỹ thuật Deep learning Deep learning lĩnh vực chuyên sâu Machine learning Nó sử dụng số kỹ thuật Machine Learning để giải vấn đề thực tế cách khai thác mạng thần kinh nhân tạo mô việc đưa định người Deep learning có ứng dụng sâu rộng lĩnh vực đời sống tìm kiếm sai khác văn bản, phát gian lận, phát spam, nhận dạng chữ viết tay, nhận dạng hình ảnh, giọng nói, góp phần quan trọng việc hỗ trợ người nhiều lĩnh vực đời sống Báo cáo nghiên cứu khoa học Từ ứng dụng thực tế, lợi ích mà Deep learning đem lại sở dùng YOLOv3 môi trường Python, sở để thực tìm hiểu đề tài: “Nghiên cứu lý thuyết xử lý ảnh, kỹ thuật Deep Learning xây dựng chương trình nhận dạng đối tượng qua webcam, video hình ảnh sử dụng YOLO ngơn ngữ lập trình Python” nhằm nghiên cứu ứng dụng kỹ thuật Deep learning nhận dạng đối tượng qua video sử dụng YOLO ngơn ngữ lập trình Python Mục đích nghiên cứu • Nhận dạng đối tượng video, webcam hình ảnh • Đào tạo YOLO để nhận dạng súng, Đối tượng, phạm vi nghiên cứu a Đối tượng nghiên cứu: • Kỹ thuật Deep learning • Thuật tốn ứng dụng deep learning nhận dạng đối tượng • Nghiên cứu YOLO mơi trường Python b Phạm vi nghiên cứu: • Phạm vi nghiên cứu hình ảnh, video có sẵn qua webcam • Giới hạn mức độ thực nghiệm tạo hệ thống nhận dạng đối tượng sử dụng YOLO để hệ thống nhận biết đối tượng Ý nghĩa khoa học thực tiễn đề tài • Xây dựng chương trình thực nghiệm đánh giá mức độ xác hệ thống nhận dạng đối tượng video, ảnh sử dụng YOLO • Ứng dụng hệ thống nhận dạng đối tượng vào hệ thống giám sát an ninh, bảo mật, quản lý thông tin cá nhân quan, doanh nghiệp, hộ gia đình, ngân hàng Khái quát YOLO 5.1 Khái niệm YOLO viết tắt You Only Look Once Đó mơ hình phát đối tượng sử dụng tính học mạng neural network chập sâu để phát đối tượng Là mơ hình mạng CNN cho việc phát hiện, nhận dạng, phân loại đối tượng Yolo tạo từ việc kết hợp convolutional layers connected layers Trong convolutional layers trích xuất feature Báo cáo nghiên cứu khoa học ảnh, full-connected layers dự đốn xác suất tọa độ đối tượng Thư viện sử dụng để hỗ trợ tính tốn cho Yolo tận dụng phần cứng GPU Darkflow tảng Windown Darknet giành cho Linux 5.2 Lịch sử phát triển Yolo trải qua nhiều phiên khác nhau, phiên tính đến (tháng 6/2020) Yolo v4 5.3 Các phiên 5.3.1 Yolo v1 Ô lưới (Grid cell) Cắt ảnh gốc YOLO chia hình ảnh đầu vào thành lưới S × S Mỗi lưới dự đốn đối tượng Ví dụ, lưới màu vàng bên cố gắng dự đoán đối tượng người người có trung tâm (dấu chấm màu xanh) nằm lưới Hình 2- Chia lưới dự đốn đối tượng Mỗi lưới dự đốn số hộp cố định Trong ví dụ này, lưới màu vàng đưa hai dự đoán hộp ranh giới (hộp màu xanh) để xác định vị trí người Báo cáo nghiên cứu khoa học Tuy nhiên, quy tắc đối tượng giới hạn mức độ đối tượng phát gần Hình 2-2 Dự đốn nhiều khả hợp xanh để xác định đối tượng Vì thế, YOLO có số hạn chế mức độ gần gũi vật thể Hình đây, có Santas góc bên trái YOLO phát 10 Báo cáo nghiên cứu khoa học Hình 4-30 Giao diện labelImg Chọn Open Dir trỏ vào thư mục images tạo để load ảnh Change Save Dir trỏ vào thư mục labels để lưu file gán nhãn Quan trọng phải chọn format Yolo ko phải Pascal VOC Tiếp theo duyệt qua file ảnh, chọn Create\nRectbox để vẽ hình chữ nhật quanh vật thể gắn nhãn cho gun Vì đào tạo súng nên để Sau tạo xong nhấn Ctrl +S để lưu lại thao tác gán nhãn với file ảnh Báo cáo nghiên cứu khoa học 4.3.4 Tạo thêm file cần thiết cho trình đào tạo Tạo file yolo.data, yolo.names, train.txt, val.txt yolov3.cfg darknet53.conv.74 nằm project Hình 4- 31 Các file thư mục cần thiết Chúng ta cụ thể vào file sau: Đầu tiên file yolo.names dùng để hiển thị đối tượng nhận dạng Mở file ghi sung ngan lưu lại Nếu đào tạo nhiều đối tượng tên đối tượng đặt dòng Tiếp theo tạo file train.txt val.txt File train.txt chứa danh sách file ảnh sử dụng để đào tạo tương tự file val.txt chứa danh sách file ảnh để thực validation cho model Thông thường chia ngẫu nhiên theo tỷ lệ 80/20 nghĩa 80% liệu dành cho train 20% liệu dành cho val File train.txt val.txt để ảnh dòng Cả hai file train.txt val.txt chứa đường dẫn tương đối đến ảnh nằm thư mục images Để tạo đường dẫn để lưu vào file train.txt val.txt nhanh chóng dùng tools thay phải gõ thủ cơng chậm Tìm kiếm google với từ khóa send list of file in a folder to Báo cáo nghiên cứu khoa học a txt file in Linux/Window tìm đến trang stackoverflow hệ điều hành linux cần thực trỏ tới thư mục images Hình 4-32 Teminal trỏ tới thư mục images chạy lệnh printf '%s\n' "$PWD"/* >train.txt để tạo file train.txt chứa đường dẫn tuyệt đối đến hình ảnh bên thư mục images Báo cáo nghiên cứu khoa học Do chạy chương trình từ folder NCKH_ nên cần đường dẫn tương đối data/images/ để sửa toàn sang đường dẫn tương đối mở file train.txt VS code Nhấn Ctrl + F nhập đường dẫn tuyệt đối đến thư mục NCKH_ tiến hành replace để xóa gửi lại đường dẫn tương đối Hình 4- 33 Dữ liệu file train.txt Hình 4-35 Kết file train.txt Hình 4-34 Giao diện VS code Báo cáo nghiên cứu khoa học file val.txt tương tự file train.txt (nên nhớ file tạo thư mục NCKH_ Tiếp theo tạo file yolo.data với nội dung: Hình 4-36 Nội dung file yolo.data Cuối tải file darknet53.conv.74 từ link: https://pjreddie.com/media/files/darknet53.conv.74 vào lưu vào NCKH_ 4.3.5 Đào tạo Google Colab Truy cập vào địa : https://colab.research.google.com/notebooks/intro.ipynb#recent=true Đăng nhập tài khoản Google, chọn Runtime > Change runtime type > GPU (để sử dụng GPU cho project) Báo cáo nghiên cứu khoa học Sau kết nối thành công google drive với google colab ta cần mã nguồn để tiến hành đào tạo (mã nguồn lưu vào file nén bên google drive) giải nén bên colab lệnh: cd vào context dùng lệnh !unzip Tiếp theo biên dịch mã nguồn lệnh Google Colab không hỗ trợ backup liệu nên ta cần kết nối google drive để lưu file weight train thành công !rm /content/darknet/backup -r Báo cáo nghiên cứu khoa học !ln -s /content/drive/'My Drive'/NCKH/backup /content/darknet Tiến hành train liệu: Google colab reset xóa hết liệu khơng có tương tác khoảng thời gian định nên thêm đoạn code javaScript để sau khoảng thời gian auto click vào button để tránh reset colab làm hết liệu train Báo cáo nghiên cứu khoa học Sau 60s auto click vào button có id connect Tùy vào số lượng liệu mà thời gian train tốn nhiều hay (đối với liệu súng thời gian train 10h) Sau train thành công drive thư mục backup xuất file weights tải file (là file train gần nhất) để sử dụng • Ước tính thời gian huấn luyện Báo cáo nghiên cứu khoa học Khi hiểu kỹ lý thuyết mơ hình YOLO hiểu lý model YOLO lại huấn luyện lâu Từ ảnh đầu vào kích thước 418x418, YOLO cần dự đoán nhãn tọa độ tổng cộng (13x13+26x26+52x52)x3 = 10647 bounding boxes Giả sử batch có kích thước 64 ảnh số lượng max_batches = 5000 Như cần dự báo cho tổng cộng: 10647x5000x64 = 3.4 triệu bounding boxes Đây số không nhỏ nên trình huấn luyện google colab tới vài 4.4 Kết nhận diện 4.4.1 Nhận diện qua hình ảnh Lệnh chạy chương trình: python3 YOLO.py -i [a] -cl yolo.names -w backup/yolov3.backup -c cfg/yolov3.cfg Trong đó: • a hình ảnh muốn nhận diện súng Hình 4-37 Kết nhận diện súng qua hình ảnh(1) Báo cáo nghiên cứu khoa học Hình 4- 38 Kết nhận diện súng qua hình ảnh(2) 4.4.2 Nhận diện qua video Lệnh chạy chương trình: python3 video_detect.py -cl yolo.names -w backup/yolov3.backup -c cfg/yolov3.cfg -i [a] Trong đó: • a video muốn nhận diện súng Hình 4- 39 Kết chụp từ video nhận diện súng Báo cáo nghiên cứu khoa học 4.5 Mã nguồn chương trình 4.5.1 Mã nguồn nhận diện qua video Báo cáo nghiên cứu khoa học Báo cáo nghiên cứu khoa học 4.5.2 Mã nguồn nhận diện qua hình ảnh Báo cáo nghiên cứu khoa học KẾT LUẬN Trong nghiên cứu này, nhóm em đề cập đến nghiên cứu nhận dạng phát đối tượng video, webcam hình ảnh trước thử nghiệm, đánh giá, tìm điểm chung nghiên cứu Từ đề giải pháp tối ưu việc lựa chọn phương pháp xử lý ảnh, kỹ thuật Deep Learning xây dựng chương trình nhận dạng đối tượng sử dụng YOLO ngơn ngữ lập trình Python Sau trình triển khai đề tài, hệ thống nhận dạng đếm xe với độ xác cao Tuy nhiên, có trường hợp chưa nhận dạng Sự thiếu xác xuất phát từ nhiều nguyên nhân khác thiếu liệu đào tạo nên mơ hình nhận dạng có hiệu suất khơng cao, thuật tốn tính vận tốc xe chưa tối ưu, chạy máy không hỗ trợ GPU hay nguyên nhân khách quan khác vật cản che khuất, thời tiết, Hệ thống đạt hiệu suất cao nhận diện xe đường chiều, đường rộng xe mật độ xe không cao Báo cáo nghiên cứu khoa học TÀI LIỆU THAM KHẢO https://towardsdatascience.com/object-detection-using-yolov3-andopencv-19ee0792a420 https://medium.com/sota-tek-jsc/cnn-detect-custom-object-v%E1%BB %9Bi-yolov3-63866906b5dd https://pjreddie.com/media/files/papers/YOLOv3.pdf https://medium.com/@venkatakrishna.jonnalagadda/object-detectionyolo-v1-v2-v3-c3d5eca2312ah https://github.com/thangnch/MiAI_anti_thief https://medium.com/@riteshkanjee/yolov4-superior-faster-moreaccurate-object-detection-7e8194bf1872 https://www.miai.vn/2019/08/15/yolo-series-cach-train-yolo-trengoogle-colab/ https://www.miai.vn/2019/09/23/xay-dung-he-thong-chong-trom-dongian-bang-yolo-va-opencv/ https://phamdinhkhanh.github.io/2020/03/10/DarknetGoogleColab.htm l 10.https://github.com/pjreddie/darknet 11.https://forum.machinelearningcoban.com/t/object-detection-yolo/503? fbclid=IwAR3khwaxbNblw5cP7EnDNS7TxzA_aO2Ry0ZLzLeFHhj3Nu1U-vqruMwzjY 12.https://viblo.asia/p/tim-hieu-ve-yolo-trong-bai-toan-real-time-objectdetection-yMnKMdvr57P? fbclid=IwAR2yI55c_bJZcRDxw6OQYE3c7ODvy9zoMxRRjQHkIfl_j 7g86JDuYSOubmM 13.https://medium.com/@venkatakrishna.jonnalagadda/object-detectionyolo-v1-v2-v3-c3d5eca2312a ... đích nghiên cứu • Nhận dạng đối tượng video, webcam hình ảnh • Đào tạo YOLO để nhận dạng súng, Đối tượng, phạm vi nghiên cứu a Đối tượng nghiên cứu: • Kỹ thuật Deep learning • Thuật tốn ứng dụng. .. chương trình nhận dạng đối tượng qua webcam, video hình ảnh sử dụng YOLO ngơn ngữ lập trình Python” nhằm nghiên cứu ứng dụng kỹ thuật Deep learning nhận dạng đối tượng qua video sử dụng YOLO ngơn... nhận dạng đối tượng • Nghiên cứu YOLO mơi trường Python b Phạm vi nghiên cứu: • Phạm vi nghiên cứu hình ảnh, video có sẵn qua webcam • Giới hạn mức độ thực nghiệm tạo hệ thống nhận dạng đối tượng