Selamat Datang! Panduan Membuat Model AI untuk Pemula
Belum pernah membuat model AI sama sekali? Tidak apa-apa. Ikuti 4 langkah di bawah ini secara berurutan - tidak perlu coding, tidak perlu komputer canggih.
Bayangkan model AI seperti seorang murid yang belajar mengenali 5 kondisi dari foto:
Sampah, Vegetasi (tanaman sehat), Genangan Air, Kotoran, dan
Area Bersih. Caranya belajar: kita tunjukkan banyak contoh foto sambil memberi
tahu "ini contoh Sampah", "ini contoh Area Bersih", dst - proses ini disebut
memberi label. Setelah cukup banyak contoh (disebut dataset), murid ini
"dilatih" (training) sampai bisa mengenali sendiri kelima kondisi itu di foto
yang belum pernah dilihat sebelumnya. Hasil akhirnya adalah satu berkas kecil (format
.onnx) yang disebut model - inilah yang diunggah ke AI Server ini
supaya ALR EcoVision Core bisa memakainya untuk menganalisis foto secara otomatis.
Kumpulkan & Beri Label Foto
Unggah beberapa foto lokasi, lalu tandai di mana letak sampah/vegetasi/genangan air/kotoran/area bersih di tiap foto. Alat di bawah ini membantu Anda melakukannya langsung di browser, tanpa instalasi apa pun.
- Semakin banyak foto, semakin pintar modelnya. Minimal 20-30 foto untuk uji coba pertama, idealnya 100+ foto untuk model yang layak dipakai sungguhan.
- Sertakan foto dari berbagai kondisi: siang, mendung, sudut berbeda, lokasi berbeda.
- Sertakan juga foto area yang bersih/bagus, jangan hanya foto masalah - supaya model tidak selalu "curiga" ke semua foto.
Latih Model (Gratis, Pakai Google Colab)
Melatih model butuh komputer dengan kartu grafis (GPU) yang kuat. Kalau Anda tidak punya, pakai Google Colab - layanan gratis dari Google yang meminjamkan GPU lewat browser, tidak perlu instal apa pun.
- Buka colab.research.google.com lalu buat notebook baru (login akun Google dulu kalau belum).
- Di menu Runtime > Change runtime type, pilih T4 GPU, lalu simpan.
- Salin kode di bawah ini ke dalam satu sel notebook, lalu jalankan (tombol ▶). Kode ini akan langsung menampilkan tombol "Choose Files" untuk mengunggah dataset
.zipAnda dari komputer - tidak perlu lagi mengunggah manual lewat ikon folder di sisi kiri.
!pip install -q ultralytics
import zipfile, os, shutil, glob
from google.colab import files
# PERBAIKAN (section: unggah dataset & penyesuaian nama otomatis) - dulu
# dataset.zip harus diunggah manual lewat ikon folder di sisi kiri Colab
# DENGAN nama persis "dataset.zip", padahal berkas yang diunduh bisa
# bernama lain tergantung asalnya:
# - dataset.zip -> dari tab "Mulai di Sini" (Langkah 1, label di browser)
# - sampel-dataset.zip -> dari halaman "Sampel Foto & Label" (tombol Ekspor)
# - dataset (1).zip, dst -> browser menambah angka kalau nama bentrok
# Sel ini membuka jendela pilih-berkas langsung di Colab, menerima nama
# APA PUN selama formatnya .zip, lalu mengganti namanya menjadi
# "dataset.zip" secara otomatis supaya sisa kode di bawah selalu
# konsisten tanpa perlu diubah manual tiap kali sumber datasetnya beda.
print("Pilih file dataset .zip (dari 'Mulai di Sini' ATAU dari 'Sampel Foto & Label')...")
uploaded = files.upload()
zip_candidates = [f for f in uploaded.keys() if f.lower().endswith('.zip')]
if not zip_candidates:
raise RuntimeError("Tidak ada file .zip yang diunggah. Jalankan ulang sel ini lalu pilih file dataset .zip Anda.")
if len(zip_candidates) > 1:
print(f"Ada {len(zip_candidates)} file .zip diunggah sekaligus - memakai yang pertama: {zip_candidates[0]}")
uploaded_name = zip_candidates[0]
if uploaded_name != 'dataset.zip':
shutil.move(uploaded_name, 'dataset.zip')
print(f"Nama berkas '{uploaded_name}' otomatis disesuaikan menjadi 'dataset.zip'.")
if os.path.isdir('dataset'):
shutil.rmtree('dataset') # bersihkan sisa ekstraksi dari percobaan sebelumnya kalau ada
zipfile.ZipFile('dataset.zip').extractall('dataset')
# PERBAIKAN: sebagian dataset (mis. hasil zip ulang manual) punya satu
# folder pembungkus tambahan di dalamnya (mis. dataset/dataset/data.yaml)
# alih-alih langsung di akar. Dicari otomatis di mana pun data.yaml
# berada, supaya struktur folder yang sedikit berbeda tetap bisa dipakai
# langsung tanpa perlu dirapikan manual.
yaml_matches = glob.glob('dataset/**/data.yaml', recursive=True)
if not yaml_matches:
raise RuntimeError("data.yaml tidak ditemukan di dalam dataset.zip. Pastikan file yang diunggah adalah dataset.zip hasil Langkah 1 (bukan berkas lain).")
dataset_dir = os.path.abspath(os.path.dirname(yaml_matches[0]))
yaml_path = os.path.join(dataset_dir, 'data.yaml')
# PERBAIKAN: beberapa versi Ultralytics salah mengartikan "path: ." di
# data.yaml (mencari dataset di folder default ~/datasets/ Colab,
# BUKAN folder hasil extract di atas) - ini penyebab paling umum error
# "dataset tidak ditemukan/kosong". Diperbaiki di sini dengan mengganti
# "path: ." menjadi path folder dataset yang SEBENARNYA (absolut).
with open(yaml_path) as f:
content = f.read().replace('path: .', f'path: {dataset_dir}')
with open(yaml_path, 'w') as f:
f.write(content)
print(open(yaml_path).read()) # tampilkan isi data.yaml final untuk dicek sekilas
from ultralytics import YOLO
model = YOLO('yolov8n.pt') # model dasar kecil & cepat, cocok untuk pemula
model.train(data=yaml_path, epochs=80, imgsz=640)
# Ekspor ke .onnx - imgsz & opset harus SAMA seperti di bawah ini supaya
# kompatibel dengan ONNX Runtime yang dipakai AI Server (lihat
# scripts/export_onnx.py di server untuk penjelasan lengkap).
model.export(format='onnx', imgsz=640, opset=12, simplify=True)
print("Selesai! File .onnx ada di runs/detect/train/weights/best.onnx - unduh lewat panel folder di kiri (klik kanan > Download).")
print("PENTING: saat unggah di Langkah 3 di bawah, isi kolom Label dengan PERSIS 8 label berikut, urutannya JANGAN diubah:")
print('["Sampah","Vegetasi","Genangan Air","Kotoran","Area Bersih","Kerapihan","Kondisi Umum","Berantakan"]')
Proses ini memakan waktu sekitar 15-60 menit tergantung jumlah foto. Setelah selesai, klik kanan file best.onnx di panel folder kiri Colab → Download.
Sudah punya model dari cara lain (mis. dilatih di komputer sendiri)? Lewati langkah ini, langsung ke Langkah 3. Yang penting: format .onnx, dan urutan labelnya sama seperti dataset yang diunduh di Langkah 1.
Unggah Model yang Sudah Dilatih
Seret berkas best.onnx hasil Langkah 2 ke sini. Sistem akan mengunggahnya ke AI Server ini (tahap "staging" - belum aktif dipakai dulu).
Periksa & Aktifkan Model
Langkah terakhir: sistem mengecek model bisa dipakai dengan benar (Validasi), lalu Anda mengaktifkannya supaya langsung dipakai untuk semua analisis foto berikutnya.
Belum ada model yang baru diunggah pada sesi ini. Selesaikan Langkah 3 terlebih dahulu, atau buka tab "Model & Training AI" untuk mengelola model yang sudah ada sebelumnya.
Belum ada foto sampel. Unggah dari kotak di atas untuk mulai memberi label.
Tambah Pengguna
| Username | Peran | Status | Login Terakhir | Aksi |
|---|---|---|---|---|
| Memuat… | ||||
Model Produksi Aktif
Sumber Daya Server
Mulai Cepat
Tiga langkah menghubungkan instansi baru ke AI Server ini.
Daftarkan sekolah/instansi yang akan memakai AI Server ini.
Setiap institusi punya key sendiri, bisa dicabut kapan saja.
Upload, validasi, lalu aktifkan model deteksi ke produksi.
Panduan Koneksi ke ALR EcoVision Core
Ikuti langkah ini di setiap instalasi Core yang ingin memakai AI Server ini.
- Buat institusi di panel ini (tombol "+ Institusi Baru"), lalu klik institusi tersebut untuk membuat API Key.
- Salin API key yang muncul — hanya ditampilkan satu kali saat dibuat.
- Masuk ke ALR EcoVision Core → Pengaturan → AI Server, lalu isi Base URL dan API Key berikut:
AI_SERVER_BASE_URL = (alamat AI Server ini) AI_SERVER_API_KEY = (tempel API key institusi di sini)
- Simpan pengaturan di Core, lalu coba unggah satu foto untuk memastikan respons deteksi diterima.
Daftar Institusi
Slot Model Aktif
Setiap slot berjalan bersamaan dan independen — mengaktifkan model baru di satu slot tidak memengaruhi slot lain. Slot "general" adalah model utama (ontologi 7 kelas ALR EcoVision); slot lain (mis. "manusia") opsional untuk deteksi tambahan.
Unggah Model Baru
Model masuk ke staging dulu — wajib divalidasi sebelum bisa diaktifkan ke produksi.
Semua Model
| Versi | Slot | Stage | Ukuran Input | Dibuat | Diaktifkan | Aksi |
|---|---|---|---|---|---|---|
| Memuat… | ||||||
Antrian Training
Training berat dijalankan di Remote Worker (mesin ber-GPU) yang polling antrian ini — bukan di VPS AI Server.
| ID | Status | Dataset | Worker | Hasil Model | Dibuat |
|---|---|---|---|---|---|
| Memuat… | |||||
Foto & Grid
Skor & Indikator
Belum ada hasil analisis.
Rekomendasi
Jalankan analisis lalu tekan "Minta Rekomendasi".
Status AI
Ambang Deteksi
Beban & Rate Limit
Retensi & Pembersihan
Backup Otomatis
Batas Ukuran Foto
Batas unggah (endpoint /analyze, ditolak kalau melebihi) terpisah dari batas simpan (fitur Sampel Foto & Label, dikompres otomatis kalau melebihi & fitur ini diaktifkan).
Penyimpanan — Google Drive
Cadangkan/pindahkan foto sampel ke Google Drive lewat Service Account. Opsional — foto tetap tersimpan di server lokal seperti biasa tanpa ini.
Operasi Manual
Jalankan backup/pembersihan sekarang tanpa menunggu jadwal otomatis.
Backup Tersimpan
| Berkas | Ukuran | Dibuat |
|---|---|---|
| Memuat… | ||
Info Lain (baca saja)
| Waktu | Aktor | Aksi | Detail |
|---|---|---|---|
| Memuat… | |||