4. Đề nghị cho bảo vệ hay không?
3.3 Kiến trúc mạng và tổng thông số của mô hình
3.3.1 Pre-trained Model VGG16
Những năm gần đây, Deep Learning phát triển cực nhanh dựa trên lượng dữ liệu training khổng lồ và khả năng tính toán ngày càng được cải tiến của các máy tính. Các kết quả cho bài toán phân loại ảnh ngày càng được nâng cao. Bộ cơ sở dữ liệu thường được dùng nhất là ImageNet với 1,2 triệu ảnh cho 1000 lớp (classes) khác nhau. Rất nhiều các mô hình Deep Learning đã giành chiến thắng trong các cuộc thi
ILSVRC (ImageNet Large Scale Visual Recognition Challenge). Có thể kể ra một vài: AlexNet, ZFNet, GoogLeNet, ResNet, VGG [5]. Đây là các pre-trained model với những tham số đã được huấn luyện sẵn với bộ dữ liệu ImageNet.
VGG16 là mạng convolutional neural network được đề xuất bởi K. Simonyan and A. Zisserman, University of Oxford. Mô hình sau khi train bởi mạng VGG16 đạt độ chính xác 92.7%, top-5 test trong dữ liệu ImageNet gồm 14 triệu hình ảnh thuộc 1000 lớp khác nhau. Mạng VGG16 được coi là một trong những kiến trúc mô hình máy học tuyệt vời cho đến nay. Điều độc đáo nhất về VGG16 là thay vì có một số
lượng lớn siêu tham số , nó tập trung vào có các lớp tích chập có bộ lọc 3x3 với bước
trượt bằng 1 và luôn sử dụng cùng một lớp đệm và lớp maxpool với bộ lọc 2x2 bước trượt bằng 2 [6]. Nó tuân theo cấu trúc này trong toàn kiến trúc của mạng. Cuối cùng, nó có 2 FC (các lớp được kết nối đầy đủ) theo sau là một hàm softmax cho đầu ra. 16 trong VGG16 liên quan đến việc nó có 16 lớp có trọng số. Đây là một mạng khá lớn và nó có khoảng 138 triệu thông số .
Vì tính chất trích xuất các feature rất tốt của mạng này nên ta sẽ sử dụng cấu trúc VGG16 ứng dụng vào bài toán phát hiện sản phẩm lỗi.
Hình 3.11 Kiến trúc của mạng VGG16
3.3.2 Học chuyển giao và fine-tuning 3.3.2.1 Học chuyển giao 3.3.2.1 Học chuyển giao
Học chuyển giao (Transfer Learning) là quá trình khai thác, tái sử dụng các tri thức đã được học tập bởi một mô hình huấn luyện trước đó vào giải quyết một bài toán mới mà không phải xây dựng một mô hình huấn luyện khác từ đầu [6]. Đây được coi là một trong những kỹ thuật được xếp mức độ quan trọng hàng đầu trong cộng đồng khoa học dữ liệu, nhằm hướng tới mục đích chung là phát minh ra một thuật toán học tự động mạnh mẽ. 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ộ cơ sở dữ liệu 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ộ cơ sở dữ liệu 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 [8]. 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 [2]. Ý 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 màu… Các lớp sau đó của mạng CNN sẽ nâng dần độ cụ thể, riêng biệt của các chi tiết phục vụ cho bài toán nhận dạng cần giải quyết. Do đó, ta hoàn toàn có thể tái sử dụng lại các lớp đầu của mạng CNN mà không phải mất nhiều thời gian và công sức huấn luyện từ đầu [8].
Vai trò của Transfer Learning:
-Cải thiện độ chính xác và đẩy nhanh quá trình huấn luyện.
Hình 3.12 Sơ đồ so sánh hiệu suất mô hình trước và sau khi á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). -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ô hình đượ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ới cùng tác vụ phân loại sẽ giúp các mô hình được huấn luyện dự báo tốt hơn với dữ liệu mới vì mô hình được học trên cả 2 nguồn tri thức đó là dữ liệu huấn luyện và dữ liệu mà nó đã được học trước đó [6].
3.3.2.2 Fine-tuning
Tinh chỉnh (Fine-tuning) là sử dụng các trọng số đã được huấn luyện từ một trong các mô hình ConvNet như là khởi tạo cho mô hình mới với dữ liệu mới và sử dụng lan truyền ngược để huấn luyện lại toàn bộ mô hình mới hoặc huân luyện lại một số layer cuối (cũng là để tránh quá khớp (overfitting) khi mà mô hình quá phức tạp hoặc/và dữ liệu không đủ lớn). Việc này được dựa trên quan sát rằng những layers đầu trong ConvNet thường giúp trích ra những đặc tính chung của ảnh (các cạnh - edges, còn được gọi là low-level features), các layers cuối thường mang những đặc trưng riêng của cơ sở dữ liệu (CSDL) (và được gọi là high-level features) [2]. Vì vậy, việc huấn luyện các layer cuối mang nhiều giá trị hơn.
Đối với Fine-tuning, ta chỉ giữ lại phần ConvNet trong CNN và bỏ đi các lớp kết nối đầy đủ. Sau đó thêm các lớp kết nối đầy đủ mới vào đầu ra của ConvNet.
Hình 3.13 Bỏ Fully connected layers ở model VGG16 đi và thêm vào Fully connected layers mới
Khi train model ta chia làm 2 giai đoạn:
Giai đoạn 1: Vì các fully connected layer ta mới thêm vào có các hệ số được khởi tạo ngẫu nhiên tuy nhiên các layer trong ConvNet của pre-trained model đã được train với ImageNet dataset nên ta sẽ không train (đóng băng/freeze) trên các layer
trong ConvNet của model VGG16. Sau khoảng 20-30 chu kì thì các hệ số ở các layer mới đã được học từ dữ liệu thì ta chuyển sang giai đoạn 2.
Hình 3.14 Freeze các layer của pre-trained model, chỉ train ở các layer mới Giai đoạn 2: Ta sẽ unfreeze các layer trên ConvNet của pre-trained model và train trên các layer của ConvNet của pre-trained model và các layer mới. Ta có thể unfreeze tất cả các layer trong ConvNet của VGG16 hoặc chỉ unfreeze một vài layer
Hình 3.15 Unfreeze các layer của pre-trained model và train toàn bộ layer Có 2 lưu ý khi sử dụng pre-trained model:
- Vì pre-trained model đã được train với kích thước ảnh cố định, nên khi dùng pre- trained model ta cần resize lại ảnh có kích ảnh bằng kích thước mà ConvNet của pre- trained model yêu cầu.
- Hệ số learning rate của ConvNet của pre-trained model nên được đặt với giá trị nhỏ vì nó đã được học ở pre-trained model nên ít cần cập nhật hơn so với các layer mới thêm [6].
3.4 Tối ưu hóa các mạng cần thiết 3.4.1 Các loại Gradient Descent 3.4.1 Các loại Gradient Descent
Huấn luyện mạng lưới thần kinh tương tự như dạy con người cách học. Chúng tôi cung cấp dữ liệu (thông tin) cho mô hình, nó dự đoán một cái gì đó và phản hồi cho chúng tôi xem dự đoán có chính xác hay không. Điều này lặp lại cho đến khi mô hình chắc chắn đạt đến một mức độ chính xác mà chúng tôi mong đợi. Mỗi lần lặp, tối ưu hóa cập nhật các tham số trọng lượng để giảm thiểu chức năng mất [7]. Để đạt được điều này, chúng ta phải sử dụng Gradient Descent (GD) hoặc các biến thể của Gradient Descent. GD là một thuật toán tối ưu hóa học máy lặp để giảm giá trị hàm mất. Một số loại GD như:
- Stochastic gradient descent (SGD) - Batch gradient descent
- Mini-batch gradient descent
3.4.1.1 Batch gradient descent
Batch Gradient Descent (Batch GD) chỉ cập nhật các tham số trọng lượng khi toàn bộ dữ liệu được tính toán. Nó có thể rất chậm và không thể truy cập được đối với các bộ dữ liệu không phù hợp với bộ nhớ [7]. Batch GD có thể cập nhật mô hình trực tuyến với các ví dụ mới đang hoạt động
𝜃 = 𝜃 − 𝜂 ∗ ∇𝜃𝐽(𝜃) (3.3)
Trong đó là tham số trọng số, 𝜂 là tốc độ học và ∇𝜃𝐽(𝜃) là độ dốc của 𝐽(𝜃).
3.4.1.2 Stochastic Gradient Descent
Thay vì đi qua tất cả các mẫu. Stochastic Gradient Descent (SGD) thực hiện cập nhật tham số trên mỗi mẫu (ví dụ: một hình ảnh trên mỗi lần lặp). Vì vậy, chúng ta phải xáo trộn tập dữ liệu huấn luyện để tránh thứ tự mẫu có sẵn [7].
𝜃 = 𝜃 − 𝜂 ∗ ∇𝜃𝐽(𝑥𝑖, 𝑦𝑖, 𝜃) (3.4) Trong đó 𝑥𝑖 là một mẫu và 𝑦𝑖là một nhãn của mẫu đó.
3.4.1.3 Minibatch Gradient Descent
Minibatch Gradient Descent tương tự như SGD, nhưng chia tập dữ liệu huấn luyện thành các lô nhỏ được sử dụng để tính toán lỗi mô hình và cập nhật các hệ số mô hình.
𝜃 = 𝜃 − 𝜂 ∗ ∇𝜃𝐽(𝑥𝑖:𝑖+𝑛, 𝑦𝑖:𝑖+𝑛, 𝜃) (3.5)
Trong đó 𝑥𝑖:𝑖+𝑛là một lô gồm n mẫu và 𝑦𝑖:𝑖+𝑛 là nhãn của n mẫu. Minibatch Gradient Descent tìm cách cân bằng giữa độ mạnh của độ dốc dốc ngẫu nhiên và hiệu quả của việc giảm độ dốc theo lô [7]. Đây là cách thực hiện phổ biến nhất của việc giảm độ dốc được sử dụng trong lĩnh vực học sâu.
3.4.2 Các loại tối ưu hóa 3.4.2.1 Momentum 3.4.2.1 Momentum
Momentum là một phương pháp giúp tăng tốc độ dốc Stochastic theo hướng có liên quan và làm giảm dao động. Nó giống như một quả bóng lăn xuống dốc. Nó thêm một phần của vectơ trọng số cập nhật của bước vừa qua vào vectơ cập nhật hiện tại [1]:
𝑣𝑡 = 𝛾 ∗ 𝑣𝑡−1+ 𝜂 ∗ ∇𝜃𝐽(𝜃), ( 𝛾 < 1) (3.6)
𝜃 = 𝜃 − 𝑣𝑡 (3.7)
Trong đó 𝛾 thường được đặt từ 0.5 đến 0.9
3.4.2.2 Nesterov Accelerated Gradient
Nesterov Accelerated Gradient (NAG) là một cách để đưa ra thuật ngữ động lực. Nó giống như một quả bóng lăn xuống đồi nhưng biết chính xác khi nào nên giảm tốc độ trước khi độ dốc của ngọn đồi tăng trở lại. Ý tưởng là để dự đoán hướng trong bước tiếp theo. Việc tính toán 𝜃 − 𝛾 ∗ 𝑣𝑡−1 cho gần đúng vị trí của các tham số [7]. Do đó, không chỉ tính toán độ dốc cho các tham số hiện tại mà còn cả vị trí tương lai gần đúng của các tham số:
𝑣𝑡 = 𝛾 ∗ 𝑣𝑡−1+ 𝜂 ∗ ∇𝜃𝐽(𝜃 − 𝛾 ∗ 𝑣𝑡−1) (3.8)
3.4.2.3 Adaptive Gradient Algorithm
Thuật toán Adaptive Gradient (Adagrad) là một phương pháp tỷ lệ học thích ứng. Nó điều chỉnh tốc độ học tập cho các tham số, thực hiện các cập nhật nhỏ hơn cho các tham số liên quan đến các tính năng thường xuyên xảy ra và các cập nhật lớn hơn cho các tham số liên quan đến các tính năng không thường xuyên [7].
3.4.2.4 Adadelta
Adadelta là một phần mở rộng của Adagrad và nó cũng cố gắng giảm Adagrad, một cách đơn điệu, giảm tốc độ học tập. Nó thực hiện điều này bằng cách giới hạn cửa sổ của gradient tích lũy trong quá khứ ở một số kích thước cố định của w. Chạy trung bình tại thời điểm t sau đó phụ thuộc vào mức trung bình trước đó và độ dốc hiện tại [7].
Δ𝜃 = −𝑅𝑀𝑆[Δ𝜃]𝑡−1
𝑅𝑀𝑆[𝑔𝑡] ∗ 𝑔𝑡 (3.10)
𝜃𝑡+1 = 𝜃𝑡+ Δ𝜃𝑡 (3.11)
Trong đó 𝑔𝑡là đạo hàm hàm mất mát theo trọng số thứ t .
3.4.2.5 Root Mean Square Propagation
Root Mean Square Propagation (RMSProp) cố gắng giải quyết triệt để tỷ lệ học tập giảm dần bằng cách sử dụng gia tốc trung bình của gradient bình phương. Nó sử dụng cường độ của các độ dốc gradient gần đây để chuẩn hóa độ dốc. Trong RMSProp tốc độ học tập được điều chỉnh tự động và nó chọn một tốc độ học tập khác nhau cho mỗi tham số. Nó cũng chia tỷ lệ học tập cho trung bình của sự phân rã theo hàm mũ của độ dốc bình phương [7].
𝜃𝑡+1 = 𝜃𝑡− 𝜂
√(1−𝛾)∗𝑔𝑡−12 +𝛾∗𝑔𝑡+𝜀
∗ 𝑔𝑡 (3.12)
3.4.2.6 Adaptive Moment Estimation
Adaptive Moment Estimation (Adam) là sự kết hợp của Adagrad hoạt động tốt trên độ dốc thưa thớt và RMSprop hoạt động tốt trong cài đặt trực tuyến và không cố định. Adam thực hiện trung bình di chuyển theo cấp số nhân của các gradient để chia tỷ lệ học tập thay vì trung bình đơn giản như trong Adagrad [7]. Nó giữ mức trung bình phân rã theo cấp số nhân của các gradient quá khứ .
Thuật toán Adam trước tiên cập nhật các đường trung bình di chuyển theo hàm mũ của gradient (m_t) và gradient bình phương (υ_t) là ước tính của khoảnh khắc thứ
nhất và thứ hai. Các tham số siêu tốc β1, 2 [0, 1) kiểm soát tốc độ phân rã theo hàm mũ của các đường trung bình di động này như dưới đây
𝑚𝑡 = 𝛽1∗ 𝑚𝑡−1+ (1 − 𝛽1) ∗ 𝑔𝑡 (3.13)
𝜐𝑡 = 𝛽2∗ 𝜐𝑡−1+ (1 − 𝛽2) ∗ 𝑔𝑡2 (3.14)
Trong đó 𝑚𝑡, 𝜐𝑡 là ước tính của khoảnh khắc thứ nhất và thứ hai tương ứng. Đường trung bình di động được khởi tạo là 0 dẫn đến ước tính thời điểm bị sai lệch khoảng 0, đặc biệt là trong các dấu thời gian ban đầu. Xu hướng khởi tạo này có thể dễ dàng bị phản tác dụng dẫn đến ước tính điều chỉnh sai lệch.
𝑚̂𝑡 = 𝑚𝑡
1−𝛽1𝑡 (3.15)
𝜐̂𝑡 = 𝜐𝑡
1−𝛽2𝑡 (3.16) Trong đó 𝑚̂𝑡, 𝜐̂𝑡 là ước tính điều chỉnh sai lệch của thời điểm đầu tiên và thứ hai tương ứng. Thông số được cập nhật như sau:
θ𝑡+1 = 𝜃𝑡− 𝜂∗𝑚̂𝑡
3.5 Lưu đồ hệ thống Machine Vision nhận biết sản phẩm lỗi với xử lý ảnh và mô hình được huấn luyện mô hình được huấn luyện
Hình 3.16 Lưu đồ quy trình xử lý tín hiệu ảnh của hệ thống
Giải thích lưu đồ: Ảnh được chụp sẽ được đưa qua các bước xử lý ảnh ban đầu. Nếu quy trình xử lý ảnh phát hiện được lon lỗi thì sẽ gửi tín hiệu phát hiện và kết thúc, còn không thì sẽ tiếp tục đưa ảnh vào mô hình nhận dạng, mô hình sẽ phân loại ảnh, nếu ảnh được phân loại là lỗi thì sẽ gửi tín hiệu phát hiện lon lỗi và kết thúc
Hình 3.17 Lưu đồ hệ thống Machine Vision phát hiện sản phẩm lỗi với xử lý ảnh và mô hình được đào tạo
Chương 4
THIẾT KẾ PHẦN CỨNG
Trong phần này, tôi cung cấp tổng quan về nền tảng phần cứng, bao gồm một máy tính, NVIDIA Jetson Nano, hai Camera Logitech, Module plc s7-1200, cảm biến vật cản hồng ngoại. Sơ đồ khối hệ thống có thể được hiển thị trong Hình 4.1.
Hình 4.1 Sơ đồ khối của hệ thống
4.1 Thành phần phần cứng 4.1.1 Camera Logitech C270 4.1.1 Camera Logitech C270
Đó là một webcam USB có thể dễ dàng kết nối với Jetson Nano Kit. Nó khá nhỏ và dễ điều chỉnh. Với 30 khung hình mỗi giây, chất lượng video mượt mà, trong khi hình ảnh sắc nét, đầy màu sắc và tương phản. Ngay cả khi làm việc trong môi trường xung quanh mờ, C270 điều chỉnh theo các điều kiện ánh sáng để tạo ra hình ảnh tương phản sáng hơn.
Thông số kỹ thuật: - Độ phân giải: 720p/30fps - Loại Focus: fixed focus - Công nghệ Lens: standard - FoV: 60°
- Chiều dài cáp: 1.5m
4.1.2 Cảm biến vật cản hồng ngoại
Cảm biến vật cản hồng ngoại E3F-DS30C4 NPN 6-36V điện áp làm việc: DC 6-36VDC. Khoảng cách phát hiện: 10-30cm có thể điều chỉnh.
Hình 4.3 Cảm biến vật cản hồng ngoại E3F-DS30C4 NPN 6-36V
• Kích thước đường kính ngoài: 18mm (mm)
• Phát hiện: vật cản
• Khoảng cách phát hiện: 10-30cm có thể điều chỉnh
• Điện áp làm việc: DC 6-36VDC
• NPN Sơ đồ chân:
- Màu nâu: VCC, nguồn dương 6 – 36VDC. - Màu xanh dương: GND, nguồn âm 0VDC
- Màu đen: Chân tín hiệu ngõ ra cực thu hở NPN, cần phải có trở kéo để tạo thành mức cao.
Hình 4.4 Kích thước của cảm biến
4.1.3 NVIDIA Jetson Nano Developer Kit
Sức mạnh của AI hiện đại hiện có sẵn cho các nhà sản xuất, người học và nhà phát triển nhúng ở khắp mọi nơi, NVIDIA® Jetson Nano ™ Developer Kit là một máy tính nhỏ, mạnh mẽ có thể chạy song song nhiều mạng thần kinh cho các ứng