Xây dựng mô hình

Một phần của tài liệu (Tiểu luận) đề tài nhận diện và phân biệt các loại phương tiện đểxếp xe vào bãi đỗ bệnh viện đại học y hà nội (Trang 25 - 30)

III. Mã lệnh chương trình

7. Xây dựng mô hình

Mô hình gồm 5 lớp: Input image → CNN1 → CNN2 → Fully connected layer → Output.

Convolutional Neural Network (CNNs – mạng nơron tích chập) là một trong những mô hình Deep Learning tiên tiến. 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 như hiện nay. CNN được sử dụng nhiều trong các lĩnh vực nhận dạng các vật thể trong ảnh và phân loại hình ảnh.

Kỹ thuật sử dụng cho bài toán là Convolution (tích chập): từng giá trị của ma trận đầu

vào nhân tương ứng với ma trận kernel (bộ lọc) rồi cộng tổng lại, đưa qua activation function (hàm kích hoạt) và cho ra kết quả là một con số cụ thể, tập hợp các con số này lại là một ma trận, chính là feature map (đầu ra của ảnh).

- Tầng CNN1

Conv2D: sử dụng tích chập 2D vì đầu vào là một ma trận 2 chiều.

Conv2D (32, (3,3)): là convolution dùng để lấy feature (đặc điểm) từ ảnh với các tham số:

+ F=32: số kernel (bộ lọc) của convolution là 32. Với mỗi kernel (bộ lọc) khác nhau sẽ học được những feature (đặc điểm) khác nhau của ảnh, do đó tầng CNN1 sử dụng 32 bộ lọc để học được nhiều đặc trưng của ảnh (ví dụ biên ngang, biên dọc…). Vì mỗi bộ lọc cho ra đầu ra là 1 ma trận nên “k” bộ lọc sẽ

cho ra “k” ma trận đầu ra. Ta sẽ kết hợp (tính tổng) “k” ma trận đầu ra này lại thành 1 ma trận đầu ra duy nhất.

+ k=3: kích thước ma trận kernel (bộ lọc) là 3x3. Các trọng số của các bộ lọc này được khởi tạo ngẫu nhiên trong lần đầu tiên, trong quá trình huấn luyện mạng (training), CNN sẽ tự động học và tìm ra trọng số tối ưu cho ma trận kernel.

+ s=1: bước trượt giữa 2 kernel khi quét là 1 (bộ lọc dịch sang phải/ xuống dưới 1 cột/hàng mỗi một lần trượt) cho đến khi nó đi qua hết tất cả các vùng kích thước 3×3.

Ở đây, không nói rõ padding bằng bao nhiêu nhưng quan sát ảnh đầu vào và các ảnh đầu ra sau khi lọc có kích thước bằng nhau (200x200) thì suy ra là padding = “SAME”.

+ activation='relu': hàm kích hoạt ReLU: f(x) = max(0,x).

Hàm kích hoạt ReLU (Rectified Linear Unit) đơn giản là lọc các giá trị nhỏ hơn 0. Tức là khi ma trận kernel quét qua ma trận đầu vào, nhân tương ứng từng giá trị của ma trận đầu vào với ma trận kernel rồi cộng tổng lại, đưa kết quả qua hàm kích hoạt ReLU ta thu được một giá trị của feature map. Nếu kết quả âm thì giá trị thu được là 0, nếu kết quả dương thì giá trị thu được lấy chính kết quả đó. Tập hợp các giá trị thu được chính là feature map.

+ input_shape = (50,50,3): tầng CNN 1 kết nối với đầu vào nên phải mô tả rõ thông tin của đầu vào:

Các ảnh huấn luyện có kích thước 50x50 pixel thì tương ứng đầu vào là một ma trận 50x50 và giá trị mỗi điểm ảnh là một ô trong ma trận.

Vì là ảnh màu nên chúng ta sẽ có 3 ma trận để biểu diễn ảnh này.

=> Tầng CNN1: mỗi bộ lọc (3x3) trượt trên ma trận đầu vào (50x50x1) thì output là một feature map (50x50x1). Vì vậy 32 bộ lọc sẽ cho ra output là conv1 feature maps có size (50x50x32).

MaxPooling2D (2,2): Lớp Pooling được sử dụng giữa các lớp convolutional để đơn giản hóa thông tin đầu ra (giảm kích thước ma trận) nhưng vẫn giữ được

các thuộc tính quan trọng. Lớp MaxPooling2D lấy giá trị lớn nhất trong một Pooling window, cửa sổ này trượt qua từng giá trị của ma trận dữ liệu (conv1 feature maps) và chọn ra giá trị lớn nhất từ các giá trị nằm trong cửa sổ trượt.

Hầu hết khi dùng pooling layer thì sẽ dùng cửa sổ trượt size=(2,2), bước dịch chuyển stride=2. Khi đó kích thước của dữ liệu sẽ giảm đi một nửa.

+ k=2: Kích thước Pooling window là 2x2.

+ s=2: Với kích thước Pooling window là 2x2, stride=2 để đảm bảo các cửa sổ không trùng nhau.

=> Qua lớp MaxPooling kích thước của dữ liệu sẽ giảm đi một nửa. Từ input là conv1 feature maps (50x50x32), output sẽ là pool1 feature maps (25x25x32).

- Tầng CNN2:

Conv2D (64, (3, 3): input của lớp này là pool1 feature maps (25x25x32). Các tham số sẽ tương tự như ở lớp CNN1.

+ F=64: Tức số kernel (bộ lọc) của convolution là 64 + k=3: Kích thước ma trận kernel (bộ lọc) là 3x3.

+ s=1: Khoảng cách giữa 2 kernel khi quét là 1.

+ padding = “SAME”

Tầng CNN2: mỗi bộ lọc (3x3) trượt trên pool1 feature maps (25x25x32) thì output là một feature map (25x25x1). Vì vậy 64 bộ lọc sẽ cho ra output là Conv2 feature maps có size (25x25x64).

MaxPooling2D (2,2): Cũng tương tự như ở lớp CNN1.

+ k=2: Kích thước Pooling window là 2x2.

+ s=2: Với kích thước Pooling window là 2x2, stride=2 để đảm bảo các cửa sổ không trùng nhau.

⇒ Qua lớp MaxPooling kích thước của dữ liệu sẽ giảm đi một nửa. Từ input là conv2 feature maps (25x25x64), output sẽ là pool2 feature maps (13x13x64).

- Flatten: chuyển dữ liệu đầu ra của mạng CNN từ mảng 2 chiều về mảng 1 chiều.

Sau khi ảnh được truyền qua nhiều lớp CNN thì mô hình đã học được các đặc điểm của ảnh, khi đó output của lớp CNN cuối cùng là một ma trận, sẽ được chuyển về 1 vector một chiều.

- Lớp ẩn:

Dense thể hiện một lớp kết nối đầy đủ (fully connected layer), tức toàn bộ các unit của layer trước đó được nối với toàn bộ các unit của layer hiện tại.

Dense bằng 512 thể hiện việc chỉ có 512 unit ở layer này (đầu ra của linear regression trong trường hợp này bằng 512).

- Lớp Output:

Sử dụng hàm softmax trong lớp cuối cùng của bộ phân loại dựa trên mạng Nơron. Softmax được sử dụng để đa phân loại trong mô hình hồi quy logistic.

Một phần của tài liệu (Tiểu luận) đề tài nhận diện và phân biệt các loại phương tiện đểxếp xe vào bãi đỗ bệnh viện đại học y hà nội (Trang 25 - 30)

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

(73 trang)