无法将 yolov4 tiny 转换为 tf 模型不能 - 无法将大小为 607322 的数组重塑为形状 (256,384,3,3)
Posted
技术标签:
【中文标题】无法将 yolov4 tiny 转换为 tf 模型不能 - 无法将大小为 607322 的数组重塑为形状 (256,384,3,3)【英文标题】:Cant convert yolov4 tiny to tf model cannot - cannot reshape array of size 607322 into shape (256,384,3,3) 【发布时间】:2021-12-22 07:20:36 【问题描述】:我有一个使用以下命令训练的自定义 yolov4-tiny 模型
./darknet.exe detector train ./data/device.data ./cfg/yolov4-tiny-device.cfg ./yolov4-tiny.conv.29
但我无法使用以下 repo 将模型转换为 tensorflow https://github.com/hunglc007/tensorflow-yolov4-tflite
出于某种原因我尝试使用以下命令进行转换
py ./save_model.py --weights ./data/yolov4-tiny-device_last.weights --output ./checkpoint/yolov4-tiny-device-416 --input_size 416 --model yolov4 --tiny
我收到以下错误
Traceback (most recent call last):
File ".\save_model.py", line 68, in <module>
app.run(main)
File "C:\Users\USER\AppData\Local\Programs\Python\Python38\lib\site-packages\absl\app.py", line 312, in run
_run_main(main, args)
File "C:\Users\USER\AppData\Local\Programs\Python\Python38\lib\site-packages\absl\app.py", line 258, in _run_main
sys.exit(main(argv))
File ".\save_model.py", line 64, in main
save_tf()
File ".\save_model.py", line 59, in save_tf
utils.load_weights(model, FLAGS.weights, FLAGS.model, FLAGS.tiny)
File "C:\Users\USER\Desktop\VSCProjects\tensorflow-yolov4-tflite\core\utils.py", line 64, in load_weights
conv_weights = conv_weights.reshape(conv_shape).transpose([2, 3, 1, 0])
ValueError: cannot reshape array of size 607322 into shape (256,384,3,3)
我已将 __C.YOLO.CLASSES 更改为我的类文件,而我的类文件只是一个类的一行。
我已经为普通的 yolov4 模型做了同样的过程,它工作得很好。
如何修复以下错误并将我的模型转换为 tensorflow?
【问题讨论】:
【参考方案1】:您在 save_model.py
中缺少 --framework tflite
标志,以便转换为 tflite。虽然我不确定这是不是这个原因。对我有用的转换示例命令,
!python save_model.py \
--weights "yolov4-tiny-obj_best.weights" \
--output "checkpoints/yolov4-tiny-416" \
--input_size 416 --model yolov4 --tiny --framework tflite
由于将__C.YOLO.CLASSES
硬编码到文件中,我之前遇到过这个问题。该错误可能是由于文件路径错误或缺少标志。
我有一些基于类似问题的 YoloV4 tiny conversion instructions here。
类似的问题,cannot reshape array of size 1665179 into shape (512,512,3,3)。
【讨论】:
以上是关于无法将 yolov4 tiny 转换为 tf 模型不能 - 无法将大小为 607322 的数组重塑为形状 (256,384,3,3)的主要内容,如果未能解决你的问题,请参考以下文章
YOLO-Darknet实战yolov4-tiny.cfg文件配置与解释
YOLO-Darknet实战yolov4-tiny.cfg文件配置与解释
YOLO-Darknet实战yolov4-tiny.cfg文件配置与解释
YOLO-Darknet实战:训练轻量级目标检测网络YOLOv4-Tiny