【吴恩达深度学习目标检测作业】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).

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值