Removed shell=True from subprocess commands that require user inputs (#7875)
Browse files* Removed shell=True from subprocess commands that require user inputs. Also removed unused arguments
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Added check=True
* Revert line add
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Glenn Jocher <[email protected]>
export.py
CHANGED
@@ -168,7 +168,7 @@ def export_onnx(model, im, file, opset, train, dynamic, simplify, prefix=colorst
|
|
168 |
LOGGER.info(f'{prefix} export failure: {e}')
|
169 |
|
170 |
|
171 |
-
def export_openvino(
|
172 |
# YOLOv5 OpenVINO export
|
173 |
try:
|
174 |
check_requirements(('openvino-dev',)) # requires openvino-dev: https://pypi.org/project/openvino-dev/
|
@@ -178,7 +178,7 @@ def export_openvino(model, im, file, half, prefix=colorstr('OpenVINO:')):
|
|
178 |
f = str(file).replace('.pt', f'_openvino_model{os.sep}')
|
179 |
|
180 |
cmd = f"mo --input_model {file.with_suffix('.onnx')} --output_dir {f} --data_type {'FP16' if half else 'FP32'}"
|
181 |
-
subprocess.check_output(cmd
|
182 |
|
183 |
LOGGER.info(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)')
|
184 |
return f
|
@@ -324,7 +324,7 @@ def export_saved_model(model,
|
|
324 |
return None, None
|
325 |
|
326 |
|
327 |
-
def export_pb(keras_model,
|
328 |
# YOLOv5 TensorFlow GraphDef *.pb export https://github.com/leimao/Frozen_Graph_TensorFlow
|
329 |
try:
|
330 |
import tensorflow as tf
|
@@ -379,7 +379,7 @@ def export_tflite(keras_model, im, file, int8, data, nms, agnostic_nms, prefix=c
|
|
379 |
LOGGER.info(f'\n{prefix} export failure: {e}')
|
380 |
|
381 |
|
382 |
-
def export_edgetpu(
|
383 |
# YOLOv5 Edge TPU export https://coral.ai/docs/edgetpu/models-intro/
|
384 |
try:
|
385 |
cmd = 'edgetpu_compiler --version'
|
@@ -400,7 +400,7 @@ def export_edgetpu(keras_model, im, file, prefix=colorstr('Edge TPU:')):
|
|
400 |
f_tfl = str(file).replace('.pt', '-int8.tflite') # TFLite model
|
401 |
|
402 |
cmd = f"edgetpu_compiler -s -o {file.parent} {f_tfl}"
|
403 |
-
subprocess.run(cmd,
|
404 |
|
405 |
LOGGER.info(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)')
|
406 |
return f
|
@@ -408,7 +408,7 @@ def export_edgetpu(keras_model, im, file, prefix=colorstr('Edge TPU:')):
|
|
408 |
LOGGER.info(f'\n{prefix} export failure: {e}')
|
409 |
|
410 |
|
411 |
-
def export_tfjs(
|
412 |
# YOLOv5 TensorFlow.js export
|
413 |
try:
|
414 |
check_requirements(('tensorflowjs',))
|
@@ -422,8 +422,8 @@ def export_tfjs(keras_model, im, file, prefix=colorstr('TensorFlow.js:')):
|
|
422 |
f_json = f'{f}/model.json' # *.json path
|
423 |
|
424 |
cmd = f'tensorflowjs_converter --input_format=tf_frozen_model ' \
|
425 |
-
f'--output_node_names=
|
426 |
-
subprocess.run(cmd
|
427 |
|
428 |
with open(f_json) as j:
|
429 |
json = j.read()
|
@@ -519,7 +519,7 @@ def run(
|
|
519 |
if onnx or xml: # OpenVINO requires ONNX
|
520 |
f[2] = export_onnx(model, im, file, opset, train, dynamic, simplify)
|
521 |
if xml: # OpenVINO
|
522 |
-
f[3] = export_openvino(
|
523 |
if coreml:
|
524 |
_, f[4] = export_coreml(model, im, file, int8, half)
|
525 |
|
@@ -539,13 +539,13 @@ def run(
|
|
539 |
conf_thres=conf_thres,
|
540 |
iou_thres=iou_thres) # keras model
|
541 |
if pb or tfjs: # pb prerequisite to tfjs
|
542 |
-
f[6] = export_pb(model,
|
543 |
if tflite or edgetpu:
|
544 |
f[7] = export_tflite(model, im, file, int8=int8 or edgetpu, data=data, nms=nms, agnostic_nms=agnostic_nms)
|
545 |
if edgetpu:
|
546 |
-
f[8] = export_edgetpu(
|
547 |
if tfjs:
|
548 |
-
f[9] = export_tfjs(
|
549 |
|
550 |
# Finish
|
551 |
f = [str(x) for x in f if x] # filter out '' and None
|
|
|
168 |
LOGGER.info(f'{prefix} export failure: {e}')
|
169 |
|
170 |
|
171 |
+
def export_openvino(file, half, prefix=colorstr('OpenVINO:')):
|
172 |
# YOLOv5 OpenVINO export
|
173 |
try:
|
174 |
check_requirements(('openvino-dev',)) # requires openvino-dev: https://pypi.org/project/openvino-dev/
|
|
|
178 |
f = str(file).replace('.pt', f'_openvino_model{os.sep}')
|
179 |
|
180 |
cmd = f"mo --input_model {file.with_suffix('.onnx')} --output_dir {f} --data_type {'FP16' if half else 'FP32'}"
|
181 |
+
subprocess.check_output(cmd.split())
|
182 |
|
183 |
LOGGER.info(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)')
|
184 |
return f
|
|
|
324 |
return None, None
|
325 |
|
326 |
|
327 |
+
def export_pb(keras_model, file, prefix=colorstr('TensorFlow GraphDef:')):
|
328 |
# YOLOv5 TensorFlow GraphDef *.pb export https://github.com/leimao/Frozen_Graph_TensorFlow
|
329 |
try:
|
330 |
import tensorflow as tf
|
|
|
379 |
LOGGER.info(f'\n{prefix} export failure: {e}')
|
380 |
|
381 |
|
382 |
+
def export_edgetpu(file, prefix=colorstr('Edge TPU:')):
|
383 |
# YOLOv5 Edge TPU export https://coral.ai/docs/edgetpu/models-intro/
|
384 |
try:
|
385 |
cmd = 'edgetpu_compiler --version'
|
|
|
400 |
f_tfl = str(file).replace('.pt', '-int8.tflite') # TFLite model
|
401 |
|
402 |
cmd = f"edgetpu_compiler -s -o {file.parent} {f_tfl}"
|
403 |
+
subprocess.run(cmd.split(), check=True)
|
404 |
|
405 |
LOGGER.info(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)')
|
406 |
return f
|
|
|
408 |
LOGGER.info(f'\n{prefix} export failure: {e}')
|
409 |
|
410 |
|
411 |
+
def export_tfjs(file, prefix=colorstr('TensorFlow.js:')):
|
412 |
# YOLOv5 TensorFlow.js export
|
413 |
try:
|
414 |
check_requirements(('tensorflowjs',))
|
|
|
422 |
f_json = f'{f}/model.json' # *.json path
|
423 |
|
424 |
cmd = f'tensorflowjs_converter --input_format=tf_frozen_model ' \
|
425 |
+
f'--output_node_names=Identity,Identity_1,Identity_2,Identity_3 {f_pb} {f}'
|
426 |
+
subprocess.run(cmd.split())
|
427 |
|
428 |
with open(f_json) as j:
|
429 |
json = j.read()
|
|
|
519 |
if onnx or xml: # OpenVINO requires ONNX
|
520 |
f[2] = export_onnx(model, im, file, opset, train, dynamic, simplify)
|
521 |
if xml: # OpenVINO
|
522 |
+
f[3] = export_openvino(file, half)
|
523 |
if coreml:
|
524 |
_, f[4] = export_coreml(model, im, file, int8, half)
|
525 |
|
|
|
539 |
conf_thres=conf_thres,
|
540 |
iou_thres=iou_thres) # keras model
|
541 |
if pb or tfjs: # pb prerequisite to tfjs
|
542 |
+
f[6] = export_pb(model, file)
|
543 |
if tflite or edgetpu:
|
544 |
f[7] = export_tflite(model, im, file, int8=int8 or edgetpu, data=data, nms=nms, agnostic_nms=agnostic_nms)
|
545 |
if edgetpu:
|
546 |
+
f[8] = export_edgetpu(file)
|
547 |
if tfjs:
|
548 |
+
f[9] = export_tfjs(file)
|
549 |
|
550 |
# Finish
|
551 |
f = [str(x) for x in f if x] # filter out '' and None
|