LaiCai Flowkılavuz kılavuz kılavuz
YOLO · ONNX · LaiCai Flow

Tren için özel bir nesne algılama modeliLaiCai Flow

Bu kılavuz sizi LaiCai- uyumlu bir ONNX modeline götürür. İşe yarayan örnek olarak gerçek küçük bir oyun veri kümesi kullanır, ancak aynı işlem uygulama kontrolleri, ürünler, ikonlar, araçlar ve diğer görünür hedefler için geçerlidir.

Test edilen reçeteYOLO26n · 960 px · 17 sınıf · masaüstü ve Android Agent model sözleşmesi
Genric oyun sahne ore, bir ağaç ve bir canavar
Bir model aynı sahnede birden çok ilgili sınıfları tespit edebilir, kaynaklar, karakterler ve nesne devletler gibi.
Tren için özel bir nesne algılama modeliLaiCai Flow
YouTube

Tam yol

  1. yakalama yakalamaÇeşitli çerçeveler toplamak
  2. LabelSıkı kutuları çizin
  3. MergeSınıf kimlikleri stabil
  4. Tren Tren Tren Trengörünmeyen çerçevelerde geçerlidir
  5. İhracat İhracatıham ONNX çıktı
  6. İthalatYapın.json (config.json)

Başlamadan önce

LaiCai’nin ekranda bir nesne nerede olduğunu bulması gerektiğinde nesne algılama kullanın. Görüntü sınıflandırması yalnızca tüm bir görüntünün ne içerdiğine cevap verir ve bağlayıcı bir kutu döndürür.

ore, ahşap ve canavarlar bir modelde olmalı?

Genellikle aynı oyunda veya uygulamada göründüğünde, aynı ekran görüntüsü kullanın ve aynı Akışta tespit edilmelidir. Ayrı modeller sadece sahnelerle ilgili olduğunda, sınıf listesi çok büyük ya da bir grup farklı giriş büyüklüğüne veya performans hedefine ihtiyaç duyar.

01

Yararlı ekran görüntüleri hazırlayın

Tam cihazdan çerçeveler toplayın, çözünürlük, zoom seviye ve LaiCai'nin göreceği görsel kalite. Çeşitlilik neredeyse aynı görünen birçok ardışık video çerçevesini tasarruf etmekten daha önemlidir.

  • Farklı pozisyonları, boyutları, aydınlatma, arka planları, animasyon çerçevelerini ve kısmi tıkanıklığı ekleyin.
  • Zor örnekler tutun: küçük nesneler, kenar nesneleri, bulanık, popuplar ve görsel olarak hedef olmayanlar.
  • Hedef sınıflarınızın hiçbiri görünmediği bazı arka görüntüler ekleyin. etiket dosyaları boş.
  • Evrensel bir minimum yoktur. İlk test için, sınıf başına en az 50 farklı kutu hedefleme; zor veya benzer sınıflar genellikle 100-200 veya daha fazlasına ihtiyaç duyar.
02

Sınıf listesini etiketlendirmeden önce tasarlayın

Bir sınıf, Akışın yapması gereken bir görsel kararı temsil etmelidir. İsimleri kısa, eşsiz ve istikrarlı tutun çünkü aynı sipariş kullanılırYOLOEtiketler, veriler.yaml, yapılandır.json ve vizyon.detect class selector. (vision.detect · config.json · data.yaml)

Görsel farklı eyaletleri ayrı sınıflar olarak tedavi etmek

Bir toplanan kaynak hala mevcut kaynağa benziyorsa, örneğin Copper ve CopperDepleted. Sadece iki gerçek görsel durumu güvenilir bir şekilde ayırmak için bir güven eşi beklemeyin.

Side-by-side karşılaştırması mevcut bir bakır kaynağı ve bir depleted kaynağı, her biri ayrı bir algılama kutusu ile
Otomasyonun iki eyalette farklı tepki vermesi gerektiğinde ayrı sınıflar kullanın.
  • Her hedef sınıfın her görünür örneği etiketlenmelidir. Unutulan bir hedef arka plan olarak öğrenilir.
  • Her yerde aynı kutu politikasını kullanın: görünür nesnenin etrafında sıkılayın, büyük marjlar olmadan.
  • Bir etiketleme aracı değişiklikleri alanlarının değiştiğinde BakırDepleted veya bakır depleted gibi isimleri tercih edin.
03

MakeSense.ai

MakeSense.ai özgür bir tarayıcı tabanlı bir etiketleme aracıdır. LaiCai modelleri için, Object Tespit'i seçin, dikdörtgen kutular kullanın ve ihracatYOLOAnnotasyonlar. (Object Detection)

  1. 1

    Open MakeSense.ai ve kaynak görüntülerini yükleyin. Orijinal görüntü klasörünü tutun; ihraç edilen etiket ZIP onu değiştirmiyor.

  2. 2

    Object Tespiti seçin, Image Recognition. (Object Detection)

  3. 3

    Sabit bir sırayla son sınıf listesini oluşturun, sonra her hedef örneği etrafında bir dikdörtgen çizin.

  4. 4

    Boş görüntüler, eksik nesneler, yanlış sınıflar ve ihracattan önce kutular.

  5. 5

    Export Rect annotations as a ZIP paketi inYOLOformat.

04

Bir tane temiz inşa edinYOLOdataset

Pair her görüntü aynı isimli .txt etiketi ile. Oturum veya zaman aralığı kaydederek, tren ve geçerlilik karşısında rastgele saç çerçeveleri ile değil.

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

Pratik bir başlangıç bölmesi %80 tren ve% 20 geçerlilik. Geçerlilik seti gerçekten görünmeyen sahneler içermelidir.

  • Yeni bir annotasyon grubu için, tekrar MakeSense.ai için eski resimleri yüklemeniz gerekmez.
  • Yeni görüntüler ve etiketler çevrimdışı, o zaman sınıf adı tarafından sayısal sınıf kimliklerini yeniden yükleyin, böylece orijinal sipariş değişmeden kalır.
  • Tamam eski + yeni veri kümesi ile yeniden eğitim. Eğitim sadece yeni görüntülerde eski sınıflar arka plan gibi davranabilir.
Örnek Örnek Örnek Örnek Örnek Örnek ÖrnekYOLODataset grafiği, sınıf ve kutu boyutlarda etiketli örneklerin sayısını gösteriyor
Kontrol sınıfı eğitimden önce sayılır. Sadece birkaç örnekle bir sınıf, genel puan iyi görünüyorsa bile dengesiz ölçümler üretir.
05

Ultralytics ve tren

Aşağıdaki örnekler bu iş akışı ile doğrulanan versiyonları kullanır. Bir Nano modeli sürekli algılama için en güvenli başlangıç noktasıdır. Önemli hedefler küçükken daha büyük nesneler ve 960 px için 640 px kullanın.

izole bir ortam yaratın
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

Önerilen başlangıç parametreleri

Parametre parametresiDeğere başlayınNeden Neden Neden Neden Neden Neden?
modelYOLO26nİlk iterasyon için küçük ve hızlı.
imgsz960 / 640Küçük hedefler için 960 kullanın; hedefler daha büyük veya hız önemli olduğunda 640 kullanın.
epochs200Erken durmanın erken bitebileceği bir cömert tavan ayarlar.
patience40Geçerlilik sonrası duraklar 40 dönem için gelişmemiştir.
batch8bellek çalışırsa 4 veya 2'ye indirgenin; sadece ölçümden sonra artış.
devicemps / 0 / cpuApple silikon, mps kullanıyor, PNG 0 kullanıyor ve herhangi bir makine cpu kullanabilir.
workers4muhafazakar bir çapraz platform başlangıç noktası.
seed42Veri kümesi ve eğitim karşılaştırmaları yeniden üretmek daha kolay hale gelir.
close_mosaic15Son zamanlardaki mozaik daha doğal görüntüler görür.
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

Modeli geçerli, sadece kayıp eğri değil

En iyi kontrol noktası kullanın, görünmeyen ekranlarda denetim tahminleri kullanın ve her sınıf ayrı ayrı gözden geçirin. Yüksek bir küresel puan zayıf nadir bir sınıf gizleyebilir.

  • Hassasiyet: kaç tane bildirilen algılama doğru.
  • Recall: kaç gerçek nesne bulundu.
  • mAP50 ve mAP50-95: Eşler arasındaki genel yerelleştirme ve sınıflandırma kalitesi.
  • Confüzyon matrisi: hangi sınıflar birbirleri veya arka plan için yanılır.
Örnek Ultralytics eğitim kaybı ve geçerlilik metrik eğrileri
Eğitim kaybı, geçerlilik metrikleri stabilize ederken trend olmalıdır. Kurtarılan en iyi olanı kullanın, otomatik olarak son dönem değil. (best.pt)
Örnek normalleştirilmiş karışıklık matrisi çoklu sınıf bir oyun-object dedektörleri için
Diagonal ve arka cephe ve sütunu ihmal edin. Benzer devlet sınıfları kendi çeklerini hak ediyor.
07

LaiCai-compatible ONNX modeli

LaiCai, eğitim .pt dosyası değil. Bir statik NCHW RGB girişi, 1, yüz32 veya yüz16, ve LaiCai güven filtreleme ve NMS uygulayabilir. (ONNX · float32 · float16)

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,
)

Model directory

LaiCai'nin Model kütüphanesinde kendisini seçin. Kılavuz, modelFile tarafından adlandırılan imar.json ve ONNX dosyası içermelidir. Sınıf kimlikleri 0'da başlamalı ve tutarlı kalmalıdır. (config.json)

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

Uyarılarla mı alındı?

LaiCai, yapılandırın.json'un eksik ya da açıklanamaz olduğunu söylüyorsa, bir ONNX dosyasını veya eksik bir klasörü seçtiniz. Tam model rehberi ithal edin ve id2label veya etiket2id her sınıfı tanımlar. (config.json · label2id)

08

LaiCai'de ithal ve test

Open Open Open OpenLaiCai FlowModel kütüphaneye gidin, hazırlıklı diziyi ithal edin ve modelin onu görmeden önce uyumlu olduğunu doğrulayın. algılama. (vision.detect)

  • Model kütüphanesindeki modeli seçin ve girişini, çıktıyı, çıktı formatını ve sınıf listesini doğrulayın.
  • Test Current Ekranını bir sınıfla kullanın ve 0,5 gibi makul bir başlangıç eşi.
  • Hem olumlu çerçeveler hem de negatif veya kafa karıştırıcı çerçeveler test edin. Başarılı bir çıkarım çağrısı, tespit edilen bir nesne olarak aynı değildir.
  • masaüstü doğrulamadan sonra, aynı modeli otomatik olarak Android Agent'da test edin, Akış telefonla çalıştırılırsa.
V2+

Bir sonraki sürümü nasıl geliştirmek

Orijinal görüntüleri kurtarın,YOLOEtiketler, sınıf listesi, veriler. Ya ml, eğitim komutu ve en iyisi. Bu dosyalar reusable dataset kaynağınızdır; ihraç edilen NX dosyası yalnızca güvenilir yeniden eğitim için yeterli değildir. (ONNX · data.yaml · best.pt)

  1. Sahte pozitif toplayın, eksik nesneler, yeni ortamlar ve gerçek eylemlerden yeni görsel devletler.
  2. Etiket sadece MakeSense.ai'deki yeni görüntüler son sınıf politikasını kullanarak.
  3. Merge yaşlı ve yeni veriler, sınıf kimliklerini isim olarak korumak, sonra tekrar oturumla ayrıldı.
  4. Sınıfın haritalanması uyumlu olduğu ve eski ve yeni vakaları doğruladığı önceki en iyilerden yeni koşmaya başlayın. (best.pt)
Yeni görüntülerde görünmez eski sınıfları asla terk etmeyin. Eğitim sırasında arka plan olarak tedavi edilecekler.

Ortak sorular

Tüm eski resimleri MakeSense.ai'ye yeniden göndermem gerekiyor mu?

Hayır. Yeni çeteyi etiketleyin ve onu kurtarılan eski veri kümesi çevrimdışı ile birleştirin. Re-import old data only when you need to correct old annotations.

Sadece yeni bir sınıf ekleyebilir miyim?

Evet, ama mevcut sınıflardan sonra uygulayın ve sınıf adı ile yeni ihracat geri alın. Sonra tam veri kümesi üzerinde yeniden eğitim, böylece eski sınıflar temsil edilmektedir.

Neden bir model hala toplanan bir kaynağı tespit ediyor?

İki devlet görsel olarak benzer ve model ayrımı öğrenmemiştir. Ayrı bir depleted-state sınıf ekleyin veya sert-negatif örnekler doğrulayın, sonra yeniden eğitim yapın ve karışık matrisi gözden geçirin.

Her sahte olumluyu düzeltmek için güven eşini yükseltmeliyim?

Hayır. Bir eşlik hassaslık için hatırlanabilir, ancak eksik sınıflar, tutarsız etiketler veya kafa karıştırıcı negatif örnekler değiştiremez.

Resmi referanslar

Bu kılavuzdaki komutlar ve uyumluluk seçenekleri mevcut resmi belgelere ve LaiCai model sözleşmesine karşı kontrol edildi.

Devam etmeye devam etLaiCai Flow

Model uyumlu olduğundan, vizyon kullanın. Bir sınıf, eşi ve ekran bölgesini seçmeyi tespit edin, sonra bir sonraki Akış eylemine başarı veya başarısızlık yolunu bağlar. (vision.detect)