linux下配置运行keras版本yolov3

需下载:python3.5.2  tensorflow1.6  keras2.1.5  h5py

一、下载keras-yolov3

git clone https://github.com/qqwweee/keras-yolo3.git

二、下载yolov3权重文件

https://pjreddie.com/media/files/yolov3.weights

将yolov3.weights权重文件放到keras-yolov3文件夹中

三、转换YOLO的weights文件格式为Keras的格式:

python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5

1、出现错误:module tensorflow has no attribute get_default_graph

原因:keras和TensorFlow的版本过高导致模块不存在或者已经更改不再兼容。

不知道这里是不是因为我的cuda和cudnn版本与tensorflow不匹配。我的cuda=8,cudnn=5.1,但是根据下图中,我应该安装tensorflow1.2.0的版本。

解决:

先卸载原来的版本
pip uninstall tensorflow # 卸载tf
pip uninstall keras # 卸载keras

再安装
pip install tensorflow==1.2.0
pip install keras==2.0.9

2、出现错误:TypeError: buffer is too small for requested array

原因:我的是因为yolov3.weights文件有问题。

解决:我重新下载的yolov3.weights权重文件。然后就没问题了。

3、出现错误:ImportError: `save_model` requires h5py.

原因:没有安装h5py

解决:pip3 install h5py(速度太慢)

(使用国内镜像下载:pip3 install h5py -i http://pypi.douban.com/simple --trusted-host pypi.douban.com)

四、运行测试

# cd到keras-yolov3目录下
python yolo.py

1、出现错误:ImportError: No module named 'matplotlib'

原因:没有安装matplotlib

解决:

2、python导入tensorflow时出现错误

原因:numpy版本太高

解决方法:pip3 install numpy==1.16.0

3、

出现警告:

意思是你的 CPU 支持AVX AVX2 (可以加速CPU计算),但你安装的 TensorFlow 版本不支持。

我忽略了。

4、

出现错误:

这个问题真的很抓狂。又是tensorflow版本的问题。具体我也不知道哪出问题了。反正我是把tensorflow和keras全部卸载掉,然后重新安装的tensorflow==1.6.0和keras==2.1.5。然后再运行yolo.py就没问题了。

运行yolo.py之前,需要对yolo.py进行修改:在最后加上以下代码:

def detect_img(yolo):
    while True:
        img = input('Input image filename:')
        if img == 'exit':
            break
        else:
            try:
                image = Image.open(img)
            except:
                print('Open Error! Try again!')
                continue
            else:
                r_image = yolo.detect_image(image)
                r_image.show()
                yolo.close_session()


if __name__ == '__main__':
    detect_img(YOLO())

保存,退出。

在keras-yolov3目录下放一张你即将检测用到的图片。

cd到keras-yolov3目录

终端输入:python yolo.py

然后会提示你输入需要检测的图片名字:

输入后,就会显示检测结果。关闭检测结果,会接着让你输入下一张检测图片名字。如果你不想检测了,就输入exit退出检测。

插曲1:ubuntu中的nvidia驱动不见了。出现了以下错误:

原因:系统内核与我之前安装的nvidia驱动不匹配。nvidia驱动是我在4.15.0-45时候安装的,但是不知道在怎么的,系统自己更新到了4.15.0-91。

我看到网上有说这样解决的:

step1:sudo apt-get install dkms

step2: sudo dkms install -m nvidia -v 410.73(这个是你自己之前安装的nvidia版本号)

但是,我用这个方法根本没有解决问题。。。。。。

>>>>>>以下是真正的解决方法:

首先,你可以在终端输入:

grep menuentry /boot/grub/grub.cfg

查看一下自己系统的内核信息:(下图是我借的网上的)可以看到存在着不同的内核版本信息。

解决:重启。在以下界面选择第二行的‘Advanced options for Ubuntu’。

进入后,会出现几个版本的内核(下图是我借的网上的)。选择第二新的内核,比如我最新的时4.15.0-91,第二新的时4.15.0-45,我就选择了4.15.0-45。然后回车,进入系统。

打开终端,输入:

# 查看当前系统内核版本
uname -r
# 查看nvidia相关信息
nvidia-smi

另外!如果你需要一致保持该内核版本使用。你就要修改ubuntu默认开机启动的内核版本。

终端输入:

sudo gedit /etc/default/grub

将下图中的GRUB_DEFAULT=0 修改为:GRUB_DEFAULT="1> 3"(注意>和3之间有一个空格)

(注:1 代表主菜单的第二项Advanced options for Ubuntu;3代表1项目下面对应的子菜单里面的第4项;)

修改后:

保存后退出。然后在终端输入:

sudo update-grub

这样,以后就会在该版本的内核下启动ubuntu。

(参考博客:https://blog.csdn.net/sinat_23619409/article/details/85220561

插曲2:I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030 Creating Tensotrflow devices.....

在执行convert.py时,在这个地方卡住了。一直卡在I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030 Creating Tensotrflow devices......

不要着急,耐心等待。

插曲3:我在另一台服务器上配置运行的时候,出现了其他的问题。

问题1:Loaded runtime CuDNN library: 7501 (compatibility version 7500) but source was compiled with 7004 ........

是cudnn版本的问题。服务器上有cuda=8.0(cudnn=5.1.0)和cuda=9.0(cudnn=)。之前用的一直是cuda=8.0,出了问题后,我就换成了cuda=9.0,然后就可以了。

(因为在之前的电脑上没有用gpu,所以没有出现cudnn版本问题)

问题2:AttributeError: module ‘tensorflow.python.ops.nn’ has no attribute ‘leaky_relu

是tensorflow的问题。我安装的是tensorflow=1.6.0,然后我卸载后安装的tensorflow-gpu=1.6.0

发布了75 篇原创文章 · 获赞 9 · 访问量 9566

猜你喜欢

转载自blog.csdn.net/ly_twt/article/details/105565090