Trang 10 Đề tài “Xử lý ảnh, nhận biết phương tiện trong hệ thống IoT cho giao thơng” đã được đưa ra với hi vọng ứng dụng các mơ hình học sâu vào nhận dạng hình ảnh với số lượng các loại
Trang 1TRƯỜNG ĐẠ I H C BÁCH KHOA HÀ N I Ọ Ộ
LUẬN VĂN THẠC SĨ
Xử lý ảnh, nhận biết phương tiện trong hệ
thống iot cho giao thông
Trang 2TRƯỜNG ĐẠ I H C BÁCH KHOA HÀ N I Ọ Ộ
LUẬN VĂN THẠC SĨ
Xử lý ảnh, nhận biết phương tiện trong hệ
thống iot cho giao thông
ĐÀO HUY THẠCH
Ngành: K thu t vi n thông ỹ ậ ễ
Giảng viên hướng d n: ẫ TS Phan Xuân Vũ
Viện: Điệ ử n t - Vi n Thông ễ
Hà Nội, 2020
Chữ ký c a GVHD ủ
Trang 3LỜI NÓI ĐẦU Luận văn tốt nghiệp là kết quả của quá trình học tập và nghiên cứu tại viện Điện Tử Viễn Thông, viện Đào tạo Sau Đại Học, trường đại học Bách Khoa Hà - Nội Luận văn nghiên cứu và lập trình ứng dụng vào thiết bị IoT (điện thoại di động) nhận biết phương tiện giao thông trong hệ thống giao thông Mục đích của
đề tài giúp sử dụng Keras và TensorFlow để training model nhận biết phương tiện
Sử dụng TensorFlow Lite đưa model vào các thiết bị IoT như điện thoại, chip nhúng, web … để đưa vào ứng dụng một cách nhanh chóng Với thời gian không nhiều và dịch bệnh xảy ra để thực hiện đề tài này, em đã gặp nhiều khó khăn trong việc làm quen kiến thức về deep learning sử dụng TensorFlow và sử dụng TensorFlow Lite để nhúng model vào trong các thiết bị IoT (điện thoại) Tuy nhiên với sự giúp đỡ tận tình của các thầy cô và sự cố gắng của bản thân, em đã hoàn thành đề tài của mình
Trang 4L I CỜ ẢM ƠN
Em xin chân thành gửi lời cảm ơn đến T.S Phan Xuân Vũ đã tận tình giúp
đỡ em trong quá trình thực hiện đề tài này Em cũng gửi lời cảm ơn đến các anh
và các bạn đã chia sẻ kinh nghiệm, kiến thức cho em
Em xin chân thành cảm ơn sự dạy dỗ của các giáo viên Viện Điện Tử Viễn Thông, phòng Đào Tạo Sau Đại Học đã tận tình hướng dẫn, giúp đỡ em trong suốt quá trình làm đồ án bất chấp dịch bệnh xảy ra
Cuối cùng, em xin gửi lời cảm ơn đến gia đình mình, những người luôn bên cạnh động viên, khuyến khích để em hoàn thành đề tài này
Em rất mong nhận được những sự góp ý, chỉ bảo tận tình của các thầy cô
và các bạn về những vấn đề còn khúc mắc hay thiếu sót của luận văn
Em xin chân thành cảm ơn!
Học viên
ĐÀO HUY THẠCH
Trang 5MỤC LỤC
M Ở ĐẦU 1
CHƯƠNG 1 MẠNG NƠ-RON TÍCH CH P 4 Ậ 1.1 Kiến trúc m ng CNN 4 ạ 1.1.1 T ng Tích ch p 5 ầ ậ 1.1.2 L p Pooling 8 ớ 1.1.3 Fully Connected 9
1.2 Lịch sử phát tri n m ng CNN 10 ể ạ 1.2.1 LeNet-5 (1998) 10
1.2.2 Alexnet (2012) 11
1.2.3 ZFNet (2013) 14
1.2.4 VGGNet (2014) 15
1.2.5 GoogleNet (2014) 17
1.2.6 ResNets (2015) 20
CHƯƠNG 2 H C CHUY N GIAO (TRANSFER LEARNING) VÀ Ọ Ể TENSORFLOW LITE 23
2.1 H c Chuy n Giao (Transfer learning) 23 ọ ể 2.2 Tensorflow Lite 32
CHƯƠNG 3 H TH NG IoT X LÝ NH NH N BIỆ Ố Ử Ả Ậ ẾT PHƯƠNG TIỆN TRONG GIAO THÔNG 35
3.1 T ng quan h ổ ệthống 35
3.2 Phần hu n luy n 36 ấ ệ 3.2.1 Môi trường hu n luy n 38 ấ ệ 3.2.2 X ửlý dữ liệu đầu vào để ọ h c 40 3.2.3 Lựa chọn mô hình và phương pháp để thực hiện h c chuy n giao 41 ọ ể 3.3 Phần mềm ứng dụng vào điện tho i 45 ạ 3.4 Kết luận ph n mầ ềm nhận di n xe 52 ệ CHƯƠNG 4 K T LU N 53 Ế Ậ TÀI LIỆU THAM KH O 54 Ả
Trang 6DANH MỤC HÌNH V Ẽ
Hình 1.1 Mạng nơ ron tích chập 4
Hình 1.2 Kiến trúc một mạng CNN 5
Hình 1.3 Ma trận đầu vào mà ma trận kernel thực thiện tích chập 6
Hình 1.4 Cách quét và tính giá trị feature map [1] 6
Hình 1.5 Kết quả thu được sau khi hoàn tất việc quét và tính 7
Hình 1.6 Kích thước tăng lên của feature map sau khi thêm padding 7
Hình 1.7 Mô tả hoạt động của Max Pooling với strike là 2 9
Hình 1.8 Lớp Fully Connected 9
Hình 1.9 Kiến trúc mạng LeNet (1998) [3] 10
Hình 1.10 Kiến trúc mạng Alexnet (2012) [6] 12
Hình 1.11 Kiến trúc mạng ZFNet (2013) [6] 14
Hình 1.12 Kiến trúc mạng VGGNet (2014) [6] 16
Hình 1.13 Kiến trúc mạng VGG16 16
Hình 1.14 Kiến trúc Inception Module [6] 18
Hình 1.15 Kiến trúc Inception V1 [6] 18
Hình 1.16 Kiến trúc Inception V2 [6] 19
Hình 1.17 Kiến trúc Inception V3 [6] 19
Hình 1.18 Kiến trúc Inception V4 [6] 20
Hình 1.19 So sánh tỉ lệ chính xác với việc tang layers [6] 21
Hình 1.20 ResNets Block [6] 22
Hình 1.21 ResNets (2015) 22
Hình 2.1 Kết quả thực nghiệm theo số lượng lớp mạng CNN được chuyển giao [9] 25
Hình 2.2 Mô hình VGG16 (trái) và mô hình VGG16 chỉ bao gồm ConvNet bỏ Fully connected layer (phải) [10] 26
Hình 2.3 Dạng một không có lớp ẩn, đầu ra là hàm Softmax [10] 27
Hình 2.4 Dạng hai mỗi class sẽ phân loại với các class còn lại [10] 27
Hình 2.5 Model VGG16 bỏ đi các lớp fully connected và thêm fully connected layer mới [10] 28
Trang 7Hình 2.6 Freeze các layer của pre trained model, chỉ train ở các layer mới [10]- 29
Hình 2.7 Unfreeze các layer của pre-trained và train tất cả các layer [10] 30
Hình 2.8 Bảng các models có sẵn trên keras [11] 31
Hình 2.9 Quy trình triển khai TensorFlow Lite [1] 33
Hình 3.1 Luồng nhận dạng phương tiện của hệ thống 35
Hình 3.2 Pha huấn luyện 36
Hình 3.3 Các thư viện deep learning và các hãng công nghệ lớn [13] 38
Hình 3.4 Số lượng tuổi và các đóng góp trên github repo của các thư viện [13] 39 Hình 3.5 Số lượng các bài báo đề cập đến các thư viện năm 2017 [13] 39
Hình 3.6 Một số hình ảnh xử lý bộ dữ liệu bằng Keras với lật và zoom 41
Hình 3.7 Một số hình ảnh xử lý bộ dữ liệu bằng Keras với zoom và dịch 41
Hình 3.8 Độ chính xác của học chuyển giao với MobileNetV2 44
Hình 3.9 Độ chính xác của học chuyển giao với Inception V3 44
Hình 3.10 Sơ đồ người dùng sử dụng ứng dụng nhận diện loại phương tiện 45
Hình 3.11 Luồng hoạt động của ứng dụng 46
Hình 3.12 Vị trí đặt file model và nhãn 46
Hình 3.13 Giao diện xuất hiện cho phép lựa chọn ảnh từ bộ sưu tập 47
Hình 3.14 Giao diện xuất hiện ảnh các loài phương tiện trong bộ sưu tập 48
Hình 3.15 Giao diện kết quả hiển thị sau khi chọn xe máy 49
Hình 3.16 Giao diện kết quả hiển thị sau khi chọn xe tải 50
Hình 3.17 Giao diện kết quả hiển thị sau khi chọn xe bán tải 51
Trang 8DANH M C VIỤ ẾT TẮT
1 ConvNet/CNN Mạng Nơ-ron tích chập
2 Feature map Bản sao được t o ra sau khi th c hi n ạ ự ệ
tích chập
3 Feature Các tính năng
4 Kernel Ma trận lõi để nhân tích ch p ậ
Trang 9M Ở ĐẦU
1 Lý do chọn đề tài
Hiện nay, tình trạng ùn tắc giao thông tại các thành phố lớn như Hà Nội và thành phố Hồ Chí Minh diễn ra thường xuyên, gây thiệt hại hàng ngàn tỷ đồng Nhiều biện pháp được đưa ra như mở rộng đường, xây thêm cầu vượt, thành lập tuyến đường sắt trên cao hay việc cấm đường một số phương tiện trong những khung giờ nhất định Trong các giải pháp trên, việc cấm đường một số loại phương tiện là một giải pháp dễ triển khai hơn đồng thời cũng mang lại những hiệu quả nhất định trong khi chờ đợi các giải pháp đồng bộ quy mô hơn Để hỗ trợ việc cấm các loại phương tiện tại một nút giao thông thì việc xác định các loại phương tiện lưu thông qua nút giao thông đó là vô cùng quan trọng Bài toán nhỏ hơn chính là xác định từng loại phương tiện đó, vì vậy cần phân loại từng loại phương tiện giao thông cần được giải quyết để giải quyết bài toán xác định lưu lương của loại phương tiện đó qua các nút giao thông từ đó giúp các cơ quan chức năng biết được các phương tiện giao thông nào hay lưu thông qua các nút giao thông để từ đó đưa ra quy hoạch phù hợp Việc thực hiện chủ yếu quan sát camera sau đó xử lý ảnh đơn thuần, tuy nhiên phương pháp khó áp dụng với một lưu lượng lớn, có sự mở rộng về chủng loại phương tiện
Thời gian gần đây, nhờ sự phát triển mạnh mẽ về khả năng tính toán của các thế hệ máy tính hiện đại cũng như sự bùng nổ dữ liệu thông qua mạng Internet, ta đã chứng kiến nhiều sự đột phá trong lĩnh vực học máy, đặc biệt trong lĩnh vực thị giác máy tính Sự phát triển vượt bậc của các phương pháp học sâu
và khả năng tính toán của máy tính đã giúp thị giác máy tính đạt được những thành tựu đáng kể trong lĩnh vực nhận dạng hình ảnh
Việc nhúng các file model sau khi training vào các thiết bị IoT như điện thoại, chip … thường có độ trễ lớn Thường việc triển khai sẽ gửi ảnh đến server thực hiện nhận dạng rồi trả lại về thiết bị IoT Tuy nhiên với sự ra đời của TensorFlow Lite việc nhúng các file model vào các thiết bị IoT sẽ trở nên dễ dàng, nó cho phép suy luận học máy trên các thiết bị IoT với độ trễ nhỏ và kích thước nhị phân nhỏ
Trang 10Đề tài “Xử lý ảnh, nhận biết phương tiện trong hệ thống IoT cho giao thông” đã được đưa ra với hi vọng ứng dụng các mô hình học sâu vào nhận dạng hình ảnh với số lượng các loại phương tiện hạn chế sự dụng chúng là bộ nhận dạng nhúng vào thiết bị IoT cụ thể ở đây là một ứng dụng di động nhận dạng một vài loại phương tiện
2 Mục đích của lu n v ậ ăn
Do thời gian hạn chế trong thời gian thực hiện nghiên cứu cùng dịch bệnh kéo dài, luận văn trước hết tập trung nghiên cứu mạng tích chập CNN và học chuyển giao (transfer learning) trong học máy đồng thời thực hiện cài đặt một mô hình huấn luyện về nhận dạng ảnh trong học sâu với số lượng phương tiện được hạn chế, và sử dụng TensorFlow Lite nhúng chúng vào thiết bị IoT (cụ thể là điện thoại) làm bộ nhận dạng cơ sở cho ứng dụng hỗ trợ nhận dạng phương tiện trên điện thoại thông minh mà không cần kết nối mạng internet
3 Cơ sở ữ d u liệ
Bộ cơ sở dữ liệu ảnh là một trong các thành phần quan trọng hàng đầu trong các phương pháp Học máy nói chung, được sử dụng để phục vụ cho quá trình tính toán tham số và huấn luyện, tinh chỉnh các mô hình Thông thường, bộ
dữ liệu càng lớn và càng được chọn lọc tỉ mỉ cẩn thận thì độ chính xác của mô hình càng được cải thiện, nhưng trong phạm vi luận văn này kích thước CSDL sẽ được hạn chế, cả về số lượng loại phương tiện sẽ nhận dạng cũng như số lượng ảnh chụp cho mỗi loại phương tiện đó Cụ thể:
- Số lượng phương tiện sẽ nhận dạng: 5 loại phương tiện như xe tải, xe bán tải…
- Số lượng ảnh gốc cho mỗi loại phương tiện: khoảng 150 ảnh, bao gồm các ảnh chụp phương tiện ở các góc độ khác nhau với nền tùy ý, có thể lấy từ nguồn trên mạng hoặc tự chụp bằng thiết bị camera cá nhân
4 B ộhuấn luyện nhận dạng phương tiện
Sử dụng phương pháp Học máy thuộc phương pháp học sâu, kết hợp sử dụng học chuyển giao với các mô hình đã được đánh giá tối ưu như google_v3, ImageNet .vv Thực hiện huấn luyện, so sánh kết quả thu được giữa các chương trình học chuyển giao khác nhau để lựa chọn file model tốt nhất nhúng vào thiết bị IoT
Trang 11Lưu file model dưới dạng *tflite để đưa vào thiết bị di động sử dụng cho việc dự đoán hình ảnh
5 Ứng dụng nhận dạng phương tiện
Một trong các mục tiêu của luận văn là xây dựng thành công một ứng dụng đơn giản trên điện thoại thông minh nhằm hỗ trợ người dùng nhận dạng phương tiện, với tỉ lệ bao nhiêu phần trăm chính xác, bộ dự đoán sẽ đưa ra ba kết quả cho người sử dụng
Lý do em chọn điện thoại thông minh làm nền tảng cho ứng dụng vì sự phổ biến cũng như tính cơ động của thiết bị, điều này giúp cho ứng dụng dễ dàng được phổ biến hơn từ đó hỗ trợ việc thu thập ảnh chụp cho cơ sở dữ liệu từ các cộng tác viên sử dụng ứng dụng Hệ thống cho phép người dung lựa chọn ảnh từ thư viện ảnh của máy điện thoại sau đó thông qua TensorFlow Lite tự động suy luận ra kết quả với thời gian nhanh và độ chính xác cao mà không cần kết nối internet hay sử dụng server Nếu cần cập nhật chỉ cần cập nhật file model thông qua cập nhật app hệ thống sẽ ngay lập tức được cập nhật
6 C u trúc c a luấ ủ ận văn
Chương 1: Trình bày về Mạng Nơ Ron Tích chập, một mạng chuyên được sử dụng trong các bài toán về nhận dạng qua hình ảnh Tìm hiểu về lịch sử phát triển của Mạng Nơ ron tích chập cũng như kiến trúc của các mạng - Nơ-ron này nhằm giải quyết các bài toán về nhận dạng ảnh
-Chương 2: Trình bày về học chuyển giao (Transfer learning), cung cấp các thực hiện học chuyển giao và cung cấp bộ application của Keras cho việc học chuyển giao Tìm hiểm về TensorFlow Lite, các lợi ích của TensorFlow Lite cũng như quy trình triển khai lưu một model định dạng TensorFlow Lite rồi sử dụng trình biên dịch TensorFlow Lite để dự đoán trên model được lưu
Chương 3: Trình bày về hệ thống xử lý hình ảnh nhận biết phương tiện trên điện thoại thông minh, sử dụng TensorFlow Lite để thực hiện dự đoán trên model được đào tạo trước đó Trình bày một số kết quả so sánh giữa các file model dựa trên các application học chuyển giao khác nhau Lựa chọn model phù hợp để nhúng vào ứng dụng nhận diện phương tiện Đưa ra một số nhận xét về kết quả dự đoán của ứng dụng
Chương 4: Kết luận thu được và hướng phát triển tiếp của đề tài
Trang 12CHƯƠNG 1. MẠNG NƠ-RON TÍCH CH P Ậ
Hình 1.1 Mạng nơ ron tích chập
Một mạng Nơ-rontích chập (ConvNet/CNN) là một thuật toán học sâu có thể lấy các hình ảnh đầu vào, tầm quan trọng của việc gán (trọng số và độ lệch có thể học được) tới các khía cạnh/đối tượng khác nhau trong ảnh và có khả năng phân biệt hình ảnh này với hình ảnh khác Yêu cầu chuẩn bị xử lý trong một ConvNet là thấp hơn nhiều so với các thuật toán phân loại khác Trong khi ở các thuật toán nguyên thủy các bộ lọc được thiết kế thủ công, với đủ sự đào tạo ConvNet có khả năng để học những bộ lọc/ các đặc tính Để thuận tiện khi nói đến mạng Nơ-rontích chập tôi xin phép sử dụng cụm từ viết tắt là CNN
CNN là một trong những mô hình mạng Học sâu phổ biến nhất hiện nay,
có khả năng nhận dạng và phân loại hình ảnh với độ chính xác rất cao, thậm chí còn tốt hơn con người trong nhiều trường hợp Mô hình này đã và đang được phát triển, ứng dụng vào các hệ thống xử lý ảnh lớn của Facebook, Google hay Amazon… cho các mục đích khác nhau như các thuật toán tagging tự động, tìm kiếm ảnh hoặc gợi ý sản phẩm cho người tiêu dùng
1.1. Kiến trúc m ng CNN ạ
Kiến trúc của một CNN tương tự như mô hình kết nối của các tế bào thần kinh trong não người và được lấy cảm hứng từ tổ chức của vỏ não thị giác Các tế bào thần kinh riêng lẻ chỉ phản ứng với các kích thích của một vùng hạn chế của trường thị giác gọi là trường tiếp nhận Tập hợp các trường như vậy chồng nên nhau để bao phủ toàn bộ khu vực trực quan
Trang 13● Tầng được kết nối đầy đủ (fully-connected)
Tầng kết nối đầy đủ giống như các mạng Nơ-ron thông thường, và tầng chập thực hiện tích chập nhiều lần trên tầng trước Tầng gộp có thể làm giảm kích thước mẫu trên từng khối 2x2 của tầng trước đó
1.1.1 Tầng Tích chập
Lớp tích chập là một tập các là một bản sao chép (feature map) của input ban đầu, nhưng được trích xuất ra các đặc tính (feature) cụ thể Sao chép như thế nào thì lại dựa vào một ma trận con (kernel) Đây là một ma trận sẽ quét qua ma trận dữ liệu đầu vào, từ trái qua phải, trên xuống dưới, và nhân tương ứng từng giá trị của ma trận đầu vào mà ma trận kernel rồi cộng tổng lại, đưa qua activation function (sigmoid, relu, elu, ), kết quả sẽ là một con số cụ thể, tập hợp các con số này lại là 1 ma trận nữa, chính là feature map
Hãy nhìn vào ví dụ sau cho dễ hiểu:
Trang 14Ta có 1 ma trận đầu vào input và 1 kernel:
Hình 1.3 Ma trận đầu vào mà ma trận kernel thực thiện tích chập
Thực hiện quét ma trận kernel qua từng phần tử input và tính toán trên phần nhân tương ứng rồi cộng các kết quả lại ta thu được một giá trị tại feature map
Hình 1.4 Cách quét và tính giá trị feature map [1]
Như trên hình ta thấy việc tính ra điểm đầu tiên dễ dàng được tính bằng nhân từng điểm của ma trận kernel với từng điểm tương ứng trên ma trận đầu vào sau đó cộng tổng tất cả chúng lại
1x1 + 1x0 + 1x1 + 0x0 + 1x1 + 1x1 + 1x0 + 0x1 + 0x0 + 1x1 = 4
Chúng ta thực hiện lần lượt cho đến hết với bước nhảy là 1pixel kết quả thu được thể hiện dưới đây:
Trang 15Hình 1.5 Kết quả thu được sau khi hoàn tất việc quét và tính
Như ta thấy nếu dịch (stride) từng pixel thì ma trận kernel sẽ quét 2 ô cạnh nhau nhưng nếu dịch 2 pixels (strike = 2) thì kernel sẽ quét ô số 1 và ô số 3 bỏ qua ô số 2 Điều này nhằm tránh lặp lại giá trị ở những ô vừa quét Ta cũng nhận thấy rằng nếu tăng strike hoặc kích thước kernel ma trận feature map sẽ ngày một nhỏ đi và ma trận kernel phải nằm trọn vẹn trong ma trận đầu vào Để giữ nguyên kích cỡ của feature map so với ban đầu Ta thêm 0 vào xung quanh ma trận đầu vào lúc này ma trận đầu vào, người ta gọi kĩ thuật này là padding Khi ta điều chỉnh padding = 1, tức là ta đã thêm 1 ô bọc xung quanh các cạnh của input, muốn phần bọc này càng dày thì ta cần phải tăng padding lên
Hình 1.6 Kích thước tăng lên của feature map sau khi thêm padding
Trong ví dụ Hình 1.5 ta thấy rằng kích thước của ma trận feature thu được
là 3x3 nhỏ hơn kích thức ma trận gốc trong ví dụ Hình 1.6 thì kích thước ma trận feature thu được là 5x5 bằng kích thước của ma trận gốc 5x5 Vậy kích thước của
Trang 16ma trận feature thu được sẽ được quyết định bởi phần padding thêm vào, trong ví
dụ Hình 1.6 là phần viền màu xám nét đứt, kích thước ma trận filter và bước dịch stride Ta thấy rằng kích thước của ma trận feature map sẽ phụ thuộc vào kích thước ma trận kernel, stride, padding, chúng được thể hiện theo công thức dưới dây: [2]
(1)trong đó:
: là kích thước ma trận feature map: là ma trận đầu vào
: kích thước khoảng trắng padding thêm vào: kích thước ma trận kernel
: strike của bộ lọc
1.1.2 Lớp Pooling
Tương tự như lớp Tích Chập, lớp Pooling có trách nhiệm giảm kích thước không gian của Đối tượng kết hợp Điều này là để giảm sức mạnh tính toán cần thiết để xử lý dữ liệu thông qua giảm kích thước, tránh overfitting Hơn nữa, nó rất hữu ích để trích xuất các đặc trưng nổi trội là bất biến xoay và vị trí, do đó duy trì quá trình đào tạo mô hình một cách hiệu quả
Pooling hoạt động gần giống với lớp tích chập, nó cũng có 1 cửa sổ trượt gọi là pooling window, cửa sổ này trượt qua từng giá trị của ma trận dữ liệu đầu vào (thường là các feature map trong convolutional layer), chọn ra một giá trị từ các giá trị nằm trong cửa sổ trượt
Có hai loại pooling window: Tổng hợp tối đa và Tổng hợp trung bình Max Pooling trả về giá trị lớn nhất từ phần hình ảnh được bao phủ bởi Kernel Mặt khác, Average Pooling trả về giá trị trung bình của tất cả các giá trị từ phần hình ảnh được bao phủ bởi Kernel
Max Pooling cũng hoạt động như một bộ triệt nhiễu Nó loại bỏ hoàn toàn các nhiễu hoạt động và cũng thực hiện khử nhiễu cùng với giảm kích thước Mặt khác, Average Pooling chỉ đơn giản là thực hiện giảm kích thước như một cơ chế khử nhiễu Do đó, chúng ta có thể thấy rằng Max Pooling sẽ được sử dụng rộng dãi hơn so với Average Pooling
Trang 17Cơ chế hoạt động được minh họa dưới hình dưới đây ở đây chúng ta thấy pooling window sẽ có strike = 2 để đảm bảo không trùng nhau và sử dụng M axPooling
Hình 1.7 Mô tả hoạt động của Max Pooling với strike là 2
1.1.3 Fully Connected
Hình 1.8 Lớp Fully Connected
Lớp Fully connected, một layer để tập hợp các feature layer mà ta đã tìm
ra, chuyển đổi dữ liệu từ 3D, hoặc 2D thành 1D, tức chỉ còn là một vector Còn một layer cuối cùng là output, số Nơ-ron của layer này phụ thuộc vào số output
mà ta muốn tìm ra
Có nhiều kiến trúc khác nhau của CNN có sẵn, là chìa khóa trong việc xây dựng các thuật toán có sức mạnh và sẽ cung cấp sức mạnh cho toàn bộ AI trong tương lai gần Một số trong số chúng đã được liệt kê dưới đây:
1 LeNet
2 AlexNet
3 VGGNet
Trang 184 GoogLeNet
5 ResNet
6 ZFNet1.2 L ch s phát tri n m ị ử ể ạng CNN
1.2.1 LeNet -5 (1998)
Authors: Yann Lecun, Yoshua Bengio[3]
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
● Fully connected 1: output = 84
● Fully connected 2: output = 10
● SoftMax layer, output = 10 (10 digits) Nhược điểm của LeNet
là mạng còn rất đơn giản và sử dụng sigmoid (or tanh) ở mỗi convolution layer mạng tính toán rất chậm
Trang 19có thể hiểu, phân tích, phát hiện và nhận dạng các vật thể trong một bức ảnh
Cụ thể hơn, mục tiêu chính của cuộc thi năm 2012 đặt ra mà các đội tham gia phải giải quyết là bài toán nhận dạng, với bộ dữ liệu huấn luyện lên đến 1,2 triệu ảnh được gán nhãn cho 1.000 hạng mục khác nhau Nhóm SuperVision, gồm các thành viên Alex Krizhevsky, Ilya Sutskever và Geoff Hinton, cùng với mạng AlexNet của họ đã đạt được kết quả đáng kinh ngạc là chiến thắng áp đảo nhóm đứng thứ hai với độ chính xác chênh lệch đến hơn 10% (15,31% và 26,17%) [5] Điều đặc biệt là mạng huấn luyện này chỉ nhận dữ liệu đầu vào là các giá trị điểm ảnh thô và không hề áp dụng bất kỳ phương pháp trích chọn đặc trưng nào, trong khi mọi hệ thống nhận dạng thị giác truyền thống đều phải gồm nhiều giai đoạn trích chọn đặc trưng hết sức tỉ mỉ, cẩn thận, thậm chí phải áp dụng nhiều mẹo để cải thiện chất lượng nhận dạng Thiết kế kiến trúc mạng huấn luyện gần như hộp đen của máy bay, cộng với khả năng tự học các đặc trưng thông qua các lớp ẩn, đã khiến CNN nói riêng và Học sâu nói chung trở thành giải pháp mạnh mẽ nhất cho bài toán nhận dạng và phân loại vật thể cho tới bây giờ
Từ năm 2012, mạng CNN trở thành cái tên gắn liền với cuộc thi và đã có rất nhiều mạng CNN nổi bật khác xuất hiện trong những năm sau đó VGG, GoogleNet hay Microsoft ResNet… Các mạng CNN càng ngày càng đạt độ chính xác cao hơn, tuy nhiên chúng có độ phức tạp và độ sâu lớn hơn rất nhiều,
ví dụ mạng CNN có thể coi là tốt nhất hiện nay – ResNet – đã sử dụng đến 152
Trang 20lớp tính toán Sự phức tạp này yêu cầu khả năng tính toán lớn, thời gian huấn luyện lâu, và gây nhiều khó khăn trong việc cài đặt triển khai hệ thống, do đó mạng AlexNet đã được chọn làm cơ sở phát triển phiên bản 26 thử nghiệm ban đầu và việc cài đặt các mạng huấn luyện khác nhằm nâng cao chất lượng nhận dạng của hệ thống sẽ được thử nghiệm trong tương lai
AlexNet là một mạng CNN training với một số lượng parameter rất lớn (60 million) so với LeNet Một số đặc điểm:
● Sử dụng relu thay cho sigmoid (or tanh) để xử lý với non-linearity Tăng tốc độ tính toán lên 6 lần
● Sử dụng dropout như một phương pháp regularization mới cho CNN Dropout không những giúp mô hình tránh được overfitting mà còn làm giảm thời gian huấn luyện mô hình
● 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
● Sử dụng kỹ thuật data augmentation để tạo thêm 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
Hình 1.10 Kiến trúc mạng Alexnet (2012) [6]
● Kiến trúc 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):
● Input shape 227x227x3
Trang 21● Conv 2: kernel :3x3x96, stride = 1, padding = “same”, number filter =
256, activation = relu, output = 27x27x256
● Maxpooling layer: pooling size = 3x3, stride=2, padding = “same”, output = 13x13x256
● №rmalize layer
● Layer 3:
● Conv 3: kernel :3x3x256, stride = 1, padding= “same”, number filter =
384, activation = relu, output = 13x13x384
● Layer 4:
● Conv 4: kernel: 3x3x384, stride = 1, padding = “same”, number filter =
384, activation= relu, output = 13x13x384
● Layer 5:
● Conv 5: kernel 3x3x384, stride = 1, padding = “same”, number filter =
256, activation = relu, output = 13x13x256
● Pooling layer: pooling size = 3x3, stride =2, padding = “same”, output
Trang 221.2.3 ZFNet (2013)
Author: Zeiler and Fergus [3]
ZFNet là một mạng CNN thắng trong ILSVRC 2013 với top-5 error rate của 14.8% ZFNet có cấu trúc rất giống với AlexNet với 5layer convolution, 2 fully connected layer và 1 output softmax layer Khác biệt ở chỗ kernel size ở mỗi Conv layer Một số đặc điểm chính:
● Tương tự AlexNet nhưng có một số điều chỉnh nhỏ
● AlexNet training trên 15m image trong khi ZF training chỉ có 1.3m image
● Sử dụng kernel 7x7 ở first layer (AlexNet 11x11) Lý do là sử dụng kernel nhỏ hơn để giữ lại nhiều thông tin trên image hơn
● Tăng số lượng filter nhiều hơn so với AlexNet
● Training trên GTX 580 GPU trong 20 ngày
Trang 23● Fully connected 1: activation = relu , output =4096 “ ”
● Fully connected 2: activation = relu , output =4096 “ ”
● Softmax layer for classifier ouput = 1000
1.2.4 VGGNet (2014)
Authors: Author: Simonyan and Zisserman; runners in ILSVRC 14.[3] Sau AlexNet thì VGG ra đời với một số cải thiện hơn, trước tiên là model VGG sẽ deeper hơn, tiếp theo là thay đổi trong thứ tự conv Từ LeNet đến AlexNet đều sử dụng Conv-maxpooling còn VGG thì sử dụng 1 chuỗi Conv liên tiếp Conv-Conv-Conv ở middle và end của architect VGG Việc này sẽ làm cho việc tính toán trở nên lâu hơn nhưng những feature sẽ vẫn được giữ lại nhiều hơn
so với việc sử dụng maxpooling sau mỗi Conv Hơn nữa hiện nay với sự ra đời của GPU giúp tốc độ tính toán trở nên nhanh hơn rất nhiều lần thì vấn đề này không còn đáng lo ngại VGG cho small error hơn AlexNet trong ImageNet Large Scale Visual Recognition Challenge (ILSVRC) năm 2014 VGG có 2 phiên bản là VGG16 và VGG19
Trang 24Hình 1.12 Kiến trúc mạng VGGNet (2014) [6]
● Architect của VGG16 bao gồm 16 layer :13layer Conv (2layer conv, 3layer conv-conv-conv) đều có kernel 3x3, sau mỗi layer conv là Maxpooling downsize xuống 0.5, và 3 layer fully connection VGG19 tương tự như VGG16 nhưng có thêm 3layer convolution ở 3layer conv cuối (thành 4 conv stack với nhau)
conv-● Detail parameter VGG16
Hình 1.13 Kiến trúc mạng VGG16
Trang 25● Sử dụng kernel 3x3 thay vì 11x11 ở lexnet (7x7 ZFNet) Kết hợp 2 Aconv 3x3 có hiệu quả hơn 1 cov 5x5 về receptive field giúp mạng deeper hơn lại giảm tham số tính toán cho model
● 3 Conv 3x3 có receptive field same 1 conv 7x7
● Input size giảm dần qua các conv nhưng tăng số chiều sâu
● Làm việc rất tốt cho task classifier và localizer (rất hay được sử dụng trong object detection)
● Sử dụng relu sau mỗi conv và training bằng batch gradient descent
● Có sử dụng data augmentation technique trong quá trình training
● Training với 4 Nvidia Titan Black GPUs trong 2-3 tuần
1.2.5 GoogleNet (2014)
Authors: Szegedy et al in 2014 and is the winner of ILSVRC 14 [3] Năm 2014, Google publish một mạng neural do nhóm research của họ phát triển có tên là googleNet Nó performance tốt hơn VGG, googleNet 6.7% error rate trong khi VGG là 7.3% Ý tưởng chính là họ tạo ra một module mới có tên là inception giúp mạng training sâu và nhanh hơn, chỉ có 5 triệu tham số so với alexnet là 60m nhanh hơn gấp 12 lần
Inception module là một mạng CNN giúp training wider (thay vì thêm nhiều layer hơn vì rất dễ xảy ra overfitting + tăng parameter người ta nghĩ ra tăng deeper ở mỗi tầng layer) so với mạng CNN bình thường Mỗi layer trong CNN truyền thống sẽ extract các thông tin khác nhau Output của 5x5 conv kernel sẽ khác với 3x3 kernel Vậy để lấy những thông tin cần thiết cho bài toán của chúng
ta thì nên dùng kernel size như thế nào? Tại sao chúng sử dụng tất cả ta và sau đó
để model tự chọn Đó chính là ý tưởng của Inception module, nó tính toán các kernel size khác nhau từ một input sau đó concatenate nó lại thành output
Trong inception người ta dùng conv kernel 1x1 với 2 mục đích là giảm tham số tính toán và dimensionality reduction Dimensionality reduction có thể hiểu làm giảm chiều sâu của input (ví dụ input 28x28x100 qua kernel 1x1 với filter = 10 sẽ giảm chiều sâu về còn 28x28x10) Giảm chi phí tính toán có thể hiểu qua ví dụ sau:
Trang 26● Input shape 28x28x192 qua kernel 5x5 với 32 thì output là
28x28x32(padding same) thì tham số tính tốn là (5x5x192) * (28x28x32)
= 120 triệu
● Input shape 28x28x192 qua kernel 1x1x192 filter = 16, output =
28x28x16 tiếp tục với kernel 5x5x32 filter = 16 được output = 28x28x32
Tổng tham số tính tốn: (28x28x16)192 + (28x28x32) (5x5x16) = 2.4 +
10 = 12.4 million Ta thấy với cùng output là 28x28x32 thì nếu dùng
kernel 5x5x192 với 32 filter thì sẽ cĩ tham số gấp 10 lần so với sử dụng
kernel 1x1x192 sau đĩ dùng tiếp 1 kernel 5x5x16 với filter 32 Inception
hiện giờ cĩ 4 version, ta sẽ cùng tìm hiểu sơ qua các version:
Hình 1.14 Kiến trúc Inception Module [6]
● Inception v1: cĩ 2 dạng là naivie và dimension reduction Khác biệt
chính đĩ là version dimension reduction nĩ dùng conv 1x1 ở mỗi layer để
giảm độ sâu của đầu vào giúp model cĩ ít tham số hơn Inception nạve cĩ
architect gồm 1x1 conv,3x3 conv, 5x5 conv và 3x3 maxpooling
Hình 1.15 Kiến trúc Inception V1 [6]
Trang 27● Inception v2: Cải thiện version 1, thêm layer batchnormalize và giảm Internal Covariate Shift Ouput của mỗi layer sẽ được normalize về Gaussian N (0,1) Conv 5x5 sẽ được thay thế bằng 2 conv 3x3 để giảm computation cost
Hình 1.16 Kiến trúc Inception V2 [6]
● Inception v3 : Điểm đáng chú ý ở version này là Factorization Conv 7x7 sẽ được giảm về conv 1 dimesion là (1x7),(7x1) Tương tự conv 3x3 (3x1,1x3) Tăng tốc độ tính toán Khi tách ra 2 conv thì làm model deeper hơn
Hình 1.17 Kiến trúc Inception V3 [6]
Trang 28● Inception v4 : là sự kết hợp Inception và Resnet Detail googleNet architect
Hình 1.18 Kiến trúc Inception V4 [6]
● GoogleNet gồm 22 layer, khởi đầu vẫn là những simple convolution layer, tiếp theo là những block của inception module với maxpooling theo sau mỗi block Một số đặc điểm chính
● Sử dụng 9 Inception module trên toàn bộ architect Làm model deeper hơn rất nhiều
● Không sử dụng fully connection layer mà thay vào đó là average pooling từ 7x7x1024 volume thành 1x1x1024 volume giảm thiểu được rất nhiều parameter
● Ít hơn 12x parameter so với Alexnet
● Auxiliary Loss được add vào total loss (weight =0.3) Nhưng được loại
Trang 29layer làm cho model deeper hơn Không giống VGG, resNet có depth sâu hơn như 34,55,101 và 151 Resnet giải quyết được vấn đề của deep learning truyền thống, nó có thể dễ dàng training model với hàng trăm layer Để hiểu ResNet chúng ta cần hiểu vấn đề khi stack nhiều layer khi training, vấn đề đầu tiên khi tăng model deeper hơn gradient sẽ bị vanishing/explodes Vấn đề này có thể giải quyết bằng cách thêm Batch Normalization nó giúp normalize output giúp các hệ
số trở nên cân bằng hơn không quá nhỏ hoặc quá lớn nên sẽ giúp model dễ hội tụ hơn Vấn đề thứ 2 là degradation, Khi model deeper độ chính xác bắt đầu bão hòa(saturated) thậm chí là giảm Như hình vẽ bên dưới khi stack nhiều layer hơn thì training error lại cao hơn ít layer như vậy vấn đề không phải là do overfitting Vấn đề này là do model không dễ training khó học hơn, thử tượng tượng một training một shallow model, sau đó chúng ta stack thêm nhiều layer, các layer sau khi thêm vào sẽ không học thêm được gì cả (identity mapping) nên độ chính xác
sẽ tương tự như shallow model mà không tăng Resnet được ra đời để giải quyết vấn đề degradation này
Hình 1.19 So sánh tỉ lệ chính xác với việc tang layers [6]
ResNet có architecture gồm nhiều residual block, ý tưởng chính là skip layer bằng cách add connection với layer trước Ý tưởng của residual block là feedforward x (input) qua một số layer conv-max-conv, ta thu được F(x) sau đó add thêm x vào H(x) = F(x) + x Model sẽ dễ học hơn khi chúng ta thêm feature
từ layer trước vào
Trang 30Hình 1.20 ResNets Block [6]
● Sử dụng batch Normalization sau mỗi Conv layer
● Initialization Xavier/2
● Training với SGD + momentum (0.9)
● Learning rate 0.1, giảm 10 lần nếu error ko giảm
● Mini batch size 256
“transfer learning” (học chuyển giao) Tiếp theo Tôi xin trình bày về kỹ transfer learning
Trang 31CHƯƠNG 2. H C CHUY N GIAO (TRANSFER LEARNING) VÀ Ọ Ể
TENSORFLOW LITE 2.1 H c Chuy n Giao (Transfer learning) ọ ể
Các mô hình mạng CNN có thể mất vài ngày hoặc thậm chí vài tuần để đào tạo trên các tập dữ liệu rất lớn
Khi train model từ đầu các model (mô hình) nhận diện hình ảnh, Việc này
sẽ cần rất nhiều sức mạnh từ máy tính Nếu không có GPU khủng, nói chung là cấu hình mạnh thì sẽ mất rất nhiều thời gian Chưa kể việc phải viết từ đầu cũng
là một thứ không chắc là hay trừ khi cần phải tối ưu nó một cách cụ thể., Thế nên người ta mới nghĩ tới Transfer Learning, nó là kĩ thuật giúp rút ngắn thời gian (và sức mạnh máy tính) cần thiết để train model bằng cách sử dụng một model nền có sẵn, tạm gọi là model được đào tạo gần hoàn chỉnh, sau đó train thêm chút xíu nữa bằng dữ liệu thu thập để có thể phân loại theo yêu cầu Quá trình này là sử dụng lại trọng số mô hình từ các mô hình được đào tạo trước đã được phát triển cho bộ dữ liệu điểm chuẩn thị giác máy tính tiêu chuẩn, chẳng hạn như các tác vụ nhận dạng hình ảnh ImageNet Các mô hình hoạt động tốt nhất có thể được tải xuống và sử dụng trực tiếp hoặc tích hợp vào một mô hình mới cho các vấn đề về thị giác máy tính của từng yêu cầu riêng biệt
Hiện nay, phương pháp phổ biến thường được áp dụng khi huấn luyện mô hình với một bộ CSDL tương đối nhỏ là sử dụng Học chuyển giao để tận dụng một mạng CNN đã được huấn luyện trước đó với bộ dữ liệu rất lớn như ImageNet (1,2 triệu ảnh với 1.000 nhãn đánh dấu) Phương pháp này sử dụng mạng CNN theo hai cách chính như sau:
- Mạng CNN này sẽ chỉ được sử dụng như một bộ trích chọn đặc trưng cho bộ CSDL huấn luyện mới, bằng cách thay thế các lớp Fully connected ở cuối -mạng và giữ cố định các tham số cho toàn bộ các lớp còn lại của mạng
- Không chỉ thay thế và huấn luyện lại bộ nhận dạng cuối cùng của mạng CNN, mà đồng thời ta thực hiện tối ưu, tinh chỉnh (Fine tune) một vài hoặc tất cả -các lớp trong mạng
Ý tưởng của việc tái sử dụng mạng CNN là dựa trên nhận định rằng các đặc trưng được học trong các lớp đầu của mạng là các đặc trưng chung nhất, hữu dụng với phần lớn bài toán, ví dụ: đặc trưng về cạnh, hình khối hay các khối