CHUẨN BỊ TẬP DỮ LIỆU HUẤN LUYỆN VÀ GÁN NHÃN

Một phần của tài liệu ĐỒ ÁN TỐT NGHIỆP NGHIÊN CỨU PHÁT TRIỂN HỆ THỐNG TỰ ĐỘNG NHẬN DIỆN VÀ GIÁM SÁT LỢN QUA CAMERA SỬ DỤNG YOLOv4 DeepSORT (Trang 53)

2.3.1. Chuẩn bị tập dữ liệu

Dữ liệu huấn luyện cho YOLOv4 là các ảnh từ các trang trại chăn nuôi lợn, và ảnh bao gồm ảnh chụp trực tiếp và ảnh cắt từ video camera:

 Số lượng ảnh: 1000 ảnh  Nhãn: “pig”

 Ảnh bao gồm lợn ở rất nhiều tư thế như: đứng, nằm, ăn, đi.

 Gán nhãn toàn bộ thân của lợn và không gán nhãn lợn bị che khuất quá 60%. Một số dữ liệu cho tập training

Hình 2.34. Một số hỉnh ảnh của dataset cho tập training

2.3.2. Gán nhãn

Hiện nay có một vài công cụ phổ biến cho việc gán nhãn cho mạng YOLOv4 như LabelImg tool. Nhưng nhận thấy LabelImg chỉ cho ra output của một định dạng duy nhất với YOLOv4 mà không thể trả về các định dạng cho tập file huấn luyện khác: XML cho Pascal VOC, TXT cho YOLO Darknet hay Tensorflow TFRecord,..

Hình 2.35. Các định dạng tập training cho mỗi mạng Roboflow cho phép

Đầu tiên chúng ta thêm dataset vào project tương ứng trên Roboflow. Giới hạn của Roboflow là tối đa 1000 ảnh cho mỗi project với bản không tính phí. Với mỗi ảnh ở dataset ta tiến hành gán nhãn.

Mỗi project ta có thể tạo nhiều bộ dataset đa dạng với mục đích chia nhỏ những bộ dataset có chung thuộc tính với nhau. Tạo mới dataset với các option chọn ảnh đưa vào dataset, chia dataset thành 3 bộ Training Set, Validation Set, Testing Set. Roboflow cho phép tiền xử lý ảnh với các thao tác: Auto-Orient hay Resize ảnh và rất nhiều lựa chọn

Augmentation cho ảnh để tăng sự phong phú trong bộ dataset huấn luyện mà không cần dùng đến phần mềm thứ 3 nào khác.

Hình 2.36. Tạo dataset mới trên Roboflow

Hình 2.38. Chia tập ảnh Train/Test

Tiếp đến ta tiến hành gán nhãn cho mỗi ảnh trong dataset:

Hình 2.41. Ảnh trước khi gán nhãn

Với bộ dataset với các ảnh đã được gán nhãn, chọn Export để download bộ dataset với Format tương ứng với mạng huấn luyện đã chọn. Ở đây em chọn mạng YOLOv4 với

backbone Darknet nên format sẽ là YOLO Darknet dạng file TXT.

Hình 2.43. Exported Dataset được gán nhãn theo YOLO Darknet format

Output cho định dạng YOLO Darknet bao gồm:  1 file .labels chứa các class được gán nhãn

 Ảnh và file txt tương ứng trùng tên và chỉ khác đuôi file File _darknet.labels chứa các class đã được gán nhãn:

Hình 2.44. Nội dung file _darknet.labels

Trong đó:

 : id của class

 : tọa độ x tâm O của bouding box  : tọa độ y tâm O của bouding box  : độ rộng của bounding box  : chiều cao của bounding box

Tất cả thông số đều chia tỉ lệ tương ứng với ảnh.

Hình 2.45. Nội dung file .txt của một ảnh trong dataset

Ví dụ với dòng 1 có nội dung:

0 : class có id là 0, ở đây em sử dụng 1 class duy nhất là pig nên classId của nó = 0 4 số tiếp theo lần lượt là xCenter, yCenter, widthheight của bounding box.

2.4. Tiến hành Training trên Google Colab2.4.1. Chuẩn bị dữ liệu 2.4.1. Chuẩn bị dữ liệu

Ta nén bộ dữ liệu Export về từ Roboflow thành file zip có dạng tên: data.zip

Tiếp theo ta tải file yolov4-custom.cfg từ source của tác giả về máy tại đây. Mở và sửa cho thích hợp với bài toán của mình (chỉ có 1 class “pig”).

 Cập nhật các tham số trong file config:

 Tham số class = 1: do chỉ cần huấn luyện detection duy nhất một đối tượng “pig”.

 Tham số max_batches = 6000

 Tham số steps = 4800, 5400 (lấy lần lượt 80%, 90 của max_batches)  Tham số filters = 18, thay 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

 Chuẩn bị MakeFile

 Tải Makefile về tại đây  Sửa các tham số sau:

GPU = 1

CUDNN = 1

OPENCV = 1

 Lưu lại và save Makefile cùng chỗ với data.zip

2.4.2. Bắt đầu train mô hình YOLOv4 với dataset nhãn lợn với Google Colab

Bước 1. Tạo notebook trên Google Colab

Truy cập địa chỉ chức thức của colab https://colab.research.google.com/ và chọn New Notebook.

Chọn Runtime cho Notebook, có 3 lựa Runtime Type cho Notebook, ở đây chúng ta chọn option GPU để huấn luyện:

 None: Không sử dụng hardware accelerator, chỉ dùng CPU

 GPU(Graphic Processing Unit): Sử dụng bộ xử lý đồ họa, giúp tăng tốc huấn luyện

 TPU: bộ xử lý được tùy chỉnh mạnh mẽ để chạy trên một khuôn cụ thể - Tensoflow

Hình 2.46. Lựa chọn RuntimeType trên Google Colab

Bước 2. Kết nối Google Drive

Lưu ý với mỗi Notebook Colab sau 10 tiếng sẽ bị xóa nên không nên để file trên Notebook. Giải pháp là chúng ta sẽ liên kết tới tài khoản Google Drive.

# Step 1. Kết nối với GoogleDrive

from google.colab import drive drive.mount('/content/gdrive')

Bước 3. Tải mà nguồn YOLOv4 về Drive

Mã nguồn YOLOv4 được public tại github của tác giá AlexeyAB. Ta sẽ tải mã nguồn về Drive mà Notebook đã được kết nối trước đó.

Hình 2.48. Pull mã nguồn YOLOv4 từ git của tác giả

Bước 4. Upload dữ liệu training lên Google Drive

Ta up load 3 file: data.zip, Makefile và yolov4-custom.cfg. Tìm đến thư mục darknet của Google Drive và thực hiện:

Hình 2.50. Thư mục Darknet

 Upload file data.zip vào ttrong thư mục data  Upload file yolov4-custom.cfg vào thư mục cfg  Upload file Makefile vào thư mục darknet

Bước 5. Giải nén file data.zip để lấy dữ liệu train

Tạo một code block mới trên Notebook và chạy lệnh dưới đây:

Hình 2.51. Giải nén file data.zip

Bước 6. Tạo file yolo.names chứa tên các class

Hình 2.52. Chuỗi lệnh tạo file yolo.names

Bước 7. Tạo hai file train.txt và val.txt chứa danh sách các file ảnh

 File train.txt: chứa danh sách các file sẽ dùng để huấn luyện  File val.txt: danh sách file dùng để validate (kiểm chứng)

 Danh sách cần chọn ngẫu nhiên để đảm bảo tính phân phối dữ liệu # 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')

Bước 8. Tạo file yolo.data chứa tham số huấn luyện mô hình

Hình 2.53. Tạo file yolo.data

Bước 9. Biên dịch mã nguồn Darknet

Hình 2.54. Biên dịch mã nguồn Darknet bằng lệnh

Bước 10. Tải pretrain weight

Pretrain weight là file weight đã được huấn luyện trước đó bởi một bộ dataset của tác giả.

Hình 2.55. Tải pretrain weight

Quá trình thực hiện huấn luyện mất rất nhiều thời gian. Với tốc độ của GPU tốt thời gian huấn luyện với khoảng 1000 ảnh là xấp xỉ 6 tiếng.

Hình 2.56. Thực hiện train YOLOv4

Sau khi huấn luyện mô hình thành công, tại thư mục darknet/backup các file weight được tạo bao gồm:

 yolov4-custom_1000.weights  yolov4-custom_last.weights

Với yolov4-custom_1000.weigths hay yolov4-custom_2000.weights là các file weights được tạo ở vòng thứ 1000, 2000, ..

Các file yolov4-custom_last.weights là file weights cuối cùng sau khi huấn luyện.

CHƯƠNG III. HỆ THỐNG TỰ ĐỘNG NHẬN DIỆN VÀ GIÁM SÁT LỢN QUA CAMERA SỬ DỤNG YOLOV4

3.1. PHÂN TÍCH THIẾT KẾ HỆ THỐNG

Chức năng chính mà em muốn giới thiệu của hệ thống là tự động nhận diện và giám sát lợn qua video(camera) từ chuồng nuôi. Bên cạnh đó, hệ thống có tích hợp các chức năng nghiệp vụ để giúp người nông dân quản lý chuồng và các thể thể lợn trong chuồng chuyên nghiệp hơn.

Trước đây, người nông dân luôn phải ghi chép thông tin nhập, xuất lợn bằng tay, lưu trữ bởi những quyển sổ cái. Mang đến rất nhiều rủi ro và sai sót trong quá trình quản lý trang trại lợn. Hệ thống sẽ cả thiện sự bất tiện đó bằng việc giúp người quản lý trang trại có thể quản lý trực tiếp trên website từ: kiểm soát nhiều trang trại, quản lý nhiều chuồng, theo dõi số lượng lợn, sự kiện nhập xuất của lợn,.. Mọi thông tin đều được được bảo mật giúp người nông dân hoàn toàn yên tâm trong việc phát triển và mở rộng kinh doanh của mình.

Hầu hết các trang trại ngày nay đều được trang bị camera ở mỗi chuồng nuôi lợn. Nhưng việc kiểm soát số lượng lợn và theo dõi lợn đều là thủ công. Hệ thống cung cấp tính năng streaming trực tiếp video từ camera của trang trại chuyển tới hệ thống xử lý tích hợp trí tuệ nhân tạo để đưa ra video đầu ra cho người dùng có nhiều thông tin về lợn của mình trong chuồng nuôi hơn. Hệ thống giúp đỡ người nông dân tự động hóa cho mỗi quy trình quản lý trong trang trại nuôi lợn một cách hiệu quả.

3.1.1. Đặc tả yêu cầu hệ thống 3.1.1.1. Xác định tác nhân nghiệp vụ

Hệ thống cung cấp các chức năng tiện lợi sát với nhu cầu thực tế của các trang trại chăn nuôi lợn, nơi người nông dân tốn nhiều công sức để theo dõi và kiểm soát các cá thể lợn trong chuồng. Người chủ trang trại cũng là người dùng trực tiếp sẽ có tất cả các hành động sau:

 Đăng kí  Đăng nhập

 Quản lý danh sách trang trại (Farm)  Quản lý danh sách các chuồng nuôi (Pen)  Quản lý thông tin các thể thể lợn (Pig)

 Quản lý các sự kiện liên quan đến mỗi chuồng nuôi

 Xem trực tiếp video từ camera của chuồng tích hợp nhận diện và theo dõi  Xem thông tin lợn qua thao tác với video trực tiếp

Các tác nhân tham gia:

 Người quản lý trang trại

3.1.1.2. Sơ đồ UseCase tổng quát của hệ thống

3.1.1.3. Xây dựng các kịch bản

3.1.1.3.1. Chức năng quản lý danh sách trang trại

Hình 3.60. Usecase chức năng quản lý danh sách trang trại

 Mô tả: Người quản lý trang trại đăng nhập vào hệ thống -> Chọn chức năng Quản lý trang trại -> Hệ thống hiển thị danh sách trang trại, các tùy chọn (Xem thông tin, Thêm, Sửa, Xóa trang trại) -> Người quản lý trang trại chọn mục tùy ý (ví dụ Thêm trang trại)

 Kịch bản Xem danh sách trang trại: Usecase Xem danh sách trang trại

Actor Người quản lý trang trại

Tiền điều kiện Người quản lý trang trại đăng nhập thành công

Kịch bản chính 1. Người quản lý trang trại vào trang chủ hệ thống

2. Người quản lý trang trại chọn chức năng Quản lý danh sách trang trại trên giao diện trang chủ

3. Giao diện Danh sách trang trại hiện lên gồm: - Danh sách trang trại đang hoạt động

- Nút thêm trang trại

- Mỗi trang trại có nút Xem thông tin, sửa, xóa trang trại

Ngoại lệ 4. Tài khoản chưa có Trang trại nào trong hệ thống

4.1. Hiển thị danh sách trống, thông báo cần tạo trang trại

Bảng 3.1. Kịch bản xem danh sách trang trại

 Kịch bản Thêm trang trại Usecase Thêm trang trại

Actor Người quản lý trang trại

Tiền điều kiện Người quản lý trang trại đăng nhập thành công Hậu điều kiện Người quản lý trang trại thêm trang trại thành công

Kịch bản chính 1. Người quản lý trang trại vào trang chủ hệ thống

2. Người quản lý trang trại chọn chức năng Quản lý danh sách trang trại

3. Giao diện Danh sách trang trại hiện lên gồm: - Danh sách trang trại đang hoạt động

- Nút thêm trang trại

- Mỗi trang trại có nút Xem thông tin, sửa, xóa trang trại 4. Người quản lý trang trại chọn Thêm trạng trại

5. Giao diện Form thêm trang trại hiển thị bao gồm: - Input tên trang trại

- Input địa chỉ trang trại - Nút Hủy bỏ

- Nút Lưu

6. Người quản lý trang trại chọn Lưu sau khi điền đầy đủ thông tin

Ngoại lệ 7. Tài khoản chưa có Trang trại nào trong hệ thống

7.1. Hiển thị danh sách trống, thông báo cần tạo trang trại 8. Người quản lý trang trại chọn Hủy bỏ

8.1. Quay lại bước 3

Bảng 3.2. Kịch bản thêm trang trại

 Kịch bản Sửa thông tin trang trại Usecase Sửa thông tin trang trại

Actor Người quản lý trang trại

Tiền điều kiện Người quản lý trang trại đăng nhập thành công

Kịch bản chính 1. Người quản lý trang trại vào trang chủ hệ thống

2. Người quản lý trang trại chọn chức năng Quản lý danh sách trang trại

3. Giao diện Danh sách trang trại hiện lên gồm: - Danh sách trang trại đang hoạt động

- Nút thêm trang trại

- Mỗi trang trại có nút Xem thông tin, sửa, xóa trang trại

4. Người quản lý trang trại chọn trang trại muốn sửa và chọn nút Sửa thông tin trang trại

5. Giao diện Form sửa thông tin trang trại hiển thị bao gồm: - Input tên trang trại

- Input địa chỉ trang trại

- Input chủ sở hữu (mặc định là tài khoản đang đăng nhập) - Nút Cập nhật

- Nút Hủy bỏ

6. Người quản lý trang trại chọn Cập nhật sau khi sửa các thông tin.

Ngoại lệ 7. Tài khoản chưa có Trang trại nào trong hệ thống

7.1. Hiển thị danh sách trống, thông báo cần tạo trang trại 8. Người dùng chọn Hủy bỏ

8.1. Quay lại bước 3

Bảng 3.3. Kịch bản sửa thông tin trang trại

 Kịch bản Xóa trang trại Usecase Xóa trang trại

Actor Người quản lý trang trại

Hậu điều kiện Người quản lý trang trại xóa trang trại thành công Kịch bản chính 1. Người quản lý trang trại vào trang chủ hệ thống

2. Người quản lý trang trại chọn chức năng Quản lý danh sách trang trại

3. Giao diện Danh sách trang trại hiện lên gồm: - Danh sách trang trại đang hoạt động

- Nút thêm trang trại

- Mỗi trang trại có nút Xem thông tin, sửa, xóa trang trại

4. Người quản lý trang trại chọn trang trại muốn xóa và chọn nút Xóa trang trại

5. Giao diện Xác nhận xóa thông tin trang trại hiển thị bao gồm: - Thông báo: “Bạn có chắc chắn muốn xóa trang trại không?” - Nút Hủy bỏ

- Nút Đồng ý

6. Người quản lý trang trại chọn Đồng ý để thực hiện xóa trang trại

Ngoại lệ 7. Tài khoản chưa có Trang trại nào trong hệ thống

7.1. Hiển thị danh sách trống, thông báo cần tạo trang trại 8. Người quản lý trang trại chọn Hủy bỏ

8.1. Quay lại bước 3

3.1.1.3.2. Chức năng Quản lý danh sách chuồng nuôi

Hình 3.61. Usecase chức năng quản lý danh sách chuồng nuôi

 Mô tả: Người quản lý trang trại đăng nhập vào hệ thống -> Chọn chức năng Quản lý danh sách chuồng nuôi -> Hệ thống hiển thị danh sách chuồng nuôi, các tùy chọn (Xem thông tin, Thêm, Sửa, Xóa chuồng nuôi, Xem camera tại chuồng nuôi) -> Người quản lý trang trại chọn mục tùy ý (ví dụ Thêm chuồng nuôi)

 Kịch bản Xem danh sách chuồng nuôi: Usecase Xem danh sách chuồng nuôi

Actor Người quản lý trang trại

Tiền điều kiện Người quản lý trang trại đăng nhập thành công

Kịch bản chính 1. Người quản lý trang trại vào trang chủ hệ thống

2. Người quản lý trang trại chọn chức năng Quản lý danh sách chuồng nuôi trên giao diện trang chủ

3. Giao diện Danh sách chuồng nuôi hiện lên gồm: - Danh sách chuồng nuôi

- Nút thêm chuồng nuôi

- Mỗi chuồng nuôi có nút Xem thông tin, sửa, xóa chuồng nuôi - Xem camera tại chuồng nuôi

Ngoại lệ 4. Tài khoản chưa có chuồng nuôi nào trong hệ thống 4.1. Hiển thị danh sách trống

Một phần của tài liệu ĐỒ ÁN TỐT NGHIỆP NGHIÊN CỨU PHÁT TRIỂN HỆ THỐNG TỰ ĐỘNG NHẬN DIỆN VÀ GIÁM SÁT LỢN QUA CAMERA SỬ DỤNG YOLOv4 DeepSORT (Trang 53)

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

(119 trang)
w