1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

33 7 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Ứng dụng nhận diện dáng người (pose detection)
Tác giả Nguyễn Cao Quốc Bảo, Nguyễn Đức Thành Duy
Người hướng dẫn TS. Nguyễn Tấn Trần Minh Khang
Trường học Trường Đại học Công nghệ Thông tin, Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Công nghệ Phần mềm
Thể loại Đồ án 1
Năm xuất bản 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 33
Dung lượng 3,65 MB

Nội dung

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 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

Trang 5

DANH MỤC BẢNG

Trang 7

TÓ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 8

Chươ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 9

1.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 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

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 11

Chươ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 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

Trang 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

Trang 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.

Trang 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ì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 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.

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 21

3.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 23

3.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 24

3.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 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

Trang 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

Trang 27

3.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 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

Trang 29

Chươ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 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

Trang 31

Hì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 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.

Trang 33

TÀ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.

Ngày đăng: 15/05/2024, 09:30

HÌNH ẢNH LIÊN QUAN

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 - đồ án 1 ứng dụng nhận diện dáng người pose detection
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 (Trang 9)
Hình 3. Android Studio - đồ án 1 ứng dụng nhận diện dáng người pose detection
Hình 3. Android Studio (Trang 14)
Hình 4. Sơ đồ usecase - đồ án 1 ứng dụng nhận diện dáng người pose detection
Hình 4. Sơ đồ usecase (Trang 16)
3.1. Sơ đồ usecase - đồ án 1 ứng dụng nhận diện dáng người pose detection
3.1. Sơ đồ usecase (Trang 16)
Hình như độ chính xác, độ chênh lệch góc - đồ án 1 ứng dụng nhận diện dáng người pose detection
Hình nh ư độ chính xác, độ chênh lệch góc (Trang 17)
3.4. Sơ đồ activity 3.4.1. Chụp hình - đồ án 1 ứng dụng nhận diện dáng người pose detection
3.4. Sơ đồ activity 3.4.1. Chụp hình (Trang 20)
Hình 6. Sơ đồ activity của chức năng chạy mô hình trong thời gian thực - đồ án 1 ứng dụng nhận diện dáng người pose detection
Hình 6. Sơ đồ activity của chức năng chạy mô hình trong thời gian thực (Trang 21)
Hình 6. Sơ đồ activity của chức năng xem hình ảnh - đồ án 1 ứng dụng nhận diện dáng người pose detection
Hình 6. Sơ đồ activity của chức năng xem hình ảnh (Trang 22)
Hình 7. Sơ đồ activity của chức năng cài đặt - đồ án 1 ứng dụng nhận diện dáng người pose detection
Hình 7. Sơ đồ activity của chức năng cài đặt (Trang 22)
Hình 8. Sơ đồ activity của chức năng so sánh dáng người - đồ án 1 ứng dụng nhận diện dáng người pose detection
Hình 8. Sơ đồ activity của chức năng so sánh dáng người (Trang 23)
Hình 9. Sơ đồ activity của chức năng đếm số lần thực hiện một động tác - đồ án 1 ứng dụng nhận diện dáng người pose detection
Hình 9. Sơ đồ activity của chức năng đếm số lần thực hiện một động tác (Trang 24)
Hình 10. Trang chủ 3.5.2. Thư viện ảnh - đồ án 1 ứng dụng nhận diện dáng người pose detection
Hình 10. Trang chủ 3.5.2. Thư viện ảnh (Trang 25)
Hình 12. Thư viện ảnh khi có ảnh - đồ án 1 ứng dụng nhận diện dáng người pose detection
Hình 12. Thư viện ảnh khi có ảnh (Trang 26)
Hình 13. Chế độ chạy thời gian thực - đồ án 1 ứng dụng nhận diện dáng người pose detection
Hình 13. Chế độ chạy thời gian thực (Trang 26)
Hình 14. Chế độ so sánh dáng khi khớp Khi 2 dáng khác nhau - đồ án 1 ứng dụng nhận diện dáng người pose detection
Hình 14. Chế độ so sánh dáng khi khớp Khi 2 dáng khác nhau (Trang 27)
Hình 15. Chế độ so sánh dáng khi không khớp - đồ án 1 ứng dụng nhận diện dáng người pose detection
Hình 15. Chế độ so sánh dáng khi không khớp (Trang 27)
Hình 16. Trang bài tập 3.5.6. Trang đếm số lần thực hiện bài tập - đồ án 1 ứng dụng nhận diện dáng người pose detection
Hình 16. Trang bài tập 3.5.6. Trang đếm số lần thực hiện bài tập (Trang 28)
Hình 18. Giao diện Android Studio - đồ án 1 ứng dụng nhận diện dáng người pose detection
Hình 18. Giao diện Android Studio (Trang 29)
Hình 19. Giao diện nhập đường dẫn Link Github - đồ án 1 ứng dụng nhận diện dáng người pose detection
Hình 19. Giao diện nhập đường dẫn Link Github (Trang 30)
Hình 20. Android Studio đang tải dự án - đồ án 1 ứng dụng nhận diện dáng người pose detection
Hình 20. Android Studio đang tải dự án (Trang 31)
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. - đồ án 1 ứng dụng nhận diện dáng người pose detection
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 (Trang 32)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w