Jaewon Lee pre-commit-ci[bot] glenn-jocher commited on
Commit
fe1b503
1 Parent(s): 7d46c69

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 <glenn.jocher@ultralytics.com>

Files changed (1) hide show
  1. export.py +12 -12
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(model, im, 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,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, shell=True)
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, im, 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,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(keras_model, im, 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,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, shell=True, check=True)
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(keras_model, im, file, prefix=colorstr('TensorFlow.js:')):
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="Identity,Identity_1,Identity_2,Identity_3" {f_pb} {f}'
426
- subprocess.run(cmd, shell=True)
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(model, im, file, half)
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, im, 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(model, im, file)
547
  if tfjs:
548
- f[9] = export_tfjs(model, im, file)
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