.20 Cách tính tham số của lớp pooling

Một phần của tài liệu (LUẬN văn THẠC sĩ) nhận dạng hành động người dùng mạng nơron tích chập (Trang 35)

Hình 2.20 là ví dụ về sử dụng tốn tử pooling. Trong đó hình (b) là cách thức tầng pooling xử lý đối với một đầu vào là kết quả của nhiều filter (k=64), kích thước của đầu vào là [224*224*64] được thực hiện với các thơng số F=2 và S= 2 thì đầu ra có kích thước [112*112*64]. Hình (a) mơ tả chi tiết cách thức hoạt động của max- pooling trong đó F=2 và S=2.

2.2.4 Lớp biến đổi tuyến tính (Rectified Linear Unit)

Về cơ bản, covolution là một phép biển đổi tuyến tính. Nếu tất cả các neural được tổng hợp bởi các phép biến đổi tuyến tính thì một mạng neural đều có thể đưa về dưới dạng một hàm tuyến tính. Khi đó mạng ANN sẽ đưa các bài tốn về logistic regression. Do đó tại mỗi neural cần có một hàm truyền dưới dạng phi tuyến.

Có nhiều dạng hàm phi tuyến được sử dụng trong quá trình này như đã giới thiệu trong phần neural căn bản (mục 2.1.1. Giới thiệu về mạng Nơ-ron). Tuy nhiên, các nghiên cứu gần đây chứng minh được việc sử dụng hàm ReLu (Rectified Linear Unit) cho kết quả tốt hơn ở các khía cạnh:

 Tính tốn đơn giản

 Tạo ra tính thưa (sparsity) ở các neural ẩn. Ví dụ như sau bước khởi tạo ngẫu nhiên các trọng số, khoảng 50% các neural ẩn được kích hoạt (có giá trị lớn hơn 0).

 Quá trình huấn luyện nhanh hơn ngay cả khi không phải trải qua bước tiền huấn luyện.

𝑎(𝑓) = max (0, 𝑓) 0 f a(f) Hình 2.21 Hàm truyền Relu 2.2.5 Fully-connected

Fully-connected là cách kết nối các neural ở hai tầng với nhau trong đó tầng sau kết nối đẩy đủ với các neural ở tầng trước nó. Đây cũng là dạng kết nối thường thấy ở ANN, trong CNN tầng này thường được sử dụng ở các tầng phí cuối của kiến trúc mạng. (Xem lại 2.1 – Mạng Nơ-ron).

CHƯƠNG 3: XÂY DỰNG BỘ PHÂN LOẠI HÀNH ĐỘNG NGƯỜI SỬ DỤNG MẠNG NƠ-RON TÍCH CHẬP NGƯỜI SỬ DỤNG MẠNG NƠ-RON TÍCH CHẬP 3.1 Bài toán phân loại sử dụng Machine learning và Deep learning

Một bộ phân loại sử dụng phương pháp Machine learning tryền thống (ML – Học máy) có 2 giai đoạn:

 Giai đoạn huấn luyện: Trong giai đoạn này, chúng ta đào tạo một thuật toán học máy bằng cách sử dụng một bộ dữ liệu bao gồm các hình ảnh và các nhãn tương ứng.

 Giai đoạn dự đoán: Chúng ta sẽ sử dụng mơ hình đã được huấn luyện để dự đốn nhãn của một hình ảnh chưa biết.

Trong giai đoạn huấn luyện bộ phân loại hình ảnh ta lại chia làm 2 bước chính: 1. Trích đặc trưng (Feature Extraction): Ở bước này, chúng ta sử dụng kiến thức

trong lĩnh vực máy học để trích xuất các đặc trưng của ảnh. HOG (Histogram of oriented gradients) và SIFT (scale-invariant feature transform) là các ví dụ điển hình thường được sử dụng.

2. Đào tạo mẫu (Model Training): Tại đây, chúng ta sử dụng một bộ dữ liệu “sạch” bao gồm các đặc trưng của hình ảnh và các nhãn tương ứng để huấn luyện mơ hình học máy.

Trong giai đoạn dự đoán, chúng ta áp dụng cùng một q trình trích đặc trưng cho các hình ảnh mới và thơng qua các đặc trưng đã được huấn luyện trong bước trích đặc trưng để dự đốn nhãn của ảnh đầu vào.

Hình 3.1 Hai giai đoạn Machine learning

Sự khác biệt chính giữa việc học máy truyền thống và các thuật toán học sâu là trong kỹ thuật trích xuất đặc trưng. Trong các thuật toán học máy truyền thống, chúng ta cần phải trích đặc trưng một cách “thủ công”. Ngược lại, trong các thuật tốn học sâu kỹ thuật trích đặc trưng được thực hiện tự động theo thuật tốn. Việc trích xuất các đặc trưng là rất khó, tốn nhiều thời gian và địi hỏi chun mơn cao, chính vè thế học sâu hứa hẹn sẽ là các thuật tốn học máy chính xác hơn so với học máy truyền thống với ít hoặc khơng có kỹ thuật trích đặc trưng.

Hình 3.2 Machine learning và Deep learning

Một số kiến trúc mạng Deep learning được đề cập gần đây góp phần quan trọng trong sự phát triển ngành công nghệ thị giác máy tính và mạng tích chập:

 AlexNet (2012)

 VGG Net (2014)

 GoogLeNet (2015)

 Microsoft ResNet (2015)

 Region Based CNNs (R-CNN - 2013, Fast R-CNN - 2015, Faster R-CNN - 2015)

 Generative Adversarial Networks (2014)

 Generating Image Descriptions (2014)

 Spatial Transformer Networks (2015)

Cùng với sự phát triển của các thuật tốn Deep Learning thì các thư viện cũng như framework hỗ trợ các thuật toán này cũng ngày càng tăng về số lượng. Hầu hết các thư viện và framework này đều cung cấp dưới dạng mã nguồn mở do đó rất linh hoạt trong việc sử dụng và mở rộng, đây cũng là một trong những lý do Deep Learning được áp dụng trong nhiều bài toán với nhiều lĩnh vực khác nhau. Một số thư viện phổ biến đang được cộng đồng nghiên cứu sử dụng như:

 Caffe framework

 Torch

 TensorFlow

 Theano

3.2 Kiến trúc mạng CNN 10 lớp sử dụng trong nhận dạng hành động người

Hiện nay dữ liệu video dễ dàng được tạo ra bởi các thiết bị như: Máy quay phim, máy ảnh kỹ thuật số, máy tính xách tay, điện thoại di động, các camera quan sát, … bên cạnh đó trên các trang mạng mức độ chia sẻ, tải lên của các video cũng tăng trưởng khơng ngừng. Bài tốn nhận diện hành động người đóng góp một phần tự động hóa khai thác tài ngun dữ liệu nhiều thơng tin này. Các ứng dụng liên quan đến bài toán nhận diện hành động người như giám sát an ninh nhằm phát hiện ra các hành vi nghi ngờ hoặc các hệ thống giám sát truyền thống, giám sát chăm sóc sức khỏe nhằm

phát hiện hành vi bất thường của bệnh nhân như té ngã, đột quỵ. Nhiệm vụ của tác giả đặt ra chính là tìm ra giải pháp có thể thay thế hoặc hỗ trợ người giám sát đảm bảo vấn đề hiệu quả và tính chính xác.

3.2.1 Dữ liệu huấn luyện

Dữ liệu tác giả sử dụng bao gồm 3.418 ảnh màu với kích thước 227x227, được phân thành 4 mục tương ứng: ‘Bowing’, ‘Walking’, ‘Waving’ và ‘Nothing’. Và do giới hạn về phần cứng nên trong đề tài này tác giả chỉ thực hiện nhận dạng trên bốn hành động cơ bản của người. Các hành động khác chúng ta cũng có thể thu thập và đưa vào huấn luyện mạng như các hành động trên đồng nghiã với việc thời gian xử lý sẽ lâu hơn và yêu cầu phần cứng cao hơn.

Hình 3.3 Dữ liệu hành động người (MyData)

Hình ảnh được trích tự động từ những đoạn video nhỏ tác giả tự quay trên một camera cố định trong một phòng nhỏ, khoảng cách từ 2 đến 3 mét (Bỏ qua ảnh hưởng của điều kiện chiếu sang, ảnh hưởng của những background phức tap,…). Ảnh sau đó sẽ được hiệu chỉnh lại kích thước 227x227. Mục tiêu của việc hiệu chỉnh nhằm phù hợp với kiến trúc mạng CNN 10 lớp của tác giả (xem mục 3.2.3 – Mơ hình huấn luyện) và tiết kiệm thời gian trong quá trình huấn luyện.

1 Bowing 660

2 Walking 1146

3 Waving 1400

4 Nothing 212

Bảng 3.1 Số lượng hình ảnh sử dụng trong huấn luyện

3.2.2 Thiết lập cấu hình phần cứng

Có nhiều lựa chọn để training mạng CNN như: dùng CPU, GPU, TPU hoặc là dùng distributed system. GPU thì thích hợp với nghiên cứu cá nhân hoặc nhóm nhỏ vì nó nhỏ gọn dễ setup, còn disitributed system thường được dùng trong các công ty lớn. Nếu khơng có GPU chúng ta vẫn có thể chạy trên CPU nhưng phải rất kiên nhẫn vì nó khơng mạnh trong việc xử lý đồ họa.

Trong mơ hình huấn luyện mạng CNN nhận dạng hành động người lần này tác giả đã sử dụng GPU để huấn luyện trên Card rời GeForce GTX 750 Ti.

Hình 3.5 Cấu hình máy tính sử dụng

3.2.3 Mơ hình huấn luyện

227 227 3 11 11 3 55 55 32 3 3 27 27 32 5 5 32 19 19 64 3 3 9 9 64 . .. . .. Walking Bowing Waving Nothing Input Conv1 + ReLU1 Pool1 Conv2 +

ReLU1 Pool2 Flatten FC Softmax

Hình 3.7 Đặc trưng ngõ ra tại mỗi lớp

Một kiến trúc mạng 10 lớp được tác giả xây dựng như sau:

 Lớp 1 (imageinput): Ảnh đầu vào với kích thước 227x227x3

 Lớp 2 (conv1): Tích chập lần 1: Name ‘conv1’ FilterSize [11,11] NumChannels 3 NumFilters 32 Stride [4,4] Padding [0,0]

Weights Auto ‘4-D double’ Bias Auto ‘1x1x32 double’

Hình 3.8 Trọng số bộ lọc trong lớp conv1

 Lớp 3 (relu1): Biến đổi tuyến tính lần 1

 Lớp 4 (poo1): Max Pooling lần 1 Name ‘poo1’ PoolSize [3,3] Stride [2,2] Padding [0,0]  Lớp 5 (conv2): Tích chập lần 2 Name ‘conv2’ FilterSize [5,5] NumChannels 32 NumFilters 64 Stride [1,1] Padding [2,2]

Weights Auto ‘4-D double’ Bias Auto ‘1x1x64 double’

 Lớp 6 (relu2): Biến đổi tuyến tính lần 2

Name ‘poo2’ PoolSize [3,3] Stride [2,2] Padding [0,0]

 Lớp 8 (fc1): Fully connected Layers

Name ‘fc1’

InputSize ‘auto’ OutputSize 4

 Lớp 9: Softmax

 Lớp 10: Classification Output Layer: Phân loại 4 trạng thái ngõ ra ‘Walking’, ‘Bowing’, ‘Waving’ và ‘Nothing’

3.2.4 Quá trình huấn luyện

Sau khi đã xác định mơ hình, dữ liệu huấn luyện và thiết lập cấu hình máy, ta bắt đầu quá trình huấn luyện.

Image Datastore Training Data (70%) Test Data (30%) ConvNet Model Classification Predictions Compute Accuracy Out-of-Sample error estimate (a)

Bước 1: Đầu tiên là tải bộ dữ liệu huấn luyện. Sau đó hàm ImageDatastore sẽ tự động gán nhãn các tập hình ảnh này dựa trên các tên Folder và lưu lại như một đối tượng ImageDatastore.

categories = {'Bowing','Walking','Waving','Nothing'};

imds = imageDatastore(fullfile('myimage','imagetrain', categories), 'LabelSource', 'foldernames');

Bước 2: Ta chia dữ liệu thành các tập huấn luyện (70%) và các tập kiểm tra (30%). Lưu ý: cần thêm một bước hiệu chỉnh lại kích thước ảnh thành 227x227x3 nếu như tập dữ liệu trước đó chưa được hiệu chỉnh.

[trainingSet, testSet] = splitEachLabel(imds, 0.3, 'randomize');

Bước 3: Xác định kiến trúc mạng CNN sử dụng. Ở đây tác giả dùng kiến trúc mạng CNN-10 lớp (xem mục 3.3.3 – Mơ hình huấn luyện).

Bước 4: Thiết lập các tùy chọn sử dụng trong huấn luyện: sgdm (stochastic gradient descent with momentum) với tối đa chu kỳ huấn luyện là 20 (maximum epoch), và bắt đầu quá trình huấn luyện với tốc độ học ban đầu là 0.0001.

options = trainingOptions('sgdm','MaxEpochs',20, ... 'InitialLearnRate',0.0001); Bước 5: Huấn luyện mạng CNN-10 lớp với tùy chọn ở các bước trên

convnet = trainNetwork(trainingSet,layers,options);

Bước 6: Phân loại các ảnh trong dữ liệu kiểm tra và tính tốn độ chính xác. YTest = classify(convnet,testSet);

TTest = testSet.Labels;

accuracy = sum(YTest == TTest)/numel(TTest)

Độ chính xác là tỷ số của số lượng các nhãn đúng trong dữ liệu kiểm tra khớp với nhãn từ việc phân loại với số lượng hình ảnh trong dữ liệu thử nghiệm.

3.2.5 Kết quả

Sau đây là kết quả tác giả thu được sau 20 lần tính tốn độ chính xác tương ứng với 20 chu kì huấn luyện (epoch). Với kiến trúc mạng CNN-10 lớp và được huấn luyện

trên chính tập dữ liệu của tác giả thì độ chính xác đạt được lên tới 99,79% trên dữ liệu kiểm tra. Với tổng thời gian huấn luyện mạng xấp xỉ 4 giờ.

Hình 3.10 Độ chính xác sau 20 epoch (MyNet_MyData)

Để đánh giá tính hiệu quả của mạng CNN-10 lớp được chính xác hơn chúng ta sẽ thực hiện việc training trên một tập dữ liệu chuẩn. Ở đây tác giả chọn tập dữ liệu Cifar-10.

Cifar-10 là một tập dữ liệu được sử dụng trong nhận dạng đối tượng được thu thập bởi Alex Krizhevsky, Vinod Nair và Geoffrey Hinton. Nó là tập con của bộ dữ liệu 80 triệu ảnh kích thước nhỏ, bao gồm 60,000 ảnh màu 32x32 được chia làm 10 lớp với 6,000 ảnh cho mỗi lớp. Cifar 10 sẽ được chia thành 5 cụm training khác nhau, mỗi cụm 10,000 ảnh. Chúng ta có thể sử dụng 5 cụm để hoàn thành việc huấn luyện bao gồm 50,000 ảnh và cụm cuối cùng là 10,000 ảnh được chọn random giữa 10 nhóm ảnh dùng để kiểm tra kết quả. Hình 3.11 bên dưới biểu diễn các lớp trong tập dữ liệu Cifar- 10, cũng như 10 hình ảnh ngẫu nhiên từ mỗi lớp:

0 20 40 60 80 100 120 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Accu racy (% ) Epoch TrainData TestData

Hình 3.11 Cifar-10 Dataset

Quá trình huấn luyện 20 epoch xấp xỉ 5 giờ đồng hồ và kết quả thực hiện trên

trên tập Cifar-10 độ chính xác thu được là 66,82% thấp hơn nhiều so với kết quả khi

tác giả thực hiện trên chính tập dữ liệu của tác giả.

0 10 20 30 40 50 60 70 80 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Hình 3.13 Confusion matrix (MyNet-Cifar10)

Độ chính xác của mơ hình được hiển thị rõ ràng hơn trên bảng ma trận nhầm lẫn (confusion matrix). Các cột trong ma trận biểu thị cho các nhãn đã được dự đoán trong khi các hàng sẽ đại diện cho các nhãn đã biết trước.

Từ những kết quả trên chúng ta thấy được tập dữ liệu huấn luyện ảnh hưởng rất nhiều đến độ chính xác của một kiến trúc mạng. Vậy câu hỏi tiếp tục đặt ra là nếu cùng một tập dữ liệu chuẩn thì độ chính xác kiến trúc mạng CNN-10 lớp so với các kiến trúc hoặc phương pháp huấn luyện khác sẽ như thế nào? Để trả lời câu hỏi này chúng ta tiếp tục xây dựng một bộ phân loại đơn giản sử dụng phương pháp trích đặc trưng HOG (Histogram of Oriented Gradient) kết hợp SVM (Support Vector Machine) đa lớp thực hiện trên tập dữ liệu chuẩn Cifar-10.

(Tham khảo: http://www.learnopencv.com/histogram-of-oriented-gradients/) Dữ liệu được sử dụng để huấn luyện phân loại là các vector đặc trưng HOG được trích ra từ các hình ảnh huấn luyện. Do đó, điều quan trọng là phải đảm bảo vector đặc trưng HOG mã hóa đúng số lượng thơng tin về đối tượng. Đối với dữ liệu ảnh kích thước 32x32 trong tập Cifar-10 tác giả chọn kích thước tế bào (CellSize) là

trực quan thông tin của ảnh và hạn chế số lượng kích thước trong vector tính năng HOG, giúp cải thiện tốc độ huấn luyện của mạng. Hàm extractHOGFeatures trả về các đặc trưng HOG được trích xung quanh vị trí đã chọn.

[hog_4x4, vis4x4] = extractHOGFeatures(img,'CellSize',[4 4]);

Hình 3.14 Ngõ ra sau khi trích đặc trưng HOG

Kết quả thu được với độ chính xác là 42,47% trên tập dữ liệu kiểm tra, thấp hơn so với kiến trúc mạng CNN-10 lớp 66.82%.

Biểu đồ sau đây biểu diễn độ chính xác của một số kiến trúc mạng cùng thực hiện trên một tập dữ liệu chuẩn Cifar-10:

Hình 3.16 HOG và CNNs trên Cifar-10

0.00% 20.00% 40.00% 60.00% 80.00% 100.00%

HOG MyNet AlexNet VGGNet ResNet

42.47% 66.82% 82% 89% 83% Acc u racy

3.2.6 Giao diện chương trình

Hình 3.17 Giao diện chương trình chính

Trong giao diện chương trình Test. Ta sử dụng nút ‘Get Mat File’ để tải file.mat vào chương trình. ‘File.mat’ bao gồm các tập dữ liệu đã được tác giả huấn luyện sẵn và được đóng gói lại thành một Mat file. Có 3 trong số file.mat đã được tác giả train sẵn như:

 MyData_MyNet.mat: Nhận dạng hành động người.

 DigitData_MyNet.mat: Nhận dạng ký tự số viết tay.

 MyData_AlexNet.mat: Nhận dạng hành động người và môi trường xung quanh. Nút ‘Get Image to Test’ dùng để tải bất kỳ một hình ảnh sau đó chương trình sẽ tự động nhận dạng và gán nhãn cho hình ảnh đó.

Chúng ta cũng có hai lựa chọn cho dữ liệu Test là video được thu trực tiếp từ camera của máy tính hoặc từ một Ip Camare bất kỳ có kết nối mạng. Kết quả nhận dạng sẽ được hiển thị trong ô Textbox.

Hình 3.18 Giao diện chương trình Test

CHƯƠNG 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 4.1 Kết luận 4.1 Kết luận

Trong khóa luạn này, với mục tiêu chính là xây dựng mơ hình trong đó ứng dụng một thuật toán của học sâu (deep learning - CNN), Demo nhận dạng với phương pháp sử dạng mạng Nơ-ron tích chập có khả năng phát hiện đúng hành động của con người trong video hoặc dữ liệu trên hệ thống camera số. Khóa luận đã đạt được các kết quả như sau:

 Nắm được các vấn đề cơ bản của ảnh số và xử lý ảnh số.

 Nắm được các đặc điểm của một bài tốn phân loại nói chung và nhận dạng hành động người nói riêng.

 Tìm hiểu, nắm được một số kiến trúc mạng CNN, một trong những thuật toán

Một phần của tài liệu (LUẬN văn THẠC sĩ) nhận dạng hành động người dùng mạng nơron tích chập (Trang 35)

Tải bản đầy đủ (PDF)

(62 trang)