{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "from ultralytics import YOLO\n",
    "import os\n",
    "import matplotlib.pyplot as plt\n",
    "from PIL import Image\n",
    "\n",
    "# Load the pretrained YOLO model\n",
    "model = YOLO(\"G:/MAGANG/ai elang yolov11/runs/detect/yolov11s-300/weights/best.pt\")  # Ganti dengan model yang Anda gunakan\n",
    "\n",
    "# Path ke folder gambar\n",
    "image_folder = \"G:/MAGANG/ai elang yolov11/IM3-1/test/images\"\n",
    "\n",
    "# Ambil daftar semua gambar dalam folder\n",
    "image_files = [os.path.join(image_folder, img) for img in os.listdir(image_folder) if img.endswith(('.jpg', '.png', '.jpeg'))]\n",
    "\n",
    "# Cek jika tidak ada gambar dalam folder\n",
    "if not image_files:\n",
    "    raise FileNotFoundError(\"Tidak ada gambar valid di folder yang ditentukan.\")\n",
    "\n",
    "# Jalankan inferensi batch pada semua gambar\n",
    "results = model(image_files)\n",
    "\n",
    "# Proses hasil prediksi\n",
    "output_folder = \"G:/MAGANG/ai elang yolov11/test yolov11s-300/results\"  # Folder untuk menyimpan hasil\n",
    "os.makedirs(output_folder, exist_ok=True)\n",
    "\n",
    "# Daftar kelas yang akan dihitung\n",
    "target_classes = [\"attract\", \"educate\", \"purchase\"]\n",
    "\n",
    "# Inisialisasi counter total per kelas\n",
    "class_counts_total = {cls: 0 for cls in target_classes}\n",
    "\n",
    "for idx, result in enumerate(results):\n",
    "    # Gambar hasil prediksi pada gambar\n",
    "    pred_img = result.plot()  # Menghasilkan array gambar dengan prediksi\n",
    "\n",
    "    # Simpan hasil prediksi ke disk (dengan format asli BGR)\n",
    "    output_path = os.path.join(output_folder, f\"result_{idx + 1}.jpg\")\n",
    "    Image.fromarray(pred_img).save(output_path)\n",
    "\n",
    "    # Konversi BGR ke RGB untuk ditampilkan di matplotlib\n",
    "    pred_img_rgb = pred_img[..., ::-1]\n",
    "\n",
    "    # Hitung jumlah deteksi untuk setiap kelas di gambar ini\n",
    "    class_counts = {cls: 0 for cls in target_classes}\n",
    "    for box in result.boxes.data:  # result.boxes.data berisi informasi bounding box\n",
    "        cls_idx = int(box[-1])  # Indeks kelas dalam deteksi\n",
    "        cls_name = model.names[cls_idx]  # Nama kelas berdasarkan indeks\n",
    "        if cls_name in target_classes:\n",
    "            class_counts[cls_name] += 1\n",
    "            class_counts_total[cls_name] += 1\n",
    "\n",
    "    # Tampilkan hasil di notebook menggunakan matplotlib\n",
    "    plt.figure(figsize=(10, 10))\n",
    "    plt.imshow(pred_img_rgb)\n",
    "    plt.axis(\"off\")\n",
    "    plt.title(f\"Hasil Prediksi - Gambar {idx + 1}\")\n",
    "    plt.show()\n",
    "\n",
    "    # Tampilkan jumlah deteksi per kelas untuk gambar ini\n",
    "    print(f\"Hasil disimpan di: {output_path}\")\n",
    "    print(f\"Jumlah deteksi untuk gambar {idx + 1}: {class_counts}\")\n",
    "\n",
    "# Tampilkan jumlah total deteksi untuk semua gambar\n",
    "print(\"\\nJumlah total deteksi untuk semua gambar:\")\n",
    "for cls, count in class_counts_total.items():\n",
    "    print(f\"{cls}: {count}\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "yolov11",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
