【吴恩达深度学习目标检测作业】Tensorflow2.x 下 yolo.h5 文件的问题

背景:

吴恩达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.weightsyolov2.weights 再重新运行。
构建成功。
然后 model_data 文件夹下多出了一个文件 yolov2.h5,就可以正常使用了(注意这个文件名后面多了v2).

版权声明:本文为CSDN博主「Mengo_x」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44577070/article/details/121908474

Mengo_x

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

GiraffeDet:Heavy Neck的目标检测框架

关注并星标 从此不迷路 计算机视觉研究院 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 获取论文:关注并回复“GD” 计算机视觉研究院专栏 作者:Edison_G 在传统的目标检测框架中,从图像识别模型继承的主