Train data – model Yolov3 – tiny

Một phần của tài liệu Nghiên cứu và phát triển hệ thống phát hiện đối tượng trên xe tự hành dành cho cuộc đua số của FPT đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 86)

Chương 4 : CHƯƠNG TRÌNH NHẬN DIỆN ĐỐI TƯỢNG

4.3. Train data trên Google Colab

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 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.

86

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

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 – tiny – custom.cfg trong thư mục darknet/cfg:

– batch = 64

– subdivisions = 16 – width = 288/128/96

87 – height = 288/128/96

– 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 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 yolov4 – tiny.conv.29 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.20. Thứ tự Train Yolov4 – 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:

88 – 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 ov4-tiny-custom.cfg custom_weight/yolov4-tiny.conv.29 -dont_show

89

4.4. Code chương trình nhận diện đối tượng

Để nhận diện được đối tượng thì code có thể tóm gọn qua những bước sau: – Khai báo các thư viện cần thiết.

– Tạo một biến để đọc file config và weights. – Bật camera.

– Đọc từng dòng trong file “.txt” hoặc file “.classes” – Đọc từng khung hình trong video.

– Nhận diện từng đối tượng trong khung hìn và so sánh với từng nhãn có trong file “.txt” hoặc “.classes”.

– Xác định 4 điểm trong khung ảnh mà chứa đối tượng. – Vẽ một khung từ 4 điểm trên.

– In tên đối tượng và phần trăm mà đối tượng giống với ảnh đã train. – Xuất từng khung hình để được một video liền mạch.

90

91

4.5. So sánh, đánh giá các model – Lựa chọn model phù hợp

Để so sánh và đánh giá các model cần phải dựa vào 2 tiêu chí chủ yếu là: Độ chính xác và tốc độ khung hình (FPS) của từng model. Model nào có thể trung hịa được 2 yếu tố trên là đạt yêu cầu đối với bài toán nhận dạng đối tượng trong thời gian thực. Để làm được điều đó thì cần trải qua các bước sau:

– Chọn một đối tượng để thực hiện gán nhãn và train dữ liệu trên Google Colab. – Chọn một máy tính để chạy chương trình nhận diện đối tượng cho từng model. Do các model phải cùng chạy trên một cấu hình máy tính thì mới có thể đánh giá tổng quan được các model.

– Lập trình để hiển thị FPS trên khung hình và kết hợp với chương trình nhận diện vật thể.

Sau khi thực hiện các bước thì được kết quả như sau:

92

Hình 4.24. Nhận diện đối tượng model YOLOv3

93

Hình 4.26. Nhận diện đối tượng model YOLOv4

94

Nhận xét:

– Độ chính xác: các model đều nhận diện được đối tượng, nhưng ở các model YOLOv4 thì nhận diện tốt hơn các model YOLOv3 với độ chính xác lớn hơn 90% và nhận diện được nhiều đối tượng cùng một lúc.

– Tốc độ khung hình: các model YOLO – tiny có tốc độ khung hình cao hơn nhiều so với các model YOLO, trong đó cao nhất là model YOLOv4 – tiny với khoảng 10 FPS.

Qua việc so sánh và đánh giá về độ chính xác, tốc độ khung hình của các model thì thấy rằng có 2 model thích hợp cho các yêu cầu của bài tốn đó là YOLOv3 – tiny và YOLOv4 – tiny vì có thể trung hịa được cả 2 yếu tố là độ chính xác và FPS. Nhưng nhìn chung thì YOLOv4 – tiny vẫn tốt hơn YOLOv3 – tiny về mặt FPS (khoảng 20%) và độ chính xác (khoảng 8%). Do vậy ở bài toán nhận diện đối tượng của đề tài này thì model YOLOv4 – tiny là phù hợp nhất.

95

Chương 5

THỰC NGHIỆM VÀ KẾT QUẢ 5.1. Tổng quan

Trong chương này, chúng tôi thiết kế một hệ thống phát hiện các đối tượng bằng camera áp dụng mơ hình phát hiện vật thể YOLOv4 – tiny. Từ dữ liệu đầu ra của mơ hình, chúng tơi kiểm tra liệu đối tượng có đang nằm ở trong vùng điều khiển hay khơng và từ đó đưa ra tín hiệu điều khiển xe theo từng giai đoạn phù hợp với khoảng cách hiện tại của đối tượng và xe.

Tiếp theo, chúng tôi tiến hành lắp đặt và thử nghiệm hệ thống trên xe nhằm kiểm tra liệu hệ thống của chúng tơi có đáp ứng được mục tiêu đã định ra ban đầu hay khơng, hệ thống chạy trên thời gian thực có ổn định hay khơng, có độ trễ xảy ra hay khơng và cuối cùng kiểm tra xem độ chính xác khi xử lý tín hiệu có phù hợp hay khơng để từ đó chúng tơi điều chỉnh thuật tốn một cách chính xác hơn.

96

Hình 5.2. Sơ đồ chân mơ hình xe tự hành

97

Hình 5.4. Mơ hình xe tự hành hướng nhìn từ trên xuống 5.2. Xử lý nhận diện đối tượng 5.2. Xử lý nhận diện đối tượng

5.2.1. Giới thiệu

Điểm cốt lõi của hệ thống chính là vấn đề nhận dạng các đối tượng, nếu hệ thống phát hiện đối tượng chính xác và đạt được hiệu quả cao thì hệ thống sẽ đáp ứng được chỉ tiêu về tín hiệu xử lý. Vì vậy việc lựa chọn thuật tốn và mơ hình cần phải được khảo sát kỹ và đưa vào thực nghiệm để đánh giá độ ổn định và đáp ứng của mơ hình. Do đó, dựa trên cơ sở so sánh các thuật tốn và mơ hình được đề cập ở phần trước, chúng tơi chọn mơ hình YOLOv4 – tiny làm cơ sở cho việc tìm kiếm và phát hiện đối tượng của hệ thống.

Mơ hình YOLOv4 – tiny là một trong những mơ hình phát hiện vật thể nhanh nhất hiện tại với độ chính xác tương đối ổn. Dựa vào tốc độ phát hiện vật thể của mơ hình, hệ thống có thể đáp ứng được tiêu chí chạy được trong thời gian thực. Phiên bản này được phát hành vào ngày 25 tháng 6 năm 2020, nó cải thiện được độ chính xác cũng như tốc độ

Một phần của tài liệu Nghiên cứu và phát triển hệ thống phát hiện đối tượng trên xe tự hành dành cho cuộc đua số của FPT đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 86)

Tải bản đầy đủ (PDF)

(122 trang)