Tải bản đầy đủ (.pdf) (33 trang)

đồ án 1 ứng dụng nhận diện dáng người pose detection

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.65 MB, 33 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINHTRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN</b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINHTRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN</b>

<b>GIẢNG VIÊN HƯỚNG DẪN</b>

<b>TS. NGUYỄN TẤN TRẦN MINH KHANG</b>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

Hình 11. Thư viện khi khơng có ảnh 21Hình 12. Thư viện khi có ảnh 22Hình 13. Chế độ chạy thời gian thực 22Hình 14. Chế độ so sánh dáng khi khớp 23Hình 15. Chế độ so sánh dáng khi khơng khớp 23

Hình 17. Trang đếm số bài tập 24Hình 18. Giao diện Android Studio 24Hình 19. Giao diện nhập đường dẫn Link Github 24Hình 20. Android Studio đang tải dự án 25Hình 21. Giao diện của dự án trong Android Studio 26

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>DANH MỤC BẢNG</b>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>TÓM TẮT</b>

Nhận diện dáng người là một bài toán rất thú vị trong lĩnh vực MachineLearning. Nhận diện dáng người có khả năng được ứng dụng nhiều trong các lĩnhvực cuộc sống như sức khỏe, an ninh… Trong môn đồ án 1, chúng tôi đã xây dựngmột ứng dụng trên thiết bị di động sử dụng mơ hình có sẵn của Tensorflow Lite đểminh họa một số các khả năng mà nhân diện dáng người có thể đem lại. Ứng dụngsẽ bao gồm các chức năng:

- Chạy mơ hình trong thời gian thực: chức năng này sẽ chạy mơ hìnhnhận vào là một bức hình và sẽ xuất ra kết quả là hình vẽ mơ phỏngdáng người sẽ xuất hiện trên màn hình, cũng như cho phép lưu trữ kếtquả để truy xuất trong tương lai.

- Nhận diện và đếm số lần thực hiện động tác: cho phép ứng dụng tạobộ đếm dựa trên số lần người dùng thực hiện động tác khớp với độngtác mẫu được lưu trữ.

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>Chương 1. MỞ ĐẦU</b>

<b>1.1.Động lực nghiên cứu</b>

Ngày nay, với sự phát triển của cơng nghệ thị giác máy tính, các bài toán liênquan đến lĩnh vực này đang được đẩy mạnh nghiên cứu, đầu tư cũng nhưđược ứng dụng nhiều hơn trong cuộc sống. Một trong những bài tốn đó, bàitoán nhận diện dáng người (pose detection) trở thành trọng tâm trong ứngdụng của chúng tơi vì tính ứng dụng chuyên sâu của nó trong nhiều lĩnh vựckhác nhau.

Trong lĩnh vực an ninh giám sát: Việc nhận diện dáng người xuất hiện trongđám đơng có thể giúp phát hiện các hành vi gây mất an ninh trật tự (xơ xát,móc túi, v.v) và hỗ trợ trong các trường hợp y tế khẩn cấp (đột quỵ, ngạt thởdo chen lấn), hoặc trong trường hợp theo dõi một đối tượng trong đám đơng,có thể phát hiện các cử chỉ bất thường của đối tượng và qua đó có thể đưa rahướng xử lý thích hợp.

Trong lĩnh vực thể thao: Việc nhận diện được tư thế của các vận động viên sẽgiúp họ điều chỉnh lại tư thế luyện tập nhằm tối ưu hóa năng lượng và tránhchấn thương tốt hơn, bên cạnh đó các trọng tài cũng có thể dùng hệ thốngnhận diện này nhằm hỗ trợ cho việc chấm điểm trong các cuộc thi

Trong lĩnh vực y tế: Các bác sĩ có thể theo dõi tư thế của bệnh nhân trongquá trình phục hồi chức năng, qua đó có thể lên phác đồ điều trị phù hợp vớiquá trình hồi phục của bệnh nhân

Nhìn chung, nghiên cứu về bài tốn nhận dạng dáng người mang lại nhiều lợiích cũng như có được nhiều ứng dụng trong cuộc sống, cho thấy tầm quantrọng của các ứng dụng có thể giải quyết bài toán này trong thực tiễn

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>1.2.Phát biểu bài toán</b>

Đầu vào bài toán là một ảnh, đầu ra là một ma trận tensor 3 chiều dạng[1,1,17,3], trong đó:

● 2 kênh (channel) đầu tiên của chiều thứ 3 là tọa độ yx của 17 điểm khớpnối quan trọng (theo trình tự: mũi, mắt trái, mắt phải, tai trái, tai phải, vaitrái, vai phải, cùi chỏ trái, cùi chỏ phải, cổ tay trái, cổ tay phải, hông trái,hông phải, đầu gối trái, đầu gối phải, mắt cá chân trái, mắt cá chân phải).● Kênh cuối cùng của chiều thứ 3 biểu thị độ tự tin dự đoán của mỗi điểm

khớp nối, có giá trị nằm trong khoảng [0.0, 1.0].

Hình 1. Đầu vào và đầu ra của bài toán ứng dụng nhận diện dáng người

<b>1.3.Các thách thức</b>

● Thách thức về độ phân giải ảnh: Các ảnh đầu vào có độ phân giải khácnhau, dẫn đến việc nhận diện người có thể gặp khó khăn và liên quan đếnviệc xuất tọa độ các khớp nối tương ứng về sau.

● Thách thức về tầm nhìn bị che khuất: Các ảnh đầu vào có thể bao gồmngười đang ở các tư thế gây che khuất các bộ phận (ngồi xổm, di chuyển

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

với công cụ hỗ trợ, v.v) hoặc các điều kiện mơi trường gây ảnh hưởng đếntầm nhìn (thiếu sáng, lóa, v.v)

● Thách thức về nhận dạng trùng lặp: Trong trường hợp có 2 hoặc nhiềungười được nhận diện tại một vị trí cụ thể trên ảnh (mẹ bồng con, cõngnhau, v.v) có thể gây ra sai lệch trong nhận diện các khớp nối

<b>1.4.Mục tiêu và phạm vi nghiên cứu</b>

● Mục tiêu: Tìm hiểu về đề tài nhận diện dáng người (pose detection) và cácứng dụng.

● Phạm vi: Nghiên cứu về cách tích hợp Pose Detection vào các ứng dụngthực tế trên di động.

<b>1.5.Đóng góp của nghiên cứu</b>

Nội dung cuốn báo cáo trình bày về một phương pháp được cung cấp sẵntrong việc giải quyết bài toán nhận dạng dáng người, đánh giá được các chỉsố về độ chính xác và tính linh hoạt của ứng dụng trong thực tiễn cũng nhưnêu ra một số bất cập chưa thể xử lý với cơng nghệ hiện tại của bài tốn trên

<b>1.6.Bố cục của báo cáo</b>

Phần còn lại của báo cáo được trình bày theo bố cục như sau:

CHƯƠNG 2 – CƠ SỞ LÝ THUYẾT: bao gồm những kiến thức, thông tin về đề tài.CHƯƠNG 3 – XÂY DỰNG ỨNG DỤNG: từng bước xây dựng ứng dụng

CHƯƠNG 4 – KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN: sau khi hồn thành ứngdụng, thơng qua việc phân tích sẽ đưa ra những kết luận cũng như hướng phát triểncho đề tài

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b>Chương 2. CƠ SỞ LÝ THUYẾT</b>

<b>2.1.Mơ hình được lựa chọn</b>

● Tên mơ hình:

lite-model_movenet_singlepose_lightning_tflite_float16_4● Link mơ hình:TensorFlow Hub (tfhub.dev)

● Sơ lược về mơ hình: Một mơ hình mạng nơ-ron tích chập(Convolutional Neural Network - CNN) chạy trên hình ảnh RGB vàdự đốn vị trí khớp cơ của một người duy nhất. Mơ hình này đượcthiết kế để chạy trên trình duyệt bằng cách sử dụng Tensorflow.js hoặctrên các thiết bị sử dụng TF Lite ở thời gian thực, nhắm vào các hoạtđộng vận động/thể dục. Biến thể này, MoveNet.SinglePose.Lightning,là một mơ hình có khả năng nhận diện thấp hơn (so vớiMoveNet.SinglePose.Thunder) nhưng có thể chạy ở tốc độ 50 khunghình trên giây trên hầu hết các laptop hiện đại và đạt được hiệu suấttốt.

● Kiến trúc mơ hình: Mơ hình sử dụng bộ trích xuất đặc trưng hình ảnhMobileNetV2 với bộ giải mã Feature Pyramid Network (với bướcnhảy 4), tiếp theo là các đầu dự đoán CenterNet kết hợp với logic xửlý sau khi dự đoán tùy chỉnh. Lightning sử dụng giá trị nhân độ sâu(depth multiplier) là 1.0 trong khi Thunder sử dụng giá trị nhân độ sâu(depth multiplier)

● Đầu vào: Một khung hình video hoặc hình ảnh, được biểu diễn dướidạng tensor int32 có hình dạng: 192x192x3 (Lightning) / 256x256x3(Thunder). Thứ tự các kênh: RGB với giá trị trong khoảng từ 0 đến255.

● Đầu ra: Một ma trận có kiểu dữ liệu là float32 có hình dạng [1, 1, 17,3].

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

○ Hai kênh đầu tiên của chiều cuối cùng đại diện cho tọa độ yx(được chuẩn hóa trong khung hình ảnh, tức là trong khoảng[0.0, 1.0]) của 17 điểm chính (theo thứ tự: [mũi, mắt trái, mắtphải, tai trái, tai phải, vai trái, vai phải, khuỷu tay trái, khuỷutay phải, cổ tay trái, cổ tay phải, hông trái, hông phải, gối trái,gối phải, mắt cá trái, mắt cá phải]).

○ Kênh thứ ba của chiều cuối cùng đại diện cho điểm số tin cậydự đoán của mỗi điểm chính, cũng trong khoảng [0.0, 1.0].● Tập dữ liệu train:

○ Bộ dữ liệu COCO Keypoint Training Set 2017: Bao gồmnhững hình ảnh tự nhiên với các cảnh quan đa dạng, kích thướcđối tượng và các vật che khuất. Bộ dữ liệu huấn luyện gốc baogồm 64.000 hình ảnh (hình ảnh, chú thích). Những hình ảnh cóba người trở lên đã được lọc ra, dẫn đến một bộ dữ liệu huấnluyện cuối cùng gồm 28.000 hình ảnh.

○ Bộ dữ liệu huấn luyện Active Dataset: Là những hình ảnh đượclấy mẫu từ các video thể dục trên YouTube, ghi lại nhữngngười vận động (ví dụ: HIIT, tập tạ, vv.), duỗi cơ hoặc khiêuvũ. Bộ dữ liệu này chứa các tư thế và chuyển động đa dạng vớihiệu ứng mờ chuyển động và tự che khuất. Tập hình ảnh vớimột người duy nhất chứa 23.500 hình ảnh.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

● Java là ngơn ngữ thơng dịch

<b>2.3.Tensorflow Lite</b>

Hình 2. TensorFlow Lite

<b>2.3.1. Sơ lược về TensorFlow Lite</b>

Trước khi tìm hiểu về TensorFlow Lite, chúng ta hãy đi sơ lược mộtchút về người đàn anh của TensorFlow Lite đó là TensorFlow.

Tensorflow là một thư viện mã nguồn mở được phát triển bởiGoogle. Trong lĩnh vực Machine Learning, Tensorflow là một trongnhững thư viện phổ biến nhất, nó hỗ trợ mạnh trong việc triển khaivà huấn luyện các mơ hình Machine Learning.

Tuy nhiên trong việc sử dụng, người ta nhận ra rằng TensorFlowchiếm dụng nhiều dung lượng lưu trữ và cần rất nhiều GPU, đồng thờinhững nguồn tài nguyên đó lại rất hạn chế trên thiết bị di động. Vì vậyTensorFlow Lite ra đời nhằm mục đích đáp ứng cho nhu cầu chạy nhữngmơ hình Machine Learning trên ứng dụng di động.

<b>2.3.2. Điểm mạnh</b>

● Chuyển đổi mơ hình TensorFlow thành mơ hình TensorFlow Lite mộtcách nhanh chóng và dễ dàng để tạo ra các mơ hình thân thiện với diđộng.

● Với tính đơn giản, xây dựng ứng dụng học máy cho các thiết bị iOSvà Android.

● Khác với kiến trúc dựa trên máy chủ, đây là một phương án hiệu quảhơn để kích hoạt mơ hình trên di động.

● Trên các thiết bị di động, nó cho phép suy luận ngoại tuyến.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

● TensorFlow Lite cho phép thực thi các mơ hình học máy một cách dễdàng trên điện thoại thông minh, cho phép thực hiện các nhiệm vụ họcmáy truyền thống mà khơng cần sử dụng API hoặc máy chủ bênngồi. Do đó, các mơ hình sẽ hoạt động trên các thiết bị khơng kết nốiinternet.

<b>2.4.Android Studio</b>

Hình 3. Android Studio

Android Studio là mơi trường phát triển tích hợp (IDE) chính thức dành chohệ điều hành Android của Google, được xây dựng trên phần mềm IntelliJIDEA của JetBrains và thiết kế đặc biệt cho việc phát triển ứng dụngAndroid. Nó có thể được tải xuống trên hệ điều hành dựa trên Windows,macOS và Linux. Đây là một sự thay thế cho Eclipse Android DevelopmentTools (E-ADT) như IDE chính cho việc phát triển ứng dụng Android gốc.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<b>Chương 3. XÂY DỰNG ỨNG DỤNG</b>

Trong đề tài lần này chúng tôi ứng dụng mơ hình nhận diện dáng người bằngviệc tính hợp mơ hình vào một phần mềm di động. Phần mềm có chức năng đếmsố lần thực hiện động tác squat của một người trong thời gian thực. Để thực hiệnchức năng này chúng tơi đã chia thành các tính năng nhỏ hơn và các tính năngđó bao gồm:

● Xây dựng tính năng chạy mơ hình trong thời gian thực● Xây dựng tính năng so sánh dáng người

● Xây dựng tính năng đếm số lần thực hiện bài tập● Xây dựng một số tính năng khác

○ Xem ảnh○ Cài đặt

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

thời gian thực

Chạy mơ hình và hiểnthị lên kết quả trongthời gian thực

hình đã chụp.

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

hình như độ chính xác, độchênh lệch góc

người và so sánh xemdáng người thứ 2 cógiống dáng cần sosánh hay khơng

bài tập

Đếm số lần thực hiệnmột bài tập

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

Sau khi người dùng chụp ảnh, người dùng truy cập vào kho ảnhcủa ứng dụng người dùng có thể xem lại những ảnh mà mình đãchụp.

3.3.2.3. Luồng phụKhơng có.

3.3.3.3. Luồng phụ

Sau khi chỉnh sửa thông số trong trang cài đặt nếu người dùngkhơng lưu lại những thơng số đó hệ thống sẽ đưa những thơngsố đó về với trạng thái mặc định.

<b>3.3.4. Sử dụng chế độ chạy mơ hình trong thời gian thực</b>

3.3.4.1. Mơ tả:

Mơ hình sẽ được chạy trong thời gian thực, hình dáng người sẽđược hiển thị ngay trên màn hình.

3.3.4.2. Luồng chính

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

Khi người dùng nhấn vào nút chế độ chạy mơ hình trong thờigian thực hệ thống sẽ tải mơ hình vào và bắt đầu xử lý những dữliệu đầu vào, dữ liệu đầu ra sẽ được hiển thị dưới dạng một hìnhvẽ người.

3.3.4.3. Luồng phụKhơng có

Khi người dùng thốt khỏi chế độ chế độ đếm sẽ bị dừng lại.

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

Khi người dùng nhấn nút đếm lại, hệ thống sẽ bắt đầu đếm lại từđầu.

<b>3.4.Sơ đồ activity3.4.1. Chụp hình</b>

Hình 5. Sơ đồ activity của chức năng chụp hình

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

<b>3.4.2. Chạy mơ hình trong thời gian thực</b>

Hình 6. Sơ đồ activity của chức năng chạy mơ hình trong thời gian thực

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

<b>3.4.5. So sánh dáng người</b>

Hình 8. Sơ đồ activity của chức năng so sánh dáng người

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

<b>3.4.6. Đếm số lần thực hiện 1 bài tập</b>

Hình 9. Sơ đồ activity của chức năng đếm số lần thực hiện một động tác

3.5.1. Trang chủ

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

Hình 10. Trang chủ3.5.2. Thư viện ảnh

Khi khơng có ảnh

Hình 11. Thư viện ảnh khi khơng có ảnh

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

Hình 12. Thư viện ảnh khi có ảnh3.5.3. Chế độ chạy thời gian thực

Hình 13. Chế độ chạy thời gian thực

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

3.5.4. Chế độ so sánh dángKhi 2 dáng giống nhau

Hình 14. Chế độ so sánh dáng khi khớpKhi 2 dáng khác nhau

Hình 15. Chế độ so sánh dáng khi khơng khớp

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

3.5.5. Trang bài tập

Hình 16. Trang bài tập3.5.6. Trang đếm số lần thực hiện bài tập

Hình 17. Trang đếm số bài tập

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<b>Chương 4. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN</b>

● Cải thiện hiệu năng của mơ hình.

<b>4.3.Hướng dẫn chạy ứng dụng từ link github</b>

Link github: android studio, nhấn vào nút Get from VCS

Hình 18. Giao diện Android Studio

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

Dán đường dẫn Link GIthub vô URL, chọn nơi lưu dự án và nhấn Clone

Hình 19. Giao diện nhập đường dẫn Link Github

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

Hình 20. Android Studio đang tải dự án

Kết nối máy tính với điện thoại, sau đó chọn thiết bị và nhấn nút chạy.(Lưu ý: trên điện thoại cần phải bật chế độ cho nhà phát triển)

</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">

Hình 21. Giao diện của dự án trong Android StudioỨng dụng sau đó sẽ được tải và chạy trực tiếp trên điện thoại.

</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">

<b>TÀI LIỆU THAM KHẢO</b>

<small>[1].TensorFlow Lite</small>

<small>[2].Documentation | Android Developers</small>

<small>[3] Andriluka, Mykhaylo, et al. "2d human pose estimation: New benchmark and state of the art</small>

<i><small>analysis." Proceedings of the IEEE Conference on computer Vision and Pattern Recognition. 2014.</small></i>

<small>[4] Toshev, Alexander, and Christian Szegedy. "Deeppose: Human pose estimation via deep neural</small>

<i><small>networks." Proceedings of the IEEE conference on computer vision and pattern recognition. 2014.[5] Zheng, Ce, et al. "Deep learning-based human pose estimation: A survey." ACM ComputingSurveys 56.1 (2023): 1-37.</small></i>

<i><small>[6] Zhang, Feng, Xiatian Zhu, and Mao Ye. "Fast human pose estimation." Proceedings of theIEEE/CVF conference on computer vision and pattern recognition. 2019.</small></i>

</div>

×