Unverified 提交 b5b56a3c authored 作者: Glenn Jocher's avatar Glenn Jocher 提交者: GitHub

Add CoreML inference (#6195)

* Add Apple CoreML inference * Cleanup
上级 7b31a531
...@@ -17,7 +17,7 @@ Usage - formats: ...@@ -17,7 +17,7 @@ Usage - formats:
yolov5s.onnx # ONNX Runtime or OpenCV DNN with --dnn yolov5s.onnx # ONNX Runtime or OpenCV DNN with --dnn
yolov5s.xml # OpenVINO yolov5s.xml # OpenVINO
yolov5s.engine # TensorRT yolov5s.engine # TensorRT
yolov5s.mlmodel # CoreML (under development) yolov5s.mlmodel # CoreML (MacOS-only)
yolov5s_saved_model # TensorFlow SavedModel yolov5s_saved_model # TensorFlow SavedModel
yolov5s.pb # TensorFlow GraphDef yolov5s.pb # TensorFlow GraphDef
yolov5s.tflite # TensorFlow Lite yolov5s.tflite # TensorFlow Lite
......
...@@ -25,7 +25,7 @@ Inference: ...@@ -25,7 +25,7 @@ Inference:
yolov5s.onnx # ONNX Runtime or OpenCV DNN with --dnn yolov5s.onnx # ONNX Runtime or OpenCV DNN with --dnn
yolov5s.xml # OpenVINO yolov5s.xml # OpenVINO
yolov5s.engine # TensorRT yolov5s.engine # TensorRT
yolov5s.mlmodel # CoreML (under development) yolov5s.mlmodel # CoreML (MacOS-only)
yolov5s_saved_model # TensorFlow SavedModel yolov5s_saved_model # TensorFlow SavedModel
yolov5s.pb # TensorFlow GraphDef yolov5s.pb # TensorFlow GraphDef
yolov5s.tflite # TensorFlow Lite yolov5s.tflite # TensorFlow Lite
...@@ -156,7 +156,6 @@ def export_coreml(model, im, file, prefix=colorstr('CoreML:')): ...@@ -156,7 +156,6 @@ def export_coreml(model, im, file, prefix=colorstr('CoreML:')):
LOGGER.info(f'\n{prefix} starting export with coremltools {ct.__version__}...') LOGGER.info(f'\n{prefix} starting export with coremltools {ct.__version__}...')
f = file.with_suffix('.mlmodel') f = file.with_suffix('.mlmodel')
model.train() # CoreML exports should be placed in model.train() mode
ts = torch.jit.trace(model, im, strict=False) # TorchScript model ts = torch.jit.trace(model, im, strict=False) # TorchScript model
ct_model = ct.convert(ts, inputs=[ct.ImageType('image', shape=im.shape, scale=1 / 255, bias=[0, 0, 0])]) ct_model = ct.convert(ts, inputs=[ct.ImageType('image', shape=im.shape, scale=1 / 255, bias=[0, 0, 0])])
ct_model.save(f) ct_model.save(f)
......
...@@ -420,9 +420,12 @@ class DetectMultiBackend(nn.Module): ...@@ -420,9 +420,12 @@ class DetectMultiBackend(nn.Module):
im = Image.fromarray((im[0] * 255).astype('uint8')) im = Image.fromarray((im[0] * 255).astype('uint8'))
# im = im.resize((192, 320), Image.ANTIALIAS) # im = im.resize((192, 320), Image.ANTIALIAS)
y = self.model.predict({'image': im}) # coordinates are xywh normalized y = self.model.predict({'image': im}) # coordinates are xywh normalized
box = xywh2xyxy(y['coordinates'] * [[w, h, w, h]]) # xyxy pixels if 'confidence' in y:
conf, cls = y['confidence'].max(1), y['confidence'].argmax(1).astype(np.float) box = xywh2xyxy(y['coordinates'] * [[w, h, w, h]]) # xyxy pixels
y = np.concatenate((box, conf.reshape(-1, 1), cls.reshape(-1, 1)), 1) conf, cls = y['confidence'].max(1), y['confidence'].argmax(1).astype(np.float)
y = np.concatenate((box, conf.reshape(-1, 1), cls.reshape(-1, 1)), 1)
else:
y = y[list(y)[-1]] # last output
else: # TensorFlow (SavedModel, GraphDef, Lite, Edge TPU) else: # TensorFlow (SavedModel, GraphDef, Lite, Edge TPU)
im = im.permute(0, 2, 3, 1).cpu().numpy() # torch BCHW to numpy BHWC shape(1,320,192,3) im = im.permute(0, 2, 3, 1).cpu().numpy() # torch BCHW to numpy BHWC shape(1,320,192,3)
if self.saved_model: # SavedModel if self.saved_model: # SavedModel
......
...@@ -11,7 +11,7 @@ Usage - formats: ...@@ -11,7 +11,7 @@ Usage - formats:
yolov5s.onnx # ONNX Runtime or OpenCV DNN with --dnn yolov5s.onnx # ONNX Runtime or OpenCV DNN with --dnn
yolov5s.xml # OpenVINO yolov5s.xml # OpenVINO
yolov5s.engine # TensorRT yolov5s.engine # TensorRT
yolov5s.mlmodel # CoreML (under development) yolov5s.mlmodel # CoreML (MacOS-only)
yolov5s_saved_model # TensorFlow SavedModel yolov5s_saved_model # TensorFlow SavedModel
yolov5s.pb # TensorFlow GraphDef yolov5s.pb # TensorFlow GraphDef
yolov5s.tflite # TensorFlow Lite yolov5s.tflite # TensorFlow Lite
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论