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

Nhận dạng ảnh giả mạo dựa trên phương pháp phân lớp kết hợp biến đổi ảnh đầu vào p2

19 2 0

Đ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

Nội dung

11 CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2 1 Mạng nơ ron tích chập 2 1 1 Cấu tạo và quá trình xử lý của một nơ ron sinh học 9 Một nơ ron gồm có thân nơ ron, tua gai thần kinh, sợi trục thần kinh, trong đó • Thân nơ ron là nơi xử lý các tín hiệu được đưa vào • Tua gai thần kinh là nơi nhận các xung điện vào trong nơ ron • Sợi trục thần kinh là nơi đưa tín hiệu ra ngoài sau khi được xử lý bởi nơ ron • Khớp thần kinh vị trí nằm giữa tua gai thần kinh và sợi trục thần kinh, đây là điểm liên kết đầu ra của nơ.

CHƯƠNG 2.1 CƠ SỞ LÝ THUYẾT Mạng nơ ron tích chập 2.1.1 Cấu tạo q trình xử lý nơ ron sinh học [9] Một nơ ron gồm có: thân nơ ron, tua gai thần kinh, sợi trục thần kinh, đó: • Thân nơ ron: nơi xử lý tín hiệu đưa vào • Tua gai thần kinh: nơi nhận xung điện vào nơ ron • Sợi trục thần kinh: nơi đưa tín hiệu ngồi sau xử lý nơ ron • Khớp thần kinh: vị trí nằm tua gai thần kinh sợi trục thần kinh, điểm liên kết đầu nơ ron với đầu vào nơ ron khác Hình 2.1 Nơ ron sinh học 11 2.1.2 Mạng nơ ron [10] Neural network (NN) mợt hệ thống tính tốn lấy cảm hứng từ hoạt động nơ-ron hệ thần kinh ❖ Logistic regression Logistic regression mơ hình neural network đơn giản nhất với input layer output layer Mơ hình logistic regression: 𝑦̂ = 𝜎(𝑤0 + 𝑤1 ∗ 𝑥1 + 𝑤2 ∗ 𝑥2 ) Trong đó: • Tính tổng linear: 𝑧 = 𝑤0 + 𝑤1 ∗ 𝑥1 + 𝑤2 ∗ 𝑥2 • Hàm sigmoid: 𝜎 (𝑥) = 1+𝑒 −𝑥 Vậy nên: 𝑦̂ = 𝜎(𝑧) (a) 12 (1) (b) Hình 2.2 Mơ hình logistic regresion Tại hình 2.1b mơ hình logistic regresion rút gọn từ hình 2.1a Hệ số w0 gọi bias hàm sigmoid gọi hàm kích hoạt (activation function) ❖ Mơ hình tổng qt 13 Hình 2.3 Mơ hình nơ ron kết nối đầy đủ - Input layer: lớp chứa liệu đầu vào - Hidden layer: lớp ẩn, nhiệm vụ xử lý liệu đầu vào xuất liệu mới, từ làm liệu đầu cuối (hoặc làm liệu đầu vào cho lớp ẩn khác) Trong NN chứa nhiều không chứa lớp ẩn - Output layer: lớp chứa liệu đầu - Mỗi hình trịn hình 2.1 mợt node, node hidden layer output layer thực nhiệm vụ sau: • Liên kết với tất node layer trước với hệ số w riêng • Mỗi node có hệ số bias b riêng • Diễn bước: tính tổng linear áp dụng hàm kích hoạt 14 2.1.3 Một số hàm kích hoạt thơng dụng ❖ Hàm Sigmoid Biểu diễn hàm: 𝑓(𝑥) = 1+𝑒 −𝑥 (2) Đạo hàm riêng: 𝑓′(𝑥) = 𝑓(𝑥)(1 − 𝑓 (𝑥)) (3) Hàm Sigmoid sử dụng ngưỡng nằm khoảng (0, 1) Do đó, hàm sử dụng nhiều cho mơ hình dự đốn xác śt đầu ra, tức kết tồn khoảng từ đến 1: đầu vào số dương lớn, đầu hàm sigmoid gần Khi nhỏ 0, đầu gần Tuy nhiên, việc tối ưu hàm khó khăn, ngun nhân giá trị đầu vào hàm số rất lớn, đầu hàm đầu xấp xỉ 0, nên tốc độ hội tụ rất chậm Hình 2.4 Đồ thị hàm Sigmoid ❖ Hàm RELU Biểu diễn hàm: 15 𝑘ℎ𝑖 𝑥 < 𝑓 (𝑥 ) = { 𝑥 𝑘ℎ𝑖 𝑥 ≥ (4) 𝑘ℎ𝑖 𝑥 < 𝑘ℎ𝑖 𝑥 ≥ (5) Đạo hàm riêng: 𝑓′(𝑥) = { Hàm RELU áp dụng với trường hợp cần đầu nằm khoảng (0, +∞) Hàm RELU có tốc đợ tính tốn rất nhanh, gán giá trị âm trở thành lập tức, phù hợp cho việc huấn luyện từ liệu chuẩn Tuy nhiên, điều khiến hàm RELU khơng ánh xạ giá trị âm mợt cách thích hợp Hình 2.5 Đồ thị hàm RELU 2.1.4 Mạng nơ ron tích chập [11] Mạng nơ ron tích chập mợt mơ hình học sâu phổ biến tiên tiến nhất Hầu hết hệ thống nhận diện xử lý ảnh sử dụng mạng nơ ron tích chập tốc đợ xử lý nhanh đợ xác cao Trong mạng nơ ron truyền thống, tầng coi mợt chiều, mạng nơ ron tích chập, tầng coi chiều, gồm: chiều cao, chiều rộng chiều sâu Mạng nơ ron tích chập có hai khái niệm quan trọng: kết nối cục bộ chia sẻ tham số Những khái niệm góp phần giảm số lượng trọng số cần huấn luyện, tăng nhanh tốc đợ tính tốn 16 Hình 2.6 Các tầng (layer) CNN chiều Có ba tầng để xây dựng kiến trúc cho mợt mạng nơ ron tích chập: Tầng tích chập Tầng gợp (pooling layer) Tầng kết nối đầy đủ (fully - connected) Tầng fully - connected giống mạng nơ ron thơng thường, tầng chập thực tích chập nhiều lần tầng trước Pooling layer làm giảm kích thước mẫu khối 2x2 tầng trước Ở mạng nơ ron tích chập, kiến trúc mạng thường chồng ba tầng để xây dựng kiến trúc đầy đủ 2.1.5 Xây dựng mạng nơ ron tích chập [12] ❖ Mạng kết nối cục bộ Trong xử lý hình ảnh, thơng tin hình ảnh điểm ảnh (pixel) Nếu sử dụng mạng fully - connected, có rất nhiều tham số Ví dụ, mợt hình ảnh RGB có kích thước 512x512 pixel có 786432 (= 512 x 512 x 3) tham số đầu vào Trong hình 2.3, cho thấy áp dụng mạng nơ ron fully - connected, toàn bợ kiến trúc mạng cần tính tốn triệu nơ ron Số lượng lớn nơ ron làm cho tồn bợ q trình học rất chậm dẫn đến q tải so với khả tính tốn máy tính Qua mợt vài nghiên cứu xử lý ảnh, nhà nghiên cứu nhận thấy tính mợt hình ảnh thường cục bộ, nhà nghiên cứu ý đến tính cấp thấp xử lý ảnh Vì vậy, kiến trúc mạng chuyển mạng 17 fully - connected sang mạng kết nối cục bợ, nhằm làm giảm đợ phức tạp tính tốn Đây mợt ý tưởng CNN Chúng ta thấy rõ qua hình sau: Hình 2.7 Tích chập mợt ma trận nhỏ để tạo liệu đầu vào cho một nơ ron tầng ẩn Giống xử lý hình ảnh thơng thường, kết nối cục bợ mợt khối vng ma trận với nơ ron Kích thước khối thơng thường 3x3, 5x5, 7x7 Ý nghĩa vật lý khối giống một cửa sổ trượt (cửa sổ trượt một phương pháp xử lý ảnh) Bằng cách đó, số lượng tham số giảm xuống rất nhỏ không gây giảm mất thông tin, hình ảnh thơng thường thường có tính lặp khơng gian Để trích x́t nhiều thơng tin hơn, mạng nơ ron kết nối khối với một nơ ron khác Độ sâu tầng số lần kết nối một khu vực với nơ ron khác Ví dụ, mạng kết nối mợt khu vực với nơ ron khác Vì vậy, độ sâu năm tầng Chúng ta thấy rõ qua hình sau: 18 Hình 2.8 Ví dụ lớp tích chập Trong thực tế, kết nối tất thơng tin đợ sâu (ví dụ: kênh RGB) với nơ ron kết nối cục bợ khơng gian có chiều sâu đầy đủ Tuy nhiên ví dụ kết nối thông tin cục bộ chiều cao chiều rợng Vì vậy, có x x tham số hình cho nơ ron sau lớp màu xanh sử dụng cửa sổ x Biến thứ nhất thứ hai chiều cao chiều rộng kích thước cửa sổ biến thứ ba đợ sâu lớp Ví dụ di chuyển cửa sổ bên hình ảnh làm cho tầng có chiều cao chiều rợng, mợt hai chiều Ví dụ: di chuyển cửa sổ 01 pixel lần, gọi bước nhảy 01, mợt hình ảnh 32 x 32 x kích thước cửa sổ x có 28 x 28 x chiều sâu nơ ron tầng Có thể thấy rằng, kích thước giảm từ 32 xuống 28 Vì vậy, để bảo tồn kích thước, thêm phần trống vào đường viền Quay lại ví dụ trên, đệm với pixel, có 32 x 32 x chiều sâu nơ ron lớp để giữ kích thước chiều cao chiều rợng Như ví dụ trên, sử dụng kích thước cửa sổ w, có vùng tích chập với kích cỡ cửa sổ (w – 1)/2 pixel Thông tin đường viền không ảnh hưởng nhiều giá trị sử dụng mợt lần 19 ❖ Vấn đề tham số Trong ví dụ trên, ta có số lượng 32 x 32 x nơ ron tầng có bước nhảy 01, kích thước cửa sổ x khơng có đệm, với đợ sâu Mỗi nơ ron có x x = 75 tham số Vì vậy, tầng có 75 x 32 x 32 x = 384000 tham số Ở đây, chia sẻ tham số theo đợ sâu, 32 x 32 nơ ron tầng ẩn sử dụng tham số giống x x 3, tổng tham số sử dụng cho tầng 75 x = 375 Điều làm số lượng tham số giảm một cách đáng kể Tương tự, nơ ron độ sâu tầng áp dụng tích chập cho tầng trước Và trình học tập giống học lõi (core) tích chập Đây lý mà mạng nơ ron gọi mạng nơ ron tích chập ❖ Vấn đề hàm kích hoạt Trong mơ hình nơ ron truyền thống, mạng thường sử dụng hàm sigmoid cho hàm kích hoạt Tuy nhiên Krizhevsky [13] thử với hàm kích hoạt RELU Sau so sánh hiệu hàm kích hoạt RELU hàm kích hoạt sigmoid CNN Họ thấy mơ hình với RELU cần thời gian lặp đạt tỷ lệ lỗi huấn luyện tương đương Chúng ta thấy kết hình sau: 20 Hình 2.9 So sánh ReLU Sigmoid Như hình trên, đường liền nét mơ hình sử dụng RELU đường đứt nét sử dụng hàm Sigmoid Có thể dễ dàng thấy rằng, RELU cần vịng lặp để đạt tỉ lệ lỗi chấp nhận Do đó, ngày đa số mơ hình CNN gần sử dụng RELU để làm hàm kích hoạt ❖ Pooling layer Pooling layer giảm kích cỡ hình ảnh sau thực tích chập, giúp giữ lại đặc điểm, tính chất bật nhất ảnh Điều cho phép giảm mức đợ tính tốn hình ảnh có kích thước q lớn, đồng thời khơng làm mất đặc điểm quan trọng ảnh Tuy sử dụng mạng kết nối cục bộ chia sẻ tham số, nhiên số lượng tham số mang nơ ron lớn So với mợt tập liệu tương đối nhỏ, gây tình trạng q khớp (overfitting) Vì vậy, mạng nơ ron nhân tạo thường chèn Pooling layer vào mạng Pooling layer xử lý để giảm dần số lượng tham số 21 nhằm cải thiện thời gian tính tốn mạng nơ ron Pooling layer áp dụng lấy mẫu xuống cho tầng trước cách sử dụng hàm max Pooling layer hoạt động độc lập tầng trước Ngồi ra, có 24 thể đặt lượng pixel di chuyển cửa sổ trượt bước nhảy, làm với tầng tích chập Ví dụ, hình sau: Hình 2.10 Ví dụ minh họa đơn giản Pooling layer Ở ví dụ trên, kích thước cửa sổ trượt x bước nhảy lần trượt Tại cửa sổ, hàm max lấy giá trị tối đa để đại diện cho giá trị tầng Có hai loại Pooling layer: Nếu kích thước cửa sổ trượt bước nhảy, gợp chung (traditional pooling) Nếu kích thước cửa sổ trượt lớn bước nhảy, gợp nhóm (overlapping pooling) Trong thực tế, mạng nơ ron thường sử dụng kích thước cửa sổ kích thước bước nhảy gộp chung sử dụng kích thước cửa sổ kích thước bước nhảy gợp nhóm, tăng kích cỡ cửa sổ rất dễ làm mất đặc tính liệu Ngồi việc gợp sử dụng hàm max, người ta sử dụng hàm khác Ví dụ người ta sử dụng hàm tính trung bình cửa sổ trượt để tính tốn giá trị cho tầng tiếp theo, gọi gợp trung bình ❖ Tầng fully - connected Tầng thứ ba tầng fully - connected Tầng giống mạng nơ ron truyền thống: nơ ron tầng trước kết nối với một nơ ron tầng tầng cuối đầu Để đưa hình ảnh từ tầng trước vào, ta phải dàn phẳng 22 liệu thành một véc tơ nhiều chiều Cuối sử dụng hàm softmax để thực phân loại đối tượng ❖ Chuẩn hoá theo batch (Batch normalization - BN) Batch Normalization một kỹ thuật phổ biến hiệu nhằm tăng tốc độ hội tụ mạng học sâu một cách ổn định Chuẩn hoá theo batch áp dụng cho tầng riêng lẻ (hoặc cho tất tầng) hoạt đợng sau: Trong vịng lặp h́n luyện, tầng, tính giá trị kích hoạt thường lệ Sau chuẩn hóa giá trị kích hoạt nút việc trừ giá trị trung bình chia cho đợ lệch chuẩn Cả hai đại lượng ước tính dựa số liệu thống kê minibatch Chính chuẩn hóa dựa số liệu thống kê batch nên kỹ thuật có tên gọi chuẩn hố theo batch Khi áp dụng BN với minibatch có kích thước 1, mơ hình khơng học Vì sau trừ giá trị trung bình, nút ẩn nhận giá trị BN hoạt đợng hiệu ổn định với kích thước minibatch đủ lớn Khi áp dụng BN lựa chọn kích thước minibatch quan trọng so với trường hợp không áp dụng BN BN chuyển đổi giá trị kích hoạt tầng x nhất định theo công thức sau: 𝐵𝑁(𝑥) = 𝛾 ⊙ ̂ 𝑥− 𝜇 ̂ 𝜎 + 𝛽 (6) Trong đó: • 𝜇̂ giá trị trung bình • 𝜎̂ đợ lệch chuẩn mẫu minibatch Sau áp dụng BN, giá trị kích hoạt minibatch có giá trị trung bình khơng phương sai đơn vị Vì việc lựa chọn phương sai đơn vị (so với một giá trị đặc biệt khác) tuỳ ý, nên thường thêm vào cặp tham số tương ứng hệ số tỷ lệ γ đợ chệch β Do đó, đợ lớn giá trị kích hoạt tầng trung gian khơng thể phân kỳ q trình h́n luyện BN chủ đợng chuẩn hố chúng theo 23 giá trị trung bình phương sai cho trước (thơng qua μ σ) Qua trực giác thực nghiệm, dùng BN cho phép chọn tốc đợ học nhanh 2.2 Kiến trúc Inception V3 2.2.1 Lịch sử phát triển mạng CCN ❖ LeNet-5 [14] Ra đời vào năm 1998, LeNet-5 kiến trúc áp dụng mạng tích chập chiều, Model ban đầu đơn giản bao gồm convolutional layers fully connected layers Mặc dù đơn giản có kết tốt so với thuật toán machine learning truyền thống khác phân loại chữ số viết tay Hình 2.11 Kiến trúc LeNet-5 Đầu vào mạng LeNet có kích thước nhỏ (chỉ 32x32) layers nên số lượng tham số khoảng 60 nghìn ❖ AlexNet [15] AlexNet mạng CNN giới thiệu vào năm 2012 Alex Krizhevsky dành chiến thắng cuộc thi ImageNet với cách biệt lớn so với vị trí thứ hai Ý tưởng AlexNet dựa LeNet cải tiến điểm: • Tăng kích thước đầu vào đợ sâu mạng • Sử dụng bộ lọc (kernel filter) với kích thước giảm dần qua layers để phù hợp với kích thước đặc trưng chung đặc trưng riêng • Sử dụng local normalization để chuẩn hóa layer giúp cho q trình hợi tụ nhanh 24 Mạng AlexNet có resolution input số lượng layer lớn nên số lượng tham số lên tới 60 triệu, lớn so với LeNet rất nhiều ❖ VGG-16 [16] Với VGG-16, quan điểm một mạng nơ ron sâu giúp ích cho cải thiện đợ xác mơ hình tốt Về kiến trúc VGG-16 đặc điểm AlexNet có cải tiến: • Kiến trúc VGG-16 sâu hơn, bao gồm 13 layers tích chập chiều (thay so với AlexNet) layers fully - connected • Lần VGG-16 xuất khái niệm khối tích chập (block) Đây kiến trúc gồm một tập hợp layers CNN lặp lại giống • VGG-16 kế thừa lại hàm activation ReLU AlexNet • VGG-16 kiến trúc thay đổi thứ tự block xếp nhiều layers CNN max pooling thay xen kẽ mợt layer CNN max pooling • VGG-16 sử dụng bợ lọc kích thước nhỏ 3x3 thay nhiều kích thước bợ lọc AlexNet Kích thước bợ lọc nhỏ giúp giảm số lượng tham số cho mơ hình mang lại hiệu tính tốn Hình 2.12 Kiến trúc VGG-16 Mạng VGG-16 sâu so với AlexNet số lượng tham số lên tới 138 triệu tham số Tiếp theo Inception V1 Inception V3 tác giả đề cập phần luận văn 25 2.2.2 Inception V1[17] Hình 2.13 Kiến trúc Inception V1 Các kiến trúc mạng nơ ron trước sử dụng bợ lọc với đa dạng kích thước 11x11, 5x5, 3x3 nhỏ nhất 1x1 Một khám phá đưa việc kết hợp đồng thời bộ lọc vào một block mang lại hiệu kiến trúc khối Inception Khối Inception: • Khối Inception bao gồm nhánh song song Các bợ lọc kích thước 1x1, 3x3, 5x5 áp dụng Inception Module giúp trích lọc đa dạng đặc trưng vùng nhận thức có kích thước khác • Ở đầu nhánh 1, 2, từ xuống, phép tích chập 1x1 sử dụng điểm ảnh một kết nối fully connected nhằm mục đích giảm đợ sâu kênh số lượng tham số mơ hình Ví dụ: Ở block trước có kích thước width x height x channels = 12 x 12 x 256 Sau áp dụng 32 bợ lọc kích thước 1x1 khơng làm thay đổi width, height độ sâu giảm xuống 32, output shape lúc có kích thước 12 x 12 x 32 Ở layer liền sau, thực tích chập tồn 26 bợ đợ sâu, khởi tạo bợ lọc có đợ sâu 32 thay 256 Do đó số lượng tham số giảm mợt cách đáng kể • Nhánh thứ từ xuống giảm chiều liệu một layer maxpooling kích thước 3x3 sau áp dụng bợ lọc kích thước 1x1 để thay đổi số kênh • Các nhánh áp dụng padding stride cho đầu có kích cỡ chiều dài chiều rợng Cuối ta concatenate tồn bợ kết đầu khối theo kênh để thu output có kích thước với input Khối Inception lặp lại lần kiến trúc Inception V1 Tồn bợ mạng bao gồm 22 Layers, lớn gần gấp đôi so với VGG-16 Nhờ áp dụng tích chập 1x1 giúp tiết kiệm số lượng tham số xuống triệu, gần 27 lần so với VGG-16 2.2.3 Inception V3 Hình 2.14 Kiến trúc Inception V3 27 Inception V3 kế thừa Inception V1 bao gồm 24 triệu tham số Tồn bợ layer tích chập Inception V3 theo sau một layer batch normalization mợt ReLU activation Batch normalization kỹ thuật chuẩn hóa đầu vào theo minibatch layer theo phân phối chuẩn hóa N(0,1), giúp cho q trình h́n luyện thuật toán nhanh Inception V3 giải vấn đề thắt cổ chai (representational bottlenecks) Tức kích thước layers không bị giảm một cách đột ngột Đồng thời InceptionV3 có mợt cách tính tốn hiệu nhờ sử dụng phương pháp nhân tố (factorisation methods) Hiện Inception module bao gồm version Chúng ta xem qua điểm đặc biệt version • Inception-A: Cải tiến so với Inception module V1 Tại nhánh thứ nhất thay 01 layer tích chập x 02 layer tích chập x liên tiếp giúp giảm số lượng tham số từ 25 18 tăng đợ sâu cho mơ hình • Inception-B: Cải tiến so với Inception-A Thay tích chập x tích chập x nhánh thứ nhất nhánh thứ Đồng thời phân tích nhân tố tích chập x thành tích chập liên tiếp x x số lượng tham số so với tích chập tích chập x liên tiếp Nhờ số lượng tham số giảm từ 18 xuống cịn 14 • Inception-C: Cải tiến so với Inception-B Thay tích chập x tích chập x x x đồng thời thay đặt layer x x liên tiếp đặt chúng song song Kiến trúc giúp giảm số lượng tham số từ 14 cịn Ngồi Inception-V3 sử dụng kiến trúc giảm chiều liệu Reduction-A Reduction-B 2.3 Phương pháp Enhance hình ảnh Mơ đun ImageEnhance chứa mợt số lớp sử dụng để nâng cao chất lượng hình ảnh Có 04 chức Mơ đun ImageEnhance: 28 • Điều chỉnh cân màu sắc hình ảnh: Lớp sử dụng để điều chỉnh cân màu hình ảnh, theo cách tương tự điều khiển TV màu Hệ số nâng cao 0,0 cho hình ảnh đen trắng Hệ số 1,0 cho hình ảnh gốc • Điều chỉnh đợ tương phản hình ảnh: Lớp sử dụng để điều khiển đợ tương phản hình ảnh, tương tự điều khiển độ tương phản TV Hệ số nâng cao 0,0 cho hình ảnh màu xám đồng nhất Hệ số 1,0 cho hình ảnh gốc • Điều chỉnh đợ sáng hình ảnh: Lớp sử dụng để kiểm sốt đợ sáng hình ảnh Hệ số nâng cao 0,0 cho hình ảnh màu đen Hệ số 1,0 cho hình ảnh gốc • Điều chỉnh đợ sắc nét hình ảnh: Lớp sử dụng để điều chỉnh đợ sắc nét hình ảnh Hệ số nâng cao 0,0 cho hình ảnh mờ, hệ số 1,0 cho hình ảnh gốc hệ số 2,0 cho hình ảnh sắc nét 29 ... hình nơ ron kết nối đầy đủ - Input layer: lớp chứa liệu đầu vào - Hidden layer: lớp ẩn, nhiệm vụ xử lý liệu đầu vào xuất liệu mới, từ làm liệu đầu cuối (hoặc làm liệu đầu vào cho lớp ẩn khác)... śt đầu ra, tức kết tồn khoảng từ đến 1: đầu vào số dương lớn, đầu hàm sigmoid gần Khi nhỏ 0, đầu gần Tuy nhiên, việc tối ưu hàm khó khăn, nguyên nhân giá trị đầu vào hàm số rất lớn, đầu hàm đầu. .. Điều chỉnh đợ sáng hình ảnh: Lớp sử dụng để kiểm sốt đợ sáng hình ảnh Hệ số nâng cao 0,0 cho hình ảnh màu đen Hệ số 1,0 cho hình ảnh gốc • Điều chỉnh đợ sắc nét hình ảnh: Lớp sử dụng để điều chỉnh

Ngày đăng: 18/06/2022, 15:32

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

TÀI LIỆU LIÊN QUAN

w