การแก้ไขโค้ดในสมุดบันทึก
- ใช้คลัง ประมวลผลการเรียกร้องการประกันภัย และรุ่น YOLO ที่โหลดเพื่อทดสอบความถูกต้อง
- การอนุมานผลลัพธ์การอนุมานระหว่างโมเดล YOLO ONNX ที่โหลดไว้ภายใน และรุ่นเดียวกันถูกโหลดไปยัง OVMS
- ผลลัพธ์ที่สังเกตในเครื่อง จดจําอุบัติเหตุ 04 อยู่ที่ประมาณ 86% ในขณะที่ OVMS ส่งคืนประมาณ 88%
ดูเหมือนว่า OpenVINO™และ Ultralytics โหลดแบบจําลองได้รับอินพุตที่แตกต่างกันซึ่งทําให้เกิดความแตกต่างในผลลัพธ์
คุณจําเป็นต้องทําการเปลี่ยนแปลงบางอย่างเพื่อทํางานในสภาพแวดล้อมภายใน เครื่อง ต่อไปนี้คือการเปลี่ยนแปลง:
04-04-อุบัติเหตุ-recog.ipynb
- เซลล์ที่มีภาพอินพุตการอ่านและการคาดการณ์การรัน:
original_image: np.ndarray = cv2.imread("images/carImage3.jpg")
blob = cv2.dnn.blobFromImage(original_image, size=(640, 640), swapRB=False)
blob = np.ascontiguousarray(blob[0].transpose((1,2,0)))
results = model.predict(blob) - เซลล์ที่ดึงผลลัพธ์มาบนภาพต้นฉบับ:
Image.fromarray(result.plot()[:,:,::-1].astype(np.uint8))
04-05-model-serving.ipynb
ไม่มีการเปลี่ยนแปลงในสมุดบันทึกเอง จําเป็นต้องมีการเปลี่ยนแปลงใน remote_infer.py
- วิธีการประมวลผลล่วงหน้า:
// code placeholder
def preprocess(image_path):
original_image: np.ndarray = cv2.imread(image_path)
[height, width, _] = original_image.shape# Calculate scale factor
scale = (height/640, width/640)# Preprocess the image and prepare blob for model
blob = cv2.dnn.blobFromImage(original_image, scalefactor=1 / 255, size=(640, 640), swapRB=True)
return blob, scale, original_image - โทรไปยัง draw_bounding_box ภายในโปรเซสเซอร์:
draw_bounding_box(original_image, class_ids[index], scores[index], round(box[0] * scale[1]), round(box[1] * scale[0]),round((box[0] + box[2]) * scale[1]), round((box[1] + box[3]) * scale[0]))