tanluren / yolov3-channel-and-layer-pruning

yolov3 yolov4 channel and layer pruning, Knowledge Distillation 层剪枝,通道剪枝,知识蒸馏
Apache License 2.0
1.5k stars 446 forks source link

您好:可以提供下pytorch 转换tflite或者pb所需要的代码可以嘛? #85

Open EricHuiK opened 4 years ago

EricHuiK commented 4 years ago

不需要了目前已经转换好了,谢谢

EricHuiK commented 4 years ago

可以通过.pth-->.weights--->.h5-->.pb---->.tflite思路

nobody-cheng commented 4 years ago

可以通过.pth-->.weights--->.h5-->.pb---->.tflite思路

@EricHuiK 你好,请问有转到pb的教程吗,可以用的

EricHuiK commented 4 years ago

.pth--->.weights--->.h5--->tflite

1、.pt模型转换为.weights python yolov3-channel-and-layer-pruning-master/convert2tflite.py

2、.weights模型文件转换为.h5文件 python keras-yolo3-master/convert.py /example_prune/weights/test_pytorch2tflite/yolov3-spp-hand.cfg \ xxx/xx/test_pytorch2tflite/latest.weights \ xxx/xxx/latest.h5

以下代码参考keras_to_tensorflow项目代码

3、.h5文件获取输出输入节点名称 python ./h5_pb2.py

4、.h5文件转换为.pb文件

py36_tensorrt_tf10

python ./keras_to_tensorflow_yolov3.py

5、.pb文件量化与优化

模型转换:

bazel-bin/tensorflow/tools/graph_transforms/transform_graph \ --in_graph=latest_yolov3.pb \ --out_graph=latest_yolov3_trainsform.pb \ --inputs='input_1:0' \ --outputs='conv2d_60/BiasAdd:0','conv2d_68/BiasAdd:0','conv2d_76/BiasAdd:0' \ --transforms='fold_constants(ignore_errors=true) fold_batch_norms fold_old_batch_norms remove_device quantize_weights strip_unused_nodes merge_duplicate_nodes sort_by_execution_order remove_nodes(op=Identity, op=CheckNumerics) sparsify_gather'

6、.pb文件转换为.tflite文件 toco --graph_def_file=latest_yolov3_trainsform.pb \ --output_file=latest_yolov3_trainsform.tflite \ --input_shapes=1,608,608,3 \ --input_arrays='input_1' \ --output_arrays='conv2d_60/BiasAdd','conv2d_68/BiasAdd','conv2d_76/BiasAdd' \ --input_data_type=FLOAT \ --inference_type=FLOAT \ --allow_custom_ops \ --mean_values=128 \ --std_dev_values=128 \ --allow_custom_ops \ --change_concat_input_ranges=false \ --default_ranges_min=0 \ --default_ranges_max=1