LaiCai FlowPanduan panduan
YOLO · ONNX · LaiCai Flow

Keretakan model deteksi objek tersendiri untukLaiCai Flow

Panduan ini membawa Anda dari raw screenshots ke model ONNX kompatibel LaiCai. Ini menggunakan dataset permainan objek-kecil nyata sebagai contoh bekerja, tetapi proses yang sama diterapkan pada kontrol aplikasi, produk, ikon, alat, dan target tampak lainnya.

Resep yang DiujiYOLOHari ini 26n · 960 px · 17 kelas · desktop dan Android Agent kontrak model (YOLO26n)
Adegan permainan generik dengan kotak deteksi sekitar bijih, pohon, dan monster
Salah satu model anime dapat mendeteksi berbagai kelas terkait dalam adegan yang sama, seperti sumber daya, karakter, dan keadaan objek.
Keretakan model deteksi objek tersendiri untukLaiCai Flow
YouTube

Jalur lengkap

  1. DitangkapKoleksi berbagai jenis bingkai
  2. LabelDigambar kotak-kotak ketat
  3. Cantum BaruTetap menjaga kelas ID stabil
  4. Kereta ApiDisahkan pada bingkai yang tidak kelihatan
  5. EksporBuat keluaran mentah ONNX
  6. Importconfig.json

Sebelum kau mulai

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

Haruskah bijih, kayu, dan monster berada dalam satu model?

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

01

Kesiapkan cekupan skrin yang berguna

Kumpulkan frame dari perangkat, resolusi, tingkat zoom, dan kualitas visual yang akan dilihat LaiCai. Keanekaragaman Diversitas lebih penting daripada menyelamatkan banyak bingkai video berturut-turut yang terlihat hampir sama.

  • Termasuk posisi, ukuran, pencahayaan, latar belakang, bingkai animasi, dan oklusi parsial.
  • Contoh-contoh sulit: objek kecil, objek tepi, kabur, popup, dan visualnya mirip non-target.
  • Tambahkan beberapa gambar latar belakang di mana tidak ada kelas target Anda muncul. Berkas label mereka kosong.
  • Tidak ada minimum universal. Untuk tes pertama, bidik setidaknya 50 kotak per kelas yang bervariasi; kelas yang sulit atau serupa biasanya membutuhkan 100–200 atau lebih.
02

Buat daftar kelas sebelum label

Kelas A harus mewakili satu keputusan visual aliran yang perlu dibuat. Tetap nama pendek, unik, dan stabil karena urutan yang sama digunakan dalamYOLOlabel, data.yaml, config.json, dan visit.detector class pemilih. (vision.detect)

Anggap secara visual berbeda negara bagian sebagai kelas terpisah

Jika sumber yang dikumpulkan masih menyerupai sumber daya yang tersedia, label kedua negara bagian, misalnya Copper dan CopperDepleted. Jangan mengharapkan ambang keyakinan saja untuk memisahkan kembali dua negara visual nyata.

Perbandingan sisi-sisi dari sumber daya tembaga yang tersedia dan sumber daya yang telah habis, masing-masing dengan kotak deteksi terpisah
Ia menggunakan kelas terpisah ketika otomasi harus bereaksi berbeda dengan kedua negara bagian.
  • Setiap kejadian yang terlihat dari setiap kelas target harus diberi label. Salah satu sasaran yang tidak diberi label dipelajari sebagai latar belakang.
  • Guna kebijakan kotak yang sama di mana-mana: ketat di sekitar objek tampak, tanpa margin besar.
  • Lebih suka nama seperti CopperDepleted atau copper depleted ketika sebuah alat label mengubah ruang.
03

di Makesense.ai (MakeSense.ai)

Kie MakeSense.ai adalah alat pelabel berbasis peramban gratis. Untuk model LaiCai, pilih Pengesan Objek, gunakan kotak segi empat, dan eksporYOLOanotasi. (Object Detection)

  1. 1

    OpenMakeSense.ai dan upload gambar sumber. Simpan folder gambar asli Anda; ZIP label yang diekspor tidak menggantikannya.

  2. 2

    Pilih Pengesan Objek, bukan Pengenal Gambar. (Object Detection · Image Recognition)

  3. 3

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

  4. 4

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

  5. 5

    Anotasi Rekt Ekspor lentik sebagai paket ZIP dalamYOLOformat . (Rect annotations)

04

Bina satu bersihYOLODataset

Pasangan setiap gambar dengan nama yang sama file label .txt. Membagi dengan merekam sesi atau jangkauan waktu, bukan dengan menyebarkan secara acak bingkai video yang berdekatan melintasi 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

Pembagian awal yang praktis adalah 80% kereta dan 20% validasi. Pengaturan validasi harus berisi adegan yang tidak terlihat.

  • Untuk kumpulan anotasi baru, Anda tidak perlu mengunggah gambar lama ke MakeSense.ai lagi.
  • Cantumkan gambar dan label baru secara luring, kemudian memetakan ulang ID kelas numerik dengan nama kelas sehingga urutan asli tetap tidak berubah.
  • Kekangan dengan lengkap lama + baru dataset. Pelatihan hanya pada gambar baru dapat membuat kelas lama berperilaku seperti latar belakang.
Contoh senamYOLODataset bagan data audiensi audiens yang menunjukkan jumlah kejadian berlabel per kelas dan ukuran kotak
Periksa jumlah kelas sebelum latihan. Kelas kelas A dengan hanya beberapa contoh menghasilkan metrik yang tidak stabil meskipun skor keseluruhan terlihat baik.
05

Pasang Wakatik dan kereta (Ultralytics)

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

Ciptakan lingkungan terpencil
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 permulaan yang disarankan

Parameter trans title= yang tidak diketahui mengabaikanNilai permulaan []Mengapa
modelYOLO26nKecil dan cukup cepat untuk iterasi pertama.
imgsz960 / 640Use 960 untuk target kecil; gunakan 640 ketika target lebih besar atau kecepatan lebih penting.
epochs200Dia memiliki langit - langit yang murah hati sementara berhenti lebih awal bisa selesai lebih cepat.
patience40Pemberhentian setelah validasi belum membaik untuk 40 epoch.
batch8Kurangi ke 4 atau 2 jika memori habis; peningkatan hanya setelah pengukuran.
devicemps / 0 / cpuSilikon Apple menggunakan mps, NVIDIA menggunakan 0, dan setiap mesin dapat menggunakan cpu.
workers4A konservatif lintas platform titik awal.
seed42Infakine membuat dataset dan perbandingan pelatihan lebih mudah untuk direproduksi.
close_mosaic15Orang-orang yang tidak menggunakan mosaik di ujungnya sehingga epochs 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

Memvalidasi model, bukan hanya kurva kehilangan

Wacana menggunakan checkpoint terbaik, memeriksa prediksi pada cuplikan layar yang tak terlihat, dan meninjau setiap kelas secara terpisah. Sebuah skor global yang tinggi dapat menyembunyikan kelas lemah langka.

  • Kepersisan: berapa banyak deteksi yang dilaporkan benar.
  • Ingatlah: berapa banyak benda nyata ditemukan.
  • map50 dan mAP50-95: lokalisasi secara keseluruhan dan kualitas klasifikasi melintasi ambang batas.
  • Kebingungan matriks: kelas mana yang keliru untuk satu sama lain atau untuk latar belakang.
Contoh Ultralitik Contoh pelatihan kehilangan dan validasi kurva metrik (Ultralytics)
Kehilangan pelatihan harus menjadi trend down sementara validasi metrik stabil. Gunakan best.pt yang disimpan, bukan secara otomatis epok akhir.
Contoh classicalized confusion matrix untuk sebuah detektor permainan-objek multi-kelas
Periksa diagonal dan baris dan kolom latar belakang. Kelas-kelas negara yang mirip berhak mendapatkan cek sendiri.
07

Export model ONNX kompatibel LaiCai

LaiCai mengimpor ONNX, bukan file pelatihan .pt. Esport satu masukan NCHW RGB statis, batch 1, float32 atau float16, dan prediksi mentah satu-ke-banyak sehingga LaiCai dapat menerapkan penyaringan keyakinan 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 di perpustakaan LaiCai's Model. Direktori harus berisi config.json dan berkas ONNX bernama modelFile. Kelas ID harus mulai dari 0 dan tetap berdampingan.

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
  }
}

Diimport dengan peringatan?

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

08

Di LaiCai

OpenLaiCai Flow, pergi ke perpustakaan Model, impor direktori yang telah disiapkan, dan konfirmasi bahwa model ditandai Serasi sebelum menggunakannya dalam visi. Terdeteksi. (vision.detect)

  • Pilih model dalam Model perpustakaan dan konfirmasi masukan, output, format output, dan daftar kelasnya.
  • Use Test Current Screen dengan kelas dan ambang awal yang masuk akal seperti 0.5.
  • Ajarlah kedua bingkai positif dan bingkai negatif atau membingungkan. Panggilan inferensi yang berhasil tidak sama dengan objek yang terdeteksi.
  • Setelah validasi desktop, uji model yang sama secara terpisah pada Android Agent jika Flow akan berjalan di telepon.
V2+

Cara memperbaiki versi selanjutnya

Simpan gambar asli,YOLOlabel, daftar kelas, data. Yaml, pelatihan komando, dan terbaik bersama-sama. Berkas-berkas ini adalah sumber dataset yang dapat digunakan kembali Anda; berkas ONNX yang diekspor saja tidak cukup untuk pelatihan ulang yang dapat diandalkan. (data.yaml · best.pt)

  1. Mengumpul positif palsu, objek meleset, lingkungan baru, dan negara visual baru dari real run.
  2. Labelkan hanya gambar baru di MakeSense.ai menggunakan kebijakan kelas akhir.
  3. Cantumkan data lama dan baru, mengawetkan ID kelas dengan nama, kemudian dibagi lagi.
  4. Mulai jalankan baru dari best.pt sebelumnya ketika pemetaan kelas kompatibel, dan validasi kasus lama dan baru.
Jangan pernah tinggalkan kelas lama yang terlihat tanpa label dalam gambar baru. Mereka akan diperlakukan sebagai latar belakang selama pelatihan.

Pertanyaan umum

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

Tidak. Label batch baru, ekspor, dan gabungkan dengan dataset lama yang tersimpan offline. Anda hanya perlu mengoreksi anotasi lama.

Boleh aku tambahkan satu kelas baru?

Ya, tapi tambahkan setelah kelas yang ada dan peta ulang ekspor baru dengan nama kelas. Kemudian retrain pada dataset penuh sehingga kelas-kelas lama tetap diwakili.

Mengapa model masih mendeteksi sumber yang dikumpulkan?

Dua negara bagian ini secara visual mirip dan modelnya belum mempelajari perbedaannya. Add a terpisah depleted-state class atau diverifikasi hard-negatif contoh, kemudian retrain dan meninjau matriks kebingungan.

Haruskah aku meningkatkan ambang keyakinan untuk memperbaiki setiap positif palsu?

Tidak. A threshold dapat diperdagangkan recall untuk presisi, tetapi tidak dapat menggantikan kelas yang hilang, label yang tidak konsisten, atau membingungkan contoh negatif.

referensi resmi

Perintah dan pilihan keserasian dalam panduan ini diperiksa terhadap dokumentasi resmi saat ini dan kontrak model LaiCai.

Teruskan dalamLaiCai Flow

Setelah modelnya kompatibel, gunakan visi. Terdeteksi untuk memilih suatu daerah kelas, ambang, dan layar, kemudian menghubungkan jalur keberhasilan atau kegagalan ke aksi Aliran berikutnya. (vision.detect)