Thuật toán CN N Convolutional Neural Network

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu phát hiện giới tính qua hình ảnh ứng dụng cho công tác quản lý học sinh nội trú của trường phổ thông dân tộc nội trú tỉnh quảng ninh​ (Trang 44)

Convolutional Neural Network (CNNs – Mạng nơ-ron tích chập)[3] là một trong những mô hình Deep Learning tiên tiến giúp cho chúng ta xây dựng được những hệ thống thông minh với độ chính xác cao. CNN được dùng trong trong nhiều bài toán như nhân dạng ảnh, phân tích video, ảnh MRI, hoặc cho bài các bài của lĩnh vự xử lý ngôn ngữ tự nhiên

2.3.2 Cấu trúc của mạng CNN

Hình 2.10 Minh họa cấu trúc của mạng CNN

CNN bao gồm tập hợp các lớp cơ bản bao gồm: convolution layer + nonlinear layer, pooling layer, fully connected layer[5]. Các lớp này liên kết với nhau theo một thứ tự nhất định. Thông thường, một ảnh sẽ được lan truyền qua tầng convolution layer + nonlinear layer đầu tiên, sau đó các giá trị tính toán được sẽ lan truyền qua pooling layer, bộ ba convolution layer + nonlinear layer + pooling layer có thể được lặp lại nhiều lần trong network. Và sau đó được lan truyền qua tầng fully connected layer và softmax để tính xác suất ảnh chưa nội dung cần tìm.

một số layer khác như pooling/subsampling layer dùng để chắt lọc lại các thông tin hữu ích hơn (loại bỏ các thông tin nhiễu). Trong quá trình huấn luyện mạng (traning) CNN tự động học các giá trị qua các lớp filter dựa vào cách thức mà bạn thực hiện.

Trong mô hình CNN có 2 khía cạnh cần quan tâm là tính bất biến (Location Invariance) và tính kết hợp (Compositionality). Với cùng một đối tượng, nếu đối tượng này được chiếu theo các gốc độ khác nhau (translation, rotation, scaling) thì độ chính xác của thuật toán sẽ bị ảnh hưởng đáng kể. Pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển (translation), phép quay (rotation) và phép co giãn (scaling). Tính kết hợp cục bộ cho ta các cấp độ biểu diễn thông tin từ mức độ thấp đến mức độ cao và trừu tượng hơn thông qua convolution từ các filter

Mạng CNN sử dụng 3 ý tưởng cơ bản:

+ Các trường tiếp nhận cục bộ (local receptive field) + Trọng số chia sẻ (shared weights)

+ Tổng hợp (pooling).

2.3.3 Các lớp trong mạng CNN

a. Lớp Convolution

Convolution layer thường là lớp đầu tiên trong mô hình CNN[6]. Lớp này có chức năng phát hiện ra các đặc trưng về không gian một cách hiệu quả.

 Filter:

+ Filter là một trong những tham quan trọng trong CNN. Kích thước filter trong tầng convolutonal phổ biến hiện nay là 3x3. Kích thước Filter thường là số lẻ, ví dụ như 3x3, 5x5, 7x7.

Hình 2.11 Minh họa filter trong tầng convolutonal

Kích thước của các Filter thường không quá lớn. Vì với kích thước nhỏ nó có thể trích xuất cục bộ chi tiết hơn, kích thước ảnh giảm chậm hơn; làm cho mạng sâu hơn và số lượng tham số phải học thấp hơn. Sử dụng 2 Filter kích thước 3×3 (có 18 tham số) sẽ tối ưu hơn dùng 1 Filter 5×5 (25 tham số).

2D convolution

Là 1 tensor 2 chiều bởi sự kết hợp từ việc các phép Convolution trên từng kênh màu một.

 Stride

Đối với phép convolution hay pooling thì stride (S) là độ dài bước trượt của filter

 Padding

Khi dùng convolution, thông tin ở biên bức ảnh bị biến mất và kích thước của ảnh giảm nhanh chóng, để khắc phục vấn đề này, chúng ta sử dụng padding. Bằng việc thêm các giá trị 0 vào biên, ta sẽ có zero padding. Sau khi thêm pPadding chúng ta có một số lợi thế như sau:

+ Không mất mát thông tin viền nên nhận diện sẽ tốt hơn, tìm được chính xác đối tượng hơn.

+ Đầu ra của CNN kích thước sẽ giảm dần nên khi thêm padding sẽ giúp giảm chậm hơn.

 Feature detector

Convolution giúp phát hiện các đặc trưng và được xem như là feature detector:

Hình 2.13 Minh họa phát hiện đặc trưng feature detector

b. Lớp Activation

Trong cấu trúc CNN, tầng activation thường theo sau tầng convolution. Hàm activation phổ biến được dùng là ReLU. Một số biến thể khác của ReLU như trong bảng sau:

Hình 2.14 Hàm ReLU

c. Lớp Pooling

Có 2 loại pPooling thường được sử dụng trong CNN  Max Pooling:

Thực hiện lấy giá trị lớn nhất trong kích thước Filter mà ta xét.’

Hình 2.15 Max Pooling

 Average Pooling

Hình 2.16 Average Pooling

Tầng pooling giúp giảm chiều feature map. Tầng pooling được sử dụng sau tầng convolution và tầng activation.

d. Lớp Fully connected

Tầng fully connected bản chất chính là multi-layer perceptron,Tensor trước khi đưa vào tầng fully connected được thực hiện bước flattening để chuyển đổi tensor 3D thành tensor 1D.

Kết quả sau khi flattening trở thành đầu vào của tầng fully connected, và từ đó dự đoán kết quả.

Hình 2.18 Hình minh kết quả sau tầng Fully connected

1

Chương 3:

CHƯƠNG TRÌNH THỬ NGHIỆM

3.1 Phân tích yêu cầu bài toán

Hình 3.1 Trường phổ thông dân tộc nội trú tỉnh Quảng Ninh

Để giải quyết bài toán phát hiện giới tính học sinh ở khu ký túc xác của trường nội trú, hệ thống sẽ phát hiện thông qua nhận diện và phân biệt giới tính qua hình ảnh thu được từ camera giám sát hành lang ở các khu vực này.

Hệ thống gồm các bước:

+ Cài đặt môi trường (IDE Python; Lib NumPy, Matplotlib, Scikit- Learn, Opencv, Tensorflow);

+ Chuẩn bị cơ sở dữ liệu huấn luyện và tạo tập huấn luyện; + Thiết lập mạng CNN;

+ Chạy chương trình xác định kiểu trong tập đã huấn luyện; + Trả kết quả qua thông báo.

3.2 Phân tích lựa chọn công cụ

Để cài đặt hệ thống này chúng tôi lựa chọn ngôn ngữ Python, thư viện Tensorflow, thư viện Skearn (scikit-learn), thư viện Matplotlib, thư viện Numpy, thư viện Opencv.

3.2.1 Ngôn ngữ Python

Python là một ngôn ngữ lập trình bậc cao cho các mục đích lập trình đa năng, do Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991 gồm các đặc điểm:

+ Ngữ pháp đơn giản, dễ đọc;

+ Vừa hướng thủ tục, vừa hướng đối tượng. + Hỗ trợ module và hỗ trợ gói (package); + Xử lý lỗi bằng ngoại lệ (Exception); + Kiểu dữ liệu động ở mức cao;

+ Có các bộ thư viện chuẩn và các module ngoài, đáp ứng tất cả các nhu cầu lập trình;

+ Có khả năng tương tác với các module khác viết trên C/C++ (Hoặc Java cho Jython, hoặc .Net cho IronPython);

+ Có thể nhúng vào ứng dụng như một giao tiếp kịch bản (scripting interface);

+ Python dễ dàng kết nối với các thành phần khác:

Python có thể kết nối với các đối tượng COM, .NET (Ironpython, Python for. net), và CORBA, Java… Python cũng được hỗ trợ bởi Internet

Có thể viết các thư viện trên C/C++ để nhúng vào Python và ngược lại. + Python là ngôn ngữ có khả năng chạy trên nhiều nền tảng.

Python có cho mọi hệ điều hành: Windows, Linux/Unix, OS/2, Mac, Amiga, và những hệ điều hành khác. Thậm chí có cả những phiên bản chạy trên .NET, máy ảo Java, và điện thoại di động (Nokia Series 60). Với cùng một mã nguồn sẽ chạy giống nhau trên mọi nền tảng.

+ Python rất đơn giản và dễ học

Python có cộng đồng lập trình rất lớn, hệ thống thư viện chuẩn, và cả các thư viện mã nguồn mở được chia sẻ trên mạng.

+ Python là ngôn ngữ mã nguồn mở.

Cài đặt Python dùng giấy phép nguồn mở nên được sử dụng và phân tối tự do, ngay cả trong việc thương mại. Giấy phép Python được quản lý bởi Python Software Foundation.

3.2.2 Thư viện Tensorflow

Tensorflow là một thư viện mã nguồn mở cung cấp khả năng xử lí tính toán số học dựa trên biểu đồ mô tả sự thay đổi của dữ liệu, trong đó các node là các phép tính toán học còn các cạnh biểu thị luồng dữ liệu. Trong tesorflow có một vài khái niệm cơ bản sau.

Tensor là cấu trúc dữ liệu trong tensorflow đại diện cho tất cả các loại dữ liệu. Nói cách khác, tất cả các kiểu dữ liệu khi đưa vào trong tensorflow thì đều được gọi là Tensor. Vậy nên có thể hiểu được Tensorflow là một thư viện mô tả, điều chỉnh dòng chảy của các Tensor. Tensor có 3 thuộc tính cơ bản là rank, shape và type.

Rank là số bậc của tensor. Ví dụ Tensor = [1] thì có rank = 1, Tensor = [[3,4], [5,6]] thì sẽ có rank = 2. Việc phân rank này khá quan trọng vì nó đồng thời cũng giúp phân loại dữ liệu của Tensor. Khi các rank đặc biệt cụ thể, Tensor có những tên gọi riêng như sau:

+ Scalar: Khi Tensor có rank bằng 0 + Vector: Vector là một Tensor rank 1

+ Matrix: Đây là một Tensor rank 2 hay mảng hai chiều theo khái niệm của Python

+ N-Tensor: Khi rank của Tensor tăng lên lớn hơn 2, chúng được gọi chung là N-Tensor.

Shape là chiều của tensor. Vi dụ Tensor = [[[1,1,1], [178,62,74]]] sẽ có Shape = (1,2,3), Tensor = [[1,1,1], [178,62,74]] sẽ có Shape = (2,3).

Type kiểu dữ liệu của các elements trong Tensor. Vì một Tensor chỉ có duy nhất một thuộc tính Type nên từ đó cũng suy ra là chỉ có duy nhất một kiểu Type duy nhất cho toàn bộ các elements có trong Tensor hiện tại.

3.2.3 Thư viện Skearn

Scikit-learn (viết tắt là sklearn) là một thư viện mã nguồn mở trong ngành học máy, rất mạnh mẽ và thông dụng với cộng đồng Python, được thiết kế trên nền NumPy và SciPy. Scikit-learn chứa hầu hết các thuật toán học máy hiện đại nhất, đi kèm với đầy đủ bộ tài liệu. Điểm mạnh của thư viện này là nó được sử dụng phổ biến trong cộng đồng những người lập trình chuyên nghiệp, do đó nó luôn được cập nhật và có một cộng đồng đông đảo người sử dụng hỗ trợ.

3.3 Quá trình phát triển và xây dựng chương trình

3.3.1 Chương trình huấn luyện

Chương trình sử dụng bộ 1173 ảnh khuôn mặt là nam giới và 1134 ảnh khuôn mặt là nữ giới (nguồn internet: https://github.com), dùng làm cơ sở dữ liệu ảnh huấn luyện cho mạng CNN.

Bước 1: Thiết lập thông số cho chương trình huấn luyện: Epochs = 100;

Batch_size = 64;

Bước 2: Tải ảnh thiết lập cơ sở dữ liệu dùng huấn luyện;

Bước 3: Tiền xử lý dữ liệu để cắt khuôn mặt từ ảnh gốc;

Bước 4: Thực hiện các bước trong thuật toán CNN :

Input image  Convolutional layer (Conv) + Pooling layer (Pool)  Fully connected layer (FC)  Build model

Bước 5: In biểu đổ mô phỏng kết quả huấn luyện.

Trong đó:

- Epoch: là số lần “duyệt” qua hết số lượng mẫu trong tập huấn luyện; - Loss/Accuracy: Độ sai/ Độ chính xác;

- Train_loss: Biểu thị độ sai trong quá trình huấn luyện;

- Train_Acc: Biểu thị độ chính xác trong quá trình huấn luyện; - Val_loss (Validation loss): Tập độ sai

- Val_acc (Validation accuracy): Tập độ chính xác xác thực

Sau khi chạy chương trình huấn luyện với Epoch = 100 ta được kết quả như sau:

- Loss: 4.5216e-05 - Accuracy: 1.0000 - Val_loss: 0.000086412 - Val_accuracy: 1.0000

Đây là một kết quả rất tốt với giá trị accuracy đạt ngưỡng 1.0000 và giá trị loss rất nhỏ chỉ 0.000086412.

3.3.2 Chương trình phát hiện giới tính

Kịch bản chạy thử nghiệm:

Số lượng học sinh thử nghiệm là 305 học sinh, Camera được đặt tại hành lang với góc nhìn thẳng với người di chuyển, có độ phân giải 720p, số lượng khung hình là 30fps, tốc độ di chuyển của học sinh là trung bình và chậm, đảm bảo cho camera có thể bắt được đầy đủ khung hình.

Bước 3: - Lặp lại quá trình phát hiện khuôn mặt trong các frame ảnh;

- Cắt hình ảnh khuôn mặt làm dữ liệu so sánh với 2 lớp đã được xây đựng trong quá trình huấn luyện

Bước 4: - Gán nhãn cho các khuôn mặt (Nam hoặc nữ) cùng tỉ lệ phát hiện.

3.3.3 Kết quả sau khi chạy dữ liệu thử nghiệm.

Hình 3.3 Bảng số liệu kết quả thử nghiệm

Khối Số lượng Nhận đúng Nhận sai Số lượng % Nam --> Nữ Nữ -->Nam Số lượng % Khối 10 105 98 93,33% 2 5 7 6,67% Khối 11 102 97 95,10% 1 4 5 4,90% Khối 12 98 97 98,98% 0 1 1 1,02% Tổng 305 292 95,74% 3 10 13 4,26%

Như vậy với bộ dữ liệu chạy thử nghiệm là phát hiện giới tính của 305 học sinh Trường phổ thông dân tộc nội trú tỉnh Quảng Ninh trong điều kiện đủ ánh sáng, kết quả phát hiện đúng giới tính là khá cao, với khối lớp 10 tỉ lệ phát hiện đúng giới tính là 93,33%; khối lớp 11 là 95,10%; khối lớp 12 đạt 98,98%; tỉ lệ chung toàn trường đạt 95,74% là một tỉ lệ tốt. Các trường hợp phát hiện sai thường do góc nhìn nghiêng hoặc dữ liệu chưa đủ và số lượng giới tính nữ bị phát hiện nhầm thành giới tính nam thì nhiều hơn so với giới tính nam phát hiện nhầm thành giới tính nữ.

PHẦN KẾT LUẬN

Sau khi tìm hiểu về công tác quản lý học sinh tại các khu ký túc xá của các Trường phổ thông dân tộc nội trú tỉnh Quảng Ninh cho thấy rằng công tác quản lý học sinh tạị khu ký túc xá của trường là một trong những công tác quản lý phức tạp, phải dành nhiều thời gian, nhân lực và hiệu quả trong công tác này còn thấp, nếu thực hiện việc ứng ụng công nghệ thông tin trong công tác quản lý tại đây sẽ giúp giảm thiểu thời gian và nhân lực, nâng cao chất lượng công tác quản lý.

Bài toán phát hiện giới tính từ hình ảnh mặt người là một bài toán còn có nhiều thách thức, ngoài yếu tố về thuật toán thì đặc biệt là trong điều kiện ảnh mặt bị tác động bởi các yếu tố như ánh sáng, thời gian, hướng cũng sẽ làm sai lệch kết quả nhận diện. Trong luận văn này, tôi cũng đã tìm hiểu, phân tích bài toán phát hiện giới tính thông qua các đặc điểm trên khuôn mặt thông qua 2 kỹ thuật LPQ và CNN, một hệ thống phát hiện mặt tự động đã được đề xuất, xây dựng và đánh giá hiệu năng cơ bản.

Hệ thống đề xuất sử dụng các thuật toán CNN (Convolutional neural network) được huấn luyện từ bộ 1173 ảnh khuôn mặt là giới tính nam và 1134 ảnh khuôn mặt là giới tính nữ, chương trình sẽ sử dụng thuật toán trích rút đặc điểm của 1173 ảnh khuôn mặt giới tính nam và 1134 ảnh khuôn mặt giới tính nữ để khởi tạo mô hình và phân loại mô hình huấn luyện cho máy sau đó lưu vào hệ thống, sau đó chương trình phát hiện giới tính từ hình ảnh khuôn mặt sẽ phát hiện các hình ảnh khuôn mặt được trích xuất từ camera đối chiếu với các đặc điểm được hệ thống trích rút từ tập mô hình đã được huấn luyện sau đó căn cứ vào tỉ lệ đối sánh trong mô hình rút ra kết luận hình ảnh thu nhận là giới tính nam hay giới tính nữ và hiển thị các thông báo phản hồi trên hình ảnh camera.

Qua kết quả cho thấy trong điều kiện đủ ánh sáng, các góc nhìn thẳng, khuôn mặt không bị che khuất kết quả phát hiện đúng đạt tỷ lệ cao (95,74%), đặc biệt hệ thống phát hiện cho kết quả chính xác có tỉ lệ thấp hơn đối với các bạn lớp 10 nhưng tăng độ chính xác đối với các học sinh lớp 11 và 12.

Chương trình thử nghiệm mới đưa ra được phát hiện giới tính trong các điều kiện tiêu chuẩn và còn nhiều hạn chế như chưa kết nối với các thiết bị có thể ghi nhận và cảnh báo cho người quản lý, ở các điều kiện thiếu sáng hoặc bị che khuất thì tỷ lệ phát hiện đúng còn thấp, Vì vậy, theo quan điểm của học viên, đề tài còn có một số hướng phát triển sau:

+ Tăng khả năng phát hiện chính xác trong các điều kiện khác nhau + Kết nối các thiết bị để ghi nhận, cảnh báo cho người quản lý;

+ Thiết kế các biểu mẫu thống kê báo cáo phù hợp với yêu cầu thực tế. Do giới hạn về thời gian nghiên cứu và kiến thức của bản thân, luận văn khó có thể tránh khỏi một số sai sót nhất định. Học viên rất mong nhận được sự đóng góp ý kiến của các thầy cô, các bạn đọc quan tâm để luận văn được

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu phát hiện giới tính qua hình ảnh ứng dụng cho công tác quản lý học sinh nội trú của trường phổ thông dân tộc nội trú tỉnh quảng ninh​ (Trang 44)