Hồ Chí Minh, 17-08-2023
[Nguyễn Hữu Lợi](), [UIT-Together Research Group](https://uit-together.github.io/)
# YOLO
## Mục Lục
[TOC]
## Step 1. Tạo thư mục lưu trữ
Truy cập vào thư mục cvpr2023, tạo thư mục LuuTru
```
cd /home/cvpr2023/
mkdir LuuTru
```
Tạo thư mục dataset
```gherkin=
cd /home/cvpr2023/LuuTru/
mkdir dataset
```
## Step 2. Tổ chức dữ liệu
Trong thư mục dataset, tạo các thư mục con như sau:
![](https://hackmd.io/_uploads/r1twiSs32.png)
Convert dữ liệu theo đúng định dạng yolo:
https://github.com/UIT-Together-Research-Group/OD_ConvertDataset
**Lưu ý:** Định dạng của bounding box trong file json có nhiều loại (pascal voc, coco, yolo,...) và cần chuyển bounding box của nhãn về định dạng yolo [x, y, w, h]. Tham khảo thêm tại trang sau: https://haobin-tan.netlify.app/ai/computer-vision/object-detection/coco-json-to-yolo-txt/
## Step 3. Cài đặt môi trường, bao gồm môi trường Python>=3.8.0 và PyTorch>=1.8
Tải source code yolov5
```gherkin=
cd /home/cvpr2023/LuuTru/
git clone https://github.com/ultralytics/yolov5.git
```
Cài đặt các yêu cầu trong requirements.txt bằng cách:
```
cd /home/cvpr2023/LuuTru/yolov5
pip install -r requirements.txt
```
Cấu hình file coco.yaml liên kết thông tin đến bộ dữ liệu
![coco.png](https://hackmd.io/_uploads/BklwaGrmT.png)
## Step 4. Train model trên bộ dữ liệu
Câu lệnh thực hiện train mô hình:
```gherkin=
cd /home/cvpr2023/LuuTru/yolov5
python train.py --data ./data/coco.yaml --epochs 300 --weights yolov5x.pt --batch-size 8 --device 0
```
Trong đó:
--data : đường dẫn đến file coco.yaml
--epochs 300 : thực hiện train 300 epochs
--weight : lấy trọng số từ fine-tuning model yolo5x.pt (file này được tự động download về nếu chưa có)
--batch-size 8 : số lượng mẫu dữ liệu trong 1 lần huần luyện (8 ảnh/ lần)
--device 0: thực hiện trên gpu có id = 0
## Step 5. Chạy kiểm thử
Câu lệnh thực hiện kiểm thử trên tập test:
```gherkin=
cd /home/cvpr2023/LuuTru/yolov5
python val.py --task 'test' --weights ./runs/train/exp/weights/best.pt --data ./data/coco.yaml --img 640 --verbose
```
Câu lệnh thực hiện kiểm thử trên tập val:
```gherkin=
cd /home/cvpr2023/LuuTru/yolov5
python val.py --task 'val' --weights ./runs/train/exp/weights/best.pt --data ./data/coco.yaml --img 640 --verbose
```
Trong đó:
--task 'test' : thực hiện kiểm thử trên tập test
--weight ./runs/train/exp/weights/best.pt đường dẫn đến mô hình tốt nhất mà ta huấn luyện được sau 300 epochs ở bước 4
--verbose : hiển thị bảng kết quả theo tiêu chuẩn MS CoCo
## Step 6. Chạy kiểm chứng
Tạo thư mục chứa ảnh/video cần phát hiện đối tượng
```
cd /home/cvpr2023/LuuTru
mkdir uit_together
```
Câu lệnh thực hiện detect :
```gherkin=
cd /home/cvpr2023/LuuTru/yolov5
python detect.py --weights ./runs/train/exp/weights/best.pt --img 640 --conf 0.25 --source ../uit_together/
```
Trong đó:
--conf 0.25 : ngưỡng tin cậy (confidence threshold) = 0.25
--source uit_together: đường dẫn đến thư mục chứa ảnh/video cần phát hiện
Để xem kết quả phát hiện, vào thư mục:
/home/cvpr2023/LuuTru/yolov5/runs/detect/