LaiCai FlowPanduan
YOLO · ONNX · LaiCai Flow

Latih suatu model deteksi objek gubahan untukLaiCai Flow

Panduan ini membawa Anda dari cuplikan layar mentah ke model ONNX yang kompatibel dengan LaiCai-. Ini menggunakan data permainan objek yang sebenarnya sebagai contoh yang bekerja, namun proses yang sama berlaku pada kendali aplikasi, produk, ikon, alat, dan target lainnya yang tampak.

Resep tesYOLO26n (Android Agent)
Adegan permainan umum dengan kotak deteksi di sekitar bijih, pohon, dan rakasa
Satu model dapat mendeteksi beberapa kelas terkait dalam adegan yang sama, seperti sumber daya, karakter, dan keadaan objek.
Latih suatu model deteksi objek gubahan untukLaiCai Flow
YouTube

Path lengkap

  1. TangkapMengumpulkan frame bervariasi
  2. LabelGambar kotak ketat
  3. GabungJaga ID kelas stabil
  4. KeretaValidasi pada frame tak terlihat
  5. EksporBuat keluaran mentah ONNX
  6. ImporTambah konfigurasi. json (config.json)

Sebelum Anda mulai

Gunakan deteksi objek ketika LaiCai harus menemukan dimana obyek berada di layar. Klasifikasi gambar hanya menjawab apa yang seluruh gambar berisi dan tidak kembali kotak batas.

Haruskah bijih, kayu, dan monster menjadi satu model?

Biasanya ya ketika mereka muncul dalam permainan yang sama atau aplikasi, gunakan skala cuplikan layar yang sama, dan perlu terdeteksi dalam Flow yang sama. Model terpisah hanya ketika adegan tidak berhubungan, daftar kelas menjadi sangat besar, atau satu kelompok membutuhkan ukuran masukan yang berbeda atau target kinerja.

01

Siapkan cuplikan layar berguna

Kumpulkan frame dari perangkat, resolusi, tingkat perbesaran, dan kualitas visual yang akan dilihat LaiCai. Keanekaragaman lebih penting daripada menyimpan banyak frame video berturut-turut yang terlihat hampir identik.

  • Termasuk posisi yang berbeda, ukuran, pencahayaan, latar belakang, bingkai animasi, dan campuran parsial.
  • Contoh yang sulit: obyek kecil, obyek ujung, blur, popup, dan target tidak sama secara visual.
  • Tambahkan beberapa gambar latar belakang di mana tidak ada kelas target Anda muncul. Berkas label mereka kosong.
  • Tidak ada minimum universal. Untuk tes pertama, bertujuan untuk setidaknya 50 kotak bervariasi per kelas; sulit atau kelas serupa biasanya perlu 100- 200 atau lebih.
02

Mendesain daftar kelas sebelum label

Sebuah kelas harus mewakili satu keputusan visual Flow perlu dibuat. Menjaga nama pendek, unik, dan stabil karena urutan yang sama digunakan dalamYOLOlabel, data.yaml, config.json, dan vision.detect pemilih kelas.

Perlakukan keadaan yang berbeda secara visual sebagai kelas terpisah

Jika sumber daya yang dikumpulkan masih menyerupai sumber daya yang tersedia, label kedua negara, misalnya Copper dan CopperDepleted. Jangan mengharapkan ambang kepercayaan diri sendiri untuk dapat dipercaya memisahkan dua keadaan visual nyata.

Perbandingan sisi samping dari sumber daya tembaga yang tersedia dan sumber daya yang habis, masing-masing dengan kotak deteksi terpisah
Gunakan kelas terpisah ketika otomatisasi harus bereaksi berbeda dengan dua negara bagian.
  • Setiap instansi terlihat dari setiap kelas target harus diberi label. Sebuah target yang tidak berlabel dipelajari sebagai latar belakang.
  • Gunakan kebijakan kotak yang sama di mana-mana: ketat di sekitar objek yang terlihat, tanpa margin besar.
  • Lebih suka nama seperti CopperDepleted atau tembaga _ habis ketika sebuah alat label mengubah ruang.
03

Label di MakeSense.ai

MakeSen.ai adalah alat bebas browser- berbasis label. Untuk model LaiCai, pilih Deteksi Objek, gunakan kotak persegi panjang, dan eksporYOLOKesal. (MakeSense.ai · Object Detection)

  1. 1

    Buka MakeSense.ai dan unggah gambar sumber. Simpan folder gambar asli Anda; label terekspor ZIP tidak menggantikannya.

  2. 2

    Pilih Deteksi Objek, bukan Pengakuan Gambar. (Object Detection · Image Recognition)

  3. 3

    Buat daftar kelas akhir dalam urutan tetap, lalu gambar persegi panjang di setiap target.

  4. 4

    Tinjau gambar kosong, objek yang hilang, kelas yang salah, dan kehilangan kotak sebelum ekspor.

  5. 5

    Ekspor coretan dalam paket ZIPYOLOformat. (Rect annotations)

04

Bangun satu bersihYOLOdataset

Pair setiap gambar dengan same- bernama .txt label file. Dibagi dengan merekam atau rentang waktu, bukan dengan menyebarkan secara acak bingkai video yang berdekatan di kereta api dan validasi.

Dataset
dataset/
├── images/
│   ├── train/
│   └── val/
├── labels/
│   ├── train/
│   └── val/
└── data.yaml
data.yaml
path: /absolute/path/to/dataset
train: images/train
val: images/val

names:
  0: Copper
  1: CopperDepleted
  2: Wood
  3: Monster

Pemisahan awal praktis adalah 80% kereta api dan 20% validasi. validasi yang ditetapkan harus berisi adegan benar-benar tak terlihat.

  • Untuk batch anotasi baru, Anda tidak perlu meng-upload gambar lama untuk MakeSense.ai lagi.
  • Merge gambar dan label baru offline, kemudian remap numerik kelas ID dengan nama kelas sehingga urutan asli tetap tidak berubah.
  • Berlatih ulang dengan lengkap lama + data baru. Latihan hanya pada gambar baru dapat membuat kelas lama berperilaku seperti latar belakang.
ContohYOLObagan dataset menampilkan jumlah dari instansi yang berlabel per kelas dan ukuran kotak
Periksa hitungan kelas sebelum pelatihan. Sebuah kelas dengan hanya beberapa contoh menghasilkan metrik tidak stabil bahkan jika skor keseluruhan terlihat baik.
05

Pasang Ultralytics dan kereta api

Contoh di bawah ini menggunakan versi yang diverifikasi dengan alur kerja ini. Model Nano adalah titik awal yang paling aman untuk deteksi terus menerus. Gunakan 640 px untuk objek yang lebih besar dan 960 px ketika target penting kecil.

Membuat lingkungan yang terisolasi
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install ultralytics==8.4.138 onnx==1.22.0 \
  onnxruntime==1.29.0 onnxslim==0.1.96

Parameter awal yang disarankan

ParameterNilai awalMengapa
modelYOLO26nKecil dan cukup cepat untuk iterasi pertama.
imgsz960 / 640Gunakan 960 untuk target kecil; gunakan 640 ketika target lebih besar atau kecepatan lebih penting.
epochs200Mengatur langit-langit murah hati sementara berhenti dini dapat menyelesaikan lebih cepat.
patience40Berhenti setelah validasi belum membaik selama 40 epochs.
batch8Kurangi ke 4 atau 2 jika memori habis; meningkatkan hanya setelah pengukuran.
devicemps / 0 / cpuSilikon Apple menggunakan punca, NVIDIA menggunakan 0, dan mesin apapun dapat menggunakan cpu.
workers4Sebuah cross- konservatif platform mulai titik.
seed42Membuat data dan perbandingan pelatihan lebih mudah untuk bereproduksi.
close_mosaic15Menonaktifkan mosaik dekat akhir sehingga zaman akhir melihat lebih banyak gambar alami.
train.py
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.train(
    data="dataset/data.yaml",
    imgsz=960,
    epochs=200,
    patience=40,
    batch=8,
    device="mps",  # NVIDIA: 0 · CPU: "cpu"
    workers=4,
    seed=42,
    close_mosaic=15,
)
06

Validasi model, bukan hanya kurva kehilangan

Gunakan pos pemeriksaan terbaik, periksa prediksi pada cuplikan layar tak terlihat, dan tinjau setiap kelas secara terpisah. Nilai global tinggi dapat menyembunyikan kelas langka yang lemah.

  • Presisi: berapa banyak laporan deteksi yang benar.
  • Ingat: berapa banyak objek nyata ditemukan.
  • mAP50 dan mAP50- 95: seluruh lokalisasi dan kualitas klasifikasi di seluruh ambang batas.
  • Matriks fusi: kelas mana yang salah satu atau latar belakang.
Contoh kerugian pelatihan Ultralytics dan kurva validasi metrik
Kehilangan training harus trend turun sementara validasi metrics stabil. Gunakan stop.pt disimpan, tidak otomatis epoch akhir. (best.pt)
Contoh normalisasi matriks kebingungan untuk detektor objek multi- class
Inspeksi diagonal dan latar belakang baris dan kolom. Kelas negara hak cek mereka sendiri.
07

Ekspor suatu model ONNX kompatibel LaiCai-

LaiCai mengimpor ONNX, bukan berkas pelatihan .pt. Ekspor satu masukan NCHW RGB statis, batch 1, float32 atau float16, dan mentah satu - to- banyak prediksi sehingga LaiCai dapat menerapkan penyaringan kepercayaan dan NMS.

export.py
from ultralytics import YOLO

model = YOLO("runs/detect/train/weights/best.pt")
model.export(
    format="onnx",
    imgsz=960,
    batch=1,
    dynamic=False,
    simplify=True,
    nms=None,
)

Paket direktori model

Pilih direktori itu sendiri dalam pustaka Model LaiCai. Direktori harus berisi konfigurasi. json dan berkas ONNX yang dinamai oleh model File. ID kelas harus dimulai dari 0 dan tetap sama. (config.json · modelFile)

Model directory
game-objects/
├── config.json
└── model.onnx
config.json
{
  "id": "game-objects-v1",
  "name": "Game Objects v1",
  "type": "yolo",
  "modelFile": "model.onnx",
  "outputFormat": "raw_yolo_no_objectness",
  "id2label": {
    "0": "Copper",
    "1": "CopperDepleted",
    "2": "Wood",
    "3": "Monster"
  },
  "label2id": {
    "Copper": 0,
    "CopperDepleted": 1,
    "Wood": 2,
    "Monster": 3
  }
}

Diimpor dengan peringatan?

Jika LaiCai mengatakan konfigurasi. json hilang atau tidak dapat dibaca, Anda memilih berkas ONNX atau folder tidak lengkap. Impor lengkap model direktori dan pastikan id2label atau label2id mendefinisikan setiap kelas. (config.json)

08

Impor dan uji di LaiCai

BukaLaiCai Flow, pergi ke Pustaka Model, impor direktori yang siap, dan konfirmasi bahwa model ditandai Compatible sebelum menggunakannya dalam visi. mendeteksi. (vision.detect)

  • Pilih model dalam pustaka Model dan konfirmasi masukan, keluaran, format keluaran, dan daftar kelas.
  • Gunakan Tes Layar Saat Ini dengan kelas dan ambang batas awal yang wajar seperti 0.5.
  • Uji baik frame positif dan negatif atau membingungkan frame. Panggilan inferensi sukses tidak sama dengan objek terdeteksi.
  • Setelah validasi desktop, uji model yang sama secara terpisah pada Android Agen jika Flow akan berjalan di telepon. (Android Agent)
V2+

Bagaimana meningkatkan versi berikutnya

Simpan gambar asli,YOLOlabel, daftar kelas, data. ubi, perintah pelatihan, dan best.pt bersama-sama. Berkas-berkas ini adalah sumber data yang dapat dipakai ulang; berkas yang diekspor sendiri ONNX tidak cukup untuk pelatihan ulang yang dapat diandalkan. (data.yaml)

  1. Mengumpulkan positif palsu, benda yang hilang, lingkungan baru, dan kondisi visual baru dari real run.
  2. Label hanya gambar baru di MakeSense.ai menggunakan kebijakan kelas akhir.
  3. Gabung data lama dan baru, menjaga ID kelas dengan nama, kemudian dibagi dengan sesi lagi.
  4. Mulai jalankan baru dari best.pt sebelumnya ketika pemetaan kelas kompatibel, dan memvalidasi kasus lama dan baru.
Jangan pernah meninggalkan kelas lama terlihat tanpa berlabel dalam gambar baru. Mereka akan diperlakukan sebagai latar belakang selama pelatihan.

Pertanyaan umum

Apa aku perlu mengimpor ulang semua gambar lama ke MakeSense.ai?

Tidak. Label batch baru, ekspor, dan gabungkan dengan data lama offline. Impor ulang data lama hanya bila Anda perlu memperbaiki gangguan lama.

Dapatkah saya hanya menambahkan satu kelas baru?

Ya, tapi menambahkan itu setelah kelas yang ada dan remap ekspor baru dengan nama kelas. Kemudian latihan ulang pada data penuh sehingga kelas lama tetap mewakili.

Mengapa model masih mendeteksi sumber daya yang dikumpulkan?

Kedua negara bagian secara visual mirip dan model tidak belajar perbedaan. Tambahkan terpisah habis-negara kelas atau diverifikasi hard-negatif contoh, kemudian melatih kembali dan meninjau bingung matriks.

Haruskah aku menaikkan batas kepercayaan diri untuk memperbaiki setiap positif palsu?

Tidak. Sebuah threshold dapat trade recall untuk presisi, tetapi tidak dapat menggantikan kelas hilang, label tidak konsisten, atau membingungkan contoh negatif.

Referensi resmi

Perintah dan pilihan kompabilitas dalam panduan ini diperiksa melawan dokumentasi resmi saat ini dan kontrak model LaiCai.

LanjutkanLaiCai Flow

Setelah modelnya sesuai, gunakan penglihatan. deteksi untuk memilih sebuah kelas, threshold, dan daerah layar, kemudian hubungkan sukses atau gagal path ke aksi Flow selanjutnya. (vision.detect)