【吴恩达深度学习目标检测作业】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
放到同一个文件夹中。

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

在文件夹路径打开终端,运行:

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

【吴恩达深度学习目标检测作业】Tensorflow2.x 下 yolo.h5 文件的问题
最后是降级 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 文件,编辑它:

【吴恩达深度学习目标检测作业】Tensorflow2.x 下 yolo.h5 文件的问题
改这处代码,保存。
再运行:
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).

Original: https://blog.csdn.net/qq_44577070/article/details/121908474
Author: Mengo_x
Title: 【吴恩达深度学习目标检测作业】Tensorflow2.x 下 yolo.h5 文件的问题

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/682829/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球