如何将Darkflow自定义训练生成的Checkpoint转换为.weights文件?
刚好我之前也做过类似的操作,把Darkflow训练出的TensorFlow checkpoint转成YOLO的.weights文件,这样就能直接用load参数指定权重文件了,给你分享两种靠谱的方法:
转换Checkpoint到.weights文件的方法
方法1:用Darkflow内置命令一键转换
Darkflow本身就带了导出权重的功能,你只需要在终端里运行这条命令就行:
flow --model cfg/yolov2-4c.cfg --load 5500 --savepb --weights
参数说明:
--model:和你加载checkpoint时用的配置文件路径保持一致,也就是cfg/yolov2-4c.cfg--load 5500:指定要转换的checkpoint步数(对应你那组5500步的checkpoint文件)--savepb+--weights:组合起来会同时导出TensorFlow的.pb模型和YOLO格式的.weights文件
跑完命令后,你会在darkflow的根目录下找到生成的权重文件,命名大概是yolov2-4c_5500.weights。
方法2:通过Python脚本手动导出
如果内置命令没达到预期,你也可以写个简单的Python脚本,用darkflow的API完成转换:
from darkflow.net.build import TFNet # 用你原来加载checkpoint的配置就行 options = { 'model': 'cfg/yolov2-4c.cfg', 'load': 5500, 'threshold': 0.3, 'gpu': 1.0 } tfnet = TFNet(options) # 把权重导出到你指定的路径,比如当前目录下的自定义权重文件 tfnet.save_weights('yolov2-4c-custom.weights')
运行这个脚本后,目标路径下就会生成你需要的.weights文件。
加载转换后的.weights文件
转换完成后,只需要修改options里的load参数,把原来的步数改成权重文件的路径就可以了:
options = { 'model': 'cfg/yolov2-4c.cfg', 'load': './yolov2-4c-custom.weights', # 替换成你的权重文件实际路径 'threshold': 0.3, 'gpu': 1.0 }
这样就能直接通过.weights文件加载训练好的模型了。
内容的提问来源于stack exchange,提问作者mujahir
相关产品推荐
相关产品推荐

