Xin chào tuần mới toàn thể anh em Mì! Hôm nay chúng ta sẽ train YOLO v4 trên COLAB theo cách cực chi tiết và đẩy đủ, ai cũng train được Yolov4 Colab 😀
Chắc hẳn anh em đã quen với series về YOLO v3 trên Mì Ai:
- [YOLO Series] #1 – Sử dụng Yolo để nhận dạng đối tượng trong ảnh
- [Yolo Series] #2 – Cách train Yolo để detect các object đặc thù
- [YOLO Series] Cách train Yolo trên Google Colab
- [YOLO Series] Train và detect sử dụng YOLO model trên Windows
- [YOLO on Windows]Hướng dẫn chi tiết cách cài đặt và train YOLO trên Windows
Tuy nhiên thì chắc anh em cũng đã nghe tin rằng các thánh Alexey Bochkovskiy, Chien-Yao Wang, Hong-Yuan Mark Liao đã cho ra mắt bản YOLO v4 với nhiều tính năng ưu việt như: tốc độ nhanh hơn nhưng độ chính xác thì cũng được nâng lên ở mức bá đạo luôn.
Do vậy, hôm nay chúng ta sẽ cùng nhau thử train YOLO trên COLAB xem YOLO v4 có gì khác và trong bài sau chúng ta cũng sẽ tìm cách để làm sao khi test có thể chạy trên GPU nhằm tăng tốc độ nhận diện nhé.
Phần 1 – Nói lại về lý do train YOLO v4 trên COLAB
Phần này mình xin viết lại cách train từng bước ( như đã từng làm với YOLO v3). Lý do vì mình vừa tìm ra 1 cách train mới, nhanh hơn, dễ hơn cho anh em Mì kaka 😀 Bắt đầu từng bước nhé. Ah nói luôn là mình cần các bạn tập trung và làm từng bước, không bỏ bước nào để tránh thiếu nhé.
Có bạn bảo sao không train trên máy PC, lý do vì máy PC chậm, train tốn điện, nóng máy và nhanh hỏng. Trong khi COLAB train khỏe, nhanh, có GPU khủng và lại miễn phí.
Nói thêm là Google Colab là một dịch vụ đám mây nghĩa là nó ở “trên mây” (thực ra trên Internet) chứ không phải trong máy PC của bạn, bạn sẽ phải upload ảnh, source, ….. lên đó để train.
Nhược điểm duy nhất của COLAB: vì là đồ miễn phí nên sau 1 thời gian 10 -12 tiếng nó sẽ clear, xóa hết file và restart runtime. Nhưng anh em đừng lo, với Mì AI sẽ ngon lành, kệ nó clear =))
Tóm tắt lại phần này: Colab train nhanh, sướng, miễn phí và…nó ở trên mây.
Phần 2 – Chuẩn bị dữ liệu train YOLO v4 trên Colab
Chuẩn bị dữ liệu
“Trứng rán cần mỡ, bắp cần bơ” còn Deep Learning thì cần dữ liệu. Không có dữ liệu thì chả làm được gì. Bài này ta cần train model YOLO để phát hiện đám cháy thì suy ra cần dữ liệu là lửa.
Các bạn hãy collect thật nhiều ảnh lửa, lưu vào 1 thư mục có tên data trên máy tính. Sau đó sử dụng phần mềm gán nhãn lblImage để gán nhãn cho ảnh theo bài này [Yolo Series] #2 – Cách train Yolo để detect các object đặc thù.
Tuy nhiên đôi lời chú ý, các bạn đọc kỹ, ko đọc train lỗi mình không chịu trách nhiệm nhá 😀
- Với bài trước ta để ảnh trong thư mục images, còn nhãn để trong thư mục labels.
- Với bài này ta để chung hết trong 1 thư mục data thôi, vì tác giả Yolov4 thích thế! Haha.
- Chú ý trước khi gãn nhán vào thư mục labelImg/data/ và xóa trắng file predefined_classes.txt đi nhé.
Tóm lại sau khi gán nhãn xong ta sẽ có 1 thư mục data chứa dữ liệu ảnh. Mỗi ảnh sẽ có 2 file:
- File có đuôi jpg, png…: Là file ảnh đầu vào
- File có đuôi txt: Là file nhãn của ảnh tương ứng
- Hai file này có tên y hệt nhau, khác nhau mỗi phần đuôi nhé.
Ví dụ như thư mục của mình này:
Bây giờ các bạn zip cho mình cái thư mục data này lại thành file data.zip nào!
Xong việc số 1. Mình có để sẵn vài bộ dữ liệu về súng, lửa… trong thư viện Mì AI để bạn nào cần train thì vào lấy nhé: https://www.miai.vn/thu-vien-mi-ai/ (nhớ xem video trong link để biết cách tải)
Chuẩn bị file config
Để tiếp tục train Yolov4 trên Colab, các bạn tải cho mình file yolov4-custom.cfg tại đây về máy tính của các bạn. Mở ra và sửa theo đúng những gì bên dưới nhé:
- Đầu tiên cần xác định bạn train mấy class? Chính là bao nhiêu loại đối tượng. Ví dụ mình train mỗi lửa thôi -> 1 class, train cả lửa, cả nước thì 2 class.
- Tìm đến dòng 20, sửa max_batches = max(<số class>*2000,6000). Nghĩa là nếu <số class>*2 mà nhỏ hơn 6000 thì lấy 6000 và ngược lại. Ở đây mình lấy 6000 vì 1*2000 < 6000 rồi. Sửa max_batches=6000.
- Đến dòng 22 sửa thành steps=80%, 90% của max_batches. Ví dụ ở đây là steps=4800,5400.
- Replace toàn bộ các dòng có “classes=80” thành “classes=<số class>”. Ví dụ với bài này thì là sửa thành “classes=1”. Món này có thể dùng Find/Search and Replace cho nhanh, còn nếu không thì nó ở các dòng 970, 1058 và 1146 nhé.
- Replace toàn bộ các dòng có “filters=255” thành “filters=<(số class+5)*3>”. Ví dụ với bài này số class = 1 thì sẽ sửa thành (1+5)*3 = 18, có nghĩa là filters=18. Vẫn như trên nghĩa là có thể dùng Search and Replace còn cụ thể nó ở các dòng: 963, 1051 và 1139 nhé nếu bạn thích sửa tay.
- Nếu bạn bị out memory, hãy chuyển subdivisions (dòng 7) thành 32 (hoặc 64) hoặc các bạn giảm size ảnh xuống còn width=416, height=416 (dòng 8,9).
Xong, save lại là đã có thêm file yolov4-custom.cfg nhé. Save vào cùng chỗ với file data.zip bên trên. Chờ sẵn đó!
Chuẩn bị Makefile
Bây giờ tải tiếp Makefile về tại đây . Mở ra và sửa như sau:
- Dòng 1, sửa thành GPU=1
- Dòng 2, sửa thành CUDNN=1
- Dòng 4, sửa thành OPENCV=1
Save lại và có thêm file Makefile. Save cùng chỗ với data.zip.
Tóm lại: Sau phần này ta có 3 file: data.zip, Makefile và yolov4-custom.cfg. Bạn nào chưa có đủ 3 file thì đọc lại trước khi sang phần tiếp theo nha!
Phần 3 – Bắt đầu lên mây cùng Google Colab
Bây giờ các bạn vào địa chỉ chính thức của colab https://colab.research.google.com/ và chọn New Notebook để tạo một Notebook làm việc với bài này.
Sau đó ngay lập tức vào Runtime > Change runtime type để bật GPU lên cho nhanh nhé (để CPU chậm như rùa luôn)
Xong con ong! Sang phần sau để viết code được rồi đấy!
Phần 4 – Train YOLOv4 trên COLAB
Bước 1. Kết nối Google Drive
Như đã nói ở trên, sau 10 tiếng Colab sẽ kill sạch, clear sạch nên nếu như ta để file trên nó thì sẽ “toang” ngay. Nên các bạn cần chuẩn bị 1 tài khoản Google Drive cho mình. Ai chưa có thì tạo, miễn phí mà!
Còn bây giờ, để bắt đầu Yolov4 trên Colab, hãy tạo 1 Code Block mới bằng cách. nhấn vào + Code
Tiếp theo paste đoạn code sau vào Code Block vừa sinh ra:
# Step 1. Mount drive
from google.colab import drive
drive.mount('/content/gdrive')
Code language: PHP (php)
Sau đó nhấn nút mũi tên để chạy code, Colab sẽ hiện ra 1 link URL, các bạn bấm vào đó, chọn tài khoản Google Drive, copy mã code hiển thị trên màn hình và paste vào ô Enter your authorization code. Colab báo mounted là okie nhé.
Bây giờ các bạn đã có thể lưu dữ liệu của bạn vào thư mục /content/gdrive/My Drive/ thoải mái nhé. Nó sẽ tự đồng bộ sang Google Drive.
Bước 2. Tải mã nguồn YOLOv4 về Drive
Ở bước này ta sẽ tải mã nguồn về thẳng Drive (tất nhiên tải bằng lệnh trên Colab) để sau này thích train lúc nào thì train, đếch sợ thằng Colab kill nữa. Nào, tạo code block mới và paste đoạn này vào:
# Step 2. Tai ma nguon YOLO ve drive
!rm -rf darknet
%cd /content/gdrive/My\ Drive
!git clone https://github.com/AlexeyAB/darknet
%cd /content/gdrive/My\ Drive/darknet
!rm -rf data
!mkdir data
Code language: PHP (php)
Sau đó chạy bằng cách nhấn mũi tên run!
Bạn nào tò mò thì sang Gdrive mà xem sẽ thấy source về ầm ầm luôn.
Nếu chạy bị lỗi các bạn cứ chụp màn hình và post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup để cùng chia sẻ, giao lưu nhé!
Bước 3. Upload file từ dưới máy tính lên Google Drive
Ở trên các bạn nhớ lại mình đã có 3 file: data.zip, Makefile và yolov4-custom.cfg đúng ko nhỉ? Bây giờ ta up 3 thằng này lên nào.
Tìm đến thư mục darknet trên Google Drive và thực hiện:
- Upload file data.zip vào trong thư mục data
- Upload file yolov4-custom.cfg vào thư mục cfg (có hỏi ghi đè cứ vô tư nhé)
- Upload file Makefile vào thư mục darknet, đè lên file hiện tại, kệ nó.
Đợi xíu cho upload lên rồi đi tiếp!
Bước 4. Giải nén file data.zip để lấy dữ liệu train
Lại tạo một code block mới và paste đoạn lệnh sau (nhớ chạy sau khi paste)
# Step 4. Giải nén file data
%cd /content/gdrive/My\ Drive/darknet/data
!unzip data.zip
Code language: PHP (php)
Chú ý đoạn lệnh trên có thể báo lỗi ở dòng mkdir thì kệ nó nhé. Mình làm thế đề phòng bị thiếu thư mục. Chỉ cần file data.zip được giải nén thành công không báo lỗi là okie.
Nếu chạy bị lỗi các bạn cứ chụp màn hình và post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup để cùng chia sẻ, giao lưu nhé!
Nếu không lỗi thì sang bước tiếp.
Bước 5. Tạo file yolo.names chứa tên các class
Tạo thêm 1 code block mới và gõ lệnh sau (nhớ chạy):
# Step 5. Tạo file yolo.names
%cd /content/gdrive/My\ Drive/darknet
!echo "fire" > yolo.names
Code language: PHP (php)
Chúng ta sẽ tạo được một file yolo.names có chứa 1 dòng fire mà thôi. Còn nếu bạn train 2 class, 3 class thì sao? Thì thêm các dòng như sau (ví dụ train 2 class là fire và water nhá):
# Step 5. Tạo file yolo.names
%cd /content/gdrive/My\ Drive/darknet
!echo "fire" > yolo.names
!echo "water" >> yolo.names
Code language: PHP (php)
Để ý là từ dòng thứ 2 trở đi là >> chứ ko phải > như dòng đầu là được.
Bước 6. Tạo hai file train.txt và val.txt chứa danh sách các file ảnh
Ý nghĩa của 2 file này như sau:
- Chúng ta đã chứa toàn bộ ảnh trong thư mục data. Ta cần chỉ cho YOLO biết thế ảnh nào ông định train? ảnh nào ông định val?
- File train.txt chứa danh sách các file sẽ dùng để train
- File val.txt thì tất nhiên là danh sách các file dùng để val
- Danh sách cần chọn ngẫu nhiên đảm bảo tính phân phối dữ liệu.
Okie, tạo code block mới nào và paste & run:
# Step 6. Tạo file train.txt và val.txt
%cd /content/gdrive/My\ Drive/darknet
import glob2
import math
import os
import numpy as np
files = []
for ext in ["*.png", "*.jpeg", "*.jpg"]:
image_files = glob2.glob(os.path.join("data/data/", ext))
files += image_files
nb_val = math.floor(len(files)*0.2)
rand_idx = np.random.randint(0, len(files), nb_val)
# Tạo file train.txt
with open("train.txt", "w") as f:
for idx in np.arange(len(files)):
if (os.path.exists(files[idx][:-3] + "txt")):
f.write(files[idx]+'\n')
# Tạo file vali.txt
with open("val.txt", "w") as f:
for idx in np.arange(len(files)):
if (idx in rand_idx) and (os.path.exists(files[idx][:-3] + "txt")):
f.write(files[idx]+'\n')
Code language: PHP (php)
Chạy xong sẽ thấy thư mục darknet xuất hiện 2 file train.txt và val.txt là ô kê con dê, không thấy thì từ từ kiểm tra lại trước khi đi tiếp nhá!
Nếu chạy bị lỗi các bạn cứ chụp màn hình và post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup để cùng chia sẻ, giao lưu nhé!
Bước 7. Tạo file yolo.data chứa tham số train
Đến bước này có thể nói là chúng ta đã gần như xong rồi, ta sẽ tạo nốt một file chứa tham số train để ông YOLO đọc. Tạo codeblock & run:
# Step 7. Tạo file yolo.data
%cd /content/gdrive/My\ Drive/darknet
!mkdir backup
!echo classes=1 > yolo.data
!echo train=train.txt >> yolo.data
!echo valid=val.txt >> yolo.data
!echo names=yolo.names >> yolo.data
!echo backup=backup >> yolo.data
Code language: PHP (php)
Gõ chuẩn luôn nhé các bạn! Chú ý ở dòng số 4 bên trên nhớ sửa số 1 thành số class của bạn (ví dụ: 2,3,4…. tùy bài toán)
Sau khi chạy xong sẽ thêm một file yolo.data trong thư mục darknet.
Bước 8. Biên dịch mã nguồn darknet
Tạo code block và gõ lệnh & run:
# Step 8. Make darknet
%cd /content/gdrive/My\ Drive/darknet
!rm darknet
!make
Code language: PHP (php)
Đợi lúc cho nó dừng lại và không báo lỗi gì có chữ error thì là okie, có thì chụp ảnh màn hình up lên group xem nhá!
Bước 9. Tải pretrain weights
Chúng ta sẽ tận dụng weights của phần Convolution đã được train ngon lành của Darknet bằng cách tải file yolov4.conv.137 về bằng codeblock :
# Step 9. Download pretrain weight
%cd /content/gdrive/My\ Drive/darknet
!wget https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.conv.137
Code language: PHP (php)
Bước 10. Train train train!!!
Well, tất cả các bước chuẩn bị đã xong, bây giờ là train thôi. Tạo một codeblock mới và paste đoạn sau vào:
# Step 10. Train
%cd /content/gdrive/My\ Drive/darknet
!./darknet detector train yolo.data cfg/yolov4-custom.cfg yolov4.conv.137 -dont_show
Code language: PHP (php)
Mọi thứ sẽ chạy êm ru, các bạn ngồi theo dõi nó chạy và sẽ có cảm giác train Yolov4 trên Colab “pro” cực kỳ, như hacker trong film!
Trong quá trình train, bạn sẽ thấy thư mục darknet/backup sẽ sinh ra các file sau:
- File yolov4-custom_last.weights là file weights cuối cùng các bạn có được.
- File yolov4-custom_1000.weights, yolov4-custom_2000.weights… là các file weight tại 1000,2000 vòng…
Tùy tình hình dữ liệu, bài toán, bạn dùng weights nào thì lấy file đó.
Phần 5 – Theo dõi tham số của quá trình train
Thông số quá trình train
Trong quá trình train các bạn để ý sẽ thấy 1 số dòng có dạng như này:
1249: 2.061428, 2.191828 avg loss, 0.001000 rate, 23.764414 seconds, 79936 images, 25.588937 hours left
Loaded: 0.000039 seconds
Code language: CSS (css)
Ta cùng phân tích mấy cái chính sau:
- 1249: Số vòng train đến hiện tại, ở đây là 1249 kaka.
- 2.061428, 2.191828 avg loss : cái này nghĩa là loss của vòng hiện tại là 2.061428 còn loss trung bình cho đến vòng hiện tại là 2.191828
Thế bây giờ câu hỏi là “Khi nào dừng train?”. Ta sẽ dừng trong 3 trường hợp
- Nó tự dừng khi train xong max_batches mà ta định nghĩa bên trên.
- Khi ta quan sát một thời gian thấy loss bão hòa, không giảm quá nhiều sau một khoảng tầm 100 vòng.
- Khi Colab kill sau một khoảng thời gian nhất định.
Vậy lại hỏi tiếp “Vậy với Trường hợp 2 và 3 thì train tiếp như nào?”
Chúng ta sẽ train tiếp bằng cách chạy lệnh train ở Bước 10 bên trên nhưng trong câu lệnh sẽ thay yolov4.conv.137 bằng file weight mới nhất mà chúng ta có được, chính là yolov4-custom_last.weights
# Step 10. Train
%cd /content/gdrive/My\ Drive/darknet
!./darknet detector train yolo.data cfg/yolov4-custom.cfg yolov4-custom_last.weights -dont_show
Code language: PHP (php)
OK! Bài Yolov4 trên Colab đã dài nên mình xin tạm dừng. Trong bài tiếp theo chúng ta sẽ cùng tìm hiểu cách visualize loss ra đồ thị và cách sử dụng keras để inference trên GPU nhằm tăng tốc độ nhận diện nhé.
Ps: Mình có link sẵn 1 Notebook Yolov4 trên Colab cho các bạn thực hành nhá https://colab.research.google.com/drive/1gsC8gtFazwkikBvDJ3OwKbeY__-lmpma?usp=sharing
Hẹn gặp lại các bạn! Chào tạm biệt và chúc các bạn thành công!
Hãy join cùng cộng đồng Mì AI nhé!
Fanpage: http://facebook.com/miaiblog
Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup
Website: https://miai.vn
Youtube: http://bit.ly/miaiyoutube
anh Thắng ở bước 6 thì đường dẫn đang thừa nhé. Anh sửa lại như bên dưới nhé.
# Step 6. Tạo file train.txt và val.txt
“data/images/” -> “data/”
Thanks em. Anh typing sai 😉
Anh Thắng ơi cho em hỏi chổ thông số quá trình train thì 2 cái giá trị loss đó là của tập val hay tập train vậy ạ ?
It is Training loss and Validation mAP
For me it isn’t necessary to see Validation loss, it is much better to see Validation mAP.
<-- đây là câu trả lời của chính tác giả đây em!
Cám ơn anh!
Anh ơi e đã giảm size ảnh xuống 416, tăng subdivisions lên 64 rồi nhưng vẫn bị out memory thì sao ạ.
Lạ nhỉ. Em thử reset lại máy tính, vào lại để có 1 phiên Colab mới xem. Em chay trên colab hay máy em. Có gì em chụp post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup nhé!
Em làm theo a thì fix được lỗi out memory rồi, nhưng mà nó lại bị lỗi load image, e đang dùng dataset GTSRB, e train trên Colab. E nghĩ có thể là do kích thước của ảnh trong tập dataset này nhỏ quá nên phát sinh lỗi.
Okie. Em post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup nhé
Thảo luận cho tiện!
Cám ơn Thắng nhiều nhé. Chúc bạn thành công hơn nữa.
Thanks bạn. Cảm ơn bạn ủng hồ Mì AI nha!
#MìAI
Fanpage: http://facebook.com/miaiblog
Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup
Blog: https://miai.vn
Youtube: http://bit.ly/miai_youtube
[yolo] params: iou loss: ciou (4), iou_norm: 0.07, cls_norm: 1.00, scale_x_y: 1.20
nms_kind: greedynms (1), beta = 0.600000
140 route 136 -> 76 x 76 x 128
141 conv 256 3 x 3/ 2 76 x 76 x 128 -> 38 x 38 x 256 0.852 BF
142 route 141 126 -> 38 x 38 x 512
143 conv 256 1 x 1/ 1 38 x 38 x 512 -> 38 x 38 x 256 0.379 BF
144 conv 512 3 x 3/ 1 38 x 38 x 256 -> 38 x 38 x 512 3.407 BF
145 conv 256 1 x 1/ 1 38 x 38 x 512 -> 38 x 38 x 256 0.379 BF
146 conv 512 3 x 3/ 1 38 x 38 x 256 -> 38 x 38 x 512 3.407 BF
147 conv 256 1 x 1/ 1 38 x 38 x 512 -> 38 x 38 x 256 0.379 BF
148 conv 512 3 x 3/ 1 38 x 38 x 256 -> 38 x 38 x 512 3.407 BF
149 conv 18 1 x 1/ 1 38 x 38 x 512 -> 38 x 38 x 18 0.027 BF
150 yolo
[yolo] params: iou loss: ciou (4), iou_norm: 0.07, cls_norm: 1.00, scale_x_y: 1.10
nms_kind: greedynms (1), beta = 0.600000
151 route 147 -> 38 x 38 x 256
152 conv 512 3 x 3/ 2 38 x 38 x 256 -> 19 x 19 x 512 0.852 BF
153 route 152 116 -> 19 x 19 x1024
154 conv 512 1 x 1/ 1 19 x 19 x1024 -> 19 x 19 x 512 0.379 BF
155 conv 1024 3 x 3/ 1 19 x 19 x 512 -> 19 x 19 x1024 3.407 BF
156 conv 512 1 x 1/ 1 19 x 19 x1024 -> 19 x 19 x 512 0.379 BF
157 conv 1024 3 x 3/ 1 19 x 19 x 512 -> 19 x 19 x1024 3.407 BF
158 conv 512 1 x 1/ 1 19 x 19 x1024 -> 19 x 19 x 512 0.379 BF
159 conv 1024 3 x 3/ 1 19 x 19 x 512 -> 19 x 19 x1024 3.407 BF
160 conv 1 1 x 1/ 1 19 x 19 x1024 -> 19 x 19 x 1 0.001 BF
161 yolo
Error: l.outputs == params.inputs
filters= in the [convolutional]-layer doesn’t correspond to classes= or mask= in [yolo]-layer
cho e hỏi lỗi này thế nào ạ?
Em ơi em chụp hình và up lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup cho tiện trao đổi nhé.
ở bước 6 dòng 11 bạn sửa thành như vầy là được nè (do đường dẫn sai)
image_files = glob2.glob(os.path.join(“data/”, ext))
ko đc bác ạ
Khi giải nén file data mọi người thêm : để thôi là file train chả có gì
image_files = glob2.glob(os.path.join(“data/data/”, ext))
# Step 6. Tạo file train.txt và val.txt
%cd /content/gdrive/My\ Drive/darknet
import glob2
import math
import os
import numpy as np
files = []
for ext in [“*.png”, “*.jpeg”, “*.jpg”]:
image_files = glob2.glob(os.path.join(“data/data/”, ext))
files += image_files
nb_val = math.floor(len(files)*0.2)
rand_idx = np.random.randint(0, len(files), nb_val)
# Tạo file train.txt
with open(“train.txt”, “w”) as f:
for idx in np.arange(len(files)):
if (os.path.exists(files[idx][:-3] + “txt”)):
f.write(files[idx]+’\n’)
# Tạo file vali.txt
with open(“val.txt”, “w”) as f:
for idx in np.arange(len(files)):
if (idx in rand_idx) and (os.path.exists(files[idx][:-3] + “txt”)):
f.write(files[idx]+’\n’)
Thanks em a đã sửa!
cái này là chia train 100% và val là 20% ạ, để như vậy có được không hay phải đúng 80 – 20
# Step 4. Giải nén file data
!unzip data.zip -d data
đoạn code thêm “-d data” nữa ae nhé
Mình có thể bỏ thêm dữ liệu mới mà mình thu thập được để train tiếp được không ạ? Hay phải train lại từ đầu ạ?
Em cảm ơn
Chào anh,
Anh cho em hỏi nếu mình train 2 class thì thư mục data mình tổ chức như thế nào vậy anh? Có phải thế này không anh?
darknet
— data
—-fire
—-water
Ngoài ra nếu train 2 class thì ở bước 6 lúc tạo file train.txt và val.txt thì biến image_files có còn giống như trong bài viết không anh:
image_files = glob2.glob(os.path.join(“data/data/”, ext))
Cảm ơn anh, chúc anh sức khỏe dồi dào để nấu thêm mì AI 🙂
Em post câu hỏi lên Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup trao đổi cho tiện nhé!
Tìm đến dòng 20, sửa max_batches = max(
*2000,6000). Nghĩa là nếu*2 mà nhỏ hơn 6000 thì lấy 6000 và ngược lại. Ở đây mình lấy 6000 vì 1*2000 < 6000 rồi. Sửa max_batches=6000.Đoạn anh hình như anh ghi sai nè a: "Nghĩa là nếu
*2″, *2000 mới đúng chứ ạe train xong r nhưng vào file backup nó trống trơn k có cái file weight nào v ạ
Em post lên Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup xem nhé!
Bạn ơi folder backup của mình cũng bị trống trơn, không biết bạn đã khắc phục được lỗi này chưa ah?
Bạn post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup nha!
ae nào mà đang train bị kill, song rồi chạy lại bước 10 để train tiếp bị lỗi này:
/bin/bash: ./darknet: Permission denied
thì thêm một code block trước bước 10 và chạy lệnh này nhé: !chmod +x ./darknet
nhớ phải mount drive trước đã :v
Anh ơi bài này ở bước 3 thư mục darknet là thư mục trắng hả anh, với lại cho em hỏi là cái bài này anh dùng frame work pytorch hay sao anh
Anh dùng source của YOLO thôi. Em post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup cho tiện trao đổi nhé!
Anh cho em hỏi là nếu mà mình có gắn sai hoặc thiếu sót vài anchor box của vài ảnh hoặc ảnh đó không có anchor thì tệp data có bị lỗi không ạ?
Không lỗi nhưng train sẽ làm model kém đi nhiều đó em!
Anh cho em hỏi,
Ý nghĩa của dòng ‘Replace toàn bộ các dòng có “filters=255” thành “filters=”’ là gì ạ? Tại sao các layer khác lại k sửa ạ? Em thấy 1 số bài tutorial k sửa gì phần đó ạ.
1 câu hỏi ngoài lề là giả sử em có ảnh tay giơ 1 ngón và giơ 2 ngón em đều label là one, thì khi train xong model sẽ detect cả 2 cử chỉ là one, hay là model sẽ kém đi ạ?
Em cảm ơn!
Đều là one hết em. Cái kia là sửa kiến trúc mạng Darknet ấy mà em.
anh cho em hỏi,
sao em chưa thấy món mì yolov5 vậy anh ???
Ah dạo này bận quá nên anh chưa nấu thêm. Để anh bố trí nhé!
Anh Thắng cho em hỏi?. Làm thế nào để có thể show ra được sơ đồ độ chính sác và độ mất mát của dữ liệu sau khi train xong ạ.
Em post lên https://www.facebook.com/groups/miaigroup trao đổi cho tiện nha!
Hi Anh,
Lúc trước e có train trên colab thì bình thường nhưng mấy hôm nay bị trường hợp này. A có thể xem hộ các xử lý được k ạ?
CUDA-version: 11000 (11020), cuDNN: 7.6.5, GPU count: 1
OpenCV version: 3.2.0
yolov4-custom
*** stack smashing detected ***: terminated
Em post lên Group: https://www.facebook.com/groups/miaigroup trao đổi cho tiện nhé!
anh ơi, lúc e train có hiện ra chữ “Wrong annotation…” ở đầu dòng là có sai gì ko a, nó cũng có nhưng dòng giống như hướng dẫn nhưng những dòng có “Wrong annotation…” nhiều hơn
Em chụp và post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup xem nehs!
Cái link train yolo trên colab sẵn đó là a train bao nhiêu class, bao nhiêu hình vậy a?
Lâu quá rồi a cũng không nhớ lắm. Em thử xem code xem.
Anh ơi, phần data em lấy bên biển số xe. Mà nhãn anh gán nó đưa hết vào 1 file location.txt thì làm thế nào để train đc ạ
Em post lên Group: https://www.facebook.com/groups/miaigroup cho tiện trao đổi vì có chụp hình dễ hơn nhé!
làm sao để hiện biểu đồ mAP ạ?
Cái này em post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup mọi người guide dễ hơn nhé!
a có thể làm 1 bài nói về cách tăng độ chinh xác của model bao gồm cách sửa code trên colab được k ạ?
cho em hỏi sau khi train xong thì evaluate model như thế nào để lấy các số liệu ạ?
Em post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup cho tiện trao đổi nha!
Anh cho em hỏi, em đã thêm ‘-map’ vào lệnh train nhưng vẫn không vẽ ra được biểu đồ mAP là tại sao ạ ?
Em post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup nhé. Trao đổi cho tiện!
chào anh ạ! Khi em train thì nó ra như này, không biết nó là lỗi gì ạ?
[yolo] params: iou loss: ciou (4), iou_norm: 0.07, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.05
nms_kind: greedynms (1), beta = 0.600000
Total BFLOPS 127.232
avg_outputs = 1046213
Allocate additional workspace_size = 0.04 MB
Loading weights from yolov4.conv.137…
seen 64, trained: 0 K-images (0 Kilo-batches_64)
Done! Loaded 137 layers from weights-file
Learning Rate: 0.001, Momentum: 0.949, Decay: 0.0005
Detection layer: 139 – type = 28
Detection layer: 150 – type = 28
Detection layer: 161 – type = 28
Resizing, random_coef = 1.40
896 x 896
Create 6 permanent cpu-threads
Em post lên https://facebook.com/groups/miaigroup thảo luận cho tiện nha!
A ơi cho em hỏi là sau khi train xong thì làm gì tiếp theo ạ. phàn predict thì code như thế ạ ?
Em post lên https://facebook.com/groups/miaigroup thảo luận cho tiện nha!
Anh ơi anh làm bài về training yolov5 được không ạ? Em mới làm quen, còn nghe qua phải sử dụng darknet nữa, phần này e cũng chưa hiểu rõ lắm anh ạ
Bạn post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup cho tiện trao đổi nhé!
Em vẫn bị lỗi này:
GPU isn’t used
OpenCV isn’t used – data augmentation will be slow
yolov4-custom
mặc dù em đã đổi Makefile thành thế này rồi anh ạ:
GPU=1
CUDNN=1
CUDNN_HALF=0
OPENCV=1
Em post lên Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup trao đổi cho tiện nha!