Tuy nhiên, mãi đến năm 2012, khi một nhà khoa học máy tính người Ukraine Alex Krizhevsky đệ của Geoffrey Hinton xây d ng mô hình CNN AlexNet và s d ng ự ử ụGPU để tăng tốc quá trình hu n
Trang 1ĐẠI H C QU C GIA HÀ N I Ọ Ố Ộ TRƯỜNG ĐẠI H C KHOA H C T NHIÊN Ọ Ọ Ự
KHOA TOÁN – CƠ – TIN HỌC
- -
BÁO CÁO MÔN H C Ọ
ĐỀ TÀI: ỨNG D NG CONVOLUTIONAL NEURAL Ụ
NETWORKS (CNN) VÀO PHÂN LO I Ạ ẢNH
H c viên ọ Mã h c viên ọ
Ngô Văn Khôi 20007916 Nguy n Th ễ ị Hường 20007918 Đặng Tuấn Khải 20007917 Nguyễn Trường Sơn 20007910
Hà N - ội 2022
Trang 2Trang 2
MỤC LỤC
CHƯƠNG 1: LÝ THUYẾT 3
1.1 G I I THI UỚ Ệ 3
1.2 B ÀI TOÁN PHÂN LOẠI ẢNH 3
1.3. CẤU TRÚC MẠNG CNN 4
1.4 M t s ộ ố phương pháp tăng hiệu năng CNN 9
1.4.1.Data augmentation 9
1.4.2.Transfer learning 12
CHƯƠNG 2: ÁP DỤNG CHO BÀI TOÁN PHÂN LOẠI ẢNH CHÓ VÀ MÈO 15
2.1 T RÌNH BÀY VỀ D Ữ LIỆU 15
2.2. PHƯƠNG PHÁP TIỀN XỬ LÍ D Ữ LIỆU 15
2.3 T RÌNH BÀY VỀ CÁC PHƯƠNG PHÁP MÔ HÌNH ĐÃ SỬ- DỤNG 15
2.3.1 Mô hình đơn giả n gồm các l ớp Convolutional (đạt accuracy 72%) 15
2.3.1.1 Mô hình 15
2.3.1.2 Kết quả 16
2.3.2 Mô hình g m các lồ ớp Convolutional như trên nhưng s d ng thêm k thut data augmentation (đạt accuracy 85%) 18
2.3.2.1 Mô h nh 18
2.3.2.2 Kết quả 19
2.3.3 Phương pháp transfer learning, s d ng pretrained model InceptionV3 20
2.3.3.1 Mô h nh 20
2.3.3.2 Kết quả 22
Trang 3Trang 3
CHƯƠNG 1: LÝ THUYẾT
1.1 Giới thi u ệ
Convolutional Neural Networks (CNN) là một trong nh ng mô hình deep learning ữ
ph bi n nh t và có ổ ế ấ ảnh hưởng nhi u nh t trong cề ấ ộng đồng Computer Vision 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,… và h u ầ
hế ềt đu gi i quyả ết tốt các bài toán này
CNN cũng có lịch sử khá lâu đời Kiến trúc gốc của mô hnh CNN được giới thiệu
b i m t nhà khoa hở ộ ọc máy tính người Nhật vào năm 1980 Sau đó, năm 1998, Yan LeCun
lần đầu hu n luy n mô hình CNN v i thu t toán backpropagation cho bài toán nh n d ng ấ ệ ớ ậ ậ ạchữ viết tay Tuy nhiên, mãi đến năm 2012, khi một nhà khoa học máy tính người Ukraine Alex Krizhevsky (đệ của Geoffrey Hinton) xây d ng mô hình CNN (AlexNet) và s d ng ự ử ụGPU để tăng tốc quá trình hu n luy n deep nets ấ ệ để đạt được top 1 trong cu c thi Computer ộVision thường niên ImageNet với độ lỗi phân lớp top 5 giảm hơn 10% so với những mô hình truyền thống trước đó, đã tạo nên làn sóng manh mẽ sử d ng CNN v i sụ ớ ự hỗ trợ ủa cGPU để ả gi i quy t rất nhi u vế ề ấn đề trong Computer Vision
1.2 Bài toán phân loại ảnh
Phân loại ảnh là m t bài toán quan tr ng b c nhộ ọ ậ ất trong lĩnh vực Computer Vision Chúng ta đã có rất nhiều nghiên cứu để giải quyết bài toán này bằng cách rút trích các đặc trưng rất phổ biến như SIFT, HOG nhưng những cách này tỏ ra không thực sự hiểu quả Ngược lại, đố ới con người v i, chúng ta lại có bản năng tuyệ ời đểt v phân loại được những
đối tư ng trong khung cảnh xung quanh m t cách dễ dàng ợ ộ
Dữ liệu đầu vào c a bài toán là m t bủ ộ ức ảnh Một ảnh được bi u th b ng ma tr n các ể ị ằ ậgiá tr Mô hình phân l p s phị ớ ẽ ải dự đoán được lớp của ảnh t ừ ma trận điểm ảnh này, ví d ụnhư ảnh đó là con mèo, chó, hay là chim
Trang 4Trang 4
Để biểu diễn m t bức ảnh 256x256 pixel trong máy tính thì ta c n ma tr n có kính ộ ầ ậthước 256x256, và tùy thu c vào bức ảnh là có màu hay ảnh xám thì ma trận này sẽ có số ộkênh tương ứng, ví dụ với ảnh màu 256x256 RGB, chúng ta sẽ có ma trận 256x256x3 để
bi u di n nh này ể ễ ả
1.3 C u trúc m ng CNN ấ ạ
CNN bao g m t p h p các lồ ậ ợ ớp cơ bản như sau: convolution layer + nonlinear layer, pooling layer, fully connected layer 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 đi lặp l i nhi u l n trong ạ ề ầnetwork Và sau đó được lan truy n qua t ng fully connected layer và h m ề ầ à softmax để tính xác suất ảnh đó thuộc lớp n o à
Trang 5Mô 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ô hnh 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ờ ậy mà ta có đượ v 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ộ ủa neuron trước đó 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 nghn 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)
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 ớ ả
Convolution Layer
Convolution layer là lớp quan tr ng nhọ ất và cũng là lớp đầu tiên c a c a mô hình ủ ủCNN Lớp này có chức năng chính là phát hiện các đặc trưng có tính không gian hiệu quả
Trang 6Trang 6
Trong tầng này có 4 đối tượng chính là: ma trận đầu vào, b filters, và receptive field, ộfeature map Conv layer nhận đầu vào là m t ma tr n 3 chi u và m t b filters c n phộ ậ ề ộ ộ ầ ải
h c B filters này s ọ ộ ẽ trượt qua từng v trí trên bị ức ảnh để tính tích ch p (convolution) giậ ữa
b filter và phộ ần tương ứng trên bức ảnh Phần tương ứng này trên bức ảnh g i là receptive ọfield, t c là vùng mà m t neuron có th nhìn thứ ộ ể ấy để đưa ra quyết định, và mà tr n cho ra ậ
bởi quá trnh này được g i là feature map ọ
Với ví dụ ở bên dưới, dữ liệu đầu vào ở là ma trận có kích thước 8x8x1, một bộ filter
có kích thước 2x2x1, feature map có kích thước 7x7x1 M i giá tr ỗ ị ở feature map được tính
b ng t ng c a tích các ph n tằ ổ ủ ầ ử tương ứng c a b filter 2x2x1 v i receptive field trên nh ủ ộ ớ ả
Và để tính tất c các giá tr cho feature map, cả ị ần trượt filter t trái sang ph i, t trên xu ng ừ ả ừ ốdưới Do đó, chúng ta có thể thấy rằng phép convolution bảo toàn thứ tự không gian của các điểm nh Ví dụ điểm góc tr i c a dả á ủ ữ liệu đầu vào sẽtương ứng với bên một điểm bên góc trái c a feature map ủ
Tầng convolution có chức năng chính là phát hiện đặc trưng cụ thể c a bủ ức ảnh Những đặc trưng này bao gồm đặc trưng cơ bản là góc, c nh, màu s c, hoạ ắ ặc đặc trưng phức
tạp hơn như texture của ảnh Vì b filter quét qua toàn b bộ ộ ức ảnh, nên những đặc trưng này có thể ằm ở ị n v trí b t kì trong bấ ức ảnh, cho dù nh b xoáy trái/ph i thì nhả ị ả ững đặc trưng này vẫn bị phát hiện
Ở minh họa dưới, chúng ta có một filter 5x5 dùng để phát hiện góc/cạnh với, filter này ch có giá tr mỉ ị ột tại các điểm tương ứng một góc cong
Trang 7Trang 7
Dùng filter ở trên trược qua ảnh c a nhân v t Olaf trong trong b phim Frozen Chúng ủ ậ ộ
ta th y r ng, chấ ằ ỉ ở những v trí trên bị ức ảnh có dạng góc như đặc trưng ở filter thì m i có ớgiá tr l n trên feature map, nh ng v trí còn l i s cho giá trị ớ ữ ị ạ ẽ ị thấp hơn Đ ều này có nghĩa i
là, filter đã phát hiện thành công một dạng góc/cạnh trên dự liệu đầu vào Tập hơn nhiều
b filters s cho phép phát hiộ ẽ ện được nhi u loề ại đặc trưng khác nhau,và giúp định danh được đ i tư ng ố ợ
Nonlinear Layer
ReLU (Rectified Linear Units, f = max(0, x)) là hàm kích ho t ph bi n nh t cho CNN ạ ổ ế ấ
tính đến thời điểm hi n tệ ại, được gi i thi u bớ ệ ởi Geoffrey E Hinton năm 2010 Trước khi hàm ReLU được áp dụng thì những hàm như sigmoid hay tanh mới là những hàm được sử
d ng ph bi n Hàm ReLU ụ ổ ế được ưa chuộng v tính toán đơn giản, giúp h n ch tình tr ng ạ ế ạvanishing gradient, và cũng cho kết quả tốt hơn ReLU cũng như những hàm kích hoạt khác, được đặt ngay sau tầng convolution, ReLU sẽ gán những giá trị âm bằng 0 và giữ nguyên giá tr cị ủa đầu vào khi lớn hơn 0
Trang 8và gi m th i gian hu n luyả ờ ấ ện đi đáng k ể
Trang 9Trang 9
Fully Connected Layer
Tầng cu cùng c a mô hình CNN trong bài toán phân loối ủ ại ảnh là t ng fully connected ầlayer T ng này có chầ ức năng chuyển ma trận đặc trưng ở tầng trước thành vector ch a xác ứsuất của các đối tượng cần được d ự đoán Ví dụ, trong bài toán phân lo i s vi t tay MNIST ạ ố ế
có 10 lớp tương ứng 10 s t 0-1, t ng fully connected layer số ừ ầ ẽ chuy n ma trể ận đặc trưng của tầng trước thành vector có 10 chiều thể hiện xác suất của 10 lớp tương ứng
Và cu i cùng, quá trình hu n luy n mô hình CNN cho bài toán phân loố ấ ệ ại ảnh cũng tương tự như huấn luyện các mô hình khác Chúng ta cần có loss function để tính sai số
gi a d ữ ự đoán của mô hnh và nhãn chính xác, cũng như sử d ng thu t toán backpropagation ụ ậcho quá trình cập nhật tr ng s ọ ố
1.4 M t s ộ ố phương pháp tăng hiệu năng CNN
Trang 10Trang 10
Các phương thứ data augmentation cơ bảc n cho Computer Vision:
Flip (L t): l t theo chi u d c, ngang miậ ậ ề ọ ễn sao ý nghĩa của ảnh (label) được gi nguyên ữ
hoặc suy ra được Ví d nh n d ng qu bóng tròn, thì l t kiụ ậ ạ ả ậ ểu g cũng ra quả bóng Còn
v i nh n d ng ch vi t tay, l t s 8 vớ ậ ạ ữ ế ậ ố ẫn là 8, nhưng 6 sẽ thành 9 (theo chi u ngang) và ềkhông ra s gì theo chi u dố ề ọc
Random crop (C t ng u nhiên): c t ng u nhiên m t ph n c a bắ ẫ ắ ẫ ộ ầ ủ ức ảnh Lưu ý là khi cắt
ph i gi thành ph n chính c a bả ữ ầ ủ ức ảnh mà ta quan tâm Như ở nh n di n v t th , nậ ệ ậ ể ếu ảnh được cắt không có vật thể, vậy giá trị nhãn là không chính xác
Color shift (Chuyển đổi màu): Chuyển đổi màu của bức ảnh b ng cách thêm giá tr vào ằ ị
3 kênh màu RGB Vi c này liên quan tệ ới ảnh chụp đôi khi bị nhi u ễ > màu b ịảnh hưởng Noise addition (Thêm nhi u): Thêm nhi u vào bễ ễ ức ảnh Nhi u thì có nhi u loễ ề ại như nhi u ng u nhiên, nhi u có m u, nhi u c ng, nhi u nhân, nhi u do nén ễ ẫ ễ ẫ ễ ộ ễ ễ ảnh, nhi u m ễ ờ do chụp không lấy nét, nhiễu m do chuyờ ển động… có thể ể hết cả ngày k
Information loss (M t thông tin): M t ph n c a b c hình b mấ ộ ầ ủ ứ ị ất Có th minh hể ọa trường
h p b che khu ợ ị ất
Constrast change (Đổi độ tương phản): thay độ tương phản của bức hnh, độ bão hòa
Trang 11Trang 11
Geometry based: Đủ các thể loại xoay, l t, scale, padding, bóp hình, biến dạng hình, ậ Color based: giống như trên, chi tiết hơn chia làm (i) tăng độ ắc nét, (ii) tăng độ s sáng, (iii) tăng độ tương phản hay (iv) đổi sang ảnh negative - âm bản
…
Vấn đề của data augmentation: Tính phụ thuộc dữ liệu và ng d ng ứ ụ
Tùy thu c vào dộ ữ liệu (số lượng m u, tính balance/imbalance c a m u, dẫ ủ ẫ ữ liệu test, v.v và ứng dụng tương ứng Nghĩa là mỗi b d u s có cách thộ ữ liệ ẽ ức riêng để augmentation sao cho ra kết quả t t nhố ất
Trang 12Trang 12
Điển hình là d ữ liệu MNIST được cho là t t vố ới phương pháp elastic distortion, scale, translation, và rotation Trong khi dữ liệu ảnh tự nhiên như CIFAR10 và ImageNet th lại
tốt với thu t toán random-cropping, image mirroring, color shifting/whitenting Không ch ậ ỉ
có v y mà m t s augmentation method không t t cho m t s t p dậ ộ ố ố ộ ố ậ ữ liệu Đơn cử là horizontal flipping tốt cho CIFAR10 nhưng không tốt cho MNIST (b i vì flip là thành s ở ốkhác)
1.4.2.Transfer learning
Trong quá trình bùng n c a deep learning, các tài nguyên v AI ngày càng d i dào ổ ủ ề ồSong song v i quá trình phát triớ ển đó, ngày càng có nhiều các pretrained model có chất lượng tốt và độ chính xác cao Hầu như mọi domain đều có th tìm kiể ếm được các pretrained model
Lý thuy t vế ề transfer learning được Lorien Pratt th c nghiự ệm ần đầu năm 1993 và lsau đó viế ại nó dướt l i dạng một lý thuy t toán hế ọc vào năm 1998 đã hiện thực hóa ý tưởng
v chuy n giao tri thề ể ức giữa các mô hnh như giữa con người với nhau
Một mô hnh đã có khả năng tận d ng l i các tri thụ ạ ức đã huấn luyện trước đó và cải thiện l i trên tác v phân loạ ụ ại của nó
Trang 13Trang 13
Ưu điểm của transfer learning:
(1) Cải thiện accuracy và tiết kiệm chi phí huấn luyện
Ví d trong bài toán phân lo i chó và mèo N u hu n luy n tụ ạ ế ấ ệ ừ đầu, chúng ta s tẽ ốn nhi u epochs hu n luyề ấ ện hơn để đạt được độ chính xác cao Tuy nhiên n u b n bi t tế ạ ế ận
d ng l i các pretrained model thì s c n ít epochs hu n luyụ ạ ẽ ầ ấ ện hơn để đạt được một độ chính xác mong đợi Thậm chí độ chính xác có thể lớn hơn so với khi không áp dụng transfer learning
Từ đồ thị ta có th ể thấy s d ng transfer learning s mang lử ụ ẽ ại 3 lợi thế chính:
Có điểm khởi đầu c a accuracy tủ ốt hơn (higher start)
Accuracy có tốc đ tăng nhanh hơn (higher slope).ộ
Đường tiệm cận c a độ ủ chính xác tối ưu cao hơn (higher asymptote)
(2) Hiệu qu v ả ới dữ liệu nhỏ
Trong trường hợp bộ dữ liệu có kích thước quá nhỏ và khó có thể tìm kiếm và mở rộng thêm th các mô hnh được hu n luy n t chúng s khó có th d báo t t T n d ng lấ ệ ừ ẽ ể ự ố ậ ụ ại tri th c t các pretrained-model v cùng tác v phân lo i sứ ừ ới ụ ạ ẽ giúp các mô hnh được huấn luy n d báo tệ ự ốt hơn vớ ữ liệu mới v mô hnh được học trên cả 2 ngu n tri thi d ồ ức đó là dữ
liệu hu n luy n và d ấ ệ ữ ệu mà nó đã đượli c học trước đó
Trang 14Trang 14
Kinh nghiệm sử d ng transfer learning ụ
Đối v i d ớ ữ liệu nhỏ: Train l i toàn b các layers s làm mạ ộ ẽ ất đi các đặc trưng đã được học
t model pretrained và d n t i mô hình d báo s không chính xác Chúng ta ch nên ừ ẫ ớ ự ẽ ỉtrain lại các fully connected layers cu ối
Đố ới v i dữ liệu l n và gi ng domain: Có th train l i model trên toàn bớ ố ể ạ ộ layers Nhưng
để quá trình huấn luyện nhanh hơn th chúng ta sẽ thực hiện bước khởi động (warm up)
và sau đó mới fine tuning lại mô hình
Đối v i dữ liệu l n và khác domain: Chúng ta nên hu n luy n l i model tớ ớ ấ ệ ạ ừ đầu vì pretrain-model không tạo ra được các đặc trưng tốt cho dữ liệ u khác domain
Trang 15Trang 15
CHƯƠNG 2: ÁP DỤNG CHO BÀI TOÁN
PHÂN LO ẠI Ả NH CHÓ VÀ MÈO
2.1 Trình bày v dề ữ liệu
B dộ ữ liệu về ảnh chó và mèo chia thành t p train và t p validation T p train gậ ậ ậ ồm
2000 nh g m 1000 nh chó và 1000 nh mèo T p validation g m 1000 nh g m 500 nh ả ồ ả ả ậ ồ ả ồ ảchó và 500 ảnh mèo
Ma tr n thậ ể hiện bức ảnh g m 3 l p (vì là ồ ớ ảnh màu) nhưng số chiều c a củ ác ảnh thì khác nhau Giá tr t ng ô n m trong kho ng [0, 255] ị ừ ằ ả
2.2 Phương pháp tiền xử lí dữ liệ u
Thiết lập các data generators để đọc cái file nh, chuy n chúng thành d ng tensor ả ể ạfloat32, và truy n vào model ề
Trong quá trình truy n d n ề ẫ ảnh vào model, chúng ta normalize giá tr pixel v khoị ề ảng [0, 1], và chi u cề ủa ảnh được chuẩn hóa v d ng (150, 150, 3) ề ạ
2.3 Trình bày v ề các phương pháp mô hình đã sử ụng- d
2.3.1 Mô hình đơn giản gồm các lớp Convolutional (đạt accuracy 72%)
2.3.1.1 Mô hình
Mô hnh được s d ng bao g m 3 l p Convolutional theo sau là 1 l p Fully Connected ử ụ ồ ớ ớ
và s dử ụng đầu ra là hàm Sigmoid