LaiCai Flowนําทาง
YOLO · ONNX · LaiCai Flow

กําหนดโมเดลสําหรับการตรวจสอบวัตถุเองLaiCai Flow

มัคคุเทศก์นี้พาคุณจากหน้าจอดิบ ไปยังรุ่นไลไซที่เข้ากันได้ ONNX มันใช้ข้อมูลเกมขนาดเล็กจริง เป็นตัวอย่างการทํางาน แต่กระบวนการเดียวกันนี้ใช้ได้กับโปรแกรมควบคุม, ผลิตภัณฑ์, ไอคอน, เครื่องมือ, และเป้าหมายอื่น ๆ ที่มองเห็นได้

สูตรทดสอบYOLO26n – 960 px-17 คลาส Desktop and Android Aagent Aagent access (Android Agent)
ฉากเกมทั่วไปที่มีกล่องตรวจสอบรอบแร่ต้นไม้และมอนสเตอร์
แบบ อย่าง หนึ่ง สามารถ ตรวจ สอบ ชั้น เรียน ที่ เกี่ยว ข้อง กัน หลาย ชั้น ได้ ใน ฉาก เดียว กัน เช่น ทรัพยากร, บุคคล, และ สิ่ง ของ ต่าง ๆ.
กําหนดโมเดลสําหรับการตรวจสอบวัตถุเองLaiCai Flow
YouTube

เส้นทางที่สมบูรณ์

  1. จับภาพสะสมเฟรมที่แตกต่างกัน
  2. แถบกํากับค่าวาดกล่องแนบ
  3. รวมรักษาหมายเลขชั้นไว้
  4. รถไฟตรวจสอบเมื่อเฟรมที่มองไม่เห็น
  5. ส่งออกสร้างการแสดงผล ONX แบบดิบ (ONNX)
  6. นําเข้าเพิ่มการปรับแต่ง. json (config.json)

ก่อนจะเริ่ม

ใช้การตรวจสอบวัตถุเมื่อ LaiCai ต้องค้นหาที่ที่วัตถุอยู่บนหน้าจอ การจําแนกประเภทภาพ จะตอบเฉพาะแฟ้มที่บรรจุอยู่ในภาพทั้งหมด และไม่มีการคืนค่าเป็นกล่องผูกพัน

แร่, ไม้, และ ปีศาจ ควร อยู่ ใน แบบ เดียว กัน ไหม?

โดยปกติแล้วจะใช่ เมื่อมันปรากฏในเกมหรือแอพเดียวกัน ใช้ขนาดหน้าจอเดียวกัน และจําเป็นต้องตรวจจับได้ในฟลอฟท์เดียวกัน การ แยก รุ่น เฉพาะ เมื่อ ไม่ เกี่ยว ข้อง กับ ฉาก เท่า นั้น รายการ ใน ชั้น จึง จะ มี ขนาด ใหญ่ มาก หรือ มี กลุ่ม หนึ่ง ต้องการ เป้า หมาย ที่ ต่าง ออก ไป.

01

เตรียมภาพที่มีประโยชน์

สะสมกรอบจากอุปกรณ์ที่แน่นอน ความละเอียด ซูมระดับ และคุณภาพภาพ ที่ไลไซจะเห็น ความ หลาก หลาย มี ความ สําคัญ ยิ่ง กว่า การ เก็บ ภาพ วี ดิ ทัศน์ ไว้ ตาม ลําดับ ซึ่ง แทบ จะ เหมือน กัน.

  • รวม ถึง ตําแหน่ง ต่าง ๆ, ขนาด, แสง, ภูมิ หลัง, โครง สร้าง การเคลื่อนไหว, และ การ อุด ตัน บาง ส่วน.
  • เก็บตัวอย่างยาก ๆ ไว้: วัตถุเล็ก ๆ วัตถุขอบ เบลอ ป็อปปี้ และภาพคล้าย ๆ กัน
  • เพิ่มภาพเบื้องหลังที่ยังไม่มีคลาสเป้าหมายของคุณ แฟ้มฉลากของพวกเขาว่างเปล่า
  • ไม่ มี ขีด จํากัด ของ เอกภพ. สําหรับ การ ทดสอบ ครั้ง แรก เป้า หมาย สําหรับ กล่อง ที่ มี ความ หลาก หลาย อย่าง น้อย 50 กล่อง ต่อ ชั้น; ยาก หรือ คล้าย ๆ กัน นั้น มัก จะ ต้อง ใช้ 1001-2200 กล่อง หรือ มาก กว่า นั้น.
02

ออกแบบรายการคลาสก่อนทําการระบุ

ห้องเรียนควรเป็นตัวแทนการตัดสินใจทางสายตา อย่างหนึ่งที่ฟลอฟท์ต้องทํา รักษา ชื่อ ให้ สั้น, ไม่ เหมือน ใคร, และ มั่นคง เนื่อง จาก มี การ ใช้ ลําดับ เดียว กัน ในYOLOป้าย, ข้อมูล.yml, ปรับแต่ง.json, และวิสัยทัศน์. สืบค้นผู้คัดเลือกคลาส (vision.detect · config.json · data.yaml)

ปฏิบัติต่อรัฐต่าง ๆ ในภาพเป็นการแยกชนชั้น

หากทรัพยากรที่สะสมยังคงคล้ายกับทรัพยากรที่มี ให้ระบุทั้งรัฐ ตัวอย่างเช่นคอปเปอร์และคอปเปอร์ที่เสื่อมโทรม อย่า คาด หมาย ว่า จะ ได้ รับ ความ มั่น ใจ เพียง อย่าง เดียว เพื่อ แยก สอง รัฐ จริง ๆ ออก จาก กัน.

เปรียบเทียบกันของทรัพยากรทองแดงที่มีอยู่ และทรัพยากรที่เสื่อมลง, แต่ละกับกล่องการตรวจสอบแยก
ใช้คลาสแยก เมื่อระบบอัตโนมัติ ตอบสนองต่อทั้งสองรัฐต่างกัน
  • ทุกตัวอย่างที่มองเห็นได้ ของทุกรุ่นเป้าหมาย จะต้องมีชื่อ เป้า หมาย ที่ ไม่ มี การ ติด ป้าย ไว้ จะ เรียน รู้ ได้ ว่า เป็น ฉาก หลัง.
  • ใช้ นโยบาย เดียว กัน นี้ ทุก หน ทุก แห่ง: ติด อยู่ กับ วัตถุ ที่ มอง เห็น ได้ โดย ไม่ มี ช่อง กว้าง.
  • ชื่อ สมมุติ เช่น คอปเปอร์ เดเลต์ หรือ ทองแดง ที่ เ สี เมื่อ หมาย เลข ช่อง ที่ เครื่องมือ เปลี่ยน.
03

ป้าย ใน เมค เซน. (MakeSense.ai)

Makesens.ai เป็นเครื่องมือระบุชื่อเว็บเบราว์เซอร์อิสระ สําหรับรุ่นไลไซ ให้เลือกตรวจสอบวัตถุ ใช้กล่องสี่เหลี่ยม และส่งออกYOLOหมายเหตุประกอบ (MakeSense.ai · Object Detection)

  1. 1

    เปิด Makesens.ai และอัปโหลดภาพต้นฉบับ เก็บโฟลเดอร์เดิมของคุณ; ป้ายที่ส่งออก ZIP ไม่ได้แทนที่ (MakeSense.ai)

  2. 2

    เลือกการตรวจจับวัตถุ ไม่ใช่การปรับค่าภาพ (Object Detection · Image Recognition)

  3. 3

    สร้างรายการคลาสสุดท้ายตามลําดับคงที่ แล้ววาดสี่เหลี่ยมรอบเป้าหมายทุก

  4. 4

    ทบทวนภาพว่าง ๆ, วัตถุที่พลาดไป, คลาสผิด และกล่องหลวมก่อนส่งออก

  5. 5

    ส่งออกหมายเหตุประกอบเป็นแพกเกจ ZIP ในYOLOรูปแบบ (Rect annotations)

04

สร้างที่สะอาดYOLOชุดข้อมูล

วาดแต่ละภาพด้วยแฟ้ม .txt ที่มีชื่อเดียวกัน แยกกันด้วยการบันทึกวาระ หรือช่วงเวลา ไม่ใช่โดยการสุ่มกระจายภาพวิดีโอ ข้ามรถไฟและตรวจสอบ

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

การแยกทางกันจริง ๆ คือรถไฟ 80% และตรวจความถูกต้อง 20% ชุด ที่ ใช้ การ ได้ ต้อง มี ฉาก เหตุ การณ์ ที่ มอง ไม่ เห็น จริง ๆ.

  • สําหรับชุดหมายเหตุประกอบใหม่ คุณไม่จําเป็นต้องอัปโหลดภาพเก่า ๆ ไปใช้เพื่อสร้างหมายเหตุ. ai อีก (MakeSense.ai)
  • รวมภาพใหม่และป้ายสีใหม่เข้าที่ออฟไลน์ จากนั้นเปลี่ยนหมายเลขชั้นเป็นเลขประจําตัวใหม่โดยใช้ชื่อคลาส ดังนั้นลําดับเดิมจึงยังคงเปลี่ยนแปลงไม่ได้
  • คํานวณข้อมูลใหม่ทั้งหมด การ ฝึก อบรม เฉพาะ ใน ภาพ ใหม่ เท่า นั้น ที่ สามารถ ทํา ให้ ชั้น เรียน เก่า ๆ ประพฤติ เหมือน ฉาก หลัง.
ตัวอย่างYOLOแผนภูมิชุดข้อมูลแสดงจํานวนตัวอักษรต่อคลาสและขนาดกล่อง
เช็คชั้นเรียนก่อนฝึก นัก เรียน ที่ มี ตัว อย่าง เพียง ไม่ กี่ ตัว อย่าง ได้ ผลิต เครื่อง วัด ที่ ไม่ แน่นอน แม้ ว่า คะแนน โดย รวม จะ ดู ดี.
05

ติดตั้งอัลตร้าซาวด์และรถไฟ (Ultralytics)

ตัว อย่าง ที่ อยู่ ข้าง ล่าง นี้ ใช้ ฉบับ แปล ต่าง ๆ ที่ พิสูจน์ แล้ว ว่า ได้ ผล งาน นี้. โมเดลนาโนเป็นจุดเริ่มต้นที่ปลอดภัยที่สุด สําหรับการตรวจสอบอย่างต่อเนื่อง ใช้ 640 px สําหรับวัตถุขนาดใหญ่ และ 960 px เมื่อเป้าหมายที่สําคัญมีขนาดเล็ก

สร้างสภาพแวดล้อมที่โดดเดี่ยว
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

แนะนําพารามิเตอร์เริ่มต้น

พารามิเตอร์ค่าเริ่มต้นทําไม
modelYOLO26nมีขนาดเล็กและเร็วพอสําหรับการตีครั้งแรก
imgsz960 / 640ใช้ 960 สําหรับเป้าหมายขนาดเล็ก; ใช้ 640 เมื่อเป้าหมายมีขนาดใหญ่หรือความเร็วมีความสําคัญมากขึ้น
epochs200เพดานที่ใจกว้าง ในขณะที่การหยุดเร็วขึ้น สามารถเสร็จเร็วขึ้น
patience40การ หยุด หลัง จาก ได้ รับ การ พิสูจน์ แล้ว ยัง ไม่ ดี ขึ้น สําหรับ 40 ยุค.
batch8ลดเหลือ 4 หรือ 2 หากหน่วยความจําหมด เพิ่มขึ้นหลังจากวัด
devicemps / 0 / cpuซิลิกอนแอปเปิลใช้ mps, NVIDE ใช้ 0 และเครื่องจักรใด ๆ ก็สามารถใช้ cpu ได้
workers4จุดเริ่มต้นแบบอนุรักษ์นิยม
seed42ทํา ให้ การ เปรียบ เทียบ ข้อมูล และ การ ฝึก อบรม ง่าย ขึ้น.
close_mosaic15ปิดการใช้งานโมเสคใกล้ที่สุด ยุคสุดท้ายจึงเห็นภาพธรรมชาติมากขึ้น
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

ตรวจสอบแบบจําลอง ไม่ใช่แค่เส้นโค้งการสูญเสีย

ใช้ จุด ตรวจ ที่ ดี ที่ สุด ตรวจ สอบ คํา ทํานาย บน จอ ที่ มอง ไม่ เห็น และ ทบทวน แต่ ละ ชั้น ต่าง กัน. คะแนนสูงสุดทั่วโลกสามารถซ่อนชนชั้นที่อ่อนแอ

  • การประเมินผล: การตรวจสอบในรายงานถูกต้อง
  • ขอ ให้ จํา ไว้ ว่า มี การ พบ วัตถุ จริง ๆ กี่ ชิ้น.
  • MAP50 และ MAP50-95: การจําแนกท้องถิ่นและการจําแนกประเภททั้งหมดข้ามขีดจํากัด
  • ความขัดแย้งของเมทริกซ์: คลาสไหนผิดกันหรือสําหรับพื้นหลัง
ตัวอย่าง อัลตราซาวน์ลิติกส์ การฝึกและเส้นโค้งเมทริก (Ultralytics)
การสูญเสียการฝึกซ้อมควรลดแนวโน้มลง ในขณะที่เครื่องวัดอาการคงที่ ใช้ที่บันทึกไว้ดีที่สุด ไม่ใช่ใช้ช่วงสุดท้ายโดยอัตโนมัติ (best.pt)
ตัวอย่างความสับสนของเครื่องตรวจจับเกมแบบหลายคลาส
แสดงเส้นทแยง และแถวหลังและคอลัมน์ ห้องเรียนของรัฐเดียวกัน สมควรได้รับเช็คของตัวเอง
07

ส่งออกโมเดล INNX ที่เข้ากันได้ (ONNX)

LaiCai นําเข้า ONNX ไม่ใช่แฟ้มฝึก.pt ส่งออกค่านําเข้าแบบคงที่ของ NCHW RPG, ชุด 1, ลอย32 หรือ ลอยมา16, และข้อมูลดิบหนึ่งต่อหนึ่งหลายครั้ง ดังนั้น LaiCai สามารถนําไปใช้กรองความมั่นใจและ NMS (RGB · 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,
)

แพกเกจไดเร็กทอรีโมเดล

เลือกไดเรกทอรีเองในไลบรารีโมเดลของ LaiCai ไดเร็กทอรีต้องบรรจุแฟ้มปรับแต่ง. json และ ONNX ที่มีชื่อตามแฟ้มต้นแบบ IDs คลาสจะต้องเริ่มต้นที่ 0 และยังคงต่อเนื่อง (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
  }
}

ถูกนําเข้าด้วยคําเตือน?

หาก Lai กล่าวว่าปรับแต่ง.json ขาดหายไปหรืออ่านไม่ได้ คุณเลือกแฟ้ม ONX หรือโฟลเดอร์ที่ยังไม่สมบูรณ์ นําเข้าไดเร็กทอรีต้นแบบที่สมบูรณ์ และแน่ใจว่าหมายเลข id2id จะกําหนดทุกคลาส (ONNX · config.json · id2label · label2id)

08

นําเข้าและทดสอบใน LaiCai

เปิดLaiCai Flowสืบค้นไปยังไลบรารีแบบ Model, นําเข้าไดเร็กทอรีที่เตรียมไว้แล้ว และยืนยันได้ว่ารุ่นนี้ถูกทําเครื่องหมายให้ใช้ร่วมกันได้ ก่อนที่จะใช้ในภาพ ตรวจสอบ (vision.detect)

  • เลือกรุ่นในไลบรารีต้นแบบ และยืนยันการนําเข้า, การแสดงผล, รูปแบบการแสดงผล และรายการคลาส
  • ใช้หน้าจอปัจจุบันทดสอบกับคลาสและการเริ่มที่สมเหตุสมผลเช่น 0.5
  • ทดสอบทั้งเฟรมบวกและด้านลบ หรือกรอบสับสน การเรียกแบบอนุมานที่ประสบความสําเร็จ ไม่เหมือนกับวัตถุที่ถูกตรวจจับได้
  • หลังจากการตรวจสอบความถูกต้องของพื้นที่ทํางานแล้ว ให้ทดสอบรุ่นเดียวกันกับแอนดรอยด์หากตัวฟลอว์ทํางานบนโทรศัพท์ (Android Agent)
V2+

วิธี ปรับ ปรุง ฉบับ ต่อ ไป

บันทึกภาพต้นฉบับYOLOฉลาก รายชื่อชั้นเรียน ข้อมูล แยมเมล คําสั่งฝึก และที่ดีที่สุดด้วยกัน แฟ้มเหล่านี้เป็นแหล่งข้อมูลของข้อมูลต่าง ๆ ของคุณ ซึ่งส่งออก ONX อย่างเดียวไม่เพียงพอสําหรับการลองใหม่ที่เชื่อถือได้ (ONNX · data.yaml · best.pt)

  1. เก็บค่าบวกเท็จ วัตถุที่พลาด สภาพแวดล้อมใหม่ และสถานะใหม่จากการทํางานจริง
  2. กํากับเฉพาะภาพใหม่ใน เมคเซนไซ โดยใช้นโยบายคลาสสุดท้าย (MakeSense.ai)
  3. ผนวกข้อมูลเก่าและข้อมูลใหม่ รักษาหมายเลขคลาสด้วยชื่อ แล้วแบ่งด้วยวาระการใช้งานอีกครั้ง
  4. เริ่มการทํางานใหม่จากค่าดีที่สุดก่อน.pt เมื่อการจับคู่คลาสเข้ากันได้ และตรวจความถูกต้องของคดีเก่าและคดีใหม่ (best.pt)
อย่า ทิ้ง ชั้น เรียน เก่า ที่ เห็น ได้ ไว้ โดย ไม่ มี การ ติด ต่อ กับ ภาพ ใหม่. พวก เขา จะ ได้ รับ การ ปฏิบัติ เป็น ภูมิ หลัง ระหว่าง การ ฝึก อบรม.

คําถามทั่วไป

ผมต้องส่งภาพเก่าทั้งหมด ลงไปใน เมคเซนไซ? (MakeSense.ai)

ไม่ ติดแท็กชุดใหม่, ส่งออกไปยังมัน แล้วรวมมันเข้ากับชุดข้อมูลเก่าที่บันทึกไว้ออฟไลน์ นําข้อมูลเก่ากลับมาใช้ใหม่ เมื่อคุณต้องการแก้ไขหมายเหตุประกอบเก่าเท่านั้น

ฉันจะเพิ่มห้องเรียนใหม่ได้ไหม

ใช่ แต่จะเพิ่มเข้าไปหลังจากคลาสที่มีอยู่แล้ว แล้วทําการส่งออกใหม่โดยใช้ชื่อคลาส แล้วทบทวนข้อมูลทั้งหมด เพื่อให้รุ่นเก่ายังคงแสดง

ทําไมโมเดลถึงยังตรวจสอบทรัพยากรที่สะสมอยู่

ทั้งสองรัฐมีลักษณะคล้ายคลึงกัน และแบบจําลองไม่ได้เรียนรู้ความแตกต่าง เพิ่มคลาสที่แยกออกจากรัฐ หรือพิสูจน์ตัวอย่างการลบ แล้วกลับมาทบทวนเมทริกซ์ความสับสน

ฉัน ควร สร้าง ความ มั่น ใจ ที่ จะ แก้ไข ข้อ ผิด พลาด ทุก อย่าง ไหม?

ไม่ ขีดจํากัด สามารถ แลก เปลี่ยน ความ จํา ให้ ถูก ต้อง แม่นยํา แต่ ไม่ สามารถ เข้า มา แทน ที่ ชั้น เรียน ที่ ขาด ไป, ป้าย ที่ ไม่ เสมอ ต้น เสมอ ปลาย, หรือ ทํา ให้ ตัว อย่าง ใน แง่ ลบ สับสน.

อ้างอิงอย่างเป็นทางการ

คําสั่งและทางเลือกที่เข้ากันได้ในคู่มือนี้ ได้รับการตรวจสอบกับเอกสารอย่างเป็นทางการในปัจจุบัน และสัญญาแบบไลไซ

ทําต่อไปLaiCai Flow

หลังจากแบบจําลองเข้ากันได้ ใช้วิสัยทัศน์ ตรวจสอบเลือกคลาส, ขีดจํากัด, และขอบเขตหน้าจอ แล้วเชื่อมต่อความสําเร็จหรือเส้นทางล้มเหลวไปยังการกระทําฟลอว์ถัดไป (vision.detect)