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
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
Nguyễn Cao Quốc Bảo Nguyễn Đức Thành Duy
ĐỒ ÁN 1 Ứng dụng nhận diện dáng người
(pose detection)
Trang 2ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
Nguyễn Cao Quốc Bảo - 21520611 Nguyễn Đức Thành Duy – 21520774
ĐỒ ÁN 1 Ứng dụng nhận diện dáng người (pose detection) qua ảnh chụp
GIẢNG VIÊN HƯỚNG DẪN
TS NGUYỄN TẤN TRẦN MINH KHANG
Trang 4Hì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
Trang 5DANH MỤC BẢNG
Trang 7TÓM TẮT
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ụng
sẽ 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ạo
bộ đế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ữ
Trang 8Chương 1 MỞ ĐẦU
1.1 Động lực nghiên cứu
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 toá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 toá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
Trang 91.2 Phát biểu bài toán
Đầ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ểmkhớ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
1.3 Các thách thức
● 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
Trang 10vớ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
1.4 Mục tiêu và phạm vi nghiên cứu
● 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
1.5 Đóng góp của nghiên cứu
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 toán trên
1.6 Bố cục của báo cáo
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 hoà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
Trang 11Chương 2 CƠ SỞ LÝ THUYẾT
2.1 Mô hình được lựa chọn
● 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ự đoá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]
Trang 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ậy
dự đ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êu
vũ 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
Sau khi cân nhắc và chọn lựa chúng tôi quyết định sử dụng ngôn ngữJava để xây dựng nên phần mềm, vì một số ưu điểm sau đây:
● Java là một ngôn ngữ thuần hướng đối tượng
● Java có cơ chế gom rác tự động
● Java là một ngôn ngữ đa luồng
● Java có tính an toàn và bảo mật
Trang 13● Java là ngôn ngữ thông dịch
2.3 Tensorflow Lite
Hình 2 TensorFlow Lite
2.3.1 Sơ lược về TensorFlow Lite
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 khai
và 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ững
mô hình Machine Learning trên ứng dụng di động
2.3.2 Điểm mạnh
● 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ị iOS
Trang 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ênngoài Do đó, các mô hình sẽ hoạt động trên các thiết bị không kết nốiinternet.
hệ đ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
Trang 15● 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
Trang 16thờ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
Trang 17hì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
Trang 18Sau 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.
Trang 19Khi 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ình
Hệ thống sẽ đếm số động tác thực hiện được trong thời gian thực3.3.6.3 Luồng chính:
Khi người dùng truy cập vào trang đếm số động tác, hệ thống sẽ
tự động bắt đầu đếm số động tác trong thời gian thực, hệ thống
sẽ không dừng lại cho tới khi người dùng thoát khỏi chế độ.3.3.6.4 Luồng phụ:
Khi người dùng thoát khỏi chế độ chế độ đếm sẽ bị dừng lại
Trang 20Khi người dùng nhấn nút đếm lại, hệ thống sẽ bắt đầu đếm lại từđầu.
3.4 Sơ đồ activity
3.4.1 Chụp hình
Hình 5 Sơ đồ activity của chức năng chụp hình
Trang 213.4.2 Chạy mô hình trong thời gian thực
Hình 6 Sơ đồ activity của chức năng chạy mô hình trong thời gian thực
Trang 233.4.5 So sánh dáng người
Hình 8 Sơ đồ activity của chức năng so sánh dáng người
Trang 243.4.6 Đếm số lần thực hiện 1 bài tập
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ủ
Trang 25Hì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
Trang 26Hì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
Trang 273.5.4 Chế độ so sánh dáng
Khi 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
Trang 283.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
Trang 29Chương 4 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
4.1 Kết luận
Trong đồ án lần này, chúng tôi đã xây dựng một phần mềm chạy trên thiết
bị di động ứng dụng của lĩnh vực nhận diện dáng người
4.2 Hướng phát triển
● Trong tương lai chúng tôi dự định sẽ tích hợp và triển khai nhiều động táckhác
● Cải thiện hiệu năng của mô hình
4.3 Hướng dẫn chạy ứng dụng từ link github
Link github:https://github.com/DuyDangCode/pose_detection_mobile.git
Mở android studio, nhấn vào nút Get from VCS
Hình 18 Giao diện Android Studio
Trang 30Dá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
Trang 31Hình 20 Android Studio đang tải dự ánKế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)
Trang 32Hì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.
Trang 33TÀI LIỆU THAM KHẢO
[1] TensorFlow Lite
[2] Documentation | Android Developers
[3] Andriluka, Mykhaylo, et al "2d human pose estimation: New benchmark and state of the art
analysis." Proceedings of the IEEE Conference on computer Vision and Pattern Recognition 2014.
[4] Toshev, Alexander, and Christian Szegedy "Deeppose: Human pose estimation via deep neural
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 Computing Surveys 56.1 (2023): 1-37.
[6] Zhang, Feng, Xiatian Zhu, and Mao Ye "Fast human pose estimation." Proceedings of the IEEE/CVF conference on computer vision and pattern recognition 2019.