背景:
吴恩达coursera上面深度学习第四门课卷积神经网络(Convolutional Neural Networks的第三周目标检测(Object detection)的编程作业使用YOLO算法完成车辆检测。
问题
加载预训练模型,运行以下代码时
yolo_model = load_model("model_data/yolov2.h5")
报错
bad marshal data (unknown type code)
查了一需要自己生成 h5 文件。
下载需要的文件
这部分网上教程很多,不详解了。
wget http://pjreddie.com/media/files/yolo.weights
git clone https://github.com/allanzelener/yad2k.git
git clone https://github.com/pjreddie/darknet
最后一个需要的是 darknet/cfg/yolov2.cfg
文件
所有需要的文件为:
yolo.weights
yolov2.cfg
yad2k.py
以及一个文件夹
yad2k
放到同一个文件夹中。
在文件夹路径打开终端,运行:
python3 yad2k.py yolo.cfg yolo.weights model_data/yolo.h5
新问题
运行以上步骤时,我这里首先报错:
ImportError: cannot import name 'BatchNormalization' from 'keras.layers.normalization'
此时我的 keras 和 tensorflow 版本都是 2.7.0
最后是降级 keras 到 2.4.3 版本解决了这个问题。
然后重新运行代码,又有了新问题:
AttributeError: module 'tensorflow' has no attribute 'space_to_depth'
通过查资料,可能是因为文件中代码还用的 tf1 的,所以要去把这步代码改为 tf2 的。
tensorflow 1.x: tensorflow.space_to_depth
tensorflow 2.x: tensorflow.nn.space_to_depth
打开 yad2k/models
路径,里面有 keras_yolo.py
文件,编辑它:
改这处代码,保存。
再运行:
python3 yad2k.py yolo.cfg yolo.weights model_data/yolo.h5
提示:FileNotFoundError: [Errno 2] No such file or directory: 'yolov2.weights'
改一下文件名 yolo.weights
为 yolov2.weights
再重新运行。
构建成功。
然后 model_data
文件夹下多出了一个文件 yolov2.h5
,就可以正常使用了(注意这个文件名后面多了v2).
版权声明:本文为CSDN博主「Mengo_x」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44577070/article/details/121908474
暂无评论