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

Báo cáo thực nghiệm một số công nghệ phát triển phần mềm đề tài xây dựng ứng dụng nhận diện đeo khẩu trang bằng mobile net

51 4 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

Thông tin cơ bản

Tiêu đề Xây dựng ứng dụng nhận diện đeo khẩu trang bằng MobileNet
Tác giả Lê Minh Khôi, Trần Sinh Cung, Trần Quang Huy, Bùi Thanh Tùng
Người hướng dẫn Nguyễn Thái Cường
Trường học Trường Đại học Công nghiệp Hà Nội
Chuyên ngành Công nghệ thông tin
Thể loại Báo cáo thực nghiệm học phần
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 51
Dung lượng 2,14 MB

Nội dung

Để hoàn thành được đề tài này, nhóm chúng em đã cùng nhau nghiên cứu, thảo luận, áp dụng những kiến thức được học trên lớp cùng với các nguồn tài liệu trên Internet với đề tài lần này..

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI

ội, 2023

Trang 2

Để hoàn thành được đề tài này, nhóm chúng em đã cùng nhau nghiên cứu, thảo luận, áp dụng những kiến thức được học trên lớp cùng với các nguồn tài liệu trên Internet với đề tài lần này Chúng em rất mong sẽ nhận được những lời nhận xét, góp ý từ thầy cô và bạn đọc về đề tài của chúng em

Một lần nữa, chúng em xin chân thành cảm ơn thầy!

Nhóm th ực hiện

Nh óm 14

Trang 3

M ỤC LỤC

LỜI CẢM ƠN 2

MỞ ĐẦU 5

1 Lý do chọn đề tài 5

2 Mục đích, mục tiêu đề tài 5

3 Nội dung thực hiện 6

CHƯƠNG I: KIẾN THỨC CƠ SỞ 7

1.1 Giới thiệu về mạng CNN 7

1.2 Cấu trúc mạng CNN 8

1.3 Các mạng CNN phổ biến 13

1.4 Thuật học truyền ngược 18

1.5 Ứng dụng 20

CHƯƠNG II: TỔNG QUAN VỀ MOBILENET 23

2.1 Cấu trúc và đặc điểm mạng của MobileNet 23

2.1.1 Depthwise Separable Convolution 23

2.1.2 Kiến trúc mạng MobileNet 26

2.1.3 Làm giảm độ phức tạp của mạng MobileNet 27

2.2 Một số phiên bản khác của mạng MobileNet 30

2.2.1 MobileNet_V2 30

2.2.2 MobileNet_V3 32

2.3 Huấn luyện trước (Pre-training) 33

2.3.1 Nguyên nhân mô hình dự báo kém 33

2.3.2 Pre-trained model và vai trò của nó 34

2.4 Kỹ thuật xây dựng, huấn luyện, đánh giá với MobileNet 36

Trang 4

2.4.1 Chuẩn bị dữ liệu 36

2.4.2 Huấn luyện mô hình 39

2.5 Ứng dụng của MobileNet 41

CHƯƠNG III: XÂY DỰNG MỘT ỨNG DỤNG VỚI MOBILENET 43

3.1 Mô tả bài toán 43

3.2 Cấu trúc của tập dữ liệu 43

3.3 Cấu trúc chương trình (tệp, cấu trúc của các tệp chính) 43

3.4 Các bước thực hiện chương trình 44

3.5 Kết quả chạy chương trình 46

KẾT LUẬN VÀ BÀI HỌC KINH NGHIỆM 50

1 Nội dung đã thực hiện 50

2 Hướng phát triển 50

TÀI LIỆU THAM KHẢO 5151

Trang 5

MỞ ĐẦU

1 Lý do ch ọn đề tài

Trí tuệ nhân tạo hay còn được gọi là trí thông minh nhân tạo (Artificial intelligence – AI) là một ngành thuộc lĩnh vực khoa học máy tính Là trí tuệ do con người lập trình tạo nên với mục tiêu giúp máy tính có thể tự động hóa các hành vi giống con người

Trí tuệ nhân tạo khác với việc lập trình logic trong các ngôn ngữ lập trình

là ở việc ứng dụng các hệ thống học máy (machine learning) để mô phỏng trí tuệ của con người trong các xử lý mà con người làm tốt hơn máy tính

Cụ thể, trí tuệ nhân tạo giúp máy tính có được những trí tuệ của con người như: biết suy nghĩ và lập luận để giải quyết vấn đề, biết giao tiếp do hiểu ngôn ngữ, tiếng nói, biết học và tự thích nghi…

Tuy rằng trí thông minh nhân tạo có nghĩa rộng như là trí thông minh trong các tác phẩm khoa học viễn tưởng, nó là một trong những ngành trọng yếu của tin học Trí thông minh nhân tạo liên quan đến cách cư xử, sự học hỏi và khả năng thích ứng thông minh của máy móc

Hiện nay AI được sử dụng trong rất nhiều lĩnh vực trong đời sống như y tế, giáo dục, dịch vụ…

Để ứng dụng AI vào trong học tập, dưới sự hướng dẫn của thầy Nguyễn

Thái Cường, chúng em xin chọn đề tài “Xây dựng ứng dụng nhận diện đeo khẩu trang b ằng MobileNet” với mong muốn áp dụng kiến thức đã học để xây dựng

một chương trình AI sử dụng mạng MobileNet

2 M ục đích, mục tiêu đề tài

– Mục dích: Áp dụng được các kiến thức trong học phần Trí tuệ nhân tạo

và M ột số công cụ phát triển phần mềm đã được học vào việc thiết kế,

tạo lập một ứng dụng AI thực tế sử dụng mạng MobileNet

Trang 6

– Mục tiêu:

 Tìm hiểu tổng quan về mạng CNN và ứng dụng của nó

 Tìm hiểu về mạng MobileNet: cấu trúc, đặc điểm, ứng dụng

 Tìm hiểu cách training model sử dụng Colab của Google

 Tìm hiểu cách sử dụng model, sử dụng OpenCV để nhận dạng

3 N ội dung thực hiện

CHƯƠNG 1 TÌM HIỂU MẠNG CNN

1.1 Giới thiệu mạng CNN 1.2 Cấu trúc mạng CNN 1.3 Các mạng CNN phổ biến 1.4 Thuật học truyền ngược 1.5 Ứng dụng

CHƯƠNG 2 TÌM HIỂU MẠNG MOBILENET

2.1 Cấu trúc và đặc điểm mạng MobileNet 2.2 Huấn luyện trước (Pre-training)

2.3 Một số phiên bản khác của mạng MobileNet 2.4 Kỹ thuật xây dựng, huấn luyện, đánh giá model với MobileNet 2.4 Ứng dụng của mạng MobileNet

CHƯƠNG 3 ỨNG DỤNG THỰC TẾ SỬ DỤNG MẠNG MOBILENET

3.1 Mô tả bài toán 3.2 Cấu trúc của tập dữ liệu 3.3 Cấu trúc chương trình 3.4 Các bước chạy chương trình 3.5 Kết quả chạy chương trình

Trang 7

CHƯƠNG I: KIẾN THỨC CƠ SỞ

1.1 Gi ới thiệu về mạng CNN

Trong mạng neural, mô hình mạng neural tích chập (CNN) là 1 trong những

mô hình để nhận dạng và phân loại hình ảnh Trong đó, xác định đối tượng và nhận dạng khuôn mặt là 1 trong số những lĩnh vực mà CNN được sử dụng rộng rãi

CNN phân loại hình ảnh bằng cách lấy 1 hình ảnh đầu vào, xử lý và phân loại nó theo các hạng mục nhất định (Ví dụ: Chó, Mèo, Hổ, ) Máy tính coi hình ảnh đầu vào là 1 mảng pixel và nó phụ thuộc vào độ phân giải của hình ảnh Dựa trên độ phân giải hình ảnh, máy tính sẽ thấy H x W x D (H: Chiều cao, W: Chiều rộng, D: Độ dày) Ví dụ: Hình ảnh là mảng ma trận RGB 6x6x3 (3 ở đây là giá trị RGB)

Về kỹ thuật, mô hình CNN để training và kiểm tra, mỗi hình ảnh đầu vào

sẽ chuyển nó qua 1 loạt các lớp tích chập với các bộ lọc (Kernals), tổng hợp lại các lớp được kết nối đầy đủ (Full Connected) và áp dụng hàm Softmax để phân loại đối tượng có giá trị xác suất giữa 0 và 1 Hình dưới đây là toàn bộ luồng CNN

để xử lý hình ảnh đầu vào và phân loại các đối tượng dựa trên giá trị

Trang 8

1.2 C ấu trúc mạng CNN

Mạng CNN là một tập hợp các lớp Convolution chồng lên nhau và sử dụng các hàm nonlinear activation như ReLU và tanh để kích hoạt các trọng số trong các node Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo

Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo Trong mô hình mạng truyền ngược (feedforward neural network) thì mỗi neural đầu vào (input node) cho mỗi neural đầu ra trong các lớp tiếp theo

Mô hình này gọi là mạng kết nối đầy đủ (fully connected layer) hay mạng toàn vẹn (affine layer) Còn trong mô hình CNNs thì ngược lại Các layer liên kết được với nhau thông qua cơ chế convolution

Layer tiếp theo là kết quả convolution từ layer trước đó, nhờ vậy mà ta có được các kết nối cục bộ Như vậy mỗi neuron ở lớp kế tiếp sinh ra từ kết quả của filter áp đặt lên một vùng ảnh cục bộ của neuron trước đó

Mỗi một lớp được sử dụng các filter khác nhau thông thường có hàng trăm hàng nghìn filter như vậy và kết hợp kết quả của chúng lại Ngoài ra có 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)

Trang 9

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 Ví dụ trong tác vụ phân lớp ảnh, CNNs sẽ cố gắng tìm ra thông số tối ưu cho các filter tương ứng theo thứ tự raw pixel > edges > shapes > facial > high-level features Layer cuối cùng được dùng

để phân lớp ảnh

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), lớp tổng hợp (pooling)

Các trường tiếp nhận cục bộ (Local receptive field)

Đầu vào của mạng CNN là một ảnh Ví dụ như ảnh có kích thước 28×28 thì tương ứng đầu vào là một ma trận có 28×28 và giá trị mỗi điểm ảnh là một ô trong

ma trận Trong mô hình mạng ANN truyền thống thì chúng ta sẽ kết nối các neuron đầu vào vào tầng ảnh

Tuy nhiên trong CNN chúng ta không làm như vậy mà chúng ta chỉ kết nối trong một vùng nhỏ của các neuron đầu vào như một filter có kích thước 5×5 tương ứng (28- 5 + 1) = 24 điểm ảnh đầu vào Mỗi một kết nối sẽ học một trọng số và mỗi neuron ẩn sẽ học một bias Mỗi một vùng 5×5 đấy gọi là một trường tiếp nhận cục bộ

Trang 10

– Tạo neutron ẩn đầu tiên trong lớp ẩn 1

– Dịch filter sang bên phải 1 cột sẽ tạo được neutron ẩn thứ 2

Với bài toán nhận dạng ảnh người ta thường gọi ma trận lớp đầu vào là feature map, trọng số xác định các đặc trương là shared weight và độ lệch xác định một feature map là shared bias Như vậy đơn giản nhất là qua các bước trên chúng

ta chỉ có 1 feature map Tuy nhiên trong nhận dạng ảnh chúng ta cần nhiều hơn một feature map Local receptive field thích hợp cho việc phân tách dữ liệu ảnh, giúp chọn ra những vùng ảnh có giá trị nhất cho việc đánh giá phân lớp

Trang 11

Trọng số chia sẻ (Shared weights)

Mỗi fearture map cần 25 = 5×5 shared weight và 1 shared bias Như vậy mỗi feature map cần 5×5+1 = 26 tham số Vậy nếu có 10 feature map thì có 10×26

= 260 tham số Chúng ta xét lại nếu layer đầu tiên có kết nối đầy đủ nghĩa là chúng

ta có 28×28=784 neuron đầu vào như vậy ta chỉ có 30 neuron ẩn Như vậy ta cần 28x28x30 shared weight và 30 shared bias Tổng số tham số là 28x28x30+30 tham

số lớn hơn nhiều so với CNN Ví dụ vừa rồi chỉ mô tả để thấy được sự ước lượng

số lượng tham số chứ chúng ta không so sánh được trực tiếp vì 2 mô hình khác nhau Nhưng điều chắc chắn là nếu mô hình có số lượng tham số ít hơn thì nó sẽ chạy nhanh hơn

Một convolutional layer bao gồm các feature map khác nhau Mỗi một feature map giúp detect một vài feature trong bức ảnh Lợi ích lớn nhất của trọng

số chia sẻ là giảm tối đa số lượng tham số trong mạng CNN

Trang 12

Như vậy qua lớp Max Pooling thì số lượng neuron giảm đi phân nửa Trong một mạng CNN có nhiều Feature Map nên mỗi Feature Map chúng ta sẽ cho mỗi Max Pooling khác nhau Chúng ta có thể thấy rằng Max Pooling là cách hỏi xem trong các đặc trưng này thì đặc trưng nào là đặc trưng nhất Ngoài Max Pooling còn có L2 Pooling

Cuối cùng ta đặt tất cả các lớp lại với nhau thành một CNN với đầu ra gồm các neuron với số lượng tùy bài toán

2 lớp cuối cùng của các kết nối trong mạng là một lớp đầy đủ kết nối (fully connected layer) Lớp này nối mọi nơron từ lớp max pooled tới mọi nơron của tầng ra

Cách chọn tham số cho CNN

– Số các convolution layer: càng nhiều các convolution layer thì performance càng được cải thiện Sau khoảng 3 hoặc 4 layer, các tác động được giảm một cách đáng kể

– Filter size: thường filter theo size 5×5 hoặc 3×3

– Pooling size: thường là 2×2 hoặc 4×4 cho ảnh đầu vào lớn

– Thực hiện nhiều lần train, test

Trang 13

1.3 Các m ạng CNN phổ biến

a) M ạng LetNet (1998)

LeNet là một trong những mạng CNN lâu đời nổi tiếng nhất được Yann LeCUn phát triển vào những năm 1998s Cấu trúc của LeNet gồm 2 layer (Convolution + maxpooling) và 2 layer fully connected layer và output là softmax layer Chúng ta cùng tìm hiểu chi tiết architect của LeNet đối với dữ liệu mnist (accuracy lên đến 99%)

– Overlap pooling để giảm size của network ( Traditionally pooling regions không overlap)

– Sử dụng local response normalization để chuẩn hóa ở mỗi layer

Trang 14

– Sử dụng kỹ thuật data augmentation để tạo them data training bằng cách translations, horizontal reflections

– Alexnet training với 90 epochs trong 5 đến 6 ngày với 2 GTX 580 GPUs

Sử dụng SGD với learning rate 0.01, momentum 0.9 và weight decay 0.0005

Architect của Alexnet gồm 5 convolutional layer và 3 fully connection layer Activation Relu được sử dụng sau mỗi convolution và fully connection layer Detail architecter với dataset là imagenet size là 227x227x3 với 1000 class ( khác với trong hình trên size là 224x224)

c) M ạng VGG-16 (2014)

Với VGG-16, quan điểm về một mạng nơ ron sâu hơn sẽ giúp ích cho cải thiện độ chính xác của mô hình tốt hơn Về kiến trúc thì VGG-16 vẫn dữ các đặc điểm của AlexNet nhưng có những cải tiến:

Kiến trúc VGG-16 sâu hơn, bao gồm 13 layers tích chập 2 chiều (thay vì 5

so với AlexNet) và 3 layers fully connected

Trang 15

Lần đầu tiên trong VGG-16 chúng ta xuất hiện khái niệm về khối tích chập (block) Đây là những kiến trúc gồm một tập hợp các layers CNN được lặp lại giống nhau Kiến trúc khối đã khởi nguồn cho một dạng kiến trúc hình mẫu rất thường gặp ở các mạng CNN kể từ đó

VGG-16 cũng kế thừa lại hàm activation ReLU ở AlexNet

VGG-16 cũng là kiến trúc đầu tiên thay đổi thứ tự của các block khi xếp nhiều layers CNN + max pooling thay vì xen kẽ chỉ một layer CNN + max pooling Các layers CNN sâu hơn có thể trích lọc đặc trưng tốt hơn so với chỉ 1 layers CNN

VGG-16 chỉ sử dụng các bộ lọc kích thước nhỏ 3x3 thay vì nhiều kích thước

bộ lọc như AlexNet Kích thước bộ lọc nhỏ sẽ giúp giảm số lượng tham số cho mô hình và mang lại hiệu quả tính toán hơn VD: Nếu sử dụng 2 bộ lọc kích thước 3

x 3 trên một featurs map (là output của một layer CNN) có độ sâu là 3 thì ta sẽ cần n_filters x kernel_size x kernel_size x n_channels = 2 x 3 x 3 x 3 = 54 tham số Nhưng nếu sử dụng 1 bộ lọc kích thước 5 x 5 sẽ cần 5 x 5 x 3 = 75 tham số 2 bộ lọc 3 x 3 vẫn mang lại hiệu quả hơn so với 1 bộ lọc 5 x 5

Mạng VGG-16 sâu hơn so với AlexNet và số lượng tham số của nó lên tới

138 triệu tham số Đây là một trong những mạng mà có số lượng tham số lớn nhất Kết quả của nó hiện đang xếp thứ 2 trên bộ dữ liệu ImageNet validation ở thời điểm public Ngoài ra còn một phiên bản nữa của VGG-16 là VGG-19 tăng cường thêm 3 layers về độ sâu

Bắt đầu từ VGG-16, một hình mẫu chung cho các mạng CNN trong các tác

vụ học có giám sát trong xử lý ảnh đã bắt đầu hình thành đó là các mạng trở nên sâu hơn và sử dụng các block dạng [Conv2D*n + Max Pooling]

Trang 16

d) M ạng VGGNet (2014)

e) M ạng GoogleNet - Inception-V1 (2014)

Trang 17

Mạng Inception-V1 đã dành chiến thắng ở cuộc thi ImageNet vào năm

2015 Kiến trúc này đã giải quyết một câu hỏi lớn trong mạng CNN đó là sử dụng kernel_size với kích thước bao nhiêu thì hợp lý Các kiến trúc mạng nơ ron trước

đó đều sử dụng các bộ lọc với đa dạng các kích thước 11x11, 5x5, 3x3 cho tới nhỏ nhất là 1x1 Một khám phá được đưa ra bởi bài báo đó là việc cùng kết hợp đồng thời các bộ lọc này vào cùng một block có thể mang lại hiệu quả đó chính là kiến trúc khối Inception

Khối Inception sẽ bao gồm 4 nhánh song song Các bộ lọc kích thước lần lượt là 1x1, 3x3, 5x5 được áp dụng trong Inception Module giúp trích lọc được đa dạng đặc trưng trên những vùng nhận thức có kích thước khác nhau

Ở đầu các nhánh 1, 2, 4 từ trên xuống, phép tích chập 1x1 được sử dụng trên từng điểm ảnh như một kết nối fully connected nhằm mục đích giảm độ sâu kênh và số lượng tham số của mô hình Ví dụ: Ở block trước chúng ta có kích thước width x height x channels = 12 x 12 x 256 Sau khi áp dụng 32 bộ lọc kích thước 1x1 sẽ không làm thay đổi width, height và độ sâu giảm xuống 32, output shape lúc này có kích thước là 12 x 12 x 32 Ở layer liền sau, khi thực hiện tích chập trên toàn bộ độ sâu, chúng ta chỉ khởi tạo các bộ lọc có độ sâu 32 thay vì 256

Do đó đó số lượng tham số giảm đi một cách đáng kể

Nhánh thứ 3 từ trên xuống chúng ta giảm chiều dữ liệu bằng một layer pooling kích thước 3x3 và sau đó áp dụng bộ lọc kích thước 1x1 để thay đổi số kênh

Trang 18

max-Các nhánh áp dụng padding và stride sao cho đầu ra có cùng kích cỡ chiều dài và chiều rộng Cuối cùng ta concatenate toàn bộ kết quả đầu ra của các khối theo kênh để thu được output có kích thước bằng với input

Khối Inception được lặp lại 7 lần trong kiến trúc Inception-V1 Toàn bộ mạng bao gồm 22 Layers, lớn hơ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 chỉ còn 5 triệu, ít hơn gần 27 lần

so với VGG-16

1.4 Thu ật học truyền ngược

Trong lớp l, chúng ta vẫn cần tính đối với mục đích này chúng

ta muốn định hình lại xl trong ma trận và sử dụng 2 dạng tương đương hoán chuyển nhau

Luật chuỗi phát biểu:

Trang 20

Nhằm mục đích xác định một phần tử trong vec(xl) hoặc một dòng trong

MT Ta cần chỉ số là bộ 3 (il, jl, dl): 0<=il <Hl,0<=jl<Wl, 0<=dl<Dl

Tương tự để định vị một cột trong MT hoặc một phần tử trong ,

ta cần một cặp chỉ số (p,q), với Như vậy đầu vào có chỉ số thứ (il,jl,dl) của tương đương phép nhân của 2 véc tơ: Hàng trong MT ( hoặc cột trong M) mà được chỉ bởi (il, jl,dl) và Hơn nữa từ MT là một ma trận bộ chỉ thị Trong véc tơ hàng có chỉ số (il,jl,dl), chỉ có mục với chỉ số (p,q) thỏa mãn m(p,q)= (il, jl,dl) có giá trị 1, tất cả các đầu vào khác bằng 0 Như vậy đầu vào thứ (il, jl,dl) của

bằng tổng của các đầu vào tương ứng này trong

Trang 21

Ứng dụng xe tự lái

- Hệ thống đề xuất khuyến cáo (Recommender System)

Chương trình phân tích và khuyến cáo đồ vật

Trang 22

- Sử lý ngôn ngữ tự nhiên (Natural Language Processing)

Sơ đồ trình tự phân tách, sử lý ngôn ngữ tự nhiên

Sơ đồ đánh giá mô hình

Trang 23

CHƯƠNG II: TỔNG QUAN VỀ MOBILENET

2.1 C ấu trúc và đặc điểm mạng của MobileNet

MobileNet được phát triển bởi đội ngũ Google, mô hình sử dụng cách tính chập tích mang tên DSC (Depthwise Separable Convolution) nhằm giảm kích thước mô hình và giảm độ phức tạp tính toán Do đó, MobileNet thường được sử dụng cho các ứng dụng Computer Vision trên các thiết bị nhỏ gọn như điện thoại thông minh hay thiết bị nhúng

2.1.1 Depthwise Separable Convolution

Convolution ta có thể đơn giản nó là một cữa sổ trượt trên một ma trận, các lớp Convolution có các parameter(Kernel Matrix) sẽ tiến hành tính toán và đưa ra các giá trị đặc trưng nhờ đó có thể trích suất các điểm đặc trưng và giảm chiều tính toán

Trang 24

Trên là hình ảnh của môt kernel Ta thấy một hình ảnh bình thường (2D) có

3 chiều tương ứng với các thông số (H,W,N), H là cao, W là dài, N là sâu Một kernel bình thường gồm (K,K,N) (K là độ lớn, N là chiều sâu ảnh)

Xét trên một kernel, độ phức tạp tính toán sẽ 𝐷✕𝐷✕𝐾✕𝐾✕𝑁 (Với 𝐷 là chiều của feature map sau khi quét qua tất cả H và W) Vì thực tế chúng ta có nhiều kernel nên độ phức tạp sẽ là: 𝐷✕𝐷✕𝐾✕𝐾✕𝑁✕𝑀 (với M là số kernel)

Vì độ phực tạp tính toán trên khá lớn, khó có thể áp dụng vào những dự án trên các thiết bị nhỏ gọn như Smartphone hay máy tính nhúng Ý tưởng của Depthwise Separable Convolution là chia phép convolution làm 2 phần:

Depthwise convolution và Pointwise convolution

Depthwise convolution là một loại tích chập trong đó chúng ta áp dụng một

bộ lọc tích chập duy nhất cho mỗi kênh đầu vào Trong phép tích chập 2D thông thường được thực hiện trên nhiều kênh đầu vào, bộ lọc cũng sâu như đầu vào và cho phép chúng ta tự do trộn các kênh để tạo ra từng phần tử trong đầu ra Ngược lại, sự biến đổi theo chiều sâu giữ cho mỗi kênh riêng biệt Các bước thực hiện:

1 Tách đầu vào và lọc thành các kênh

2 Chúng tôi chuyển đổi từng đầu vào với bộ lọc tương ứng

3 Chúng tôi xếp chồng các kết quả đầu ra được biến đổi với nhau

Trang 25

Thay vì sử dụng một convolutional layer cho 3 kênh RGB, thì ta sử dụng 1

bộ lọc cho mỗi kênh riêng biệt Sau khi thực hiện ta sẽ có kết quả như Convolution

cũ (Người yêu cũ :<) với số lượng layer là N với N là số chiều của ảnh Vậy độ

phức tạp tính toán sẽ là: 𝐷✕𝐷✕𝐾✕𝐾✕𝑁

Pointwise Convolution là một kiểu tích chập sử dụng một nhân 1x1: một nhân lặp lại qua từng điểm đơn lẻ Kernel này có độ sâu bằng nhiều kênh mà hình ảnh đầu vào có:

Sau khi thực hiện bước Depthwise convolution, ta thực hiện convolution 1*1 để trích M đặc trưng ra từ N Convolutional layer đã tính ở trên Thực chất quá trình là duyệt tất cả các ô trong ma trận Vậy độ phức tạp tính toán sẽ là: 𝐷✕𝐷✕𝑁✕𝑀

Vậy tổng độ phức tạp của Depthwise Separable Convolution là: 𝐷✕𝐷✕𝐾✕𝐾✕𝑁 + 𝐷✕𝐷✕𝑁✕𝑀

Ngày đăng: 25/03/2024, 17:19

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w