Public
Snippet $159 authored by Owo Sugiana

Object Detection

object-detection.rst

Object Detection

Unduh dataset ikan beformat YOLO:

https://drive.google.com/file/d/10Pr4lLeSGTfkjA40ReGSC8H3a9onfMZ0/view?usp=sharing

Ekstrak:

$ unzip Deepfish.zip

Salah satu hasilnya adalah:

Deepfish
  7117
    train
    valid

Contoh file Deepfish/7117/train/7117_Caranx_sexfasciatus_juvenile_f000000.txt berisi:

0 0.47994791666666664 0.14351851851851852 0.12135416666666667 0.21481481481481482
0 0.8705729166666667 0.4185185185185185 0.09010416666666667 0.0962962962962963

Setiap barisnya memiliki susunan:

class_id x_center y_center width height

Buatlah file ikan.yaml:

names:
  0: ikan

path: Deepfish/7117
train: train
val: valid

Angka 0 (nol) pada names merujuk pada class_id.

Siapkan Python untuk menjalankan pelatihan:

$ python3.13 -m venv env
$ env/bin/pip install ultralytics

Jalankan pelatihannya (compile):

$ env/bin/yolo train data=ikan.yaml

Hasilnya:

100 epochs completed in 0.171 hours.
Optimizer stripped from runs/detect/train29/weights/last.pt, 5.5MB
Optimizer stripped from runs/detect/train29/weights/best.pt, 5.5MB

File best.pt itulah yang akan digunakan saat membaca foto. Coba cari gambar kumpulan ikan di Google. Lalu:

$ env/bin/yolo predict model=runs/detect/train29/weights/best.pt source=ikan.jpg

Hasilnya:

image 1/1 /home/sugiana/Unduhan/ikan.jpg: 448x640 6 ikans, 49.5ms
Speed: 2.1ms preprocess, 49.5ms inference, 81.2ms postprocess per image at shape (1, 3, 448, 640)
Results saved to runs/detect/predict37

Dia berhasil menghitung jumlah ikan di gambar tersebut sebanyak 6. Secara visual kita bisa melihatnya di file runs/detect/predict37/ikan.jpg. Di file itu akan tampil kotak di setiap ikan lengkap dengan nilai tingkat keyakinan dalam bentuk angka pecahan dengan ambang 0 sampai 1.

Kita juga bisa mengatur tingkat keyakinan dengan opsi conf (confidence threshold):

$ env/bin/yolo predict model=runs/detect/train29/weights/best.pt source=ikan.jpg conf=0.5

Selamat mencoba.

Referensi