Prepare pictures
Label by roboflow
Create Model by Python and YOLOv5
เปิด Colab แล้วกด New book
เลือกเชื่อมต่อกับ GTU
ทำการเชื่อมต่อกับ Google Drive เพื่อเชื่อมต่อข้อมูลภาพที่ได้เตรียมไว้
ไปที่ Website: https://github.com/ultralytics/yolov5/blob/master/tutorial.ipynb
เลือก tutorial.ipynb

ทำการ cd เพื่อไปที่ folder ของ YOLOv5

โดยใส่ code
%cd /content/yolov5
จากนั้นทำการติดตั้ง ซึ่งใน YOLOv5 จะมีไฟล์ที่ชื่อว่า requirements.txt ให้ทำการติดตั้งแพ็กเกจต่างๆ ที่อยู่ในไฟล์นี้ลงไปใน Colab ของเรา
Import libraly ที่จำเป็นไว้ใน Colabได้แก่
import torch
from IPython.display import Image, clear_output # to display image
ทำการทดลอง YOLOv5 โดยการ copy code นี้ ตรวจจับหาวัตถุในภาพที่อยู่ folder “data → images” โดย source code นี้สามารถ detect ภาพหรือวิดีโอก็ได้
!python detect.py --weights yolov5s.pt --img 640 --conf 0.25 --source data/images
# display.Image(filename='runs/detect/exp/zidane.jpg', width=600)
อธิบาย Code
ทำการ Train โดยการสร้างไฟล์ขึ้นมา 1 ไฟล์ ซึ่งตัวอย่างจะชื่อว่า coco.yaml อยู่ใน folder “data” จากนั้นตั้งชื่อไฟล์ใหม่ให้เรียบร้อย ลิ้งค์กับ ชื่อ.yaml
# Paths to the dataset
train: /content/drive/MyDrive/dataset/images/train # เส้นทางไปยังไฟล์ภาพสำหรับการฝึก
val: /content/drive/MyDrive/dataset/images/valid # เส้นทางไปยังไฟล์ภาพสำหรับการทดสอบ
test: /content/drive/MyDrive/dataset/images/test # เส้นทางไปยังไฟล์ภาพสำหรับการทดสอบ (หากมี)
# จำนวนคลาส (7 คลาสในกรณีนี้)
nc: 7
# ชื่อของคลาสที่ใช้
names: ['good', 'defect', 'peeling', 'moldy', 'atrophy', 'broken', 'spot']
# Ultralytics YOLOv5 🚀, AGPL-3.0 license
# Parameters
nc: 7 # number of classes
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.50 # layer channel multiple
anchors:
- [10, 13, 16, 30, 33, 23] # P3/8
- [30, 61, 62, 45, 59, 119] # P4/16
- [116, 90, 156, 198, 373, 326] # P5/32
# YOLOv5 v6.0 backbone
backbone:
# [from, number, module, args]
[
[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
[-1, 1, Conv, [128, 3, 2]], # 1-P2/4
[-1, 3, C3, [128]],
[-1, 1, Conv, [256, 3, 2]], # 3-P3/8
[-1, 6, C3, [256]],
[-1, 1, Conv, [512, 3, 2]], # 5-P4/16
[-1, 9, C3, [512]],
[-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
[-1, 3, C3, [1024]],
[-1, 1, SPPF, [1024, 5]], # 9
]
# YOLOv5 v6.0 head
head: [
[-1, 1, Conv, [512, 1, 1]],
[-1, 1, nn.Upsample, [None, 2, "nearest"]],
[[-1, 6], 1, Concat, [1]], # cat backbone P4
[-1, 3, C3, [512, False]], # 13
[-1, 1, Conv, [256, 1, 1]],
[-1, 1, nn.Upsample, [None, 2, "nearest"]],
[[-1, 4], 1, Concat, [1]], # cat backbone P3
[-1, 3, C3, [256, False]], # 17 (P3/8-small)
[-1, 1, Conv, [256, 3, 2]],
[[-1, 14], 1, Concat, [1]], # cat head P4
[-1, 3, C3, [512, False]], # 20 (P4/16-medium)
[-1, 1, Conv, [512, 3, 2]],
[[-1, 10], 1, Concat, [1]], # cat head P5
[-1, 3, C3, [1024, False]], # 23 (P5/32-large)
[[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
]
#@title Select YOLOv5 🚀 logger {run: 'auto'}
logger = 'Comet' #@param ['Comet', 'ClearML', 'TensorBoard']
if logger == 'Comet':
%pip install -q comet_ml
import comet_ml; comet_ml.init()
elif logger == 'ClearML':
%pip install -q clearml
import clearml; clearml.browser_login()
elif logger == 'TensorBoard':
%load_ext tensorboard
%tensorboard --logdir runs/train
อธิบาย Code
ความแตกต่างของ dashboard (This information from internet)
ต่อไปเป็น Code สำหรับกำหนดเงื่อนไขต่างๆ ก่อนทำการ Train ในส่วนของ epochs สามารถเปลี่ยนได้ตามที่ต้องการ ยิ่งเยอะ ความแม่นยำยิ่งมาก
# Train YOLOv5s on COCO128 for 3 epochs
!python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt --cache
อธิบาย Code (ก่อนทำควรอ่านก่อนก็ดี)
พอ RUN แล้วก็รอจนกว่าจะถึง Epoch ที่ตั้งไว้ พอครบแล้วจะมีผลแสดงขึ้นเกี่ยวกับความแม่นยำ ดูที่ precision แล้วดูที่ dashboard ที่ทำการเลือกไว้
Create Model by Python and YOLOv8
Create Model by Python and YOLOv11