BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI
HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ
CHÍ MINH
ĐỒ ÁN TỐT NGHIỆP
NGÀNH CƠNG NGHỆ KỸ THUẬT MÁY TÍNH
THIẾT KẾ MƠ HÌNH ỨNG DỤNG
NHẬN DIỆN NHÃN HIỆU
GVHD: HUỲNH HOÀNG HÀ
SVTH : NGUYỄN PHẠM DUY ÐỨC
MSSV: 15119015
SKL005488
Tp. Hồ Chí Minh, tháng 07/2019
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
----***---Tp. Hồ Chí Minh, ngày … tháng 07 năm 2019
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ và tên sinh viên: NGUYỄN PHẠM DUY ĐỨC
MSSV:
15119015
Ngành:Công Nghệ Kỹ Thuật Máy Tính
Lớp: 15119CL2
Giảng viên hướng dẫn: Ths. Huỳnh Hồng Hà
ĐT: 0962443310
Ngày nhận đề tài: 2019
Ngày nộp đề tài: 2019
1. Tên đề tài: Thiết kế mơ hình ứng dụng nhận
diện nhãn hiệu.
2. Các số liệu, tài liệu ban đầu:
Kiến thức cơ bản về các mơn Tốn Cao Cấp, Xác suất
Thống kê ứng dụng, Máy học, Thiết kế ứng dụng di động.
3. Nội dung thực hiện đề tài:
Thiết kế mơ hình máy học nhận diện nhãn hiệu
trong ảnh.
Thu thập dữ liệu và gắn nhãn.
Thiết kế mơ hình trao đổi thơng tin giữa thiết bị
với server và ứng dụng android cho smartphone.
Triển khai thực tế và đánh giá.
Viết báo cáo.
4. Sản phẩm:
Mơ hình ứng dụng nhận diện nhãn hiệu trên smartphone.
TRƯỞNG NGÀNH
GIẢNG VIÊN HƯỚNG DẪN
i
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
----***----
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Họ và tên Sinh viên: Nguyễn Phạm Duy Đức
MSSV: 15119015
Ngành: Cơng nghệ Kỹ thuật máy tính
Tên đề tài: Thiết kế mơ hình ứng dụng nhận diện nhãn hiệu
Họ và tên Giáo viên hướng dẫn: ...............................................................................................................
1. Về nội dung đề tài & khối lượng thực hiện:
....................................................................................................................................................................
....................................................................................................................................................................
....................................................................................................................................................................
....................................................................................................................................................................
2. Ưu điểm:
....................................................................................................................................................................
....................................................................................................................................................................
....................................................................................................................................................................
....................................................................................................................................................................
3. Khuyết điểm:
....................................................................................................................................................................
....................................................................................................................................................................
....................................................................................................................................................................
....................................................................................................................................................................
4. Đề nghị cho bảo vệ hay không?
....................................................................................................................................................................
5. Đánh giá loại:
....................................................................................................................................................................
6. Điểm: ................................. (Bằng chữ: ................................................................................................ )
....................................................................................................................................................................
Tp. Hồ Chí Minh, ngày... tháng... năm 20…
Giáo viên hướng dẫn
(Ký & ghi rõ họ tên)
ii
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
----***----
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Họ và tên Sinh viên: Nguyễn Phạm Duy Đức
MSSV: 15119015
Ngành: Cơng nghệ Kỹ thuật máy tính
Tên đề tài: Thiết kế mơ hình ứng dụng nhận diện nhãn hiệu
Họ và tên Giáo viên phản biện: .................................................................................................................
1. Về nội dung đề tài & khối lượng thực hiện:
....................................................................................................................................................................
....................................................................................................................................................................
....................................................................................................................................................................
....................................................................................................................................................................
2. Ưu điểm:
....................................................................................................................................................................
....................................................................................................................................................................
....................................................................................................................................................................
....................................................................................................................................................................
3. Khuyết điểm:
....................................................................................................................................................................
....................................................................................................................................................................
....................................................................................................................................................................
....................................................................................................................................................................
4. Đề nghị cho bảo vệ hay không?
....................................................................................................................................................................
5. Đánh giá loại:
....................................................................................................................................................................
6. Điểm: ................................. (Bằng chữ: ................................................................................................ )
....................................................................................................................................................................
Tp. Hồ Chí Minh, ngày... tháng... năm 20…
Giáo viên phản biện
(Ký & ghi rõ họ tên)
iii
LỜI CẢM ƠN
Để hoàn thành đề tài nghiên cứu này, lời đầu tiên cho phép tôi được gửi lời cảm ơn
chân thành đến tồn thể q thầy cơ Trường Đại Học Sư Phạm Kỹ Thuật TP.HCM nói chung và
các thầy cô trong Khoa Điện – Điện Tử và Khoa Chất Lượng Cao nói riêng, những người đã
tận tình dạy dỗ, trang bị cho tôi những kiến thức nền tảng và kiến thức chun ngành quan
trọng, giúp tơi có được cơ sở lý thuyết vững vàng và đã luôn tạo điều kiện giúp đỡ tốt nhất
cho tơi trong q trình học tập và nghiên cứu.
Đặc biệt, tôi xin chân thành cảm ơn thầy Huỳnh Hồng Hà đã tận tình giúp
đỡ, hỗ trợ các ý kiến tôi đề nghị, đưa ra những định hướng nghiên cứu cũng như
hướng giải quyết một số vấn đề để tơi có thể thực hiện tốt đề tài. Trong thời gian
làm việc với thầy, tôi đã không ngừng tiếp thu thêm nhiều kiến thức được chỉ dạy
từ thầy, luôn thể hiện một thái độ nghiên cứu nghiêm túc, hiệu quả và đây cũng là
điều rất cần thiết trong quá trình học tập và làm việc sau này đối với tôi.
Cũng xin được gửi lời cảm ơn đến anh Phạm Hồng Thơng và tập thể
cơng ty TNHH Hệ Thống Thông Minh đã không ngần ngại giúp đỡ, truyền đạt
những kiến thức và kinh nghiệm của bản thân để giúp tơi vượt qua những khó
khăn và khúc mắc, hỗ trợ phương tiện trong suốt quá trình nghiên cứu đề tài.
Đồng thời cảm ơn Computer Vision Group của Queen Mary
University ở London đã thu thập dữ liệu Weblogo-2M Dataset và cho
phép tơi dùng dữ liệu này với mục đích nghiên cứu.
Mặc dù đã cố gắng hết sức, song do điều kiện thời gian và kinh nghiệm
thực tế của tôi nghiên cứu cịn ít, cho nên đề tài khơng thể tránh khỏi thiếu
sót. Vì vậy, tơi rất mong nhận được sự đóng góp ý kiến của q thầy, cơ giáo.
Xin chân thành cảm ơn!
TP.HCM, ngày 26 tháng 6 năm 2017
Sinh viên thực hiện
Nguyễn Phạm Duy Đức
iv
TÓM TẮT
Trong thời đại số bây giờ, việc quảng cáo trên mạng internet là một
hướng màu mỡ mà các công ty quan tâm, vì thế mà kéo theo nhu cầu nhận
diện logo để tính tốn thời gian quảng cáo trên các phương tiện truyền thơng.
Ngồi ra, Logo Detecting là một trong những hướng phát triển của Image
Recognition, một lĩnh vực nghiên cứu phát triễn trí thơng minh nhân tạo và máy học.
Việt Nam đang trên đà phát triển và hội nhập, nhiều cơng ty Việt đã
có những thành cơng nhất định trên thế giới và cả trong nước. Tuy nhiên,
các công ty chưa thật sự quan tâm đúng mực về nhãn hiệu của mình, qua
đó khách hàng chưa thể tin tưởng mà ưu tiên chọn hàng Việt.
Trong thời đại bùng nổ internet, mỗi bạn trẻ đều có thể lên mạng mọi lúc mọi
nơi, và các bạn có một nhu cầu tìm hiểu kiến thức xung quanh một cách thú vị hơn.
Điển hình ta thấy có rất nhiều kênh youtube như thế này và có 1 lượng đăng kí nhất
định như: kênh “người nổi tiếng” có 741000 subscriber, kênh “Vfacts” có 403000
subscriber, kênh “Zoom TV” với từ 1-2 triệu lượt xem mỗi video.
Ngồi ra, đã có các ứng dụng để nhận diện và đưa ra thông tin ngắn
về thế giới xung quanh như: PlantSnap có hơn 10 triệu lượt tải xuống,...
Từ những điều trên, người thực hiện đề tài nghiên cứu về một ứng
dụng nhận diện logo trên smartphone và từ đó giúp mọi người có thêm kiến
thức về các cơng ty và doanh nghiệp có các sản phẩm xung quanh ta, giúp
các khách hàng có thêm thơng tin để đặt niềm tin vào sản phẩm Việt.
Hệ thống này sử dụng android application để lấy ảnh (từ ảnh chụp
hoặc ảnh trong bộ nhớ) để gửi lên đến server xử lý nhận diện logo và
server sẽ gửi thông tin đã nhận diện về cho android application. Bài toán
nhận diện logo này giải quyết bằng thuật toán Object Detection.
v
MỤC LỤC
NHIỆM VỤ ĐỒ ÁN MÔN HỌC ...................................................................................
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN.............................................
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN ..............................................
LỜI CẢM ƠN ................................................................................................................
TÓM TẮT
......................
MỤC LỤC
......................
DANH MỤC VIẾT TẮT ............................................................................................
MỤC LỤC HÌNH ẢNH ................................................................................................
MỤC LỤC BẢNG .........................................................................................................
CHƯƠNG 1: GIỚI THIỆU ...........................................................................................
1.1.Giới thiệu đề tài ..................................................
1.2.Tính cấp thiết đề tài ............................................
1.3.Muc tiêu đề tài .....................................................
1.4.Phạm vi đề tài ......................................................
1.5.Phương pháp nghiên cứu ..................................
1.6.Bố cục đề tài .......................................................
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT LIÊN QUAN .....................................................
2.1.Machine learning và Object Detection .............
2.1.1. Khái niệm Machine Learning ...................................................................
2.1.2. Image Recognition and Object Detection ................................................
2.2.CNN - Convolutional Neural Network .............
2.2.1. Convolutiona
2.2.2. Cấu trúc của mạng CNN ...........................................................................
2.2.3. Trường tiếp nhận cục bộ (local receptive field) ......................................
2.2.4. Trọng số chia sẻ (shared weight and bias) ...............................................
2.2.5. Lớp tổng hợp
vi
2.3.Region Proposal Network (RPN) ..........................
2.4.Faster R-CNN .........................................................
2.5.Loss Function [1] ....................................................
2.6.Cách tạo mơ hình máy học bằng tensorflow API.
2.7.Xây dựng hệ thống firebase. ..................................
2.7.1. Liên kết firebase với python ...................................................................
2.7.2. Liên kết firebase với android application ..............................................
2.8.Base64. .....................................................................
CHƯƠNG 3: THIẾT KẾ VÀ THI CÔNG ỨNG DỤNG NHẬN DIÊN NHÃN
HIỆU
.....................................................................................
3.1.Sơ đồ khối hệ thống ...............................................
3.1.1. Yêu cầu hệ thống ......................................................................................
3.1.2.
Sơ đồ k
3.1.3. Chức năng từng khối ...............................................................................
3.1.4. Hoạt động của hệ thống ...........................................................................
3.2.Thiết kế hệ thống ....................................................
3.2.1. Khối xử lý trung tâm ...............................................................................
3.2.2.
Khối nh
3.2.3.
Khối lư
3.2.4. Thiết kế mơ hình máy học .......................................................................
CHƯƠNG 4: KẾT QUẢ VÀ THỰC NGHIỆM ........................................................
4.1.Kết quả .....................................................................
4.2.Thực nghiệm ...........................................................
CHƯƠNG 5: NHẬN XÉT VÀ HƯỚNG PHÁT TRIỂN ..........................................
5.1.Kết luận ....................................................................
5.2.Hướng phát triển ....................................................
TÀI LIỆU THAM KHẢO ...........................................................................................
vii
DANH MỤC VIẾT TẮT
DNA: Deoxyribonucleic acid.
CNN: Convolutional Neural Network.
ReLU: Rectified Linear Unit.
RPN: Region Proposal Network.
FCs : Fully connected layer.
ROI: Region of Interest.
IoU : Intersection-overUnion.
viii
MỤC LỤC HÌNH ẢNH
Hình 2.1: Cách Convolutional tạo feature map................................................................................. 4
Hình 2.2: Một ví dụ các lớp trong CNN................................................................................................ 5
Hình 2.3: Vùng tiếp nhận cục bộ............................................................................................................ 6
Hình 2.4: Tạo neuron ẩn đầu tiên........................................................................................................... 6
Hình 2.5: Tạo neuron ẩn thứ hai............................................................................................................ 7
Hình 2.6: Tạo ra nhiều feature map bằng nhiều loại trường tiếp nhận cục bộ.................... 7
Hình 2.7: Ví dụ pooling trong CNN........................................................................................................ 9
Hình 2.8: Max-pooling 2x2........................................................................................................................ 9
Hình 2.9: Ví dụ mơ hình CNN................................................................................................................. 10
Hình 2.10: Region proposal................................................................................................................... 10
Hình 2.11: Vùng anchor........................................................................................................................... 11
Hình 2.12: Faster RCNN là một mạng đơn và thống nhất [1].................................................... 12
Hình 2.13: Ví dụ về ROI............................................................................................................................ 14
Hình 2.14: Thực hiện ROI pooling....................................................................................................... 14
Hình 2.15: Mẫu trình bày file csv để chuẩn bị tập huấn luyện.................................................. 20
Hình 2.16: Code khai báo đường dẫn đến firebase...................................................................... 25
Hình 2.17: Code upload ảnh từ server lên firebase...................................................................... 25
Hình 2.18: Code lấy hình ảnh và biến processing từ id yêu cầu............................................. 25
Hình 2.19: Vị trí tool firebase của android studio.......................................................................... 26
Hình 2.20: Trợ lý firebase của android studio................................................................................ 26
Hình 2.21: Các bước thiết lập realtime database.......................................................................... 27
Hình 3.1: Sơ đồ khối tổng quát của hệ thống................................................................................. 29
Hình 3.2: Sơ đồ hoạt động của hệ thống.......................................................................................... 30
Hình 3.3: Lưu đồ khối xử lý trung tâm.............................................................................................. 31
Hình 3.4: Lưu đồ khối nhập xuất......................................................................................................... 33
Hình 3.5: Giao diện ứng dụng............................................................................................................... 34
Hình 3.6: Cấu trúc firebase.................................................................................................................... 35
Hình 3.7: Mẫu dữ liệu đã label.............................................................................................................. 36
Hình 3.8: So sánh tốc độ Faster RCNN so với các loại CNN khác.......................................... 37
Hình 3.9: Biểu đồ hàm mất mát cho RPN......................................................................................... 37
Hình 3.10: Biểu đồ hàm mất mát cho bước phân loại cuối cùng............................................ 38
Hình 3.11: Biểu đồ tổng hàm mất mát của mơ hình..................................................................... 38
Hình 4.1: Giao diện chính ứng dụng.................................................................................................. 41
Hình 4.2: Nút nhấn chọn chụp ảnh từ camera................................................................................ 41
Hình 4.3: Camera khi chọn nút chụp ảnh......................................................................................... 42
Hình 4.4: Giao diện ứng dụng sau khi chụp ảnh hoặc chọn ảnh đã lưu trong bộ nhớ. .42
Hình 4.5: Nhãn hiệu được nhận diện bằng ứng dụng................................................................. 43
Hình 4.6: Giao diện hiện thông tin pepsi của ứng dụng............................................................. 43
ix
Hình 4.7: Vị trí mũi tên để quay lại giao diện chính...................................................................... 44
Hình 4.8: giao diện chính sau khi quay về từ giao diện thơng tin.......................................... 44
Hình 4.9: Vị trí nút nhấn chọn ảnh có sẵn........................................................................................ 45
Hình 4.10: Giao diện chọn ảnh có sẵn............................................................................................... 45
Hình 4.11: giao diện thơng tin của các loại nhãn khác nhau.................................................... 46
Hình 4.12: Giao diện thông tin của các loại nhãn khác nhau................................................... 47
x
MỤC LỤC BẢNG
Bảng 2.1: Bảng mã convert base64.................................................................................................... 28
Bảng 3.1: Thông tin tập dữ liệu ảnh................................................................................................... 35
Bảng 4.1: tỷ lệ nhận diện và tỷ lệ chính xác của mơ hình theo từng nhãn.......................... 39
xi
CHƯƠNG 1: GIỚI THIỆU
1.1.
Giới thiệu đề tài
Trong thời đại số bây giờ, việc quảng cáo trên mạng internet là một
hướng màu mỡ mà các cơng ty quan tâm, vì thế mà kéo theo nhu cầu nhận
diện logo để tính tốn thời gian quảng cáo trên các phương tiện truyền thơng.
Ngồi ra, Logo Detecting là một trong những hướng phát triễn của Image
Recognition, một lĩnh vực nghiên cứu phát triễn trí thơng minh nhân tạo và máy học.
Hiện nay, đã có rất nhiều cơng cụ hỗ trợ cho việc này vì dụ: Google
Image Recognition, Amazon Rekognition, Ditto Labs, GumGum,
LogoGrab, IBM Image Detection
Tuy nhiên, việc nhận diện Logo còn rất nhiều hạn chế về dữ liệu và số lượng Logo luôn
phát triễn nên ngồi những cơng ty lớn thì hầu hết các ứng dụng chỉ nhận diện 1 số lượng logo
đặt trước và các logo ngồi lượng đó với 1 độ chính xác nhất định.
Tóm lại, thì Logo Detection đã có một số thành cơng nhất định nhưng vẫn cịn nhiều hạn
chế. Trong đề tài này, em làm ứng dụng để ứng dụng mơ hình này vào thực tế.
1.2.
Tính cấp thiết đề tài
Việt Nam đang trên đà phát triển và hội nhập, nhiều cơng ty Việt đã
có những thành cơng nhất định trên thế giới và cả trong nước. Tuy nhiên,
các công ty chưa thật sự quan tâm đúng mực về nhãn hiệu của mình, qua
đó khách hàng chưa thể tin tưởng mà ưu tiên chọn hàng Việt.
Trong thời đại bùng nổ internet, mỗi bạn trẻ đều có thể lên mạng mọi lúc mọi
nơi, và các bạn có một nhu cầu tìm hiểu kiến thức xung quanh một cách thú vị hơn.
Điển hình ta thấy có rất nhiều kênh youtube như thế này và có 1 lượng đăng kí nhất
định như: kênh “người nổi tiếng” có 741000 subscriber, kênh “Vfacts” có 403000
subscriber, kênh “Zoom TV” với từ 1-2 triệu lượt xem mỗi video.
Ngồi ra, đã có các ứng dụng để nhận diện và đưa ra thông tin ngắn
về thế giới xung quanh như: PlantSnap có hơn 10 triệu lượt tải xuống.
Từ những điều trên, người thực hiện đề tài nghiên cứu về một ứng dụng nhận diện
logo trên smartphone và từ đó giúp mọi người có thêm kiến thức về các cơng ty và
1
doanh nghiệp có các sản phẩm xung quanh ta, giúp các khách hàng có
thêm thơng tin để đặt niềm tin vào sản phẩm Việt.
1.3.
Muc tiêu đề tài
Xây dựng ứng dụng android để chụp ảnh, nhận diện logo và cung
cấp thông tin về doanh nghiệp.
Xây dựng mơ hình nhập diện logo với độ chính xác trên 85%.
Xây dựng hệ thống xử lý realtime lấy ảnh và dữ liệu từ các thiết bị
về máy chủ xử lý và gửi thông tin đã xử lý từ máy chủ về lại thiết bị.
1.4.
Phạm vi đề tài
Nhận diện mười loại logo nhãn hiệu theo thời gian thực.
Ứng dụng cho điện thoại thông minh android 8.0 trở lên.
1.5.
Phương pháp nghiên cứu
Tham khảo tài liệu, các bài báo về máy học, nhận diện vật thể và neural network.
Các khóa học online về máy học trên coursera.org.
Tham khảo các thảo luận trên github.
1.6. Bố cục đề tài
CHƯƠNG 1: TỔNG QUAN: Trong chương này người thực hiện trình bày
tổng quan về đề tài, tình hình nghiên cứu về đề tài này, động lực lựa chọn đề tài
cũng như tính cấp thiết xoay quanh vấn đề đó và trình bày cấu trúc của đề tài.
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT: Giới thiệu khái niệm về Máy học, và những giải thuật
sử dụng để xây dựng mơ hình cũng như thư viện sử dụng chính – Tensorflow.
CHƯƠNG 3: THIẾT KẾ VÀ THI CƠNG ỨNG DỤNG NHẬN DIÊN NHÃN
HIỆU: Trình bày thiết kế và thi công
CHƯƠNG 4: KẾT QUẢ VÀ THỰC NGHIỆM: Chương này trình bày
kết quả thực nghiệm,.
CHƯƠNG 5: NHẬN XÉT VÀ HƯỚNG PHÁT TRIỂN: Đưa ra những
nhận xét trong quá trình hồn thiện luận văn cũng như hướng phát triển
của hệ thống trong tương lai.
2
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT LIÊN QUAN
2.1.
Machine learning và Object Detection
2.1.1. Khái niệm Machine Learning
Học máy (machine learning) là một lĩnh vực của trí tuệ nhân tạo liên
quan đến việc nghiên cứu và xây dựng các kĩ thuật cho phép các hệ
thống học tự động từ dữ liệu để giải quyết những vấn đề cụ thể.
Học máy có hiện nay được áp dụng rộng rãi bao gồm máy truy tìm dữ
liệu, chẩn đốn y khoa, phát hiện thẻ tín dụng giả, phân tích thị trường
chứng khốn, phân loại các chuỗi DNA, nhận dạng tiếng nói và chữ viết,
dịch tự động, chơi trị chơi và cử động rơ-bốt (robot locomotion).
Một cách đơn giản là học máy có thể giúp chương trình tự đưa ra quyết
định từ những dữ liệu có sẵn mà khơng cần phải lập trình tường minh.
2.1.2. Image Recognition and Object Detection
Nhận dạng hình ảnh là giao nhau giữa Deep Learning và Computer Vision.
- Image Recognition(Image Classification): Đây là quá trình lấy một hình ảnh
làm đầu vào và xuất một class từ ra một tập hợp các class. Nếu chúng ta đưa 1 ảnh
vào thuật toán sẽ cho ta kết quả hình ảnh này thuộc class nào, hoặc là khơng có gì.
- Image Recognition with Localization: Q trình này lấy một hình
ảnh làm đầu vào, xuất ra một nhãn lớp và cũng vẽ một hộp giới hạn xung
quanh đối tượng để xác định vị trí của nó trong hình ảnh
- Object Detection: Trong quá trình này, nội địa hóa hình ảnh phải được
áp dụng cho tất cả các đối tượng trong hình ảnh, dẫn đến nhiều hộp giới hạn
2.2.
CNN - Convolutional Neural Network
2.2.1. Convolutional
Convolutional là một cửa sổ trượt (Sliding Windows) trên một ma
trận như mơ tả hình dưới:
3
Hình 2.1: Cách Convolutional tạo feature map
Các convolutional layer có các parameter(kernel) đã được học để tự điều
chỉnh lấy ra những thơng tin chính xác nhất mà khơng cần chọn các feature.
Sliding Window hay còn gọi là kernel, filter hoặc feature detect là
một ma trận có kích thước nhỏ như trong ví dụ trên là 3x3.
Kết quả được một ma trận gọi là Convoled feature được sinh ra từ
việc nhận ma trận Filter với ma trận ảnh 5x5 bên trái rồi cộng tổng kết quả.
2.2.2. Cấu trúc của 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.
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 đó.
4
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. Ngồ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.
Hình 2.2: Một ví dụ các lớp trong CNN
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 tố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. Đó là lý do tại sao CNNs cho ra mơ hình với độ chính xác rất cao. Cũng giống
như cách con người nhận biết các vật thể trong tự nhiên.
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), tổng hợp (pooling).
2.2.3. 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 28x28
thì tương ứng đầu vào là một ma trận có 28x28 và giá trị mỗi điểm ảnh là một ô
trong ma trận. Trong CNN chúng ta 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 5x5 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 5x5 đấy gọi là một trường tiếp nhận cục bộ.
5
Hình 2.3: Vùng tiếp nhận cục bộ
Một cách tổng quan, ta có thể tóm tắt các bước tạo ra 1 hidden
layer bằng các cách sau:
- Tạo ra neuron ẩn đầu tiên trong lớp ẩn 1
Hình 2.4: Tạo neuron ẩn đầu tiên
- Dịch filter qua bên phải một cột sẽ tạo được neuron ẩn thứ 2.
6
Hình 2.5: Tạo neuron ẩn thứ hai
Đối với bài tố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.
Hình 2.6: Tạo ra nhiều feature map bằng nhiều loại trường tiếp nhận cục bộ
7
Như vậy, 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.
2.2.4. Trọng số chia sẻ (shared weight and bias)
Đầu tiên, các trọng số cho mỗi filter (kernel) phải giống nhau. Tất cả các nơ-ron
trong lớp ẩn đầu sẽ phát hiện chính xác feature tương tự chỉ ở các vị trí khác nhau
trong hình ảnh đầu vào. Chúng ta gọi việc map từ input layer sang hidden layer là một
feature map. Vậy mối quan hệ giữa số lượng Feature map với số lượng tham số là gì?
Chúng ta thấy mỗi fearture map cần 25 = 5x5 shared weight và 1 shared bias. Như vậy
mỗi feature map cần 5x5+1 = 26 tham số. Như vậy nếu có 10 feature map thì có 10x26 = 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ó 28x28=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.
Tóm lại, 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.
2.2.5. Lớp tổng hợp (pooling layer)
Lớp pooling thường được sử dụng ngay sau lớp convolutional để
đơn giản hóa thơng tin đầu ra để giảm bớt số lượng neuron.
8
Hình 2.7: Ví dụ pooling trong CNN
Thủ tục pooling phổ biến là max-pooling, thủ tục này chọn giá trị
lớn nhất trong vùng đầu vào 2x2.
Hình 2.8: Max-pooling 2x2
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. 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.
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.
9
Hình 2.9: Ví dụ mơ hình CNN
Hai 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.
2.3.
Region Proposal Network (RPN)
Input của RPN là feature map và output là các region proposal. Ta
thấy các region proposal là hình chữ nhật.
Hình 2.10: Region proposal
Mà một hình chữ nhật được xác định bằng 2 điểm ở 2 góc, ví dụ A(x_min, y_min) và
B(x_max, y_max). Vì thế khi RPN dự đoán ta phải rằng buộc x_min < x_max và
10
y_min < y_max và các giá trị x,y khi dự đốn có thể ra ngồi khỏi bức
ảnh, do thế kĩ thuật Anchor ra đời.
Ý tưởng xây dựng Anchor là thay vì dự đốn 2 góc ta sẽ dự đốn điểm
trung tâm (x_center, y_center) và width, height của hình chữ nhật. Như vậy mỗi
anchor được xác định bằng 4 tham số (x_center, y_center, width, height).
Vì khơng sử dụng Selective search nên RPN ban đầu cần xác định
các anchor box có thể là region proposal, sau đó qua RPN thì chỉ ouput
những anchor box chắc chắn chứa đối tượng.
Hình 2.11: Vùng anchor
Ảnh bên trái kích thước 400 * 600 pixel, tác tâm của anchor box màu xanh, cách
nhau 16 pixel => có khoảng (400*600)/(16*16) = 938 tâm. Do các vật trong ảnh có thể có
kích thước và tỉ lệ khác nhau nên với mỗi tâm ta định nghĩa 9 anchors với kích thước
64 × 64, 128 × 128, 256×256, mỗi kích thước có 3 tỉ lệ tương ứng: 1 : 1, 1 : 2 và 2 : 1.
Giống như hình bên phải với tâm ở giữa 3 kích thước ứng với màu
da cam, xanh lam, xanh lục và với mỗi kích thước có 3 tỉ lệ.
Số lượng anchor box giờ là 938 * 9 = 8442 anchors. Tuy nhiên sau RPN ta
chỉ giữ lại khoảng 1000 anchors box để thực hiện như trong Fast R-CNN.
Việc của RPN là lấy ra các region proposal giống như selective
search thôi chứ không phải là phân loại ảnh.
11
Mơ hình RPN khá đơn giản, feature map được cho qua Conv layer 3*3,
512 kernels. Sau đó với mỗi anchor lấy được ở trên, RPN thực hiện 2 bước:
-
Dự đoán xem anchor đấy là foreground (chứa vật) hay background
(không chứa vật).
-
Dự đoán 4 offset value cho x_center, y_center, width, height cho các anchor.
Nhận xét: có rất nhiều anchor bị chồng lên nhau nên non-maxima
suppression được dùng để loại bỏ các anchor chồng lên nhau.
Sau cùng dựa vào phần trăm dự đốn background RPN sẽ lấy N anchor
(N có thể 2000, 1000, thậm chí 100 vẫn chạy tốt) để làm region proposal.
2.4.
Faster R-CNN
Faster R-CNN khơng dùng thuật tốn selective search để lấy ra các
region proposal, mà nó thêm một mạng CNN mới gọi là Region Proposal
Network (RPN) để tìm các region proposal.
Hình 2.12: Faster RCNN là một mạng đơn và thống nhất [1]
12
Đầu tiên cả bức ảnh được cho qua lớp convolutional layer để lấy
feature map. Sau đó feature map được dùng cho Region Proposal
Network để lấy được các region proposal.
Tiếp đó các region proposal được Flatten để dự đoán lớp của region proposal.
Tuy nhiên là kích thước của các region proposal khác nhau nên khi
Flatten sẽ ra các vector có kích thước khác nhau nên không thể áp dụng
neural network được. Tuy nhiên ở feature map ta không thể resize được,
nên ta phải có cách gì đấy để chuyển các region proposal trong feature
map về cùng kích thước, Region of Interest (ROI) pooling ra đời.
Region of Interest (ROI) pooling là một dạng của pooling layer.
Điểm khác so với max pooling hay average pooling là bất kể kích thước
của mảng đa chiều đầu vào (tensor input), ROI pooling ln cho ra output
có kích thước cố định được định nghĩa trước. [1]
Người thực hiện đề tài kí hiệu a/b là phần nguyên của a khi chia
cho b và a%b là phần dư của a khi chia cho b.
Ví dụ: 10/3 = 3 và 10%3 = 1.
Gọi input của ROI pooling kích thước m*n và output có kích thước
h*k (thơng thường h, k nhỏ ví dụ 7*7).
-
Ta chia chiều rộng thành h phần, (h-1) phần có kích thước m/h,
phần cuối có kích thước m/h + m%h.
Tương tự ta chia chiều dài thành k phần, (k-1) phần có kích thước
n/k, phần cuối có kích thước n/k + n%k.
Ví dụ m=n=10, h=k=3, do m/h = 3 và m%h = 1, nên ta sẽ chia chiều
rộng thành 3 phần, 2 phần có kích thước 3, và 1 phần có kích thước 4
13