Project ini adalah implementasi Object Detection untuk mendeteksi kepala kucing menggunakan algoritma YOLOv8. Model dilatih menggunakan dataset kucing yang memiliki anotasi keypoints (mata, mulut, telinga) yang kemudian dikonversi menjadi bounding box.
Tujuan dari project ini adalah mendeteksi lokasi kepala kucing dalam gambar.
- Model: YOLOv8 Nano (Ultralytics)
- Input: Gambar kucing
- Output: Bounding box di sekitar kepala kucing
├── cat_detection.ipynb # Notebook utama (Data Prep, Training, Eval)
├── yolo_dataset/ # Dataset hasil konversi (Generated)
│ ├── images/
│ └── labels/
├── cat_detection_runs/ # Hasil training (Model weights, logs)
└── README.md # Dokumentasi ini
Dataset asli yang digunakan berasal dari Kaggle: CAT Dataset. Karena ukuran dataset cukup besar (>9,000 gambar), dataset TIDAK disertakan dalam repository ini.
-
Download dataset dari Kaggle: https://www.kaggle.com/datasets/crawford/cat-dataset
-
Ekstrak dataset tersebut.
-
Letakkan folder hasil ekstrak sehingga strukturnya seperti ini (sesuaikan path di notebook jika berbeda):
dari_kaggle/ └── cats/ ├── CAT_00/ ├── CAT_01/ ├── ... └── CAT_06/(Setiap folder
CAT_xxberisi file.jpgdan file anotasi.cat)
-
Install Dependencies Pastikan Python sudah terinstall, lalu install library yang dibutuhkan:
pip install opencv-python ultralytics pyyaml scikit-learn matplotlib
-
Buka Notebook Buka file
cat_detection.ipynbmenggunakan VS Code atau Jupyter Notebook. -
Jalankan Notebook Jalankan cell secara berurutan. Notebook ini akan melakukan langkah-langkah berikut secara otomatis:
- Data Preparation: Membaca file
.cat, mengonversi keypoints menjadi bounding box YOLO format. - Dataset Splitting: Membagi dataset menjadi Training dan Validation set.
- Training: Melatih model YOLOv8n selama 50 epochs.
- Evaluation: Mengevaluasi performa model (mAP, Precision, Recall).
- Inference: Melakukan tes prediksi pada gambar.
- Data Preparation: Membaca file
Model dilatih menggunakan subset dataset (300 sampel) untuk demonstrasi, namun sudah menunjukkan hasil yang sangat baik:
- mAP50: ~0.99
- Precision: ~0.99
- Recall: ~0.98
Hasil training lengkap (weights, confusion matrix, kurva loss) akan tersimpan di folder cat_detection_runs/.
Setelah training selesai, Anda bisa menggunakan model terbaik (best.pt) untuk prediksi gambar lain:
from ultralytics import YOLO
# Load model
model = YOLO('cat_detection_runs/yolov8n_cat_head/weights/best.pt')
# Prediksi
results = model.predict('path/to/your/cat.jpg')
results[0].show()Dataset original oleh Weiwei Zhang, Jian Sun, dan Xiaoou Tang (2008). Di-host di Kaggle oleh Crawford.