Tải bản đầy đủ (.docx) (41 trang)

Ứng dụng mạng cnn trong phân loại hình ảnh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.19 MB, 41 trang )

BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THƠNG TIN

BÁO CÁO THÍ NGHIỆM / THỰC NGHIỆM
HỌC PHẦN: TRÍ TUỆ NHÂN TẠO
Đề tài: Ứng dụng mạng CNN trong phân loại hình ảnh

Hà Nội, 2022

Mục Lục


2

Contents
LỜI NÓI ĐẦU.....................................................................................................4
Chương 1: Mở đầu.............................................................................................6
1.1. Tên đề tài....................................................................................................6
1.2. Lý do chọn đề tài.......................................................................................6
1.3. Mục tiêu của đề tài....................................................................................6
1.4. Phương pháp nghiên cứu..........................................................................6
1.5. Đối tượng nghiên cứu................................................................................6
1.6. Phạm vi nghiên cứu...................................................................................6
Chương 2: Tổng quan về Neutral Network......................................................7
2.1. Giới thiệu về Neural network...................................................................7
Hình 2.2.1: Single-layer feedforward network........................................10
Hình 2.3.2: Mơ hình mạng Perceptron....................................................12

2.4. Ứng dụng của Neural Networks............................................................12
2.5. Ảnh trong máy tính.................................................................................13


Hình 2.5.1: Vector v kích thước n, ma trận W kích thước m*n..............14
Hình 2.5.2: Hình hộp chữ nhật kích thước a*b*h...................................15
Hình 2.5.3: ảnh màu kích thước 28*28, biểu diễn dưới dạng tensor
28*28*3.........................................................................................15
Hình 2.5.4: Phép tính tích chập...............................................................16
Hình 2.5.5: Ma trận X khi thêm viền 0 bên ngồi...................................17
Hình 2.5.6: stride=1, padding=1.............................................................17
Hình 2.5.7: padding=1, stride=2.............................................................18

2.6. Convolutional neural network (CNN)...................................................18
Hình 2.6.1. Mơ tả phép tính tích chập convolution.................................19
Hình 2.6.2: Ví dụ về các lớp convolution...............................................20
Hình 2.6.3. Fully Connected Layer.........................................................21
Hình 2.6.4: Ví dụ mơ hình CNN.............................................................22
Hình 2.6.5: Ví dụ về pooling layer..........................................................23


3

Hình 2.6.6: Fully connected layer...........................................................23

2.7. Cách Convolutional Neural Network hoạt động..................................23
2.8. Phân loại ConvNet...................................................................................25
2.9. Một số mạng CNN nổi tiếng...................................................................26
Hình 2.9.1: Minh họa kiến trúc của VGG16...........................................27
Hình 2.9.2: Mơ hình kiến trúc cơ bản của mạng RESNET.....................29
Hình 2.9.3. Phần trăm training error và test error của mạng RESNET. . .29

Chương 3: Xây dựng ứng dụng........................................................................30
3.1. Phân tích bài tốn....................................................................................30

3.2. Các bước thực hiện.................................................................................30
3.3. Kết Quả....................................................................................................38
Tài Liệu Tham Khảo.........................................................................................40


4

LỜI NÓI ĐẦU
Với sự phát triển của khoa học kỹ thuật ngày nay, Artificial Intelligence
(AI) đang trở thành một trong những lĩnh vực được phát triển bởi nhiều tổ chức
trên thế giới nhằm mục đích mơ phỏng lại q trình học tập tư duy và suy nghĩ
của con người. Trong khi có những người cho rằng sự phát triển nhanh chóng
của AI một số việc làm của con người sẽ bị đào thải thay thế bởi máy móc, các
chuyên gia lại cho rằng AI giúp ích rất nhiều trong việc tăng hiệu suất làm việc
cho con. Các nhà khoa học cho rằng bộ não của sinh vật sống xử lý thơng tin
bằng mạng thần kinh. Não người có khoảng 100 tỉ tỉ khớp thần kinh - khoảng
cách giữa các dây thần kinh - tạo nên các con đường nhất định khi được kích
hoạt. Khi một người nghĩ, nhớ hay trải nghiệm gì đó bằng giác quan, người ta
cho rằng con đường thần kinh đó sẽ sáng lên trong não. Bộ não con người chính
là nguồn cảm hứng cho kiến trúc mạng nơ-ron. Các tế bào não của con người,
còn được gọi là nơ-ron, tạo thành một mạng lưới phức tạp, có tính liên kết cao
và gửi các tín hiệu điện đến nhau để giúp con người xử lý thông tin. Tương tự,
một mạng nơ-ron nhân tạo được tạo ra từ các tế bào nơ-ron nhân tạo, cùng nhau
phối hợp để giải quyết một vấn đề.

Mơ hình mạng noron tích chập (CNN) về lý thuyết đã xuất hiện từ khoảng
những năm 40s nhưng với sự phát triển của phần cứng và các thuật toán hiệu
quả, chúng ngày càng trở nên mạnh mẽ hơn. Trong khi GAN cố lừa bên đối lập
thì trong CNN, dữ liệu được lọc qua nhiều lớp rồi được phân mục. Chúng chủ
yếu được dùng để nhận diện hình ảnh và xử lý ngơn ngữ văn bản. Nếu có hàng tỉ

giờ video cần phân tích, bạn có thể tạo một CNN xác minh xem từng khung hình
chiếu cái gì. CNN được dạy bằng cách xem nhiều hình ảnh phức tạp được con
người đánh dấu. AI học cách nhận diện ơ tơ, xe, động vật… bằng cách nhìn vào
ảnh đã được con người gắn nhãn, so sánh pixel trong ảnh với nhãn dán mà nó
biết rồi sắp xếp vào các mục mà nó đã được dạy. Để hiểu rõ hơn về mơ hình


5

mạng CNN, nhóm đã thực hiện nghiên cứu và tìm hiểu Ứng Dụng Mạng CNN
trong phân loại hình ảnh.
Nhóm em xin chân trọng cảm ơn!


6

Chương 1: Mở đầu
1.1. Tên đề tài
- Ứng dụng mạng CNN trong phân loại hình ảnh.
1.2. Lý do chọn đề tài
- Ngày nay các kĩ thuật về mạng noron đã được nghiên cứu và phát triển
rất rộng rãi. Ứng dụng của CNN vào các vấn đề như nhận diện đối tượng, phân
loại đối tượng là rất tốt . Trong những năm gần đây , nhận diện hình ảnh và phân
tích hình ảnh đang trở thành chủ đề nóng trong các hội thảo , hình ảnh được
phân tích để áp dụng cho các ứng dụng phân tích tình huống , dự đốn tình
huống , … trong lĩnh vực AI học , giao thơng thơng minh . Chính vì thế chủ đề
“Phân tích ảnh bằng thuật tốn CNN” là chủ đề chúng em chọn dựa trên nhu cầu
thực tiễn.
1.3. Mục tiêu của đề tài
- Nhận diện được hình ảnh , phân tích được ảnh trong trường hợp ảnh xấu

, không rõ nét
- Hiển thị kết quả phân tích dựa trên dữ liệu truyền vào
1.4. Phương pháp nghiên cứu
- Sử dụng bộ dữ liệu thu thập từ nhiều nguồn trên Internet.
- Sử dụng kiến thức đã nghiên cứu được để tiến hành viết chương trình,
báo cáo
thí nghiệm/thực nghiệm.
1.5. Đối tượng nghiên cứu
- Thuật toán CNN áp dụng cho bài toán phân loại.
1.6. Phạm vi nghiên cứu
- Dữ liệu là tập ảnh trên mạng, thu tập, gồm ảnh về động vật, con vật, đồ
vật, có ảnh đẹp, ảnh xấu


7

Chương 2: Tổng quan về Neutral Network
2.1. Giới thiệu về Neural network
- Neural là tính từ của neuron (nơ-ron), network chỉ cấu trúc đồ thị nên
neural network (NN) là một hệ thống tính tốn lấy cảm hứng từ sự hoạt động
của các nơ-ron trong hệ thần kinh.

Hình 2.1: Tế bào nơ-ron

- Hoạt động của các nơ-ron:
+ Nơ-ron là đơn vị cơ bản cấu tạo hệ thống thần kinh và là một
phần quan trọng nhất của não. Não chúng ta gồm khoảng 10 triệu nơ-ron và mỗi
nơ-ron liên kết với 10.000 nơ-ron khác.



8

+ Ở mỗi nơ-ron có phần thân (soma) chứa nhân, các tín hiệu đầu
vào qua sợi nhánh (dendrites) và các tín hiệu đầu ra qua sợi trục (axon) kết nối
với các nơ-ron khác. Hiểu đơn giản mỗi nơ-ron nhận dữ liệu đầu vào qua sợi
nhánh và truyền dữ liệu đầu ra qua sợi trục, đến các sợi nhánh của các nơ-ron
khác.
+ Mỗi nơ-ron nhận xung điện từ các nơ-ron khác qua sợi nhánh.
Nếu các xung điện này đủ lớn để kích hoạt nơ-ron, thì tín hiệu này đi qua sợi
trục đến các sợi nhánh của các nơ-ron khác.
+ Mơ hình neural network lấy cảm hứng từ não bộ và cách nó hoạt
động, chứ khơng phải bắt chước tồn bộ các chức năng của nó


9

Hình 2.1.1: Mơ hình neural network
+ Layer đầu tiên là input layer, các layer ở giữa được gọi là hidden
layer, layer cuối cùng được gọi là output layer. Các hình trịn được gọi là node.
+ Mỗi mơ hình ln có 1 input layer, 1 output layer, có thể có hoặc
khơng các hidden layer. Tổng số layer trong mơ hình được quy ước là số layer –
1 (Khơng tính input layer).
+ Mỗi node trong hidden layer và output layer :
* Liên kết với tất cả các node ở layer trước đó với các hệ số w riêng.
* Mỗi node có 1 hệ số bias b riêng.
* Diễn ra 2 bước: tính tổng linear và áp dụng activation function. Trong
đó tổng linear là tổng các giá trị đầu vào, activation function là hàm kích hoạt
của mạng.
2.2. Các loại Neural Networks
- Có 2 loại Neeural Networks là Single-layer feedforward network và

Multilayer feedforward network:
+ Single-layer feedforward network: Một Single-layer network là
một loại mạng feedforward network chiếu các đầu vào từ lớp của các nút nguồn
trên lớp đầu ra của các neuron (computation nodes). “Single layer” là một phép
tính được thực hiện bởi một lớp duy nhất, là lớp đầu ra. Khơng có tính tốn nào
được thực hiện bởi lớp đầu vào của các nút nguồn.


10

Hình 2.2.1: Single-layer feedforward network
+ Multilayer feedforward network: Một Multilayer network là
một feedforward network với một layer của các nút nguồn, một hoặc nhiều layer
ẩn của lớp neurons và lớp đầu ra của các neuron (Hình 1.3). Cả lớp ẩn và lớp
đầu ra đều bao gồm các nút tính tốn. Thuật ngữ lớp “Ẩn” đề cập đến thực tế là
lớp như vậy khơng được nhìn thấy trực tiếp từ đầu ra hoặc đầu vào của mạng và
chúng nhận đầu vào từ các nút nguồn hoặc các nút của các lớp ẩn trước đó và
kết quả đầu ra của mạng.


11

Hình 2.2.2: Multilayer feedforward network

2.3. Mạng Perceptron
- Mạng Perceptron là dạng đơn giản nhất của một Neural Network bao
gồm một neuron duy nhất có synaptic weights và bias có thể điều chỉnh được.
Một neuron riêng lẻ được sử dụng nghiêm ngặt như một bộ phân loại cho hai
lớp của các mẫu có thể phân tách tuyến tính, nằm trên các mặt đối diện của một
siêu phẳng. Trong hình 3.1, một mẫu có thể phân tách tuyến tính của hai lớp

được phân loại bằng cách sử dụng một Rosenblatt’s Perceptron


12

Hình 2.3.1: Perceptron Learning Algorithm
- Cách mà một Perceptron được sử dụng cho bài toán phân loại hai lớp là
lấy các tín hiệu đầu vào khác nhau 𝑥𝑚 và phân loại chúng thành một trong hai
lớp, C1 hoặc C2, tùy thuộc vào giá trị đầu ra 𝑦 của nơ-ron, cho dù đó là +1 hay 1 (Hình 3.2). Kết quả phân loại mẫu có thể được vẽ trên một mặt phẳng hai
chiều để hiểu rõ hơn về hoạt động của perceptron . Hai lớp trên mặt phẳng hai
chiều được ngăn cách bởi một ranh giới quyết định, đó là một siêu không gian;
đường phân cách hai lớp với nhau.


13

Hình 2.3.2: Mơ hình mạng Perceptron
2.4. Ứng dụng của Neural Networks
- Phân loại mạng nơ-ron, hoặc các ứng dụng dự báo đã được triển khai
rộng rãi trong các lính vực công nghiệp, kinh doanh và khoa học với nhiều ứng
dụng khác nhau do các đặc tính của mạng nơ-ron là học và tổng qt hóa, bất kể
thuật tốn là gì, cho dù là backpropagation, radial basis functions, genetic hoặc
Kohonen’s learning vector quantization. Mạng rơ-ron đã đáp ứng nhu cầu đa
dạng theo ba loại: phân loại mẫu, dự đoán và tối ưu hóa.


14

+ Phân loại mẫu : Mạng rơ-ron nhân tạo có thể xử lý nhiều tín
hiệu đầu vào và suy ra các mối quan hệ phi tuyến tính, chúng được sử dụng để

xử lý hình ảnh và nhận dạng các ký tự. Các ứng dụng xử lý hình ảnh bao gồm
một loạt các ngành cơng nghiệp, nhận dạng hình ảnh cho điện thoại thông minh
hoặc để chống lại tội phạm bằng cách phát hiện tội phạm bị truy nã từ cộng
đồng, cũng như xử lý hình ảnh vệ tinh cho mục đích nơng nghiệp để phân biệt
các thuộc tính khác nhau của các loại cây trồng khác nhau trên cùng một cánh
đồng rộng lớn. Ứng dụng nhận dạng ký tự phù hợp hơn với các ngành ngân
hàng và bảo mật, nơi chữ viết tay trên séc có thể được nhận dạng và xử lý thành
các số được số hóa. Chữ ký viết tay hợp pháp cũng có thể được phân biệt với
những chữ ký giả mạo

+ Dự đoán : Với khả năng mơ hình hóa các mối quan hệ phi tuyến
tính mà không thể xác định từ các dữ liệu đầu vào khác nhau, mạng nơ-ron có
khả năng dự báo các xu hướng dữ liệu trong tương lai. Có rất nhiều trường hợp
sử dụng để dự báo mạng nơ-ron nhân tạo trong các lĩnh vực bán hàng, phân bổ
tài chính giữa các sản phẩm, thị trường chứng khốn. Trong phân tích tiếp thị,
mạng nơ-ron đã được sử dụng để cắt giảm chi phí của các chiến dịch tiếp thị
bằng cách dự báo những khách hàng chưa có khả năng từ những khách hàng
tiềm năng dựa trên tập mẫu của tập dữ liệu đã được thu thập từ họ.

+ Tối ưu hóa : Các phương pháp tối ưu hóa được sử dụng để tối đa
hóa hoặc giảm thiểu các chức năng, mục tiêu nhất định của hệ thống phi tuyến
tính. Mạng nơ-ron nhân tạo giúp tính gần đúng các hàm mục tiêu, do đó cho
phép sử dụng các kĩ thuật phù hợp để phát triển các phương trình đa thức nhằm
tính tốn lời giải cần thiết để đạt được sự tối ưu hóa của hệ thống
2.5. Ảnh trong máy tính


15

- Hệ màu RGB:

+ RGB viết tắt của red (đỏ), green (xanh lục), blue (xanh lam), là
ba màu chính của ánh sáng khi tách ra từ lăng kính. Khi trộn ba màu trên theo tỉ
lệ nhất định có thể tạo thành các màu khác nhau.
+ Với mỗi bộ 3 số r, g, b nguyên trong khoảng [0, 255] sẽ cho ra
một màu khác nhau. Do có 256 cách chọn r, 256 cách chọn màu g, 256 cách
chọn b => tổng số màu có thể tạo ra bằng hệ màu RGB là: 256 * 256 * 256 =
16777216 màu.
- Ảnh màu là một ma trận các pixel mà mỗi pixel biểu diễn một điểm
màu. Mỗi điểm màu được biểu diễn bằng bộ 3 số (r,g,b). Để tiện cho việc xử lý
ảnh thì sẽ tách ma trận pixel ra 3 channel red, green, blue.
- Tensor:
+ Khi dữ liệu biểu diễn dạng 1 chiều, người ta gọi là vector, mặc
định khi viết vector sẽ viết dưới dạng cột.
+ Khi dữ liệu dạng 2 chiều, người ta gọi là ma trận, kích thước là số
hàng * số cột.

Hình 2.5.1: Vector v kích thước n, ma trận W kích thước m*n

+ Khi dữ liệu nhiều hơn 2 chiều thì sẽ được gọi là tensor


16

Hình 2.5.2: Hình hộp chữ nhật kích thước a*b*h
+ Tưởng tượng mặt đáy là một ma trận kích thước a * b, được tạo
bởi b vector kích thước a. Cả hình hộp là tensor 3 chiều kích thước a*b*h, được
tạo bởi xếp h ma trận kích thước a*b lên nhau.

Hình 2.5.3: ảnh màu kích thước 28*28, biểu diễn dưới dạng tensor 28*28*3
+ Phép tính tích chập (convolution)



17

Hình 2.5.4: Phép tính tích chập
+ Padding
* Mỗi lần thực hiện phép tính convolution xong thì kích thước ma
trận Y đều nhỏ hơn X. Nếu muốn ma trận Y thu được có kích thước bằng ma
trận X chỉ cần thêm giá trị 0 ở viền ngoài ma trận X.


18

Hình 2.5.5: Ma trận X khi thêm viền 0 bên ngồi
* Phép tính này gọi là convolution với padding=1. Padding=k nghĩa
là thêm k vector 0 vào mỗi phía của ma trận.
+ Stride

Hình 2.5.6: stride=1, padding=1
* Ta thực hiện tuần tự các phần tử trong ma trận X, thu được ma
trận Y cùng kích thước ma trận X, ta gọi là stride=1.
* Nếu stride=k (k > 1) thì ta chỉ thực hiện phép tính convolution
trên các phần tử từ vị trí đầu tiên sau đó nhảy k bước theo chiều dọc và ngang
cho đến hết ma trận X.


19

Hình 2.5.7: padding=1, stride=2


2.6. Convolutional neural network (CNN)
- Phép tính convolution:
+ Ta giả sử ma trận cần tình convolution là ma trận X có kích thước
n×m. Và 1 ma trận k có kích thước là x×x. Kí hiệu phép tính convolution (⊗), kí
hiệu Y = X ⊗ W. Với mỗi phần tử xij trong ma trận X lấy ra một ma trận có
kích thước bằng kích thước của kernel W có phần tử xij làm trung tâm (đây là vì
sao kích thước của kernel thường lẻ) gọi là ma trận A. Sau đó tính tổng các phần
tử của phép tính element-wise của ma trận A và ma trận W, rồi viết vào ma trận
kết quả Y.


20

Hình 2.6.1. Mơ tả phép tính tích chập convolution
+ Dễ thấy với phép tính như trên thì shape của ma trân Y sẽ nhỏ hơn
shape (kích thước) của ma trận X đầu vào. Với những trường hợp cần ma trận Y
có cùng khích thương với ma trận X chúng ta thêm 1 hệ số được gọi là padding
vào ma trận X rồi thực hiện phép tính convolution như bình thường.
- Lớp tích chập (Convolution)
+ Tích chập là lớp đầu tiên để trích xuất các tính năng từ hình ảnh đầu
vào. Tích chập duy trì mối quan hệ giữa các pixel bằng cách tìm hiểu các tính
năng hình ảnh bằng cách sử dụng các ô vương nhỏ của dữ liệu đầu vào. Nó là 1
phép tốn có 2 đầu vào như ma trận hình ảnh và 1 bộ lọc hoặc hạt nhân.Giả sử
input của 1 convolutional layer tổng quát là tensor kích thước H × W × D.
Kernel có kích thước F × F × D (kernel ln có depth bằng depth của input và F
thường là số lẻ vì ơ vng lưới chẵn × chẵn thì sẽ khơng có 1 ô vuông ở tâm đối
xứng dẫn tới giảm độ chính xác), stride: S, padding: P. Convolutional layer áp
dụng K kernel. Output sẽ có kích thước:




×