Chương I Giới thiệu: Khái quát về thực trạng sử dụng hệ thống tính tiền tự động, các khái niệm thuật toán có liên quan và tên đề tài được thực hiện. Trình bày mục tiêu, giới hạn, phương pháp, đối tượng và phạm vi nghiên cứu của đề tài. Chương II Cơ sở lý thuyết: Trình bày những lý thuyết đã nghiên cứu và tổng hợp về thuật toán mạng tích chập CNN mobileNet và hệ thống tính tiền tự động. Chương III Thiết kế hệ thống: Ý tưởng, quy trình thiết kế hệ thống (phần cứng, phần mềm).
Chương IV Kết quả: Trình bày kết quả đạt được của đề tài, sản phẩm thực tế khi thi công và các chức năng hoạt động của hệ thống. Chương V Kết luận và hướng phát triển: Trình bày ưu, nhược điểm của đề tài đồng thời đề ra các hướng pháp triển xa hơn, giúp đề tài hoàn thiện hơn. LÝ THUYÊT VỀ MẠNG TÍCH CHẬP CNN MOBILENET V2 2. Mạng tích châp CNN mobileNet V2 Convolution Neural Network (CNN) là một loại mô hình học sâu được thiết kế đành cho việc xử lý ảnh và phân đoạn hình ảnh.
CNN chủ yếu được sử dụng để trích xuất đặc chưng từ bộ dữ liệu dạng lưới. Trong lĩnh vực học máy, các loại mạng nơ-ron đều được thiết kế cho những mục đích cụ thể như: xử lý dữ liệu hình ảnh, âm thanh, văn bản,… CNN được thiết kế để thực hiện việc phân loại hình ảnh. Trong đó tùy thuộc vào yêu cầu của đề tài, mạng CNN cũng được thiết kế cho từng mục đích khác nhau. Trong đó sau khi phân tích các yếu tố hiệu suất và tài nguyên hệ thống, tác giả chọn mạng mobileNetV2 [6].
Mạng MobileNet là một kiến trúc mạng nơ-ron tích chập được ra mắt vào năm 2017 do đội ngũ của Google Inc phát triển. Nó thiết kế một cách đặc biệt nhỏ gọn và hiệu quả để chạy trên các thiết bị có tài nguyên hạn chế, bao gồm điện thoại, máy tính nhúng hay một số thiết bị IOT yêu cầu hiệu suất thấp. Kiến trúc này sử dụng một cơ chế gọi là Depthwise Separable Convotutions để giảm tài nguyên tính toán, số lượng tham số mà lại có thể trích xuất được đặc trưng một cách tách biệt trên các đầu vào khác nhau [7]. Tuy nhiên, phiên bản MobileNetV1 vẫn còn những hạn chế về hiệu suất và khả năng học.
Năm 2018, phiên bản thứ 2 của nó cũng ra đời: MobileNetV2 là một bản cải tiến lớn so với MobileNetV1, mang lại hiệu suất cao hơn nhưng vẫn giữ được sự nhẹ nhàng và khả năng tương thích với các thiết bị. Cấu trúc mạng tích châp CNN mobileNetV2 Mô hình kiến trúc mạng CNN: Lớp tích chập (Convolution layer - Conv): Loại tích chập phổ biến nhất được sử dụng là lớp tích chập 2D và thường được viết tắt là conv2D. 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ì sự gắn 4 kết giữa các pixel bằng cách tìm hiểu các tính năng hình ảnh bằng việc sử dụng các ô vuông nhỏ của dữ liệu đầu vào.1 Công thức và thuât toán tích châp[12] Như ví dụ ở hình trên, Kết quả (output) cho thấy vị trí trên ảnh đầu vào (input) giống với ảnh nhân (kernel).
Nhân còn được gọi là bộ lọc (filter) Khi bộ lọc có tính đối xứng thì phép tích chập trùng với phép tương quan chéo (cross-correlation). Trong các thư viện Học máy, phép tích chập được cài đặt bằng phép tương quan chéo: ( f * g )[ x, y ] f [i, j ]g[ x i, y j ] (1.3) i , j Lớp Conv2D chứa C(out) bộ lọc (kích thước 3 x 3 x C(in), 5 x 5 x C(in),.) với C(in) là số kênh đầu vào. 5 Đầu vào được nhân chập với từng bộ lọc và cho qua hàm kích hoạt tạo ra các bản đồ đặc trưng (feature map). Ghép các bản đồ đặc trưng lại với nhau được ảnh đầu ra của lớp Conv2D gồm C(out) kênh.2 Output của lớp Conv2D[13] Các tham số cần thiết khi sử dụng Conv2D: Kernel size/shape: Kích thước/ kiểu của kernel quyết định phạm vi quét qua của phép tích chập.
Kích thước này được xác định bằng số hàng và số cột của ma trận kernel và có thể thay đổi tùy theo bài toán cụ thể. Kernel lớn hơn có thể học các đặc trưng lớn hơn và thông tin tổng quát, trong khi kernel nhỏ hơn tập trung vào các đặc trưng nhỏ hơn và thông tin chi tiết hơn. Stride – Bước nhảy: Stride xác định số pixel mà kernel di chuyển qua trên đầu vào trong mỗi bước tích chập. Padding – Đường viền: Padding là việc thêm giá trị 0 hoặc các giá trị biên vào xung quanh hình ảnh ban đầu trước khi áp dụng phép tích chập.
Padding giúp bảo toàn thông tin ở các cạnh của hình ảnh và duy trì kích thước của đầu ra sau mỗi lớp tích chập trong mạng CNN. Dilation – Giãn nở: Dilation là một kỹ thuật cho phép mở rộng vùng nhìn thấy của kernel mà không làm thay đổi kích thước của kernel chính. Kỹ thuật này giúp mô hình nhận biết các đặc trưng lớn hơn hoặc tiếp cận thông tin từ các vị trí xa hơn trong ảnh. 6 Hàm phi tuyến - ReLU: Lớp ReLU này là một hàm kích hoạt trong mạng CNN, được gọi là hàm kích hoạt.
Nó mô phỏng sự truyền xung qua các nơ-ron giống như tỷ lệ truyền qua axon. Có nhiều hàm kích hoạt khác nhau như Leaky ReLU, Sigmoid, Leaky, Maxout, và nhiều loại khác. Lớp rút gọn - Pooling layer Hình 2.3 Lớp rút gọn - Pooling layer[14] Lớp liên kết đầy đủ (Fully Connected Layer – FC): Lớp này có nhiệm vụ xử lý kết quả sau khi lớp Convolutional và lớp Pooling đã nhận được ảnh đầu vào. Ta sẽ thu được một mô hình có chức năng đọc dữ liệu từ ảnh.
Để kết nối chúng cũng như tạo ra đầu ra phức tạp hơn, ta dùng lớp Fully Connected. Ngoài ra, nếu lớp này có dữ liệu hình ảnh, lớp này có thể biến chúng thành các vector chưa được phân loại để tìm ra các ảnh có chất lượng cao nhất.4 Ví dụ một mạng CNN đơn giản[15] Tổ hợp các khối gồm lớp conv và lớp pool nối tiếp nhau để tính toán đặc trưng ảnh, Các đặc trưng về sau càng có tính khái quát cao. 7 Sau cùng là các lớp FC để biến đổi đặc trưng và đầu ra (dùng để phân lớp, hồi quy). Mô hình kiến trúc mạng mobileNet: Như đã biết, CNN là một nền tảng quan trọng trong lĩnh vực Computer vision.
Có rất nhiều kiến trúc CNN khác nhau đã ra đời: LeNet, AlexNet, VGG, GoogLeNet, ResNet… Mỗi một kiến trúc CNN đều có điểm mạnh riêng, được điều chỉnh cho từng mục đích khác nhau. Song song với đó là sự nâng cấp, phát triển mạnh mẽ về phần cứng (GPU, CPU), điều này giúp cho các mô hình CNN ngày càng sâu hơn. Các kiến trúc từ đó cũng nhiều tham số hơn, độ phức tạp ngày càng lớn nhằm tăng độ chính xác lên nhiều hơn. Tuy nhiên, nếu chúng ta không đi theo xu hướng đó mà cần một mô hình nhỏ, nhẹ, nhanh và độ chính xác vẫn có thể đảm bảo (không cao) để có thể huấn luyện mô hình trong thời gian ngắn mà độ chính xác nằm trong mức chấp nhận.
Và đó là yêu cầu của bài toán nhận điện trái cây mà mô hình nhận diện trái cây cần huấn luyện dữ liệu mới liên tục và hoạt động trên một thiết bị có hiệu năng thấp. Và MobileNets như một giải pháp phù hợp được giới thiệu bởi google vào năm 2017, là một mạng nơ-ron CNN nhẹ tập trung vào các thiết bị di động và thiết bị nhúng, và yêu cầu sự nhanh chóng với ba phiên bản đã được giới thiệu: v1, v2 và v3. Đề tài chọn MobileNet V2 làm mô hình cho bài toán phân loại trái cây. So sánh với mạng CNN truyền thống, các thông số mô hình và tính toán được giảm đáng kể dưới tiền đề giảm nhẹ độ chính xác.
MobileNets có thể rút gọn lại vài triệu tham số nhưng vẫn giữ được độ chính xác ổn, đó là nhờ sử dụng một cơ chế gọi là Depthwise Separable Convolutions.5 Depthwise Separable Convolutions (Mobilenet)[10] Standard Convolutions 8 Hình 2.6 Standard Convolution layer [16][17] Đầu vào trong ví dụ về một Convolution layer thông thường ở trên là một Feature map 5x10x10 với bộ lọc có kích thước 5x3x3. Sau đó thực hiện phép nhân tích chập (padding = 1, stride=1) ra có output: 1x10x10. Ta cần thực hiện 3x3 = 9 phép nhân. Như vậy, số tính toán đã thực hiện là 5 x (3 x 3 x 10 x 10) = 4500.
Trong một lớp convolutional, ta sử dụng nhiều bộ lọc. Trong trường hợp này có 64 bộ lọc, vì thế số tính toán cần thực hiện là 64x4500 = 28800 phép tính. Nếu một hình ảnh được đưa vào tính toán với độ phân giải 3x1080x1080 thì con số cần phải tính lên tới khoảng 55,987,200 phép tính. Đây là một con số quá lớn.
Depthwise Separable Convotutions [9] Mạng MobileNets sử dụng Depthwise Separable Convotutions. Đây là một Depthwise convolution theo sau bởi một pointwise convolution: 9 Hình 2.7 Cấu trúc của Depthwise Separable Convotutions [8] Depthwise convolution: là một Channel-wise DK×DK spatial convolution. Như hình trên, có tổng 5 đầu vào input nên sẽ có 5 DK×DK spatial convolution. Pointwise convolution: là một convolution có kích thước 1x1.8 Depthwise Separable Convolution [16][17] Với M là số lượng kênh đầu vào, N là số lượng kênh đầu ra, Dk là Kernel size, Df là Feature map size (input có kích thước 244, nên Feature map ban đầu sẽ có Df là 224).
Chi phí tính toán của phép tính Depthwise convolution: Dk Dk M D f D f (1) Chi phí tính toán = Số kênh đầu vào X Chiều cao X Chiều Rộng X Hệ số Đa Chiều Sâu Trong đó, Số kênh đầu vào (M) là số lượng kênh đặc chưng đầu vào; Chiều cao và Chiều rộng (Df) thể hiện kích thước đặc chưng đầu vào; Hệ số đa chiều sâu (Dk) là tỷ lệ mà convolution theo chiều sâu giảm chi phí tính toán so với convolution tiêu chuẩn. [7] 11 Phép convolution theo chiều sâu (depthwise convolution) đem lại kết quả rất tối ưu so với phép convolution tiêu chuẩn. Tuy nhiên, nó đơn giản chỉ lọc các kênh đầu vào mà không kết hợp chúng với nhau để tạo ra các đặc trưng mới. Do đó, cần bổ sung thêm lớp mới vào để cải thiện.
Vì thế, thực hiện sự kết hợp tuyến tính của đầu ra của phép convolution theo chiều sâu thông qua phép convolution 1 × 1 để tạo ra những đặc trưng mới này. Sự kết hợp giữa convolution theo chiều sâu và convolution 1 × 1 (pointwise) được gọi là convolution phân tách theo chiều sâu (Depthwise Separable Convolution).