目前darknet框架下的模型训练都是在C环境下训练的,难免较为晦涩,如果能将模型转换到Tensorflow环境下完成模型的训练,在将训练好的权重转为Darknet可以识别的权重部署到实际应用中。这样就可以将算法的训练和实际部署分开!
1、将Darknet框架下的.cfg与.weights 转为Tensorflow框架下的.cpkt模型
先clone这个项目,用于darknet模型转tensorflow
https://github.com/Linzmin1927/DW2TF
cd 到DW2TF目录下,然后执行
python3 main.py \
--cfg 'data/yolov3-tiny.cfg' \
--weights 'data/yolov3-tiny.weights' \
--output 'tf_file/' \
--prefix 'yolov3-tiny/' \
--gpu 0
可以在tf_file中查看相关生成的ckpt文件与pd文件
在python中执行以下脚本,可以查看网络结构和各个权重
import tensorflow as tf
from tensorflow.python import pywrap_tensorflow
tf.reset_default_graph()
model_dir = "tf_files" # ckpt文件目录
ckpt = tf.train.get_checkpoint_state(model_dir)
ckpt_p