283 lines (278 with data), 31.4 kB
B
¢eª¤ ã @ sø d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl
Z
ddlmZ ddl
ZddlZddlmZ ee ¡ Zejd Zeeejkr°ej ee¡ e ¡ dkrÒeej ee ¡ ¡ZddlmZ ddlm Z m!Z!m"Z"m#Z# ddl$m%Z% dd l&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 dd
l4m5Z5m6Z6 e ¡ dkZ7G dd
d
ej8j9Z:dd Z;dd Z<e<e.dfddZ=e<e.dfddZ>e<e.dfddZ?e<e.dfddZ@e<e.dfdd ZAe<d!d"e.d#fd$d%ZBe<d"d"d&d&d'd(d"e.d)fd*d+ZCe<e.d,fd-d.ZDe<e.d/fd0d1ZEe<e.d2fd3d4ZFe<e.d5fd6d7ZGd8d9 ZHe.d:fd;d<ZIe6 ed= ed> d?d@dAdBd"d"d"d"d"d"d"d"dCd"d!d"d"d&d&d'd(fdDdEZJdKdFdGZKdHdI ZLeMdJkrôeK ZNeLeN dS )Lag
Export a YOLOv5 PyTorch model to other formats. TensorFlow exports authored by https://github.com/zldrobit
Format | `export.py --include` | Model
--- | --- | ---
PyTorch | - | yolov5s.pt
TorchScript | `torchscript` | yolov5s.torchscript
ONNX | `onnx` | yolov5s.onnx
OpenVINO | `openvino` | yolov5s_openvino_model/
TensorRT | `engine` | yolov5s.engine
CoreML | `coreml` | yolov5s.mlmodel
TensorFlow SavedModel | `saved_model` | yolov5s_saved_model/
TensorFlow GraphDef | `pb` | yolov5s.pb
TensorFlow Lite | `tflite` | yolov5s.tflite
TensorFlow Edge TPU | `edgetpu` | yolov5s_edgetpu.tflite
TensorFlow.js | `tfjs` | yolov5s_web_model/
PaddlePaddle | `paddle` | yolov5s_paddle_model/
Requirements:
$ pip install -r requirements.txt coremltools onnx onnx-simplifier onnxruntime openvino-dev tensorflow-cpu # CPU
$ pip install -r requirements.txt coremltools onnx onnx-simplifier onnxruntime-gpu openvino-dev tensorflow # GPU
Usage:
$ python export.py --weights yolov5s.pt --include torchscript onnx openvino engine coreml tflite ...
Inference:
$ python detect.py --weights yolov5s.pt # PyTorch
yolov5s.torchscript # TorchScript
yolov5s.onnx # ONNX Runtime or OpenCV DNN with --dnn
yolov5s_openvino_model # OpenVINO
yolov5s.engine # TensorRT
yolov5s.mlmodel # CoreML (macOS-only)
yolov5s_saved_model # TensorFlow SavedModel
yolov5s.pb # TensorFlow GraphDef
yolov5s.tflite # TensorFlow Lite
yolov5s_edgetpu.tflite # TensorFlow Edge TPU
yolov5s_paddle_model # PaddlePaddle
TensorFlow.js:
$ cd .. && git clone https://github.com/zldrobit/tfjs-yolov5-example.git && cd tfjs-yolov5-example
$ npm install
$ ln -s ../../yolov5/yolov5s_web_model public/yolov5s_web_model
$ npm start
é N)ÚPath)Úoptimize_for_mobileÚWindows)Úattempt_load)ÚClassificationModelÚDetectÚDetectionModelÚSegmentationModel)Ú
LoadImages)
ÚLOGGERÚProfileÚ
check_datasetÚcheck_img_sizeÚcheck_requirementsÚ
check_versionÚ
check_yamlÚcolorstrÚ file_sizeÚget_default_argsÚ
print_argsÚurl2fileÚ yaml_save)Ú
select_deviceÚsmart_inference_modeÚDarwinc s$ e Zd Z fddZdd Z ZS )ÚiOSModelc sb t ¡ |j\}}}}|| _|j| _||kr:d| | _n$t d| d| d| d| g¡| _d S )Ng ð?)ÚsuperÚ__init__ÚshapeÚmodelÚncÚ normalizeÚtorchÚtensor)Úselfr ÚimÚbÚcÚhÚw)Ú __class__© ú5/home/iml/Desktop/Talha/YOLOV5_Model/yolov5/export.pyr R s
ziOSModel.__init__c C s: | |¡d ¡ dd| jfd¡\}}}|| || j fS )Nr é é )r ÚsqueezeÚsplitr r! )r$ ÚxÚxywhÚconfÚclsr+ r+ r, Úforward^ s (ziOSModel.forward)Ú__name__Ú
__module__Ú__qualname__r r5 Ú
__classcell__r+ r+ )r* r, r P s r c C s¬ dddddgdddddgdd d
ddgddd
ddgdddddgdddddgdddddgdddddgdddddgddd ddgd!d"d#ddgd$d%d&ddgg} t j| d'd(d)d*d+gd,S )-NÚPyTorchÚ-z.ptTÚTorchScriptÚtorchscriptz.torchscriptÚONNXÚonnxz.onnxÚOpenVINOÚopenvinoÚ_openvino_modelFÚTensorRTÚenginez.engineÚCoreMLÚcoremlz.mlmodelzTensorFlow SavedModelÚsaved_modelÚ_saved_modelzTensorFlow GraphDefÚpbz.pbzTensorFlow LiteÚtflitez.tflitezTensorFlow Edge TPUÚedgetpuz_edgetpu.tflitez
TensorFlow.jsÚtfjsÚ
_web_modelÚPaddlePaddleÚpaddleÚ
_paddle_modelÚFormatÚArgumentÚSuffixÚCPUÚGPU)Úcolumns)ÚpdÚ DataFrame)r1 r+ r+ r, Úexport_formatsc s rY c s t fdd}|S )Nc
s¢ d }yTt }| |\}}W d Q R X t | d|jdd| dt|dd¡ ||fS tk
r } z"t | d|jdd| ¡ d S d }~X Y nX d S )
NÚprefixu export success â
z.1fzs, saved as z (z MB)u export failure â zs: )NN)r r ÚinfoÚtr Ú Exception)ÚargsÚkwargsrZ ÚdtÚfr Úe)Ú
inner_argsÚ
inner_funcr+ r, Ú
outer_funcy s ,ztry_export.<locals>.outer_func)r )rd re r+ )rc rd r, Ú
try_exportu s rf zTorchScript:c C s t d| dtj d¡ | d¡}tjj| |dd}|jtt | j
| jd}dt
|¡i}|rzt|jt||d n|jt||d |d fS )
NÚ
z starting export with torch z...z.torchscriptF)Ústrict)r ÚstrideÚnamesz
config.txt)Ú_extra_files)r r[ r"