Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 29 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
29
Dung lượng
3,98 MB
Nội dung
ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG BÁO CÁO ĐỒ ÁN CƠ SỞ 5: ĐỀ TÀI: XÂY DỰNG CHƯƠNG TRÌNH NHẬN DẠNG HÀNH ĐỘNG CON NGƯỜI Sinh viên thực : ĐỖ QUANG PHÁP - 17CE031 NGUYỄN CẢNH THÔNG - 17CE046 Giảng viên Lớp : NGUYỄN ANH TUẤN : 17CE Đà nẵng, tháng năm 2020 ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG BÁO CÁO ĐỒ ÁN CƠ SỞ ĐỀ TÀI: XÂY DỰNG CHƯƠNG TRÌNH NHẬN DẠNG HÀNH ĐỘNG CON NGƯỜI Đà Nẵng, tháng năm 2020 MỞ ĐẦU - Lời em xin chân thành cảm ơn đến thầy Nguyễn Anh Tuấn giúp em nhiều trình thực đồ án Trong trình thực đồ án, giúp đỡ tận tình thầy em thu nhiều kiến thức quý báu giúp em nhiều trình học làm việc tương lai - Trong q trình thực đồ án khơng tránh khỏi số sai sót Mong nhận góp ý thầy để hoàn thiện - Một lần em xin chân thành cảm ơn giúp đỡ thầy trình thực đồ án để em hoàn thành đồ án NHẬN XÉT (Của giảng viên hướng dẩn) MỤC LỤC Chương GIỚI THIỆU 1.1 Tổng Quan: .6 1.1.1 Mở đầu .6 1.1.2 Mục tiêu chuyên đề 1.1.3 Đối tượng nghiên cứu .7 1.1.4 Phạm vi nghiên cứu 1.2 Phương pháp – kết 1.2.1 Phương pháp 1.2.2 Kết 1.3 Cấu Trúc đồ án: .8 Chương CƠ SỞ LÝ THUYẾT .9 2.1 Tổng quan Deep Learning toán nhận diện hành động thị giác máy tính 2.1.1 Deep Learning gì? 2.1.2 Một số ứng dụng Deep Learning .9 2.2 Giới thiệu Convolutional Neural Network 2.2.1 Tổng quan 2.2.2 Kiến trúc CNN .10 2.3 Thư viện Opencv 11 2.3.1 Tổng quan Opencv .11 2.4 Thư viện Tensorflow .11 2.5 Thư viện Keras 12 2.6 Phương pháp OpenPose 13 2.6.1 Tổng quan OpenPose 13 2.6.2 Hoạt động .13 2.7 Phương pháp Deep-sort 16 Chương TRIỂN KHAI XÂY DỰNG 16 2.7.1 Điều kiện tiên quyết: 16 2.7.2 Môi trường thực 16 2.8 Các bước thực .17 2.8.1 Tạo liệu phân tích thuật tốn 17 2.8.2 Phân tích 17 2.8.3 Tiền xử lý video .18 2.8.4 Huấn Luyện 20 2.8.5 Test 23 Chương 4: Kết luận 24 2.9 Kết 24 2.10 Ưu điểm - nhược điểm 26 2.11 Hướng phát triển 27 DANH MỤC HÌNH Hình 2.2.1 Kiến trúc CNN nhận diện hành động người 10 Hình 2.4.2 Mức độ phổ biến Tensorflow tính từ lúc Opensource 12 Hình 2.6.3 Openpose theo dõi chuyển động thể người 13 Hình 2.6.4: 18 điểm thể OpenPose lưu lại 14 Hình 2.6.5 Điểm OpenPose sử dụng để nhận dạng bàn tay 15 Hình 2.6.6: 68 điểm OpenPose sử dụng để nhận dạng chuyển động khuôn mặt 15 Hình 3.2.7 : (a) Phát xương người OpenPose (b) Mỗi xương có 18 khớp 17 Hình 3.2.8: Tiền xử lý vị trí khớp bước 18 Hình 3.2.9: Kết hiển thị lên cửa sổ Prompt .23 Hình 3.2.10: Biểu đồ hiển thị kết sau đào tạo .23 Hình 4.3.11: Phát hành động video 24 Hình 4.3.12: Giám sát hành động xuất cảnh báo 25 Hình 4.3.13: Phát hành động với nhiều người khung hình 25 Hình 4.4.14: Openpose nhận biết mô tốt 26 Hình 4.4.15: Chỉ số FPS thấp thiết bị khơng có cấu hình tốt .27 Ghi chú: - In đậm in hoa tiêu đề chương, mục lớn - Chữ số thứ thứ tự chương - Chử số thứ thứ tự mục chương Chương GIỚI THIỆU 1.1 Tổng Quan: 1.1.1 Mở đầu Ngày nay, liệu video dễ dàng tạo thiết bị như: điện thoại di động, máy tính xách tay, máy ảnh kỹ thuật số thiết bị hệ thống camera quan sát (CCTV) … Bên cạnh trang web chia sẻ video không ngừng tăng trưởng số lượng lẫn chất lượng Bài toán nhận diện hành động người video đóng góp phần tự đơng hóa khai thác tài ngun liệu nhiều thông tin Các ứng dụng liên quan đến toán nhận diện hành động như: - An ninh hệ thống giám sát truyền thống gồm mạng lưới camera giám sát người - Tương tác người máy nhiều thách thức, dấu hiệu thị giác phương thức quan trọng giao tiếp phi ngôn ngữ Khai thác hiệu phương thức giao tiếp này: Thông qua cử hành động, hoạt động hứa hẹn tạo hẹ máy tính tương tác xác tự nhiên với người - Bên cạnh nhận diện hành động người video ứng dụng tóm tắt, truy vấn video, phân tích thể thao Deep Learning chủ đề Trí tuệ nhân tạo, tập trung giải vấn đề liên quan đến mạng nơ ron nhân tạo nhằm nâng cấp cơng nghệ nhận diện giọng nói, thị giác máy tính xử lý ngơn ngữ tự nhiên… 1.1.2 Mục tiêu chun đề Vì lý đó, đề tài nghiên cứu ứng dụng Deeplearning vào toán nhận diện hành động người video, đồng thời đề xuất cải tiến tham số đầu vào thuật toán để tăng hiệu nhận diện so với thuật toán 1.1.3 Đối tượng nghiên cứu - Ngơn ngữ Python - Tìm hiểu Deep learning - Các thuật tốn nhận diện - Tìm hiểu phương pháp OpenPose công nghệ Handtracking - Nghiên cứu máy học thư viện Tensorflow 1.1.4 Phạm vi nghiên cứu - Xây dựng chương trình nhận dạng hành động người sử dụng Deep Learning phương pháp OpenPose - Ứng dụng đề tài phục vụ cho việc nghiên cứu nhiều lĩnh vực 1.2 Phương pháp – kết 1.2.1 Phương pháp *Phương pháp chủ đạo - Phương pháp nghiên cứu lý thuyết: + Tìm hiểu tổng quan Deep Learning toán nhận diện hành động thị giác máy tính + Tìm hiểu phương pháp OpenPose cách thực + Tìm hiểu thư viện Tensorflow, Keras, OpenCV số thư viện khác - Phương pháp nghiên cứu thực nghiệm: + Tiến hành phân tích cài đặt Python + Tiến hành training data cho máy học 1.2.2 Kết - Tạo chương trình nhận dạng hành động qua video qua camera sử dụng thời gian thực hệ điều hành Window 1.3 Cấu Trúc đồ án: Nội dung chuyên đề chia thành phần sau: Chương 1: Chương trình bày cách tổng quan mục tiêu, đối tượng phạm vi nghiên cứu, hướng tiếp cận để giải tốn nhận dạng kết dự tính Chương 2: Cơ sở lý thuyết: Tìm hiểu phương pháp máy học tìm hiểu thư viện, ứng dụng Deep Learning toán nhận diện hành động Chương 3: Ứng dụng thực nghiệm: sở thư viện mã nguồn mở xây dựng chương trình phát hành động người trong video, với phân tích chương trình Chương 4: Kết luận hướng phát triển: đánh giá kết hướng phát triển nghiên cứu Chương CƠ SỞ LÝ THUYẾT 2.1 Tổng quan Deep Learning toán nhận diện hành động thị giác máy tính 2.1.1 Deep Learning gì? Deep Learning chủ đề Trí truệ nhân tạo (AI) phạm trù nhỏ máy học Deep Learning tập trung giải vấn đề liên quan đến mạng nơron nhân tạo nhằm nâng cấp cơng nghệ nhận diện giọng nói, thị giác máy tính xử lý ngơn ngữ tự nhiên Deep Learning trở thành lĩnh vực quan trọng khoa học máy tính Chỉ vài năm, Deep Learning thúc đẩy tiến đa dạng lĩnh vực nhận thức vật (object perception), dịch tự động (machine translation), nhận diện giọng nói - vấn đề khó khăn với nhà nghiên cứu trí tuệ nhân tạo 2.1.2 Một số ứng dụng Deep Learning - Hệ thống xử lý tảng - Nhận diện hình ảnh - Xử lý ngôn ngữ tự nhiên 2.2 Giới thiệu Convolutional Neural Network 2.2.1 Tổng quan Convolutional Neural Network (CNN) bao gồm nhiều lớp chập (thường với bước lấy mẫu con) sau theo sau nhiều lớp kết nối mạng nơron đa lớp chuẩn Kiến trúc CNN thiết kế để tận dụng lợi cấu trúc chiều hình ảnh đầu vào (hoặc đầu vào chiều khác tín hiệu tiếng nói) Điều đạt với kết nối cục trọng số ràng buộc theo số hình thức tổng hợp mà kết đặc trưng khơng thay đổi Một lợi ích khác - Các điểm lưu lại Openpose - Cơ thể người: 18 điểm thể người Openpose đánh dấu nhận diện Các điểm đại diện cho khớp xương thể điểm định hướng khuôn mặt người nhận diện Hình 2.6.4: 18 điểm thể OpenPose lưu lại - Bàn tay: 21 điểm bàn tay Openpose lưu lại sử dụng để nhận diện chuyển động bàn tay Các điểm đại diện cho khớp xương bàn tay 14 Hình 2.6.5 Điểm OpenPose sử dụng để nhận dạng bàn tay - Khuôn mặt: 68 điểm openpose lưu trữ sử dụng để nhận chuyển động khn mặt Hình 2.6.6: 68 điểm OpenPose sử dụng để nhận dạng chuyển động khuôn mặt 15 2.7 Phương pháp Deep-sort Với Deep-sort, Ta sử dụng hai phương pháp khơng gian ảnh không gian đối tượng thuật toán khử mặt khuất Phương pháp xếp theo độ sâu (depthsorting method) nối kết hai tiếp cận trên, thực cơng việc sau: Các mặt theo thứ tự giảm dần độ sâu Các thao tác xếp thực khơng gian đối tượng, cịn chuyển đổi dòng quét (scan conversion) thực không gian ảnh Kho lưu trữ chứa mã cho Theo dõi trực tuyến thời gian thực đơn giản với Số liệu liên kết sâu (Deep SORT) Chúng mở rộng thuật tốn SORT ban đầu để tích hợp thơng tin xuất dựa mơ tả ngoại hình sâu Xem in sẵn arXiv để biết thêm thông tin Chương 3.1 TRIỂN KHAI XÂY DỰNG Sử dụng Opencv Openpose phát người python 2.7.1 Điều kiện tiên quyết: Yêu cầu với cấu hình mặc định: - Phiên GPU Nvidia: Card đồ họa NVIDIA có 1.6 GB (lệnh nvidiasmi kiểm tra nhớ GPU sẵn có Ubuntu) Ít 2GB RAM nhớ miễn phí - Khuyến khích sử dụng cuDNN - CPU: 8GB RAM nhớ - Sẽ tốt CPU có nhiều lõi 2.7.2 Mơi trường thực - Ngôn ngữ Python - Thư viện Tensorflow 1.4.2 - Thư viện OpenCV - CPU Intel Core i3 4005 1.7 GHz, Ram 4GB 1600 MHz DDR3 16 - Hệ điều hành: Window 10 2.8 Các bước thực 2.8.1 Tạo liệu phân tích thuật tốn Trước tiên, Thuật tốn OpenPose thơng qua để phát xương người từ hình ảnh Ý tưởng OpenPose sử dụng Mạng thần kinh Convolutional để tạo hai heapmap, để dự đoán vị trí khớp cịn lại để liên kết khớp với xương người Nói tóm lại, đầu vào OpenPose hình ảnh đầu xương tất người mà thuật toán phát Mỗi xương có 18 khớp, bao gồm đầu, cổ, cánh tay chân, Hình 3.2.1, Mỗi vị trí khớp biểu diễn tọa độ hình ảnh với giá trị tọa độ x y, có tổng cộng 36 giá trị xương Hình 3.2.7 : (a) Phát xương người OpenPose (b) Mỗi xương có 18 khớp 2.8.2 Phân tích Dữ liệu xương thơ xử lý trước trích xuất tính Quá trình tiền xử lý bao gồm bước tóm tắt Hình 3.3 minh họa sau: (1) Chia tỷ lệ tọa độ Vị trí khớp ban đầu OpenPose đưa có đơn vị khác cho tọa độ x tọa độ y Ta chia tỷ lệ chúng thành đơn vị để xử lý hình ảnh có tỷ lệ chiều cao / chiều rộng khác OpenPose xuất khớp đầu, bao gồm Đầu, Mắt Tai Tuy nhiên, hành động tập huấn luyện, vị trí đầu giúp ích cho việc phân loại 17 Điều quan trọng cấu hình thể chi Vì vậy, ta tự gỡ bỏ năm khớp đầu để làm cho tính có ý nghĩa Hình 3.2.8: Tiền xử lý vị trí khớp bước - Loại bỏ người khơng có cổ đùi, Nếu khung khơng có xương người OpenPose phát xương phát Cổ khơng có Thigh, khung coi không hợp lệ bị loại bỏ Bên cạnh đó, cửa sổ trượt nên khởi tạo lại khung Trong số trường hợp, OpenPose khơng phát xương người hồn chỉnh từ hình ảnh, gây số khoảng trống vị trí khớp Các khớp phải điền với số giá trị để trì vectơ tính có kích thước cố định cho quy trình phân loại tính sau 2.8.3 Tiền xử lý video Tiếp theo, khởi tạo Deep-sort với liệu có sẵn từ nguồn thư viện để phác thảo độ sâu hình ảnh, để theo dõi người nhận dạng hành động nhiều người 18 Sau sử dụng hàm tracker để theo dõi cập nhật liệu theo thời gian thực Sau ghi lại kết quả, bao gồm liệu giới hạn điểm thể ID chúng bao gồm 36 ID: (Mũi: nose_x, nose_y), mắt (Leye_x, Leye_y, Reye_x, Reye_y), tai (Lear_x, Lear_y, Rear_x, Rear_y), cổ (neck_x, neck_y), vai (Rshoulder, Lshoulder), khuỷu tay (Relbow_x, Relbow_y, Lelbow_x, Lelbow_y), Cổ tay (Lwrist_x, Lwrist_y, Rwrist_x, Rwrist_y), hông (hip_x, hip_y), đùi (Rknee_x, Rknee_y, Lknee_x, Lknee_y), đầu gối (Rankle_x, Rankle_y, Lankle_x , Lankle_y) 19 Và cuối cùng, phân loại hiển thị loại hành động: 2.8.4 Huấn Luyện - Chuẩn bị liệu (hành động) cách chạy main.py, nhớ bỏ ghi mã thu thập liệu, liệu gốc lưu dạng txt - Chuyển đổi txt thành csv, bạn sử dụng EXCEL để làm điều - Thực đào tạo với train.py Action / training /, nhớ thay đổi action_enum lớp đầu mơ hình 20 Hình 3.2.4: Dữ liệu id sau lưu lại Sau load liệu mã hóa dạng số: Tiếp theo, tạo hàm LossHistory để hiển thị tiến độ đào tạo liệu với giá trị loss access: 21 Cuối cùng, tiến hành đào tạo liệu: # training his = LossHistory() model.compile(loss='categorical_crossentropy', optimizer=Adam(0.0001), metrics=['acc uracy']) model.fit(X_train, Y_train, batch_size=32, epochs=20, verbose=1, validation_data=(X_te st, Y_test), callbacks=[his]) model.summary() his.loss_plot('epoch') Ta sử dụng liệu riêng để train Tuy nhiên train mạng lại từ đầu mà xác trích xuất embedding vector để phục vụ cho việc so sánh sau Có phương pháp training tiền xử lý có sẵn: - VGG_origin: đào tạo với mạng VGG, giống CMU cung cấp caffemodel, xác chậm - Mobilenet_thin: đào tạo với Mobilenet, liệu nhỏ nhiều so với VGG_origin, nhanh xác 22 2.8.5 Test Hình 3.2.9: Kết hiển thị lên cửa sổ Prompt Hình 3.2.10: Biểu đồ hiển thị kết sau đào tạo 23 Chương 4: Kết luận 2.9 Kết Với kết thu chương trình nhận dạng hành động trực tuyến thời gian thực dựa khung xương xương, phân loại nhận dạng dựa khớp nối, sử dụng để theo dõi hoạt động an tồn Hình 4.3.11: Phát hành động video 24 Hình 4.3.12: Giám sát hành động xuất cảnh báo Hình 4.3.13: Phát hành động với nhiều người khung hình 25 2.10 Ưu điểm - nhược điểm Ưu điểm: - Openpose theo dõi mô bàn tay tốt chất lượng hình ảnh rõ nét - Openpose nhận biết bàn tay nắm lại hình ảnh có chất lượng tương đối rõ Hình 4.4.14: Openpose nhận biết mô tốt Nhược điểm: - Khi chất lượng ảnh thấp, Openpose phát hình ảnh hiệu Trong số trường hợp, Openpose cho kết thấp với hình ảnh có chất lượng khơng rõ nét - Để thực xác, chương trình địi hỏi cấu hình cao, thiết bị với cấu hình thấp cho chất lượng hình ảnh đầu khơng xác, hình ảnh cho FPS thấp khó để nhận dạng - Xử lý video sử dụng Deep Learning để huấn luyện sâu, cần có thiết bị có phần cứng có khả xử lý tính tốn cao để áp dụng cho lượng liệu khổng lồ 26 Hình 4.4.15: Chỉ số FPS thấp thiết bị khơng có cấu hình tốt 2.11 Hướng phát triển Có nhiều hướng phát triển cho chương trình này, phát triển mặt ứng dụng mặt thuật toán (để cải thiện hiệu phát hành động) Có thể xây dựng ứng dụng cần đến phát hành động mà khơng cần nhận dạng Ngồi phát triển chương trình theo hướng nhận dạng khn mặt, xây dựng hệ thống để học đặc trưng người cần nhận dạng Khi thực hiện, ta đưa qua ảnh qua chương trình phát mặt người để phát nhanh khn mặt có ảnh, sau so sách khn mặt với khn mặt mà chương trình “học” từ trước, so sánh đặc trưng hai khuôn mặt, trùng đưa thơng tin khn mặt nhận dạng Cơng nghệ phát triển áp dụng cho tất loại tương tác người máy móc Nó đóng vai trị lớn trải nghiệm VR, cho phép phát tốt chuyển động vật lý người dùng mà không cần phần cứng bổ sung nào, cảm biến gắn găng tay 27 TÀI LIỆU THAM KHẢO - Real-Time Action Detection – Paul Viola, Michal J.Jone Phần mềm theo dõi thể giúp Robot đọc cảm xúc - bạn – SuperG NHẬN DIỆN HÀNH ĐỘNG CỦA CON NGƯỜI TRONG VIDEO SỬ DỤNG DEEP LEARNING – Trần Thanh Tuấn 28