将yolov4的weights转成pb时出错的解决方法

将yolov4的weights转成pb时出错的解决方法

问题:

用save_mode.py将yolov4.weights转换成pb文件时正常 ,但转换用户自己训练的weights文件时,reshape处出现错误


conv_weights.shape 4693152
Traceback (most recent call last):
  File "save_model.py", line 58, in <module>
    app.run(main)
  File "/home/ed/anaconda3/envs/yolov4-gpu/lib/python3.7/site-packages/absl/app.py", line 300, in run
    _run_main(main, args)
  File "/home/ed/anaconda3/envs/yolov4-gpu/lib/python3.7/site-packages/absl/app.py", line 251, in _run_main
    sys.exit(main(argv))
  File "save_model.py", line 54, in main
    save_tf()
  File "save_model.py", line 49, in save_tf
    utils.load_weights(model, FLAGS.weights, FLAGS.model, FLAGS.tiny)
  File "/home/ed/Project/yolov4-custom-functions/core/utils.py", line 152, in load_weights
    conv_weights = conv_weights.reshape(conv_shape).transpose([2, 3, 1, 0])
ValueError: cannot reshape array of size 4693152 into shape (1024,512,3,3)


原因分析:

在第二次转换的时候只是将weight文件变换成新的weights文件,但是没有修改cfg中的内容。
此时,只需要用户自己训练的label文件名,复制到对应的目 录下,并且将cfg文件中作相应的修改即可。


解决方案:

作者从https://github.com/theAIGuysCode/yolov4-custom-functions地址下载了相关的软件后,并且下载到custom.weights文件,复制到./data目 录下,但是执行
python save_model.py --weights ./data/custom.weights --output ./checkpoints/custom-416 --input_size 416 --model yolov4
命令时,出现上以的问题。
于是:
(1)重新下载到custom.names文件,并保存在./data/classes目录下;
(2)在/core/config.py文件中第14行改成:__C.YOLO.CLASSES = “./data/classes/custom.names”
(3)然后重新执行save_model.py文件,成功

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值