GIỚI THIỆU
Cuộc cách mạng công nghiệp đã mang lại những bước tiến vượt bậc cho nhân loại, đặc biệt là trong việc ứng dụng robot trong đời sống hàng ngày Robot hiện nay có khả năng thay thế con người trong các công việc nặng nhọc, cũng như trong những môi trường khắc nghiệt và nguy hiểm Để robot có thể hoạt động hiệu quả trong ngành công nghiệp và xử lý hình ảnh, các mô hình thị giác máy đang ngày càng phát triển với những tiến bộ đáng kể Nhóm nghiên cứu đã học hỏi từ những thành tựu trước đó để cải thiện khả năng phát hiện đối tượng và xử lý hình ảnh, nhằm giúp robot có thể thay thế con người trong những tình huống nguy hiểm.
Đề tài “Nhận diện dao cách ly đóng hay mở trong trạm biến áp” nhằm phát hiện lỗi thường gặp của chuỗi sứ cách điện, từ đó gửi tín hiệu về trung tâm điều khiển để kịp thời khắc phục, tránh hậu quả nghiêm trọng Hệ thống nhận diện lỗi giúp con người không phải tiếp xúc với đường dây tải cao áp, bảo vệ sức khỏe người lao động.
LÝ THUYẾT
Mô hình yolo và yolov3
2.1.1 Sơ lược về thuật toán YOLO:
YOLO – You Only Look Once, là một thuật toán phát hiện vật thể xem xét bài toán này như một vấn đề hồi quy duy nhất trên toàn bộ bức ảnh Thuật toán chuyển đổi trực tiếp các pixel của ảnh thành các ô dự đoán (bounding box) cùng với xác suất phân loại vật thể Việc áp dụng một bài toán hồi quy duy nhất cho toàn bộ ảnh giúp giảm thiểu số lượng phép toán cần thực hiện, từ đó tăng tốc độ xử lý Nhờ đó, YOLO có khả năng đáp ứng tốt hơn cho các bài toán thời gian thực so với các thuật toán khác như R-CNN.
2.1.1.1 Grid System: Ở lớp cuối cùng của mạng CNN, thay vì sử dụng 1 lớp Fully Connected thì khi sử dụng thuật toán YOLO, các lớp Fully Connected (FC) có kích thước (classes, 1) sẽ được thay thế bằng một lớp tích chập có kích thước (1, 1, classes) Vì vậy, cần phải chia các Grid System ngay từ đầu.
Việc chuyển đổi không ảnh hưởng đến kết quả dự đoán, đồng thời hệ thống lưới (Grid System) chứng minh rằng thuật toán YOLO có khả năng phân loại đối tượng thông qua các phép toán tích chập, với kết quả dự đoán nằm ở lớp tích chập cuối cùng và giữ được vị trí của vật thể.
Hình 1 Từ Grid System đến lớp tích chập cuối cùng - mạng YOLO
Chia grid 3x3 tương ứng với kích thước lớp cuối, vật thể được xác định trong ô màu xanh Sau khi thực hiện các bước tích chập, vị trí của vật thể không thay đổi, và ô màu xanh ở lớp cuối cùng (Hình 1) chính là kết quả phân loại vật thể.
Trong một ví dụ khác, một hình ảnh có đối tượng cần phân loại với kích thước 14x14x3, sau khi thực hiện các bước tích chập, lớp tích chập cuối cùng sẽ có kích thước 1x1x4.
Hệ thống lưới (grid system) sẽ chia hình ảnh gốc thành các lưới tương ứng với kích thước của lớp cuối Mỗi lưới cung cấp ba thông tin quan trọng: liệu lưới đó có chứa vật thể hay không, tọa độ của các bounding box (x, y, h, w), và xác suất phân loại vật thể.
Trong bài viết, hình ảnh được chia thành 6x6 ô, mỗi ô chứa một bounding box với thông tin cần dự đoán Cụ thể, ô nào chứa tâm của đối tượng thì ô đó sẽ phải dự đoán nhãn cho đối tượng đó Chẳng hạn, trong hình 3, tâm của nhãn "cô gái" nằm trong ô màu xanh, do đó mô hình cần dự đoán nhãn của bounding box màu đỏ tương ứng.
Nhãn “cô gái” chỉ được gán cho cell chứa tâm vật thể, trong khi các cell không chứa tâm vật thể sẽ không được gán nhãn mặc dù vẫn chứa thông tin Mỗi cell chỉ được phép gán một nhãn duy nhất và chứa một đối tượng Nếu một cell chứa từ hai tâm vật thể trở lên, mô hình YOLO chỉ phát hiện một nhãn duy nhất Để phát hiện nhiều đối tượng hơn, cần tăng kích thước grid để tạo thêm nhiều cell.
Kích thước của ảnh đầu vào phải là bội số của grid size.
Hình 3 Ảnh grid size 6x6 detect bằng mô hình YOLO (1)
Mỗi cell trong mô hình dự đoán hai boundary box cho đối tượng, bao gồm thông tin về việc có chứa vật thể hay không, cùng với vị trí của boundary box, cụ thể là tâm, chiều dài và chiều rộng của nó.
Khi cài đặt, cần chuẩn hóa kích thước ảnh về khoảng [0 - 1] thay vì dự đoán giá trị pixel Thay vì xác định vị trí pixel của điểm màu đỏ, hãy dự đoán độ lệch a, b của tâm đối tượng trong ô chứa nó.
Hình 4 Ảnh grid size 6x6 detect bằng mô hình YOLO (2)
Tổng kết lại, đối với mỗi bounding box cần dự đoán các thông tin sau:
Cell có chứa đối tượng hay không?
Dự đoán độ lệch 2 box chứa đối tượng so với cell hiện tại.
Lớp của đối tượng đó.
Như vậy, đối với mỗi cell, cần thực hiện dự đoán một vector có kích thước
Khi dự đoán 2 box và 3 lớp (loại đối tượng), mỗi ô sẽ chứa một ma trận 3 chiều có kích thước 7x7x13, bao gồm toàn bộ thông tin cần thiết.
Dự đoán mỗi bounding box gồm 5 thành phần: (x, y, w, h, prediction):
+ (x, y): tọa độ tâm của bounding box.
+ (w, h): chiều rộng, chiều cao của bounding box.
+ prediction hay còn gọi là confidence core: C= Pr ( Object )∗IoU ( pred , truth)
Mỗi bounding box sẽ dự đoán xác suất có điều kiện của lớp đã chỉ định, tức là tỷ lệ mà đối tượng thuộc về lớp đó Xác suất này được tính toán dựa trên các đặc điểm của đối tượng trong hình ảnh.
Pr( Class i ∨Object)= P ( clas s i )∗Confidence core
Hình 5 Vector của một mô hình YOLO dự đoán 2 box, 3 lớp cho một bounding box 2.1.1.2 Chỉ số IoU và thuật toán Non-max suppression:
Chỉ số IoU (Intersection over Union) cho biết tỷ lệ trùng vào nhau của 2 boundary box A và B Cụ thể như sau:
IoU=box A ∩box B box A∪box B=A ∩ B
A∪B Hình 6 Chỉ số IoU (Intersection over Union) (1)
A ∩ B là diện tích phần giao nhau (Intersection).
A ∪ B là diện tích phần chung của 2 box (Union) bằng tổng diện tích của 2 box trừ đi diện tích phần giao nhau.
Việc xác định IoU (Intersection over Union) là rất quan trọng trong việc đánh giá khả năng phát hiện chính xác vật thể Trong đó, box A thường là các Anchor box hoặc Groundtruth bounding box được gán nhãn trước khi đào tạo mô hình, trong khi box B là bounding box do hệ thống xác định trong quá trình kiểm tra mô hình Tính toán IoU giúp đánh giá xem mô hình đã phát hiện vật thể đúng hay chưa; nếu giá trị IoU tiến gần đến 1, điều đó cho thấy mô hình có khả năng dự đoán chính xác cao hơn so với tập test, ngược lại, giá trị thấp hơn cho thấy khả năng dự đoán kém.
Hình 7 IoU (Intersection over Union) (2)
Thuật toán Non-max suppression được sử dụng để loại bỏ các bounding box có tỷ lệ dự đoán thấp, chỉ giữ lại một bounding box duy nhất với tỷ lệ dự đoán cao nhất.
Bước 1: Loại bỏ tất cả các bounding box có xác suất xuất hiện vật thể thấp hơn ngưỡng, để không hiển hiện bounding box.
Bước 2: Chọn các bounding box có xác suất xuất hiện vật thể cao nhất.
Bước 3: Khi có nhiều bounding box có xác suất xuất hiện vật thể cao nhất, thuật toán Non-max suppression sẽ loại bỏ các bounding box có chỉ số IoU thấp hơn Nhờ đó, chỉ một bounding box duy nhất với xác suất xuất hiện vật thể cao nhất và tỷ lệ IoU cao nhất được giữ lại, đảm bảo hiệu quả nhận diện vật thể tốt nhất.
2.1.1.3 Thực hiện gán nhãn cho các object mẫu:
Chỉ số đánh giá mô hình
2.2.1 Chỉ số AP – Average Precision:
Giá trị Trung bình chính xác (Average Precision - AP) là một chỉ số tóm tắt đường cong precision-recall thành một giá trị duy nhất, phản ánh giá trị trung bình của precision AP được tính toán thông qua một vòng lặp, trong đó điểm khác biệt giữa recall hiện tại và các recall tiếp theo được xác định, sau đó nhân với precision tại thời điểm đó.
Trong đó: n = số lượng ngưỡng (thresholds)
2.2.2 Chỉ số mAP – mean Average Precision Để đánh giá các mô hình object detection như R-CNN hay YOLO, một thông số là mean average Precision (mAP) thường được sử dụng mAP so sánh ground-truth bouding box với detected bõ và trả về số điểm Điểm càng cao, mô hình các chính xác. mAP=1 n ∑ k=1 n
A P k =the APof class k n=the number of classes
Google Colab
Google Colaboratory, hay còn gọi là Google Colab, là một sản phẩm từ Google Research, cho phép người dùng chạy mã Python trực tiếp trên trình duyệt Công cụ này đặc biệt hữu ích cho phân tích dữ liệu, học máy và trong lĩnh vực giáo dục.
Colab cho phép người dùng chạy mã mà không cần cài đặt hay cấu hình máy tính, tất cả đều thực hiện thông qua trình duyệt Bạn có thể tận dụng tài nguyên máy tính với CPU tốc độ cao, cũng như GPU và TPU miễn phí được cung cấp.
Colab cung cấp nhiều loại GPU, thường là Nvidia K80s, T4s, P4s and P100s, tuy nhiên người dùng không thể chọn loại GPU trong Colab, GPU trong Colab thay đổi theo thời gian
Colab là dịch vụ miễn phí, do đó có những hạn chế về việc sử dụng tài nguyên hệ thống và thời gian sử dụng, với thời gian tối đa lên tới 12 giờ.
HUẬN LUYỆN MÔ HÌNH YOLO
Các bước huấn luyện mô hình YOLO sử dụng Google Colab
Tập dữ liệu bao gồm:
- Tổng cộng: … file ảnh bao gồm:
Các bước Setup ban đầu để train:
STEP 1 - KẾT NỐI DRIVE CÁ NHÂN
Sử dụng drive cá nhân để lưu trữ các dữ liệu trong quá trình train
1 #Kết nối với drive cá nhân
2 from google.colab import drive
STEP 2 - TẢI SOURCE YOLOV4 TỪ GITHUB
Sử dụng bản YOLO của AlexeyAB
4 # Step 2 Tai ma nguon YOLO ve drive
6 %cd /content/gdrive/My\ Drive
7 !git clone https://github.com/AlexeyAB/darknet
8 %cd /content/gdrive/My\ Drive/darknet
STEP 3 - THỰC HIỆN MỘT SỐ THAY ĐỔI CƠ BẢN
Thay đổi thông số file yolov4-tiny-custom.cfg
Trong file yolov4-tiny-custom.cfg
-Replace toàn bộ các dòng có “filters%5” thành “filters=”.
-Chuyển subdivisions = 64 và widthA6, heightA6 để không bị out memory Trong file MAKE FILE
STEP 4 – TẠO FILE YOLO.NAMES
11 # Step 5 Tạo file yolo.names
12 %cd /content/gdrive/My\ Drive/darknet
13 !echo "dcl close" > yolo.names
14 !echo "dcl open" >> yolo.names
STEP 5 – TẠO FILE TRAIN.TXT VÀ VAL.TXT
Ta sẽ lấy ngẫu nhiên hình trong data để đảm bảo tính phân phối dữ liệu:
15 %cd /content/gdrive/My\ Drive/darknet
23 for ext in ["*.png", "*.jpeg", "*.jpg"]:
24 image_files = glob2.glob(os.path.join("data/data/", ext))
27 nb_val = math.floor(len(files)*0.2)
28 rand_idx = np.random.randint(0, len(files), nb_val)
31 with open("train.txt", "w") as f:
32 for idx in np.arange(len(files)):
33 if (os.path.exists(files[idx][:-3] + "txt")):
37 with open("val.txt", "w") as f:
38 for idx in np.arange(len(files)):
39 if (idx in rand_idx) and (os.path.exists(files[idx][:-3] + " txt")):
STEP 6 – TẠO FILE YOLO.DATA CHỨA THAM SỐ TRAIN
42 %cd /content/gdrive/My\ Drive/darknet
45 !echo train=train.txt >> yolo.data
46 !echo valid=val.txt >> yolo.data
47 !echo names=yolo.names >> yolo.data
STEP 7 – BIÊN DỊCH MÃ NGUỒN DARKNET
49 %cd /content/gdrive/My\ Drive/darknet
STEP 8 – TẢI PRETRAIN WEIGHTS Đối với yolov4:
52 %cd /content/gdrive/My\ Drive/darknet
53 !wget https://github.com/AlexeyAB/darknet/releases/download/dark net_yolo_v3_optimal/yolov4.conv.137 Đối với yolov3
54 !wget https://pjreddie.com/media/files/darknet53.conv.74
55 %cd /content/gdrive/My\ Drive/darknet
56 !./darknet detector train yolo.data cfg/yolov3.cfg darknet53.con v.74-dont_show flag -map
57 %cd /content/gdrive/My\ Drive/darknet
58 !./darknet detector train yolo.data cfg/yolov4-custom.cfg yolov4 conv.137 -dont_show flag -map
Train bằng yolov4-tiny-custom:
59 %cd /content/gdrive/My\ Drive/darknet
60 !./darknet detector train yolo.data cfg/yolov4-tiny-custom.cfg y olov4.conv.137 -dont_show flag -map
KẾT QUẢ ĐẠT ĐƯỢC
Thử detect trên một số hình ảnh trong tập test:
ĐÁNH GIÁ MÔ HÌNH
Đánh giá từng mô hình
Hình 5.1 Biểu đồ Loss- mAP của hệ thống (yolov3)
- Chỉ số Loss của mô hình giảm nhanh chóng chỉ sau 100 batch đầu tiên và có xu hướng hội tụ về 0 sau đó.
- Thời gian training khá lâu
Các thông số khác trên yolov3-custom_last.weights:
Hình 5.2 Các thông số của hệ thống (yolov3)
- Chỉ số mAP rơi vào khoảng 99.97% và IoU trung bình vào khoảng 83.68%
- Tỉ lệ F1-score cũng cao với 99%
- Cả 2 class với AP lần lượt là 99.94% và 100% cực kì cao và gần như tuyệt đối
Mô hình training thành công và đạt độ chính xác gần như tuyệt độ.
Hình 5.3 Biểu đồ Loss- mAP của hệ thống (yolov4)
- Chỉ số Loss của mô hình giảm nhanh chóng trong 1000 weight đầu tiên và có xu hướng chậm lại sau đó và mAP đạt gần 100% chỉ sau 2500 bước lặp.
- Thời gian traing tuy lâu nhưng độ chính xác khá cao.
- Mô hình thành công trong nhiệm vụ 2 classes: DCL open và DCL close.
Các thông số khác trên yolov4-custom_last.weights:
Hình 5.4 Các thông số của hệ thống (yolov4)
- Chỉ số mAP rơi vào khoảng 99.51% và IoU trung bình vào khoảng 75.73%
- Tỉ lệ F1-score cũng cao không kém với 96%
- Cả 2 class với AP lần lượt là 99.17% và 99.85% đều rất là cao và không chênh lệch quá nhiều.
Có thể coi mô hình đã được train thành công và đạt được nhiều chỉ số vượt lí thuyết và mong đợi.
Biểu đồ loss và mAP khi train yolov4-tiny
Chỉ số Loss của mô hình giảm nhanh trong 1000 weight đầu tiên, nhưng xu hướng giảm chậm lại từ weight thứ 1200 Đồng thời, mAP tăng nhanh trong 1000 weight tiếp theo, tuy nhiên chỉ đạt giá trị cao nhất là 43%.
Mô hình tùy chỉnh đã thành công trong việc giảm thiểu Loss, nhưng chỉ số mAP vẫn ở mức thấp Dù vậy, thời gian huấn luyện của mô hình diễn ra nhanh chóng nhờ vào sự đơn giản hóa đáng kể so với phiên bản gốc yolov4.
Các thông số khác trên yolov4-tiny-custom_best.weights:
Hình 5.6 Các thông số của hệ thống (yolov4 tiny)
Chỉ số mAP rơi vào khoảng 41.22% và IoU trung bình vào khoảng 52.22%
Tỉ lệ F1-score cũng khá thấp với 56%
Cả 2 class với AP lần lượt là 57.70% và 24.75% đều rất thấp và không đạt yêu cầu bài toán đưa ra.
Mô hình thất bại trong training để đạt độ chính xác cao nhưng đổi lại thời gian training cực kì nhanh.
So sánh giữa các mô hình
Mô hình YOLOv4 (Tiny) là lựa chọn lý tưởng cho các dự án yêu cầu thời gian thực hiện ngắn và không cần độ chính xác cao, đặc biệt phù hợp với các tập dữ liệu nhỏ và đơn giản.
- Mô hình yolov4 train nhanh hơn yolov3 nhiều nhưng vẫn đạt mAP
(99.51%) khá sát với mAP của yolov3 (99.97%) chỉ sau 2500 weight vẫn còn có xu hướng tăng.
Mặc dù mô hình YOLOv4 có mAP thấp hơn YOLOv3, nhưng nó vẫn thực hiện tốt nhiệm vụ nhận diện trong các trường hợp chụp ảnh góc nghiêng hoặc khi có nhiều nhiễu xung quanh.
6 MỞ RỘNG VỚI ỨNG DỤNG HYPERDASH:
- Hyperdash là ứng dụng giúp theo dõi quá trình training từ xa bất cứ lúc nào và ở đâu chỉ với chiếc điện thoại thông minh được kết nối internet.
6.2 Đặc điểm nổi bật của hyperdash:
- Real-time Alerts: Hyperdash tự động theo dõi quá trình training và thông báo khi quá trình training hoàn thành, thất bại, crashes hoặc mất kết nối.
Theo dõi nhật ký từ xa: Truyền trực tiếp lịch sử bảng điều khiển từ máy tính sang điện thoại với thời gian thực, giúp người dùng dễ dàng theo dõi lỗi và hiệu suất mô hình mà không cần sử dụng SSH.
Bảo mật và riêng tư là yếu tố quan trọng, vì nhà sản xuất không có quyền truy cập vào bộ dữ liệu và mô hình của chúng ta, giúp chúng ta giữ quyền sở hữu trí tuệ Công nghệ bảo mật hiện đại đảm bảo rằng nhật ký và số liệu của chúng ta luôn được bảo vệ an toàn.
6.3 Trải nghiệm và đánh giá:
B1: tạo model tên yolov4_training, sau đó hyperdash sẽ tự động tạo 1 model giống vậy trên điện thoại để chúng ta truy cập và theo dõi
B2: bắt đầu quá trình training mô hình yolov4 trên google colab
B3: Truy cập vào model đã được tạo tự động trên hyperdash của điện thoại và theo dõi: