# ส่งโมเดลสีสังเคราะห์เป็น ONNX แล้วตรวจผลซ้ำ

ผลรัน 28 กันยายน 2569: Ubuntu/WSL, Python 3.12.3, ONNX 1.22.0,
ONNX Runtime 1.29.0 และ NumPy 2.5.2 ใช้ CPU หนึ่งเธรด
ใช้ environment ที่มีอยู่แล้ว ไม่ได้ติดตั้งหรืออัปเกรดแพ็กเกจในรอบนี้
ดูรุ่นและ hash ใน `output/verification.json`

## โมเดลนี้ทำอะไร

นำค่าเฉลี่ยสีสองกลุ่มที่เรียนจาก train ของชุด parcel-detection เดิม
มาสร้างกราฟ ONNX ไม่มีการฝึกเพิ่มและไม่ใช้ test ปรับโมเดล
สำหรับสีพิกเซล x=(R,G,B) คำนวณ d_k=Σ(x_c−μ_k,c)² แล้วเลือกกลุ่มที่ระยะต่ำสุด
หากระยะเท่ากัน เลือกกลุ่มพื้นหลังตามกติกาเดิม
นี่เป็น nearest-centroid classifier ไม่ใช่ YOLO หรือ neural object detector

เส้นทาง: **model.json → Sub/Mul/ReduceSum → ArgMin → กลุ่มของแต่ละพิกเซล → รวมกรอบใน Python**

Input เป็น float64 รูปทรง [จำนวนพิกเซล,3] เรียง RGB ช่วง 0–255 ไม่หารด้วย 255
Output เป็น int64 [จำนวนพิกเซล] ค่า 0=พื้นหลัง 1=พัสดุ
ใช้ float64 เพื่อเทียบกับต้นฉบับ Python; ยังไม่ทดสอบ float32/quantization หรือบอร์ด Edge
กรอบรวมพิกเซลทั้งหมดจึงไม่รองรับการแยกพัสดุหลายชิ้น

## ทำซ้ำ

1. แตกชุด `parcel-detection.zip` เดิม เก็บโฟลเดอร์นี้ข้างกันกับชุด ONNX
2. ใช้ Python environment ที่มี numpy, onnx และ onnxruntime รุ่นตามรายงาน
   หากเตรียมใหม่ ให้ใช้ virtual environment แยกและดูข้อรองรับ Python/OS ของแพ็กเกจก่อน
3. รันจากโฟลเดอร์ชุด ONNX:

```text
python verify_export.py --kit ../parcel-detection --output ./output
```

Linux อาจใช้ `python3` โดยต้องเป็น environment ที่เตรียมไว้ สคริปต์ import
`parcel_lab.py` จาก `--kit` จึงใช้เฉพาะ source ต้นฉบับที่เชื่อถือได้ของโครงการ
คำสั่งจะเขียนทับสองไฟล์ผลลัพธ์ใน output ให้เลือกโฟลเดอร์ใหม่หากต้องการเก็บรอบก่อน

## ผลที่ตรวจจริง

ภาพ test สังเคราะห์ 4 ภาพ รวม 16,384 พิกเซล:
- class ของทุกพิกเซลตรงกับการคำนวณ Python เดิม
- กรอบทั้ง 4 ภาพตรงทั้ง Python และ annotation รวมภาพไม่มีพัสดุ
- ทดสอบกรณีระยะเท่ากันแล้วได้กลุ่มพื้นหลัง

ผลนี้ยืนยันความสอดคล้องบน fixture เหล่านี้เท่านั้น ไม่ใช่ความแม่นยำบนภาพจริง
ยังไม่ยืนยัน Windows, GPU, YOLO, Edge หรือการบิน และไม่ใช่การวัด latency
หากจะใช้ภาพจริง ต้องมีข้อมูลทดสอบอิสระหลายสภาพแสงและประเมินผลใหม่

## บรรณานุกรม

- [ONNX Runtime Python API](https://onnxruntime.ai/docs/api/python/api_summary.html): InferenceSession และ CPUExecutionProvider
- [ONNX ArgMin](https://onnx.ai/onnx/operators/onnx__ArgMin.html): กติกาเลือกดัชนีเมื่อค่าน้อยสุดซ้ำ

ตรวจแหล่งอ้างอิง 28 กันยายน 2569 โค้ดและโมเดลที่โครงการสร้างใช้ MIT ตาม LICENSE.txt
ไลบรารีภายนอกใช้ใบอนุญาตของเจ้าของและไม่ได้รวมใน ZIP
