Đồ án TÌM HIỂU PHƯƠNG PHÁP D2DET CHO BÀI TOÁN PHÁT HIỆN PHƯƠNG TIỆN GIAO THÔNG TRONG KHÔNG ẢNH

66 36 0
Đồ án TÌM HIỂU PHƯƠNG PHÁP D2DET CHO BÀI TOÁN PHÁT HIỆN PHƯƠNG TIỆN GIAO THÔNG TRONG KHÔNG ẢNH

Đ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

ĐẠ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 PHAN THỊ HỒNG CÚC HUỲNH BÙI KHÁNH VY BÁO CÁO ĐỒ ÁN TÌM HIỂU PHƯƠNG PHÁP D2DET CHO BÀI TOÁN PHÁT HIỆN PHƯƠNG TIỆN GIAO THÔNG TRONG KHÔNG ẢNH Learning to use D2Det for Vehicle Detection in Aerial Images KỸ SƯ NGÀNH CƠNG NGHỆ PHẦN MỀM TP HỒ CHÍ MINH, 2021 ĐẠ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 PHAN THỊ HỒNG CÚC – 18520260 HUỲNH BÙI KHÁNH VY – 18520402 BÁO CÁO ĐỒ ÁN TÌM HIỂU PHƯƠNG PHÁP D2DET CHO BÀI TOÁN PHÁT HIỆN PHƯƠNG TIỆN GIAO THÔNG TRONG KHÔNG ẢNH Learning to use D2Det for Vehicle Detection in Aerial Images KỸ SƯ NGÀNH CÔNG NGHỆ PHẦN MỀM TP HỒ CHÍ MINH, 2021 LỜI CẢM ƠN Đầu tiên, chúng xin chân thành cảm ơn đến thầy TS Nguyễn Tấn Trần Minh Khang – giảng viên hướng dẫn chúng môn đồ án Thầy đã quan tâm, hỗ trợ, tạo điều kiện cho chúng thực hiện đồ án Chúng xin gửi lời cảm ơn đến thầy ThS Võ Duy Nguyên đã quan tâm giúp đỡ, hướng dẫn tận tình đóng góp nhiều ý kiến giúp chúng tơi hồn thành đồ án Ngồi ra, chúng tơi xin gửi lời cảm ơn đến em, bạn, anh chị nhóm nghiên cứu đã ln đồng hành, giúp đỡ chúng tơi suốt q trình chúng thực hiện đồ án Chúng xin chân thành cảm ơn! Sinh viên thực hiện Phan Thị Hồng Cúc Huỳnh Bùi Khánh Vy TP.Hồ Chí Minh, ngày 30 tháng 06 năm 2021 MỤC LỤC TÓM TẮT 11 Chương TỔNG QUAN 12 1.1 Giới thiệu chung 12 1.2 Động lực nghiên cứu 12 1.2.1 Tính khoa học 12 1.2.2 Tính ứng dụng 13 1.3 Phát biểu toán 13 1.4 Phạm vi toán 14 1.5 Thách thức toán .14 1.6 Nội dung thực hiện 15 1.7 Kết đề tài 15 1.8 Cấu trúc báo cáo đề tài 16 Chương CƠ SỞ LÝ THUYẾT VÀ CÁC NGHIÊN CỨU LIÊN QUAN .17 2.1 Computer Vision 17 2.1.1 Giới thiệu 17 2.1.2 Một số toán nổi bật 17 2.2 Object Detection 18 2.2.1 Giới thiệu 18 2.2.2 Phân loại 19 2.3 Neural Network 20 2.4 Convolutional Neural Network 22 2.4.1 Giới thiệu 22 2.4.2 Convolution Layer .22 2.4.3 Pooling Layer 26 2.4.4 Fully connected layer 26 2.5 ResNet 27 2.5.1 Giới thiệu 27 2.5.2 Vanishing Gradient 28 2.5.3 Kiến trúc mạng ResNet .28 2.6 Faster R-CNN 30 2.6.1 Tổng quan 30 2.6.2 RPN 31 2.6.3 Fast R-CNN .32 2.6.4 RoI pooling 32 2.7 RoIAlign 35 2.8 Deformable RoI Pooling 37 2.9 Feature Pyramid Networks 38 2.10 D2Det .40 2.10.1 Tổng quan 40 2.10.2 Dense local regression .40 2.10.3 Discriminative RoI pooling .42 2.10.4 Kết thực nghiệm 44 Chương THỰC NGHIỆM VÀ ĐÁNH GIÁ 45 3.1 Bộ dữ liệu UAVDT .45 3.2 Quá trình thực nghiệm 47 3.2.1 Xử lý dữ liệu 47 3.2.2 Chạy thực nghiệm D2Det 55 3.3 Phương pháp đánh giá 56 3.3.1 Intersection over Union .56 3.3.2 Confusion matrix .57 3.3.3 Precision Recall 58 3.3.4 AP mAP 60 3.4 Kết 61 3.4.1 Kết .61 3.4.2 Hình ảnh minh họa 61 3.4.3 Đánh giá mô hình 62 Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 63 4.1 Kết đạt được 63 4.2 Hạn chế 63 4.3 Hướng phát triển 63 TÀI LIỆU THAM KHẢO 64 DANH MỤC HÌNH Hình 1.1 Input – output toán 14 Hình 1.2 Thách thức toán .15 Hình 2.1 Ví dụ phân biệt toán Computer Vision 19 Hình 2.2 Nơ-ron sinh học 20 Hình 2.3 Kiến trúc Neural Network 21 Hình 2.4 Nơ-ron Neural Network 21 Hình 2.5 Convolutional Neural Network .22 Hình 2.6 Cấu trúc tổng quát Convolution layer 23 Hình 2.7 Ví dụ đầu vào Convolution layer .23 Hình 2.8 Ví dụ minh họa quá trình hoạt động Convolution layer 24 Hình 2.9 Ví dụ minh họa Max Pooling .26 Hình 2.10 Fully connected layer 27 Hình 2.11 Residual block .28 Hình 2.12 Mạng CNN truyền thống mạng ResNet 29 Hình 2.13 Kiến trúc Faster R-CNN .30 Hình 2.14 Kiến trúc RPN .31 Hình 2.15 Fast R-CNN Faster R-CNN 32 Hình 2.16 Feature map ví dụ 33 Hình 2.17 Ví dụ minh họa sau ánh xạ proposal lên feature map 34 Hình 2.18 Ví dụ minh họa chia proposal thành các vùng tương ứng với kích thước output cho trước 34 Hình 2.19 Kết thu được ví dụ 35 Hình 2.20 Minh họa chia vùng RoIAlign 35 Hình 2.21 Ví dụ minh họa chia vùng RoIAlign 36 Hình 2.22 Ví dụ minh họa quá trình xác định điểm mẫu 36 Hình 2.23 Ví dụ minh họa kết sau max pooling RoIAlign 37 Hình 2.24 Deformable RoI Pooling .37 Hình 2.25 Feature Pyramid Network 38 Hình 2.26 Minh họa đường theo bottom-up top-down .39 Hình 2.27 Kiến trúc D2Det .40 Hình 2.28 Dense local regression 41 Hình 2.29 Discriminative RoI Pooling 42 Hình 2.30 Adaptive Weighted Pooling 43 Hình 3.1 Một số ảnh dữ liệu UAVDT .45 Hình 3.2 Minh họa cách tổ chức theo thư mục dữ liệu 47 Hình 3.3 Thư mục M1401 dữ liệu 48 Hình 3.4 Thư mục M_attr dữ liệu 48 Hình 3.5 Thư mục train M_attr 49 Hình 3.6 Thư mục test M_attr 49 Hình 3.7 Thư mục train 50 Hình 3.8 Thư mục val 50 Hình 3.9 Thư mục test 51 Hình 3.10 Định dạng annotation ban đầu 51 Hình 3.11 Minh họa nội dung annotation 52 Hình 3.12 Minh họa định dạng annotation sau thay đổi .53 Hình 3.13 Minh hoạ cách tính IoU 57 Hình 3.14 Mẫu confusion matrix với tốn phân loại có lớp 58 Hình 3.15 Cách tính Precision Recall .59 Hình 3.16 Bảng quan sát giá trị Precision Recall 60 Hình 3.17 Trường hợp được mô hình dự đoán khá tốt 62 Hình 3.18 Trường hợp được mô hình dự đoán chưa tốt 62 DANH MỤC BẢNG Bảng 2.1 Một số lọc phổ biến 26 Bảng 2.2 Kết dữ liệu MS COCO test-dev 44 Bảng 2.3 Kết dữ liệu UAVDT 44 Bảng 3.1 Tóm tắt các dữ liệu liên quan 46 Bảng 3.2 Kết dự đoán D2Det dữ liệu UAVDT-benchmark-M .61 DANH MỤC TỪ VIẾT TẮT AP Average Precision mAP Mean Average Precision CNN Convolutional Neural Networks Fast R-CNN Fast Region-based Convolutional Network Faster R-CNN Faster Region-based Convolutional Network UAVDT Unmanned Aerial Vehicle Benchmark Object Detection and Tracking RoI Region of Interest ResNet Residual Network o : số thứ tự frame video o : id đối tượng cung cấp tương quan giữa các bounding box các frame khác o : Hồnh độ góc trái bounding box được dự đoán o : Tung độ góc trái bounding box được dự đoán o : Chiều rộng tính theo số pixel bounding box được dự đoán o : Chiều cao tính theo số pixel bounding box được dự đoán o : giá trị cho biết mức độ bên khung hình đối tượng: = ‘no-out’, = ‘medium-out’, = ‘small-out’ o : giá trị cho biết mức độ bị che phủ đối tượng: = ’noocc’, = ‘lagre-occ’, = ‘medium-occ’, = ‘small-occ’ o : giá trị cho biết nhãn đối tượng: = ‘car’, = ‘truck’, = ‘bus’ Hình 3.11 Minh họa nội dung annotation (video M1401) 52 Định dạng annotation dữ liệu sau thay đổi 1: − Chúng sử dụng định dạng annotation COCO (tệp json) Tuy nhiên, vì định dạng khá phức tạp, nên chúng tơi chỉ sử dụng khóa (key) chính định dạng Đó là: o ‘image’: chứa danh sách thông tin ảnh o ‘annotations’: chứa danh sách thông tin bounding box o ‘categories’: chứa danh sách nhãn id chúng Hình 3.12 Minh họa định dạng annotation sau thay đổi Chúng đơn giản hóa định dạng annotation COCO theo hướng dẫn tại: https://mmdetection.readthedocs.io/en/latest/tutorials/customize_dataset.html 53 − Trong đó: o Với khóa ‘images’: ▪ ‘file_name’: Tên ảnh, kiểu chuỗi (String) ▪ ‘height’: Chiều cao ảnh, kiểu số nguyên (Integer) ▪ ‘width’: Chiều rộng ảnh, kiểu số nguyên (Integer) ▪ ‘id’: ID ảnh dữ liệu, kiểu số nguyên (Integer) o Với khóa ‘annotations’: ▪ ‘segmentation’: Chúng tơi mặc định giá trị bằng [] giá trị không dùng cho toán phát hiện đối tượng ▪ ‘area’: Diện tích bounding box đối tượng, kiểu số thực (float) ▪ ‘iscrowd’: Chỉ giá trị hoặc • 0: bounding box chứa đối tượng • 1: bounding box chứa nhiều đối tượng ▪ ‘image_id’: ID ảnh chứa đối tượng, kiểu số nguyên (Integer) ▪ ‘bbox’: Tọa độ kích thước bounding box đối tượng, kiểu danh sách (List) với định dạng [x, y, width, height], đó: • x, y: tọa độ góc trái bounding box • width: chiều rộng bounding box • height: chiều cao bounding box ▪ ‘category_id’: ID nhãn đối tượng, ID phải tương ứng với ID khóa ‘categories’, kiểu số nguyên (Integer) ▪ ‘id’: ID đối tượng, kiểu số nguyên (Integer) o Với khóa ‘categories’: ▪ ‘id’: ID nhãn, kiểu số nguyên (Integer) ▪ ‘name’: Tên nhãn, kiểu ch̃i (String) Như vậy, sau hồn thành quá trình chuyển đởi, chúng tơi sẽ có tệp json tương ứng với từng tập train, val, test lưu thư mục anno 54 3.2.2 Chạy thực nghiệm D2Det 3.2.2.1 Thông tin chung − Mô hình D2Det mô hình phát hiện đối tượng được tác giả huấn luyện dữ liệu COCO với 80 lớp đối tượng Sử dụng mô hình sẽ phát hiện các đối tượng phương tiện giao thông, dẫn tới vượt phạm vi đề tài Chính vì vậy, chúng tiến hành huấn luyện lại mô hình D2Det dữ liệu UAVDT-benchmark-M với backbone ResNet101 kết hợp với FPN − Phiên D2Det mà chúng thực nghiệm phiên D2Det dùng môi trường mmdetection 2.1.0 − Yêu cầu: o Linux or macOS (Windows is not currently officially supported) o Python 3.7+ o PyTorch 1.4.0+ o CUDA 10.0+ o mmcv 0.6.1+ o GCC 5+ 3.2.2.2 Chạy thực nghiệm − Cài đặt môi trường: conda create -n open-mmlab python=3.7 -y conda activate open-mmlab conda install pytorch torchvision -c pytorch pip install -r requirements/build.txt pip install "git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAP I" pip install -v -e # or "python setup.py develop" git clone https://github.com/open-mmlab/mmcv.git cd mmcv MMCV_WITH_OPS=1 pip install -e Nguồn: https://github.com/JialeCao001/D2Det-mmdet2.1 55 − Chỉnh sửa tệp coco_detection.py đường dẫn …/D2Det- mmdet2.1/configs/_base_/datasets/: o Thay đổi đường dẫn biến data_root thành đường dẫn tới dữ liệu (thư mục chứa thư mục train, val, test, anno) o Tạo biến classes kiểu Tuple với các phần tử các nhãn đối tượng thay đổi các tham số img_prefix, ann_file đoạn sau tương ứng với đường dẫn dữ liệu train=dict( img_prefix='./train_model/data/images/train/', classes=classes, ann_file='./train_model/data/annotations/train.json/'), val=dict( img_prefix='./train_model/data/images/val/', classes=classes, ann_file='./train_model/data/annotations/val.json/'), test=dict( img_prefix='./train_model/data/images/test/', classes=classes, ann_file='./train_model/data/annotations/test.json/')) − Tiến hành huấn luyện mô hình: python tools/train.py o Với :…/configs/d2det/D2Det_detection_r101_fpn_2x.py/ 3.3 Phương pháp đánh giá Chúng sử dụng độ đo AP với IoU khác để đánh giá mô hình 3.3.1 Intersection over Union Intersection over Union (IoU) chỉ số đánh giá thường được dùng để đo độ xác các phương pháp object detection, IoU được dùng để đánh giá thuật tốn có khả dự đoán các bounding box Cách tính IoU được thể hiện qua hình sau đây: 56 Hình 3.13 Minh hoạ cách tính IoU Trong đó: − Area of Overlap diện tích phần giao giữa bounding box được dự đoán bounding box ground-truth − Area of Union diện tích phần giao giữa bounding box Lý khiến IoU được sử dụng nhiều việc đánh giá các phương pháp object detection thực tế, tọa độ x, y bounding box được dự đoán khó xác hồn tồn với tọa độ ground-truth bounding box, ta cần phương pháp đánh giá dựa vào độ trùng lắp bounding box Thơng thường, dự đoán có IoU > 0.5 được xem dự đoán tốt 3.3.2 Confusion matrix Confusion matrix ma trận thể hiện rõ mỗi lớp được phân loại nào, lớp được phân loại đúng nhiều nhất, lớp thường bị nhầm lẫn sang lớp khác, … 57 Hình 3.14 Mẫu confusion matrix với toán phân loại có lớp (ảnh từ thư viện scikit-learn) Trong ví dụ trên, trục dọc lớp thực tế đối tượng, trục ngang lớp được dự đoán Như vậy, ta thấy, confusion matrix ma trận vng có kích thước 𝑛 × 𝑛 (với n số lớp toán), ma trận này, tởng giá trị phần tử tồn ma trận tổng số điểm tập kiểm thử, tổng phần tử đường chéo số điểm được dự đoán đúng tập kiểm thử Giá trị thuộc hàng i cột j số điểm dữ liệu thuộc lớp i được dự đoán lớp j 3.3.3 Precision Recall Giả sử ta xét kết phân loại với lớp C toán phân loại bằng confusion matrix, ta sẽ được ma trận sau: 58 Hình 3.15 Cách tính Precision Recall Dựa vào confusion matrix trên, ta có: − TP những điểm thuộc lớp C, được dự đoán lớp C − FP những điểm không thuộc lớp C, được dự đoán lớp C − TN những điểm thuộc lớp C, được dự đoán lớp C − FN những điểm không thuộc lớp C, được dự đoán lớp C Trong đó, TP FN những điểm được dự đoán đúng (xét lớp C) FP, TN những điểm được dự đoán sai Dựa vào công thức trên, Precision tỉ lệ điểm thực thuộc lớp C tất các điểm được dự đoán lớp C, Recall tỉ lệ các điểm thuộc lớp C tất các điểm được dự đoán đúng Một mơ hình phân lớp tốt mơ hình có Precision Recall đều cao, tức gần tốt 59 3.3.4 AP và mAP 3.3.4.1 Average Precision - AP Dựa vào việc quan sát giá trị Precision Recall, người ta đánh giá mơ hình có tốt hay khơng Ví dụ, ta có bảng theo dõi giá trị Precision Recall lớp toán phân loại sau: Hình 3.16 Bảng quan sát giá trị Precision Recall Ta có AP diện tích phần phía đường theo dõi Và thường được tính xấp xỉ bằng cơng thức: 𝐴𝑃 = ∑(𝑅𝑛 − 𝑅𝑛 − ) 𝑃𝑛 𝑛 Cơng thức tính diện tích phần phía đường màu xanh hình bên dưới; 60 3.3.4.2 Mean Average Precision – mAP AP chỉ đánh giá độ xác mơ hình phân loại cho lớp nhất, vậy, với những toán phân lớp có nhiều lớp, người ta tính trung bình giá trị AP tất lớp toán để đánh giá mơ hình, giá trị trung bình được gọi mAP 3.4 Kết quả 3.4.1 D2Det Kết quả AP AP@0.5 AP@0.75 𝐴𝑃𝑠 𝐴𝑃𝑚 𝐴𝑃𝑙 0.50 0.82 0.59 0.49 0.54 0.45 Bảng 3.2 Kết dự đoán D2Det dữ liệu UAVDT-benchmark-M theo độ đo AP COCO 3.4.2 Hình ảnh minh họa Trường hợp được mô hình cho kết khá tốt: 61 Hình 3.17 Trường hợp được mô hình dự đoán khá tốt Trường hợp được mô hình cho kết chưa tốt: Hình 3.18 Trường hợp được mô hình dự đoán chưa tốt 3.4.3 Đánh giá mô hình Từ kết thực nghiệm cho thấy mô hình D2Det với backbone ResNet101 kết hợp FPN cho kết chưa cao dữ liệu UAVDT-benchmark-M − Mô hình được huấn luyện để dự đoán các đối tượng car, truck, bus Đây các đối tượng phương tiện giao thông mà không ảnh các đối tượng thường dễ bị nhầm lẫn với nhau, dẫn đến nhiều đối tượng được gán nhãn nhiều lần − Đối với các ảnh có góc quay quá cao sẽ khiến các đối tượng ảnh nhỏ, cùng với các điều kiện phức tạp dẫn đến độ chính xác chưa cao 62 Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 4.1 Kết quả đạt Trong đề tài này, chúng tơi đã hồn thành được mục tiêu chính đã đặt ra: − Có cái nhìn tổng quan về Computer Vision, số toán nổi bật Computer Vision − Tìm hiểu toán phát hiện đối tượng, đặc biệt phát hiện phương tiện giao thông không ảnh − Tìm hiểu dữ liệu UAVDT, xử lý dữ liệu cho quá trình huấn luyện − Nghiên cứu các sở lý thuyết về học sâu, về mô hình phát hiện đối tượng: Faster R-CNN, D2Det,… − Cài đặt phương pháp phát hiện đối tượng D2Det cho toán phát hiện phương tiện giao thông không ảnh − Đánh giá mô hình dựa độ đo AP 4.2 Hạn chế − Quá trình nghiên cứu gặp nhiều khó khăn chưa có đủ kiến thức nền tảng − Việc cài đặt phương pháp D2Det tốn nhiều thời gian chưa có kinh nghiệm giải các lỗi phát sinh thiết lập cấu hình chạy thực nghiệm − Kết thực nghiệm chưa cao 4.3 Hướng phát triển − Tìm hiểu các phương pháp xử lý dữ liệu trước huấn luyện − Thực nghiệm với các kiến trúc mạng CNN khác để tìm phương án tốt − Tìm hiểu các dữ liệu khác để huấn luyện cho mô hình 63 TÀI LIỆU THAM KHẢO [1] Cao, J., Cholakkal, H., Anwer, R M., Khan, F S., Pang, Y., & Shao, L (2020) D2det: Towards high quality object detection and instance segmentation In Proceedings of the IEEE/CVF conference on computer vision and pattern recognition (pp 11485-11494) [2] Du, D., Qi, Y., Yu, H., Yang, Y., Duan, K., Li, G., & Tian, Q (2018) The unmanned aerial vehicle benchmark: Object detection and tracking In Proceedings of the European Conference on Computer Vision (ECCV) (pp 370-386) [3] Razakarivony, S., & Jurie, F (2016) Vehicle detection in aerial imagery: A small target detection benchmark Journal of Visual Communication and Image Representation, 34, 187-203 [4] Zhu, P., Wen, L., Du, D., Bian, X., Hu, Q., & Ling, H (2020) Vision meets drones: Past, present and future arXiv preprint arXiv:2001.06303 [5] Ding, J., Zhu, Z., Xia, G S., Bai, X., Belongie, S., Luo, J., & Zhang, L (2018, August) Icpr2018 contest on object detection in aerial images (odai-18) In 2018 24th International Conference on Pattern Recognition (ICPR) (pp 1-6) IEEE [6] He, K., Zhang, X., Ren, S., & Sun, J (2016) Deep residual learning for image recognition In Proceedings of the IEEE conference on computer vision and pattern recognition (pp 770-778) [7] Ren, S., He, K., Girshick, R., & Sun, J (2016) Faster R-CNN: towards realtime object detection with region proposal networks IEEE transactions on pattern analysis and machine intelligence, 39(6), 1137-1149 64 [8] He, K., Gkioxari, G., Dollár, P., & Girshick, R (2017) Mask r-cnn In Proceedings of the IEEE international conference on computer vision (pp 2961-2969) [9] Dai, J., Qi, H., Xiong, Y., Li, Y., Zhang, G., Hu, H., & Wei, Y (2017) Deformable convolutional networks In Proceedings of the IEEE international conference on computer vision (pp 764-773) [10] Lin, T Y., Dollár, P., Girshick, R., He, K., Hariharan, B., & Belongie, S (2017) Feature pyramid networks for object detection In Proceedings of the IEEE conference on computer vision and pattern recognition (pp 2117-2125) 65 -Hết - 66 ... NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM PHAN THỊ HỒNG CÚC – 18520260 HUỲNH BÙI KHÁNH VY – 18520402 BÁO CÁO ĐỒ ÁN TÌM HIỂU PHƯƠNG PHÁP D2DET CHO BÀI TOÁN PHÁT HIỆN PHƯƠNG TIỆN GIAO THÔNG... [1]) dữ liệu UAVDT [2] cho toán phát hiện phương tiện giao thông không ảnh Loại hình giao thông được đề cập nghiên cứu giao thông đường Các phương tiện giao thông bao gồm: xe ô tô, xe... cứu tìm phương pháp nhằm nâng cao chính xác, độ hiệu cho toán 12 1.2.2 Tính ứng dụng Phát hiện phương tiện giao thông không ảnh được áp dụng vào nhiều lĩnh vực sống: − Giám sát giao

Ngày đăng: 05/09/2021, 20:46

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan