SegNet-tensorflow编译小结

代码及相关库的下载

  1. 从github上下载SegNet-tensorflow的代码,命令如下:
$git  clone https://github.com/tkuanlun350/Tensorflow-SegNet.git SegNet
  1. 安装readme中要求的库。
$pip install tensorflow-gpu==1.10
$pip install pillow
$pip install scikit-image

scikit-image 需要其他库如matplotlib等,如果装的时候遇到问题,按提示信息把依赖的库都装上就行。

注意:这里的tensorflow版本一定要适配,不然会出现loaded runtime CuDNN library:7.1.4 but source was compiled with 7.2.1 这样版本不兼容的问题。
3. 下载训练用数据集CamVid
下载地址:https://github.com/alexgkendall/SegNet-Tutorial
下载其中的Camvid文件夹,然后放在SegNet目录下。

编译SegNet-tensorflow代码

  1. 进入下载的SegNet的代码根目录下,新建一个Logs的文件夹用来存放日志。
$mkdir Logs
  1. 用 gedit 打开 example.sh,把train那一行的注释号取消掉,分别修改log_dir, image_dir和test_dir为相应的路径,保存退出。

  2. 用gedit打开CamVid下的train.txt, test.txt 和 val.txt, 使用查找和替换功能将/SegNet 统一替换成安装的路径。
    注意:这里的路径最好使用绝对路径,如直接安装在home下,使用/home/用户名/SegNet/Logs这样的路径。路径不对可能会出现OutOfRangeError的错误,可能出现的错误信息如下:

OutOfRangeError (see above for traceback): RandomShuffleQueue '_3_shuffle_batch_1/random_shuffle_queue' is closed and has insufficient elements (requested 3, current size 0)  
  [[Node: shuffle_batch_1 = QueueDequeueManyV2[component_types=[DT_FLOAT, DT_UINT8], timeout_ms=-1, _device="/job:localhost/replica:0/task:0/device:CPU:0"](shuffle_batch_1/random_shuffle_queue, shuffle_batch_1/n)]]  

出现这个错误时需要先确认所有设置的路径是否正确。

训练数据集

全部配置好之后,直接在SegNet根目录下运行 example.sh 就可以开始训练了。

bash example.sh

PS: 如果出现找不到/GPU:0这样的错误,首先确认tensorflow-gpu是否安装正确,其次检查GPU设备名是否正确。如果不想指定运行的设备名,可在文件夹中的 Utils.py 中注释掉如下行代码:

with tf.device('/gpu:0'):

如果想在cpu上跑,也可直接改成‘/cpu:0’。但是…时间上就不好说了…


版权声明:本文为yimomomo原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。