Link Wiki Re Camera Seeed Studio - User Guide
Link contoh tutorial versi bahasa vietnam
📘 Set up the working environment
🧩 1. Install Docker (hanya sekali saja)
Jalankan di host (bukan di dalam container):
sudo apt update
sudo apt install docker.io
🔹 Jalankan & aktifkan Docker
sudo systemctl start docker
sudo systemctl enable docker
🔹 Setup permission user (biar tidak pakai sudo terus)
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
✅ Setelah ini, kamu bisa pakai docker tanpa sudo
🧩 2. Download Docker Image TPU-MLIR
docker pull sophgo/tpuc_dev:v3.1
📌 Ini akan download environment lengkap untuk TPU (termasuk toolchain CV181x)
🧩 3. Buat & Jalankan Container
Jalankan dari folder project kamu (penting karena akan di-mount ke container):
docker run --privileged \
--name MyName \
-v $PWD:/workspace \
-it sophgo/tpuc_dev:v3.1
🔹 Penjelasan:
--name MyName → ganti sesuai nama container (bebas) -v $PWD:/workspace → folder project kamu jadi /workspace di container --privileged → wajib untuk akses hardware/low-level -it → interactive terminal 🧩 4. Masuk ke Workspace di Container
Setelah container jalan:
📌 Semua file dari host otomatis ada di sini
🧩 5. Install TPU-MLIR (versi spesifik)
Di dalam container jalankan:
pip install tpu_mlir[all]==1.7
🧩 6. Verifikasi Instalasi
Cek apakah tool sudah tersedia:
which model_deploy
which run_calibration
which tpuc-opt
Kalau muncul path → ✅ berhasil
🧩 7. (Opsional) Jalankan Container Lagi
Kalau container sudah pernah dibuat:
🔹 Start ulang
🧩 8. (Opsional) Stop Container
📘 Konversi dari Model Training YoloV11n ke .MLIR
1. Training Model YOLOv11n
Model dilatih menggunakan framework Ultralytics YOLO dengan konfigurasi dataset sesuai kebutuhan.
Opsi Jika menggunakan Training melalui Cloud Training pada Platform Ultralitic
Berbayar dengan top up awal 4.85 dollar
Opsi Jika Local Training melalui Pycharm
kelemahan nya lama, tetap kondisi laptop atau PC terkoneksi internet
from ultralytics import YOLO
import os
# set API key (sama seperti export di CLI)
os.environ["ULTRALYTICS_API_KEY"] = "ul_9bbffea734098b752fd08a5679eb1ace8babb3b1"
# load model dari Ultralytics HUB (sesuai CLI)
model = YOLO("ul://ultralytics/yolo11/yolo11n")
# training (disesuaikan dengan CLI)
model.train(
data="ul://bima-setiawan/datasets/color-detection-v2v1-roboflow-instant-1-eval-yolov11" ,
epochs=100,
batch=16,
imgsz=640,
project="bima-setiawan/colordetection2"
)
Install dulu pip install ultralytics
2. Export Model ke ONNX
Setelah training selesai, model diexport ke format ONNX dengan konfigurasi berikut:
Jika Lewat Pycharm dari hasil training local
from ultralytics import YOLO
model = YOLO("runs/detect/bima-setiawan/colordetection2/train/weights/best.pt")
model.export(
format="onnx",
imgsz=640,
simplify=True,
opset=17,
dynamic=False,
nms=False, # WAJIB
batch=1
)
//cara cek benar sudah ter export atau belum
import onnxruntime as ort
session = ort.InferenceSession("runs/detect/bima-setiawan/colordetection2/train/weights/best.onnx")
print("OK")
3. Copy Model ke Docker TPU-MLIR
buat dulu susunan file
C:\Users\ChronosBimaLenovo\yolo_conversion
Di dalam folder calibration_image terdapat 100 file image (.jpg) sebagai file kalibrasi jika menggunakan INT8 nantinya
Didalam mode_yolo8n
Didalam COCO2017 adalah file dari calibration_image cuma ini sudah di rename dengan command:
root@da0d53ec991b:/workspace/yolo_conversion/model_yolo8n/COCO2017 ls for file in *.jpg *.png *.jpeg; do if [ -f "$file" ]; then mv "$file" "Calibration${count}.jpg"; ((count++)); if [ $count -gt 100 ]; then break; fi; fi; done
Di dalam folder image, ada file .png sebagai file testing
Di dalam folde workspace (C:\Users\ChronosBimaLenovo\yolo_conversion\model_yolo8n\Workspace) terdapat file hasil konversi .onnx
Copy folder model ke dalam container:
buka cmd
Copy folder model ke dalam container:
docker cp model_yolo8n tpu_converter:/workspace/tpu-mlir/model_yolo8n_new
Masuk ke container:
docker exec -it tpu_converter bash
4. Konversi ONNX → MLIR
Masuk ke directory kerja:
cd /workspace/tpu-mlir/model_yolo8n_new/Workspace
Command konversi:
model_transform \
--model_name yolo_custom \
--model_def train.onnx \
--input_shapes "[[1,3,640,640]]" \
--mean "0.0,0.0,0.0" \
--scale "0.0039216,0.0039216,0.0039216" \
--keep_aspect_ratio \
--pixel_format rgb \
--output_names "/model.23/cv2.0/cv2.0.2/Conv_output_0,/model.23/cv3.0/cv3.0.2/Conv_output_0,/model.23/cv2.1/cv2.1.2/Conv_output_0,/model.23/cv3.1/cv3.1.2/Conv_output_0,/model.23/cv2.2/cv2.2.2/Conv_output_0,/model.23/cv3.2/cv3.2.2/Conv_output_0" \
--test_input ../image/heart.png \
--test_result yolo_top_outputs.npz \
--mlir yolo.mlir
Catatan:
output_names bisa didapat dari: atau bantuan analisis ONNX YOLOv11 memiliki multi-scale output (3 layer detection) 5. Konfigurasi Preprocessing
Dari log:
Parameter:
scale = [0.0039216, 0.0039216, 0.0039216] (≈ 1/255) 6. Hasil Konversi
File yang dihasilkan:
Proses internal:
ONNX optimization (onnxsim) MLIR optimization (tpuc-opt) 7. Validasi Hasil Konversi
Dilakukan perbandingan antara:
Command otomatis:
npz_tool.py compare yolo_top_outputs.npz yolo_custom_ref_outputs.npz --tolerance 0.99,0.99
8. Hasil Validasi
Ringkasan:
229 compared
229 passed
0 failed
Detail:
Minimum similarity:
cosine_similarity ≈ 0.9999997
euclidean_similarity ≈ 0.9999987
✅ Status: VALID (Model MLIR sesuai dengan ONNX)
📘 Dokumentasi Konversi MLIR ke CVIMODEL
🧩 1. Persiapan Dataset Kalibrasi
Pastikan dataset gambar untuk kalibrasi sudah ada (misalnya folder COCO2017).
🔹 Hapus file lama (opsional)
🔹 Generate file list kalibrasi
find $(pwd)/COCO2017 -name "*.jpg" > calibration.txt
🔹 Cek isi file
🔹 Validasi path gambar pertama
ls $(head -n 1 calibration.txt)
🧩 2. Jalankan Kalibrasi (INT8)
Masuk ke folder workspace:
🔹 Command kalibrasi
run_calibration \
yolo.mlir \
--data_list ../calibration.txt \
--input_num 100 \
--calibration_table yolo_cali_table
🔹 Output penting:
Menghasilkan: yolo_cali_table 🧩 3. Konversi ke INT8 .cvimodel
🔹 Command convert
model_deploy \
--mlir yolo.mlir \
--quantize INT8 \
--quant_input \
--processor cv181x \
--calibration_table yolo_cali_table \
--test_input ../image/heart.png \
--test_reference yolo_top_outputs.npz \
--customization_format RGB_PACKED \
--fuse_preprocess \
--aligned_input \
--model yolo_int8_cv181x.cvimodel
🧩 4. Proses Internal (Otomatis oleh tool)
Berikut tahapan yang terjadi (tidak perlu manual):
🔹 4.1 Import calibration