Skip to content

intxdv/Cat-Detection

Repository files navigation

Cat Head Detection using YOLOv8

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.

📋 Deskripsi Project

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

📂 Struktur Project

├── 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

🛠️ Persiapan Dataset

Dataset asli yang digunakan berasal dari Kaggle: CAT Dataset. Karena ukuran dataset cukup besar (>9,000 gambar), dataset TIDAK disertakan dalam repository ini.

Cara Mendapatkan Dataset:

  1. Download dataset dari Kaggle: https://www.kaggle.com/datasets/crawford/cat-dataset

  2. Ekstrak dataset tersebut.

  3. 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_xx berisi file .jpg dan file anotasi .cat)

🚀 Cara Menjalankan

  1. Install Dependencies Pastikan Python sudah terinstall, lalu install library yang dibutuhkan:

    pip install opencv-python ultralytics pyyaml scikit-learn matplotlib
  2. Buka Notebook Buka file cat_detection.ipynb menggunakan VS Code atau Jupyter Notebook.

  3. 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.

📊 Hasil Training

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/.

🤖 Menggunakan Model Terlatih

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()

📝 Credits

Dataset original oleh Weiwei Zhang, Jian Sun, dan Xiaoou Tang (2008). Di-host di Kaggle oleh Crawford.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors