Dokumentasi ini menjelaskan konfigurasi dan alur kerja skrip Python yang digunakan untuk melatih model deteksi api menggunakan varian YOLOv8l (Large). Skrip ini dioptimalkan untuk infrastruktur server atau Cloud (seperti Azure VM) yang memiliki spesifikasi hardware tinggi.
Program ini bertujuan untuk menghasilkan model dengan tingkat akurasi (Precision/Recall) yang lebih tinggi dibandingkan varian Nano. Karena model Large memiliki parameter yang jauh lebih banyak, proses training diwajibkan menggunakan GPU agar waktu eksekusi tetap efisien.
yolov8l.pt. Varian ini dipilih untuk skenario di mana akurasi adalah prioritas utama dan model akan dijalankan di server pusat.device=0): Parameter ini memastikan program berjalan di GPU pertama yang terdeteksi. Tanpa ini, training model Large pada CPU akan memakan waktu yang sangat lama.results.metrics untuk melihat skor performa akhir (mAP50, mAP50-95) secara instan.Untuk efisiensi biaya pada layanan Cloud seperti Azure, skrip ini dilengkapi dengan fitur penghematan biaya:
shutdown +1: Memberikan jeda 1 menit sebelum sistem mati total. Ini lebih aman daripada now karena memberikan waktu bagi OS untuk menutup proses secara bersih (graceful shutdown).shutdown -c di terminal sebelum waktu 1 menit habis.| Fitur | YOLOv8n (Edge) | YOLOv8l (Server) |
|---|---|---|
| Kecepatan Inference | Sangat Cepat (Real-time di IoT) | Lebih Berat / Lambat |
| Akurasi (mAP) | Standar | Sangat Tinggi |
| Konsumsi Resource | Rendah (Hemat RAM/VRAM) | Tinggi |
| Hardware Target | ESP32-Cam, Jetson Nano, HP | Cloud Server, Desktop PC (GPU) |
/home/krubuks/... sudah sesuai dengan struktur folder di VM Azure sebelum eksekusi.python train.py > training_log.txt 2>&1 agar semua log tersimpan meskipun koneksi SSH terputus.import os
import platform
from ultralytics import YOLO
def main():
# --- KONFIGURASI ---
# 1. Path ke file konfigurasi dataset .yaml Anda (sudah disesuaikan untuk Linux)
# PASTIKAN PATH INI BENAR SESUAI LOKASI DI UBUNTU/AZURE ANDA
data_config_path = '/home/krubuks/Documents/proyek-tesis/rev_fire_detection/dfire.yaml'
# 2. Path ke folder untuk menyimpan hasil training
project_output_path = '/home/krubuks/Documents/proyek-tesis/rev_fire_detection/03_trained_models'
# 3. Nama untuk eksperimen ini (untuk model server)
experiment_name = 'YOLOv8l_Server'
# 4. Jumlah Epoch
num_epochs = 150
# --------------------
# Muat model YOLOv8l dengan pre-trained weights
model = YOLO('yolov8l.pt')
print(f"Memulai training model Server ({experiment_name})...")
# Mulai training
results = model.train(
data=data_config_path,
epochs=num_epochs,
imgsz=640,
project=project_output_path,
name=experiment_name,
device=0 # Memastikan GPU digunakan
)
print(f"Training selesai. Model disimpan di folder: {project_output_path}/{experiment_name}")
print("Hasil akhir:", results.metrics)
# --- SHUTDOWN OTOMATIS ---
print("\nPERHATIAN: Sistem akan dimatikan dalam 60 detik.")
print("Untuk membatalkan, buka terminal baru dan ketik 'shutdown -c'.")
if platform.system() == "Linux":
os.system("shutdown +1")
else:
print("Shutdown otomatis hanya berjalan di sistem Linux. Sistem tidak akan dimatikan.")
if __name__ == '__main__':
main()