Xây dựng công cụ nhận dạng khuôn mặt theo thời gian thực trên nền hệ điều hành mã nguồn mở - Nguyễn Bá Đại

Tài liệu Xây dựng công cụ nhận dạng khuôn mặt theo thời gian thực trên nền hệ điều hành mã nguồn mở - Nguyễn Bá Đại: Nghiên cứu khoa học công nghệ Tạp chí Nghiên cứu KH&CN Quân sự, Số 29, 02 - 2014 53 Xây dựng công cụ nhận Dạng khuôn mặt theo thời gian thực trên nền hệ điều hành mã nguồn mở Nguyễn Bá Đại*, Dương Quốc Dũng** Tóm tắt: Bài báo trình bày kết quả nghiên cứu xây dựng phần mềm nhận diện khuôn mặt theo thời gian thực trên hệ điều hành mã nguồn mở áp dụng phương pháp trích rút các thành phần chính ma trận đặc trưng, đặc tính màu của ảnh. Phần mềm được thử nghiệm trên kít phát triển Pandaboard của hãng Texas Instrument sử dụng chip 02 lõi ARM-Cotex A9 với hệ điều hành Linux. Kết quả thử nghiệm ban đầu cho thấy công cụ đã làm việc khá hiệu quả và có khả năng áp dụng vào thực tiễn trên nhiều lĩnh vực. Từ khóa: Thị giác máy, Xử lý ảnh, Nhận dạng đối tượng, Mã nguồn mở, Nhận dạng mặt, PCA. 1. đặt vấn đề Khuôn mặt người đóng vai trò quan trọng trong các tương tác xã hội của chúng ta, cho phép chúng ta nhận dạng được người này với người khác. Việc nhận dạng đối tượn...

pdf7 trang | Chia sẻ: quangot475 | Lượt xem: 517 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Xây dựng công cụ nhận dạng khuôn mặt theo thời gian thực trên nền hệ điều hành mã nguồn mở - Nguyễn Bá Đại, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Nghiên cứu khoa học công nghệ Tạp chí Nghiên cứu KH&CN Quân sự, Số 29, 02 - 2014 53 Xây dựng công cụ nhận Dạng khuôn mặt theo thời gian thực trên nền hệ điều hành mã nguồn mở Nguyễn Bá Đại*, Dương Quốc Dũng** Tóm tắt: Bài báo trình bày kết quả nghiên cứu xây dựng phần mềm nhận diện khuôn mặt theo thời gian thực trên hệ điều hành mã nguồn mở áp dụng phương pháp trích rút các thành phần chính ma trận đặc trưng, đặc tính màu của ảnh. Phần mềm được thử nghiệm trên kít phát triển Pandaboard của hãng Texas Instrument sử dụng chip 02 lõi ARM-Cotex A9 với hệ điều hành Linux. Kết quả thử nghiệm ban đầu cho thấy công cụ đã làm việc khá hiệu quả và có khả năng áp dụng vào thực tiễn trên nhiều lĩnh vực. Từ khóa: Thị giác máy, Xử lý ảnh, Nhận dạng đối tượng, Mã nguồn mở, Nhận dạng mặt, PCA. 1. đặt vấn đề Khuôn mặt người đóng vai trò quan trọng trong các tương tác xã hội của chúng ta, cho phép chúng ta nhận dạng được người này với người khác. Việc nhận dạng đối tượng dựa vào khuôn mặt nhận được sự quan tâm đáng kể trong những năm gần đây do tiềm năng của nó cho hàng loạt các ứng dụng trong điều khiển robot, trong các ứng dụng an ninh như xuất nhập cảnh, quản lý tòa nhà, quản lý các ca kíp làm việc trong các phân xưởng, nhận dạng và truy bắt tội phạm Nhận dạng mặt người (Face Recognition) là một lĩnh vực nghiên cứu của ngành thị giác máy (Computer Vision) và có liện hệ mật thiết với các nghiên cứu của ngành sinh trắc học. Nó có nhiều điểm tương tự với các nghiên cứu nhận diện mống mắt hay nhận dạng vân tay mà các nghiên cứu đã đạt đến sự chín muồi. Tuy nhiên nhận khuôn mặt vẫn còn là một vấn đề phức tạp, khoa học đang gặp nhiều khó khăn khi giải quyết nó đặc biệt là bài toán xây dựng hệ thống làm việc theo thời gian thực do các giới hạn về tốc độ, bộ nhớ lưu trữ đối với các Board hoạt động độc lập. Hệ thống nhận dạng khuôn mặt thời gian thực là hệ thống nhận dạng khuôn mặt từ những hình ảnh video mà được cung cấp bởi camera. Như vậy, hệ thống này sử dụng cùng lúc hai kỹ thuật đó là kỹ thuật nhận diện khuôn mặt và kỹ thuật nhận dạng, phân lớp đối tượng. Ngày nay, các hệ thống nhúng phát triển mạnh mẽ và được ứng dụng rất rộng rãi trong các hệ thống kỹ thuật cũng như các thiết bị cầm tay. Hệ thống nhúng với hệ điều hành đóng vai trò quan trọng trong quá trình phát triển đó. Có rất nhiều các hệ điều hành nhúng được ra đời như các hệ điều hành Windows CE, VxWorks (Wind River Systems), Windows NT, QNX RTOS và Linux. Trong những hệ điều hành trên, hệ điều hành mã nguồn mở Linux được đặc biệt quan tâm vì sức mạnh cũng như tài nguyên to lớn của nó cho việc phát triển các hệ thống nhúng với CPU đa lõi. Một thực tế không thể phủ nhận là Linux hay nói chung các dòng hệ điều hành phát triển từ Unix là tốc độ xử lý nhanh hơn hẳn các Window bởi lý do Linux đạt được hiệu quả cao trong việc quản lý và sử dụng tài nguyên hệ thống. Ngoài ra nó là hệ điều hành miễn phí với mã nguồn mở, cho phép Kỹ thuật điện tử & Khoa học máy tính N.B. Đại, D.Q. Dũng , “Xây dựng công cụ nhận dạng khuụn mặt... mó nguồn mở” 54 người dùng can thiệp sâu, tối ưu hóa các phép toán để tăng khả năng tính toán, đáp ứng yêu cầu thời gian thực trong một số bài toán. Mục tiêu của đề tài là nghiên cứu xây dựng công cụ nhận dạng mặt trên các thiết bị có tốc độ xử lý cũng như tài nguyên hữu hạn để áp dụng cho các bài toán thực tiễn cụ thể làm việc theo thời gian thực, ví dụ như các bộ chấm công cho nhân viên công ty, nhà máy; thiết bị giám sát vào ra cho các đơn vị có tính an ninh, bảo mật cao...Thiết bị phải đảm bảo gọn nhẹ, hoạt động ổn định và nhận diện được các đối tượng đang di chuyển ở tốc độ của người đi bộ bình thường. Trong phạm vi bài báo, tác giả nghiên cứu ứng dụng các kỹ thuật nhận diện đối tượng, phương pháp sử dụng khuôn mặt đặc trưng (Eigenfaces) kết hợp với phương pháp so sánh tương quan để so khớp và nhận dạng đối tượng. Trong đó, tác giả tập trung nghiên cứu khả năng ứng dụng của phương pháp mặt đặc trưng (Eigenfaces) cho bài toán xây dựng bộ đặc trưng nhận dạng mặt, đồng thời xem xét các thông số ảnh hưởng đến thời gian tính tính toán, ước lượng để đưa ra bộ thông số ảnh đầu vào đảm bảo tốc độ tính toán đáp ứng yêu cầu bài toán thời gian thực trên board nhúng. Từ các thông số thu được, tác giả đã tiến hành thử nghiệm trên kít phát triển Pandaboard của hãng Texas Instrument sử dụng chip 02 lõi ARM-Cotex A9 với hệ điều hành Linux và thu được kết quả khả quan. 2. nội dung giải quyết 2.1. Lựa chọn phương pháp Như đã nói ở trên, để giải quyết bài toán nhận dạng mặt người theo thời gian thực, cần giải quyết các vấn đề về nhận diện khuôn mặt và nhận dạng, phân lớp đối tượng. Để giải quyết bài toán nhận dạng khuôn mặt người, hiện tại có hai hướng chính được sử dụng là: Nhận dạng dựa trên các đặc trưng của các phần tử trên khuôn mặt (Feature Based Face Fecognition). Khi đó, các chi tiết trên khuôn mặt (như vị trí, diện tích, hình dạng của mắt, mũi, miệng) và mối quan hệ hình học giữa chúng (như khoảng cách của hai mắt, khoảng cách hai lông mày, tương quan giữa các bộ phận) được sử dụng làm đặc trưng cho bài toán so khớp đối tượng ở giai đoạn tiếp theo. Phương pháp này có ưu điểm là gần với cách con người sử dụng để nhận biết khuôn mặt, ngoài ra phương pháp này loại bỏ được các sai số trong các trường hợp như ảnh bị nghiêng hay nhiễu do điều kiện ánh sáng. Tuy nhiên nhược điểm lớn nhấtcủa phương pháp này là thuật toán khá phức tạp, khối lượng tính toán lớn và kết quả xử lý thấp đối với các đối tượng ở khoảng cách xa. Nhận dạng dựa trên tổng thể khuôn mặt (Appearance Based Face Recognition). Lúc này quá trình nhận dạng không đi xét các chi tiết trên khuôn mặt nữa, mà chúng ta xem khuôn mặt là một vector trong không gian nhiều chiều từ đó có thể đánh giá tương quan của các đối tượng thông qua đánh giá vị trí tương quan của các vector. Tuy nhiên việc sử dụng tất cả các dữ liệu trong ảnh để dùng cho bài toán nhận dạng, phân lớp là không cần thiết, đặc biệt đối với nhóm dữ liệu có cùng chiều hướng biến đổi như mặt người, nên phương pháp phân tích thành phần chính được đề xuất và được sử dụng phổ biến cho lớp bài toán này. Ưu điểm của phương pháp phân tích thành phần chính (Principal Companent Analysis – PCA) được tác Herve Abdi và Lynne J.William tổng hợp trong nghiên cứu của mình [1] là có thể loại bỏ một số chiều của không gian dữ liệu mà vẫn duy trì sự biến đổi nhiều nhất Nghiên cứu khoa học công nghệ Tạp chí Nghiên cứu KH&CN Quân sự, Số 29, 02 - 2014 55 của tập hợp các vector dữ liệu ban đầu. Từ đó, Matthew A. Turk và Alex P. Pentland đã phát triển phương pháp nhận dạng mặt sử dụng khuôn mặt đặc trưng[2], là phương pháp cụ thể cho bài toán nhận dạng mặt mà tác giả sử dụng cho việc xây dựng công cụ. Khi đó, bài toán sẽ được giải quyết qua các bước chính như sau: 1. Khởi tạo: tính toán khuôn mặt đặc trưng từ tập ảnh dữ liệu đầu vào và xây dựng không gian đặc trưng nhiều chiều mới cho bộ ảnh đặc trưng. 2. Đối với ảnh cần nhận dạng, thực hiện việc biểu diễn trên không gian đặc trưng, tính toán độ tương quan với các vector của tập dữ liệu. 3. Đánh giá độ tương quan để truy xuất kết quả. 2.2. Các bước tiến hành  Xây dựng không gian đặc trưng cho tập ảnh dữ liệu Giả sử các ảnh mặt I(x,y) biểu diễn thành các mảng giá trị cường độ sáng hai chiều có kích thước lần lượt là W và H, nếu biểu diễn thành dạng vector trong không gian, thì kích thước của vector hay nói cách khác chiều của không gian sẽ là WH. Ví dụ, nếu ảnh dữ liệu có dạng hình vuông kích thước 256, thì số chiều của không gian để biểu diễn ảnh trên đó sẽ là 65,536. Nếu tập ảnh đầu vào của chúng ta gồm m phần tử, mỗi phần tử được biểu diễn ở dạng vector cột Xi, khi đó ta có giá trị trung bình các ảnh mặt sẽ là: 1 1 m i i X X m    (1) Sai khác giữa các mặt với giá trị trung bình được tính theo công tức: i iX X   (2) Từ đó, tập hợp các giá trị sai khác của tập ảnh dữ liệu so với giá trị trung bình tạo thành ma trận A có dạng:  1 2 ... mA     (3) Từ đây xây dựng ma trận hiệp phương sai. Ở đây ta sử dụng một thủ thuật của Mathew A.Turk và Alex P.Pentland [2] là đảo chiều nhân ma trận làm giảm đáng kể số chiều của ma trận để tìm các vector và giá trị riêng dễ dàng hơn mà vẫn hiệu quả tốt là : *TC A A trong đó TA là ma trận chuyển vị của ma trận dữ liệu đầu vào A, C là ma trận hiệp phương sai. Khi đó các giá trị riêng xác định được chỉ còn là 1 2 ... 0m      , vector riêng  1,..., ma a ,thực hiện đánh giá và lựa chọn số trị riêng và vector riêng làm cơ sở trực chuẩn cho không gian mới. Gọi ma trận cơ sở trực chuẩn cho không gian mới là ME. Các vector dữ liệu ban đầu được biểu diễn trong không gian đặc trưng thông qua phép toán quay: *TMF ME A (4) Trong đó MF là ma trận chứa tọa độ các vector ảnh của tập dữ liệu trong không gian mới.  Tính toán độ tương quan của ảnh nhận dạng với tập ảnh dữ liệu Đối với các ảnh nhận dạng: ảnh được chuẩn hóa kích thước so với tập dữ liệu ảnh cơ sở. Mỗi ảnh đầu vào của quá trình nhận dạng có dạng là vector cột X có cỡ kích thước WH Sai khác giữa ảnh đầu vào và giá trị trung bình tập dữ liệu: Kỹ thuật điện tử & Khoa học máy tính N.B. Đại, D.Q. Dũng , “Xây dựng công cụ nhận dạng khuụn mặt... mó nguồn mở” 56 X X   (5) Toạ độ của vector ảnh đầu vào biểu diễn trong không gian đặc trưng có dạng: *TIF ME  (6) Độ tương quan Si giữa ảnh cần nhận dạng và tập ảnh dữ liệu được xác định thông qua khoảng cách Euclide của vector IF với các cột của ma trận MF:   1 1 i Si IF MF    (7) Giá trị Si càng lớn thì ảnh đầu vào càng giống với thành phần Fi của ma trận MF, từ đó ta có thể đưa ra kết luận cho ảnh cần nhận dạng. 3. Xây dựng công cụ và lựa chọn tham số 3.1. Phương pháp, công cụ thực hiện Công cụ được xây dựng trên nền hệ điều hành mã nguồn mở Ubuntu với sự hỗ trợ của thư viện xử lý ảnh OpenCV. Các ảnh của tập huấn luyện cũng như ảnh nhận dạng thu được trải qua quá trình nhận diện, tiền xử lý và chuẩn hóa kích thước tương tự nhau và tương tự với các điều kiện khi tiến hành nhận dạng. Việc nhận diện sự có mặt của mặt đối tượng trong ảnh được tiến hành dựa vào việc sử dụng các lớp đối tượng Haar Cascade trong OpenCV. Trong chương trình, chúng tôi thử nghiệm nhận diện các đồng nghiệp trong cơ quan, mỗi đối tượng nhận dạng đưa vào cơ sở dữ liệu 5 ảnh, ở các trạng thái khác nhau cùng với một số lượng các ảnh được download từ internet. Số lượng đối tượng được sử dụng cho cho việc nhận dạng thử nghiệm là 50 người, số ảnh trong cơ sở dữ liệu là 500. Việc tiền xử lý dữ liệu cơ sở ban đầu, tính toán ma trận tương quan và các giá trị riêng được tác giả sử dụng các công toán hỗ trợ quá trình tính toán và chỉ thực hiện khi khởi động chương trình. Các kết quả thu được sẽ được lưu trữ vào file và truy xuất trong quá trình tính toán. Nhờ cách xử lý này làm giảm đáng kể thời gian tính toán. Hình 1. Lưu đồ thuật toỏn chương trỡnh nhận dạng. Từ thuật toán trên, tác giả đã xây dựng được công cụ phần mềm chạy trên Pandaboard ARM-Cotex A9, giao diện được thể hiện ở hình dưới. Nghiên cứu khoa học công nghệ Tạp chí Nghiên cứu KH&CN Quân sự, Số 29, 02 - 2014 57 Hình 2. Giao diện chính của hệ nhận dạng khuôn mặt. Giao diện gồm cú 4 phần chớnh: 1. Vựng hiển thị tớn hiệu video từ camera 2. Vựng khuụn mặt được phỏt hiện và cắt phục vụ cho quỏ trỡnh nhận dạng 3. Vựng hiển thị kết quả khuụn mặt sau khi nhận dạng 4. Vựng hiển thị các thông số quá trình nhận dạng bao gồm thời gian tính toán, chỉ số mặt tương quan lớn nhất và giá trị tương quan. Vùng này được thể hiện dưới dạng text và chỉ thay đổi khi có sự xuất hiện của mặt người trong trường quan sát của camera. Tuy nhiên, trong quá trình thực hiện, đối với một thiết bị phần cứng cụ thể, ở đây sử dụng Pandaboard ARM-Cotex A9, tác giả nhận thấy có rất nhiều yếu tố ảnh hưởng tới các đặc tính hoạt động của chương trình như thời gian tính toán, khoảng cách tới đối tượng khi chương trình bắt đầu nhận diện, độ chính xác của thuật toán. Ngoài các yếu tố thuộc về tính năng của thiết bị như tốc độ xử lý của chip và thuật toán chương trình đã được tối ưu hóa, thì kích thước của tập ảnh dữ liệu và ảnh nhận dạng có là yếu tố có ảnh hưởng lớn tới các đặc tính hoạt động. Rõ ràng là khi kích thước ảnh giảm xuống, thời gian tính toán sẽ giảm, tuy nhiên việc giảm chiều dữ liệu sẽ làm mất đi khá nhiều thông tin trong ảnh, như thế hiển nhiên sẽ làm độ chính xác nhận dạng cũng giảm xuống. Như vậy để đảm bảo yêu cầu làm việc theo thời gian thực và độ chính xác khi làm việc của thiết bị, cần cân nhắc kỹ để lựa chọn kích thước ảnh hợp lý. Nhận thấy việc tính toán thời gian xử lý của chương trình theo kích thước của ảnh một cách chính xác là hết sức khó khăn, tác giả đề xuất tìm thông số kích thước ảnh hợp lý nhất thông qua việc thử nghiệm các bộ giá trị khác nhau. Ngoài ra, từ việc thử nghiệm ta còn đánh giá được một số đặc tính của chương trình thay đổi theo kích thước ảnh. Kỹ thuật điện tử & Khoa học máy tính N.B. Đại, D.Q. Dũng , “Xây dựng công cụ nhận dạng khuụn mặt... mó nguồn mở” 58 Bảng 1. Kết quả thử nghiệm thuật toán với các kích thước ảnh khác nhau. Kích thước ảnh mặt(pixel) 40x44 80x88 100x110 150x165 200x220 232x256 Thời gian tính trung bình (ms) 4 9 12 23 31 39 Khoảng cách trung bình bắt đầu quá trình nhận diện(m) 3.5 2.5 2.2 1.8 1.5 1.2 Độ chính xác 64.6% 78.7% 82.3% 88.2% 92.2% 94.1% Trong quá trình truy xuất kết quả, để tránh xảy ra các điểm bất thường, tác giả nhận thấy, việc xuất ra kết quả sai thường chỉ xảy ra một cách ngẫu nhiên sau đó lại trả về giá trị chân lý. Tác giả đề xuất đưa ra việc chấp nhận kết quả nhận dạng chỉ được truy xuất khi có liên tiếp một số lần nhận dạng có cùng kết quả. Trường hợp nhận dạng có cùng một kết quả sai ở một số lần liên tiếp khác nhau là rất hiếm xảy ra nên cách xử lý này làm cho kết quả nhận dạng tăng lên một cách đáng kể. Với việc truy xuất kết quả cho ba lần xử lý liên tiếp, tác giả thu được một kết quả khả quan hơn : Bảng 2. Kết quả thử nghiệm thuật toán với các kích thước ảnh khác nhau sau ba lần trùng khớp kết quả. Kích thước ảnh mặt(pixel) 40x44 80x88 100x110 150x165 200x220 232x256 Thời gian tính trung bình (ms) 12 27 36 69 93 117 Khoảng cách trung bình bắt đầu quá trình nhận diện(m) 3.5 2.5 2.2 1.8 1.5 1.2 Độ chính xác 87.4% 90.2% 94.5% 95.6% 96.4% 97.1% 4. Kết luận Từ các kết quả thử nghiệm, tác giả nhận thấy, đối với từng mục đích sử dụng công cụ (chấm công, quản lý đối tượng ra vào khu vực, hay làm nhiệm vụ cảnh báo an ninh) chúng ta sẽ đánh giá yêu cầu để lựa chọn thông số hợp lý nhất. Với mục đích chương trình hoạt động thử nghiệm nhận diện theo thời gian thực các đối tượng ra vào cơ quan (Khoa), tác giả căn cứ vào kết quả và lựa chọn được yếu tố quyết định đến tính năng bài toán là kích thước ảnh chuẩn cho tập dữ liệu cũng như cho ảnh mặt đầu vào nhận diện. Với kích thước ảnh đầu vào có kích thước 640x480 và kích thước quy chuẩn mặt các đối tượng về 100x110, tốc độ phát hiện mặt và nhận dạng mặt của chương trình khá nhanh, đảm bảo phát hiện tách được mặt của đối tượng, xử lý và đưa ra 27 kết quả nhận dang trong 1 giây, đảm bảo được tốc độ yêu cầu. Độ chính xác thống kê thực nghiệm trên tập ảnh cơ sở dữ liệu thực (cán bộ giáo viên trong Khoa) đạt xấp xỉ 94.5% kết quả chính xác trên tổng số lần mà chương trình truy xuất kết quả. Nghiên cứu khoa học công nghệ Tạp chí Nghiên cứu KH&CN Quân sự, Số 29, 02 - 2014 59 Trong quá trình thực nghiệm, tác giả nhận thấy rằng hệ thống cần cải tiến thuật toán để có thể loại bỏ tối đa những yếu tố nhiễu do môi trường nhận dạng, cũng như tối ưu hóa tốc độ của chương trình nhằm giảm công suất làm việc cho chíp nhằm đảm bảo tính tin cậy cũng như tài nguyên của hệ nhúng. Đồng thời thử nghiệm trên tập mẫu thực lớn hơn nhắm đánh giá chính xác được kết quả. Lời cảm ơn: Nhóm tác giả xin gửi lời cám ơn chân thành tới các giáo viên trong Khoa Hàng không vũ trụ, Học viện kỹ thuật Quân sự đã giúp đỡ nhiệt tình nhóm nghiên cứu trong quá trình tiến hành thử nghiệm thuật toán. Tài liệu tham khảo [1]. Herve Abdi and Lynne J. Williams, “Principal component analysis,” Wiley Interdisciplinary Reviews: Computational Statistics, 2: 433–459. [2]. Matthew A. Turk and Alex P. Pentland, “Face recognition using eigenfaces.” In Proceedings CVPR 91, IEEE Computer Society Conference on Computer Vision and Pattern Recognition, 1991. [3]. Peter N. Belhumeur, Joao P. Hespanha, and David J. Kriegman, “Eigenfaces vs. fisherfaces: Recognition using class specific linear projection,” IEEE Transactions On Pattern Analysis And Machine Intelligence, 19(7):711–720, July 1996. [4]. W. Zhao, R. Chellappa, P. J. Phillips, and A. Rosenfeld “Face recognition: A literature survey,” ACM Computing Surveys,35(4):399-458, December 2003 [5]. Rafael C. Gonzalez, Richard E. Woods, “Digital Image Processing,” 2nd edition, Prentice Hall, Upper Saddle River, NJ, pp 693-750. [6]. Robert Laganiốre, “OpenCV 2 Computer Vision Application Programming Cookbook,” Published by Packt Publishing Ltd. 32 Lincoln Road, Olton,Birmingham, B27 6PA, UK. [7]. I.T. Jolliffe, ‘Principal Companent Analysis,” 2nd edition, Springer, New York, 2005. abstract building face recognition tool in real time based open source This paper presents research building face recognition tool in real time based open source with using principal companent analysis. Initial test results show that the tool has worked quite effectively and be able to apply in practice in many fields. Keywords: Computer vision, Image processing, Face recognition, PCA Nhận bài ngày 08 tháng 9 năm 2013 Hoàn thiện ngày 08 tháng 01 năm 2013 Chấp nhận đăng ngày 14 tháng 01năm 2014 Địa chỉ: * Khoa Hàng không Vũ trụ, Học viện KTQS. ** Khoa Kỹ thuật điều khiển, Học viện KTQS.

Các file đính kèm theo tài liệu này:

  • pdf07_nguyen_ba_dai_1356_2149103.pdf
Tài liệu liên quan