62
Hình 3.14. Giao diện cơng cụ LabelImg Tool 3.2.5. Google Colab
Colaboratory hay còn gọi là Google Colab, là một sản phẩm từ Google Research, nó cho phép chạy các dịng code python thơng qua trình duyệt, đặc biệt phù hợp với Data analysis, machine learning và giáo dục. Colab khơng cần u cầu cài đặt hay cấu hình máy tính, mọi thứ có thể chạy thơng qua trình duyệt, bạn có thể sử dụng tài ngun máy tính từ CPU tốc độ cao và cả GPUs và cả TPUs đều được cung cấp cho bạn.
63 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. Vì là dịch vụ miễn phí, nên Colab sẽ có những thứ tự ưu tiên trong việc sử dụng tài nguyên hệ thống, cũng như giới hạn thời gian sử dụng, thời gian sử dụng tối đa lên tới 12 giờ.
Hình 3.16. Cấu hình phần cứng Google Colab cung cấp
Lợi ích khi sử dụng Google Colab là được cung cấp GPU miễn phí: Sự phát triển mạnh mẽ của Machine learning và Deep learning trong những năm gần đây không chỉ bởi các thuật tốn, các mơ hình tân tiến liên tiếp ra đời mà cịn bởi sự phát triển khơng ngừng của phần cứng, đặc biệt là GPU. Việc tính tốn về tốn học cho Deep Learning trên CPU có thể mất hàng tháng. Nhưng những tính tốn này có thể được gán cho GPU để thực hiện nhanh hơn. Việc train Neural Network trên CPU không được khuyến nghị. GPU cần thiết cho việc tính tốn ở mức độ cao.
64
Chương 4
CHƯƠNG TRÌNH NHẬN DIỆN ĐỐI TƯỢNG 4.1. Chuẩn bị data
Data là những hình ảnh của đối tượng mà chúng ta sẽ nhận diện. Càng nhiều data thì những đặc trưng của đối tượng khi train dữ liệu sẽ càng rõ, vì vậy mà mỗi đối tượng sẽ cần tối thiểu 3000 hình ảnh. Trong đồ án này chúng tôi sử dụng 5 đối tượng thường gặp trên đường:
– Người đi bộ qua vạch kẻ đường.
65 – Xe hơi trên đường.
Hình 4.2. Xe hơi trên đường
– Biển báo hiệu lệnh rẽ trái.
66 – Biển báo cấm rẽ trái – đi thẳng.
Hình 4.4. Biển báo cấm rẽ trái – đi thẳng
– Biển báo Stop.
67
4.2. Gán nhãn data – labelImg Tool
Dùng công cụ gán nhãn labelImg Tool để gán nhãn cho từng đối tượng nhằm tạo ra data dùng để train dữ liệu. Các bước sử dụng công cụ labelImg Tool như sau:
– Bước 1: click chọn OPEN DIR để chọn thư mục chứa ảnh.
– Bước 2: click chọn CHANGE SAVE DIR để chọn thư mục lưu file txt/xml. – Bước 3: click vào Pascal/VOC để chuyển đổi file lưu từ “.xml” sang “.txt” (Bước này quan trọng).
– Bước 4: chọn View/Auto save mode để tự lưu các file.
– Bước 5: chọn View/Single class mode để gán nhãn cho từng loại đối tượng. Cách gán nhãn từng loại đối tượng một sẽ cho năng suất gán nhãn cao hơn bởi vì có thể loại bỏ các bước lựa chọn tên nhãn và click chọn OK.
Một số phím tắt thường sử dụng trong cơng cụ gán nhãn:
68
Hình 4.7. Gán nhãn cho vật thể
Với mỗi hình gán nhãn xong, tool sẽ tự tạo một file có tên trùng với bức ảnh và có đi “.txt” có nội dung như sau:
Hình 4.8. Nội dung file “.txt”
Tương tự như vậy, gán nhãn cho từng đối tượng trong đề tài: – Gán nhãn cho người đi bộ qua vạch kẻ đường.
69
Hình 4.9. Gán nhãn cho người đi bộ qua vạch kẻ đường
– Gán nhãn cho xe hơi đậu trên đường.
70 – Gán nhãn cho biển báo hiệu lệnh rẽ trái.
Hình 4.11. Gán nhãn cho biển báo hiệu lệnh rẽ trái
– Gán nhãn cho biển báo cấm rẽ trái – đi thẳng.
71 – Gán nhãn cho biển báo Stop.
Hình 4.13. Gán nhãn cho biển báo Stop 4.3. Train data trên Google Colab 4.3. Train data trên Google Colab
4.3.1. Train data – model Yolov3
Bước 1: Resize tất cả ảnh cho cùng kích thước bằng phần mềm trước khi gán nhãn. Bước 2: Thực hiện gán nhãn bằng cơng cụ labelImg Tool:
– Xóa các danh mục trong file data/predefined_classes.txt – Chọn Open Dir => chọn đến thư mục chứa ảnh.
– Chọn Open change dir => chọn thư mục chứa ảnh.
– Gán nhãn xong phải mở file classes.text => xóa dịng trống cuối cùng.
Bước 3: Mở file classes.txt trong custom_data => Save as => classes.names (All type
(*)).
Bước 4: Tạo file train.txt và test.txt:
72 cd Downloads\train\custom_data
– Liệt kê File ảnh: dir/s/b *.jpg
– Xuất đường dẫn file ảnh: dir/s/b *.jpg >train.txt
– Replace đường dẫn trong file train.txt => custom_data/xxxx.jpg – Xóa dịng trống cuối cùng trong train.txt => Save
– Mở file train.txt => save as tạo file test.txt.
– File train.txt va test.txt được lưu trong file custom_data.
Bước 5: Tạo file labelled_data.data:
– Mở Notepab và gõ nội dung như sau: classes = 5 (số lượng vật thể)
train = custom_data/train.txt valid = custom_data/test.txt
names = custom_data/classes.names backup = backup
– Lưu và đuổi đuôi từ “.txt” sang “.data”
– File labelled_data.data cũng được lưu trong file custom_data.
Bước 6: Zip thư mục chứa ảnh (đặt tên thư mục là custom_data).
Bước 7: Upload file custom_data.zip vào thư mục yolo_custom_model_Training
trên Google Drive.
Bước 8: Mở Google colab: colab.research.google.com Bước 9: Liên kết Colab với Drive:
from google.colab import drive drive.mount('/content/drive')
73
Bước 10: Liệt kê tệp trong thư mục yolo_custom_model_Training
ls '/content/drive/My Drive/yolo_custom_model_Training'
Bước 11: Download file darknet vào thư mục yolo_custom_model_Training trong
Drive.
!git clone 'https://github.com/AlexeyAB/darknet.git' '/content/drive/My Drive/ yolo_custom_model_Training/darknet'
Bước 12: Chuyển đến thư mục darknet
%cd /content/drive/My Drive/yolo_custom_model_Training/darknet
Bước 13: Liệt kê file có trong thư mục darknet
!ls => xóa !ls => gõ !make => run
Bước 14: Download và chỉnh sửa file makefile
– GPU = 0 => 1 – CUNN = 0 => 1 – OPENCV = 0 => 1
Bước 15: Xóa makefile cũ trên drive => upload makefile mới lên drive
– Khi xóa phải xem makefile đã mất bên thư mục của colab chưa. – Khi upload cũng phải xem makefile đã tải lên colab chưa.
Bước 16: Tải và sửa file yolov3.cfg trong thư mục darknet/cfg:
– batch = 64
– subdivisions = 16 – width = 288 – height = 288
– max_batches = classes*2000 ( >= 6000) – step = 0.8* max_batches, 0.9* max_batches
74 – Find => [yolo]
– Classes = số lượng vật thể – Filters = (classes + 5)*3
– Save as yolov3.cfg => yolov3_custom.cfg => upload lên darknet/cfg – Khi upload phải xem bên colab có chưa.
Bước 17: Tạo file custom_weight trong yolo_custom_model_Training => Upload
file darknet53.conv.74 vào thư mục custom_weight.
Bước 18: Tạo file backup trong yolo_custom_model_Training. Bước 19: Chuyển đến thư mục yolo_custom_model_Training
%cd /content/drive/My Drive/yolo_custom_model_Training
Bước 20: Gõ và chạy lệnh: !darknet/darknet
Hình 4.14. Thứ tự Train Yolov3 bước 1 – 20 Bước 21: Thực hiện lại các bước với thời gian chạy là GPU: Bước 21: Thực hiện lại các bước với thời gian chạy là GPU:
– Runtime lại thành GPU – Liên kết Colab với Drive
75 – Liệt kê tệp trong thư mục yolo_custom_model_Training
– Chuyển đến thư mục darknet
– Liệt kê file có trong thư mục darknet => chạy lệnh !make – Chuyển đến thư mục yolo_custom_model_Training – Gõ và chạy lệnh: !darknet/darknet
– Unzip file custom_data
!unzip '/content/drive/My Drive/yolo_custom_model_Training/custom_data.zi p' -d '/content/drive/My Drive/yolo_custom_model_Training'
– Chuyển đến thư mục yolo_custom_model_Training – Gõ và chạy lệnh:
!darknet/darknet detector train custom_data/labelled_data.data darknet/cfg/yol ov3_custom.cfg custom_weight/darknet53.conv.74 -dont_show
76
4.3.2. Train data – model Yolov3 – tiny
Bước 1: Resize tất cả ảnh cho cùng kích thước bằng phần mềm trước khi gán nhãn. Bước 2: Thực hiện gán nhãn bằng cơng cụ labelImg Tool:
– Xóa các danh mục trong file data/predefined_classes.txt – Chọn Open Dir => chọn đến thư mục chứa ảnh.
– Chọn Open change dir => chọn thư mục chứa ảnh.
– Gán nhãn xong phải mở file classes.text => xóa dịng trống cuối cùng.
Bước 3: Mở file classes.txt trong custom_data => Save as => classes.names (All type
(*)).
Bước 4: Tạo file train.txt và test.txt:
– Mở cmd chỉ đường dẫn tới thư mục chứa ảnh: cd Downloads\train\custom_data
– Liệt kê File ảnh: dir/s/b *.jpg
– Xuất đường dẫn file ảnh: dir/s/b *.jpg >train.txt
– Replace đường dẫn trong file train.txt => custom_data/xxxx.jpg – Xóa dịng trống cuối cùng trong train.txt => Save
– Mở file train.txt => save as tạo file test.txt.
– File train.txt va test.txt được lưu trong file custom_data.
Bước 5: Tạo file labelled_data.data:
– Mở Notepab và gõ nội dung như sau: classes = 5 (số lượng vật thể)
train = custom_data/train.txt valid = custom_data/test.txt
77 backup = backup
– Lưu và đuổi đuôi từ “.txt” sang “.data”
– File labelled_data.data cũng được lưu trong file custom_data.
Bước 6: Zip thư mục chứa ảnh (đặt tên thư mục là custom_data).
Bước 7: Upload file custom_data.zip vào thư mục yolo_custom_model_Training
trên Google Drive.
Bước 8: Mở Google colab: colab.research.google.com Bước 9: Liên kết Colab với Drive:
from google.colab import drive drive.mount('/content/drive')
Bước 10: Liệt kê tệp trong thư mục yolo_custom_model_Training
ls '/content/drive/My Drive/yolo_custom_model_Training'
Bước 11: Download file darknet vào thư mục yolo_custom_model_Training trong
Drive.
!git clone 'https://github.com/AlexeyAB/darknet.git' '/content/drive/My Drive/ yolo_custom_model_Training/darknet'
Bước 12: Chuyển đến thư mục darknet
%cd /content/drive/My Drive/yolo_custom_model_Training/darknet
Bước 13: Liệt kê file có trong thư mục darknet
!ls => xóa !ls => gõ !make => run
Bước 14: Download và chỉnh sửa file makefile
– GPU = 0 => 1 – CUNN = 0 => 1 – OPENCV = 0 => 1
78
Bước 15: Xóa makefile cũ trên drive => upload makefile mới lên drive
– Khi xóa phải xem makefile đã mất bên thư mục của colab chưa. – Khi upload cũng phải xem makefile đã tải lên colab chưa.
Bước 16: Tải và sửa file yolov3 – tiny.cfg trong thư mục darknet/cfg:
– batch = 64
– subdivisions = 16 – width = 288 – height = 288
– max_batches = classes*2000 ( >= 6000) – step = 0.8* max_batches, 0.9* max_batches – Find => [yolo]
– Classes = số lượng vật thể – Filters = (classes + 5)*3
– Save as yolov3 – tiny.cfg => yolov3 – tiny_custom.cfg => upload lên darknet/cfg – Khi upload phải xem bên colab có chưa.
Bước 17: Tạo file custom_weight trong yolo_custom_model_Training => Upload
file yolov3 – tiny.conv.15 vào thư mục custom_weight.
Bước 18: Tạo file backup trong yolo_custom_model_Training. Bước 19: Chuyển đến thư mục yolo_custom_model_Training
%cd /content/drive/My Drive/yolo_custom_model_Training
79
Hình 4.16. Thứ tự Train Yolov3 – tiny bước 1 – 20 Bước 21: Thực hiện lại các bước với thời gian chạy là GPU: Bước 21: Thực hiện lại các bước với thời gian chạy là GPU:
– Runtime lại thành GPU – Liên kết Colab với Drive
– Liệt kê tệp trong thư mục yolo_custom_model_Training – Chuyển đến thư mục darknet
– Liệt kê file có trong thư mục darknet => chạy lệnh !make – Chuyển đến thư mục yolo_custom_model_Training – Gõ và chạy lệnh: !darknet/darknet
– Unzip file custom_data
!unzip '/content/drive/My Drive/yolo_custom_model_Training/custom_data.zi p' -d '/content/drive/My Drive/yolo_custom_model_Training'
– Chuyển đến thư mục yolo_custom_model_Training – Gõ và chạy lệnh:
!darknet/darknet detector train custom_data/labelled_data.data darknet/cfg/yol ov3-tiny_custom.cfg custom_weight/yolov3-tiny.conv.15 -dont_show
80
Hình 4.17. Thứ tự Train Yolov3 – tiny bước 21 4.3.3. Train data – model Yolov4 4.3.3. Train data – model Yolov4
Bước 1: Resize tất cả ảnh cho cùng kích thước bằng phần mềm trước khi gán nhãn. Bước 2: Thực hiện gán nhãn bằng công cụ labelImg Tool:
– Xóa các danh mục trong file data/predefined_classes.txt – Chọn Open Dir => chọn đến thư mục chứa ảnh.
– Chọn Open change dir => chọn thư mục chứa ảnh.
– Gán nhãn xong phải mở file classes.text => xóa dịng trống cuối cùng.
Bước 3: Mở file classes.txt trong custom_data => Save as => classes.names (All type
(*)).
Bước 4: Tạo file train.txt và test.txt:
– Mở cmd chỉ đường dẫn tới thư mục chứa ảnh: cd Downloads\train\custom_data
– Liệt kê File ảnh: dir/s/b *.jpg
– Xuất đường dẫn file ảnh: dir/s/b *.jpg >train.txt
81 – Xóa dịng trống cuối cùng trong train.txt => Save
– Mở file train.txt => save as tạo file test.txt.
– File train.txt va test.txt được lưu trong file custom_data.
Bước 5: Tạo file labelled_data.data:
– Mở Notepab và gõ nội dung như sau: classes = 5 (số lượng vật thể)
train = custom_data/train.txt valid = custom_data/test.txt
names = custom_data/classes.names backup = backup
– Lưu và đuổi đuôi từ “.txt” sang “.data”
– File labelled_data.data cũng được lưu trong file custom_data.
Bước 6: Zip thư mục chứa ảnh (đặt tên thư mục là custom_data).
Bước 7: Upload file custom_data.zip vào thư mục yolo_custom_model_Training
trên Google Drive.
Bước 8: Mở Google colab: colab.research.google.com Bước 9: Liên kết Colab với Drive:
from google.colab import drive drive.mount('/content/drive')
Bước 10: Liệt kê tệp trong thư mục yolo_custom_model_Training
ls '/content/drive/My Drive/yolo_custom_model_Training'
Bước 11: Download file darknet vào thư mục yolo_custom_model_Training trong
82 !git clone 'https://github.com/AlexeyAB/darknet.git' '/content/drive/My Drive/ yolo_custom_model_Training/darknet'
Bước 12: Chuyển đến thư mục darknet
%cd /content/drive/My Drive/yolo_custom_model_Training/darknet
Bước 13: Liệt kê file có trong thư mục darknet
!ls => xóa !ls => gõ !make => run
Bước 14: Download và chỉnh sửa file makefile
– GPU = 0 => 1 – CUNN = 0 => 1 – OPENCV = 0 => 1
Bước 15: Xóa makefile cũ trên drive => upload makefile mới lên drive
– Khi xóa phải xem makefile đã mất bên thư mục của colab chưa. – Khi upload cũng phải xem makefile đã tải lên colab chưa.
Bước 16: Tải và sửa file yolov4.cfg trong thư mục darknet/cfg:
– batch = 64
– subdivisions = 16 – width = 288 – height = 288
– max_batches = classes*2000 ( >= 6000) – step = 0.8* max_batches, 0.9* max_batches – Find => [yolo]
– Classes = số lượng vật thể – Filters = (classes + 5)*3
83 – Save as yolov4.cfg => yolov4_custom.cfg => upload lên darknet/cfg
– Khi upload phải xem bên colab có chưa.
Bước 17: Tạo file custom_weight trong yolo_custom_model_Training => Upload
file yolov4.conv.137 vào thư mục custom_weight.
Bước 18: Tạo file backup trong yolo_custom_model_Training. Bước 19: Chuyển đến thư mục yolo_custom_model_Training
%cd /content/drive/My Drive/yolo_custom_model_Training
Bước 20: Gõ và chạy lệnh: !darknet/darknet
Hình 4.18. Thứ tự Train Yolov4 bước 1 – 20 Bước 21: Thực hiện lại các bước với thời gian chạy là GPU: Bước 21: Thực hiện lại các bước với thời gian chạy là GPU:
– Runtime lại thành GPU – Liên kết Colab với Drive
– Liệt kê tệp trong thư mục yolo_custom_model_Training – Chuyển đến thư mục darknet
– Liệt kê file có trong thư mục darknet => chạy lệnh !make – Chuyển đến thư mục yolo_custom_model_Training – Gõ và chạy lệnh: !darknet/darknet
84 – Unzip file custom_data
!unzip '/content/drive/My Drive/yolo_custom_model_Training/custom_data.zi p' -d '/content/drive/My Drive/yolo_custom_model_Training'
– Chuyển đến thư mục yolo_custom_model_Training – Gõ và chạy lệnh:
!darknet/darknet detector train custom_data/labelled_data.data darknet/cfg/yol ov4_custom.cfg custom_weight/yolov4.conv.137 -dont_show
Hình 4.19. Thứ tự Train Yolov4 bước 21 4.3.4. Train data – model Yolov4 – tiny 4.3.4. Train data – model Yolov4 – tiny
Bước 1: Resize tất cả ảnh cho cùng kích thước bằng phần mềm trước khi gán nhãn. Bước 2: Thực hiện gán nhãn bằng công cụ labelImg Tool:
– Xóa các danh mục trong file data/predefined_classes.txt – Chọn Open Dir => chọn đến thư mục chứa ảnh.
– Chọn Open change dir => chọn thư mục chứa ảnh.
85
Bước 3: Mở file classes.txt trong custom_data => Save as => classes.names (All type
(*)).
Bước 4: Tạo file train.txt và test.txt:
– Mở cmd chỉ đường dẫn tới thư mục chứa ảnh: cd Downloads\train\custom_data
– Liệt kê File ảnh: dir/s/b *.jpg
– Xuất đường dẫn file ảnh: dir/s/b *.jpg >train.txt
– Replace đường dẫn trong file train.txt => custom_data/xxxx.jpg – Xóa dịng trống cuối cùng trong train.txt => Save
– Mở file train.txt => save as tạo file test.txt.
– File train.txt va test.txt được lưu trong file custom_data.
Bước 5: Tạo file labelled_data.data:
– Mở Notepab và gõ nội dung như sau: classes = 5 (số lượng vật thể)
train = custom_data/train.txt valid = custom_data/test.txt
names = custom_data/classes.names