这几天学习语义分割,做个记录

1、安装

首先下载点击打开链接(这是cudnn5的版本,官网上钦定的版本编译出现了较多的问题,所以我建议使用这个)

解压到SegNet文件夹后改名为caffe-segnet

编译环境:

进入到caffe-segnet目录后:

终端输入cp Makefile.config.example Makefile.config

修改生成的Makefile.config,将WITH_PYTHON_LAYER := 1前的注释去掉,然后依次终端输入:

make all

make test

make runtest

安装的时候会有一些问题,参考这个博客可以解决一部分

此外,我遇到的问题有:

.build_release/lib/libcaffe.so: undefined reference to `cv::imread(cv::String const&, int)'
.build_release/lib/libcaffe.so: undefined reference to `cv::imencode(cv::String const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)'
.build_release/lib/libcaffe.so: undefined reference to `cv::imdecode(cv::_InputArray const&, int)'
collect2: error: ld returned 1 exit status

make: *** [.build_release/tools/upgrade_net_proto_binary.bin] Error 1

看描述这是OpenCV的问题,在Makefile文件中找到下面这一行

opencv_core opencv_highgui opencv_imgproc

在后面添加 opencv_imgcodecs就解决问题了。

2、训练

下载这个官方的代码,解压后和前面的caffe-segnet文件夹形成以下文件夹构成

/SegNet/CamVid/test/testannot/train/trainannot/test.txttrain.txtModels/# SegNet and SegNet-Basic model files for training and testingScripts/compute_bn_statistics.pytest_segmentation_camvid.pycaffe-segnet/# caffe implementation

打开train.txt,test.txt这两个文件,把里面的路径查找替换成当前的路径

(2)开始训练,用到的文件:segnet_train.prototxt,segnet_solver.prototxt。 (segnet_solver.prototxt按照里面的代码要求新建一个对应的文件夹用以保存模型)

(3)训练,官网给出下面三种形式,cd到SegNet的上级目录下直接输入下面命令就完事了(我输入的是第一种形式)

注意官网上的代码路径前面有./要去掉,而且官网上的后面有个路径的segnet应该修改成SegNet

SegNet/caffe-segnet/build/tools/caffe train -gpu 0 -solver SegNet/Models/segnet_solver.prototxt  # This will begin training SegNet on GPU 0
SegNet/caffe-segnet/build/tools/caffe train -gpu 0 -solver SegNet/Models/segnet_basic_solver.prototxt  # This will begin training SegNet-Basic on GPU 0
SegNet/caffe-segnet/build/tools/caffe train -gpu 0 -solver SegNet/Models/segnet_solver.prototxt -weights SegNet/Models/VGG_ILSVRC_16_layers.caffemodel  # This will begin training SegNet on GPU 0 with a pretrained encoder

遇到的问题:基本上就是代码路径的问题,官网和很多博客给的上述训训练命令都有瑕疵,一定要注意改动。

遇到out of memory的问题就是需要改变segnet_train.prototxt文件中的batch-size,改小一点。

这里放上我的结果,我训练了40000次,其实10000次就差不多了。

I0627 17:07:05.098680 17389 solver.cpp:228] Iteration 39980, loss = 0.0577008
I0627 17:07:05.098800 17389 solver.cpp:244]     Train net output #0: accuracy = 0.931745
I0627 17:07:05.098819 17389 solver.cpp:244]     Train net output #1: loss = 0.0577009 (* 1 = 0.0577009 loss)
I0627 17:07:05.098834 17389 solver.cpp:244]     Train net output #2: per_class_accuracy = 0.974781
I0627 17:07:05.098845 17389 solver.cpp:244]     Train net output #3: per_class_accuracy = 0.894434
I0627 17:07:05.098855 17389 solver.cpp:244]     Train net output #4: per_class_accuracy = 0.932981
I0627 17:07:05.098865 17389 solver.cpp:244]     Train net output #5: per_class_accuracy = 0.974453
I0627 17:07:05.098876 17389 solver.cpp:244]     Train net output #6: per_class_accuracy = 0.945731
I0627 17:07:05.098887 17389 solver.cpp:244]     Train net output #7: per_class_accuracy = 0.921521
I0627 17:07:05.098896 17389 solver.cpp:244]     Train net output #8: per_class_accuracy = 0.988037
I0627 17:07:05.098906 17389 solver.cpp:244]     Train net output #9: per_class_accuracy = 0.815498
I0627 17:07:05.098917 17389 solver.cpp:244]     Train net output #10: per_class_accuracy = 0.972114
I0627 17:07:05.098927 17389 solver.cpp:244]     Train net output #11: per_class_accuracy = 0.988119
I0627 17:07:05.098938 17389 solver.cpp:244]     Train net output #12: per_class_accuracy = 0.996835
I0627 17:07:05.098953 17389 sgd_solver.cpp:106] Iteration 39980, lr = 0.001
I0627 17:07:28.627780 17389 solver.cpp:454] Snapshotting to binary proto file /home/unreal/lxw/SegNet/Models/Training/segnet_iter_40000.caffemodel
I0627 17:07:29.316536 17389 sgd_solver.cpp:273] Snapshotting solver state to binary proto file /home/unreal/lxw/SegNet/Models/Training/segnet_iter_40000.solverstate
I0627 17:07:29.875453 17389 solver.cpp:317] Iteration 40000, loss = 0.0715018

3、测试

打开脚本Scripts/compute_bn_statistics.py和Scripts/test_segmentation_camvid.py并将第10行更改为对应的SegNet Caffe安装目录。(这个根目录十分重要)然后在SegNet的上级目录使用命令行,官网给出了两个(因为我之前训练用的是第一个,这里也是用的第一个):

python SegNet/Scripts/compute_bn_statistics.py SegNet/Models/segnet_train.prototxt SegNet/Models/Training/segnet_iter_10000.caffemodel SegNet/Models/Inference/  # compute BN statistics for SegNet
python /Segnet/Scripts/compute_bn_statistics.py /SegNet/Models/segnet_basic_train.prototxt /SegNet/Models/Training/segnet_basic_iter_10000.caffemodel /Segnet/Models/Inference/  # compute BN statistics for SegNet-Basic

我在这里出现了一个问题困扰了很久,在这里记录下,希望帮到后人。如下:

google.protobuf.text_format.ParseError: 7:3 : Message type "caffe.LayerParameter" has no field named "dense_image_data_param".

看提示是说segnet_train.prototxt第7行3列出现了问题,说找不到对应的参数,当时十分奇怪

当时在网上找了许多的解决办法:1)、有说是路径问题的

2)、有说是caffe-segnet版本问题的

我并没有换另一个caffe版本,因为另外一个编译起来错误太多了,我还是把这个caffe-segnet重新安装了一遍,然后就好了。

上述命令完好运行后就会在SegNet/Models/Inference文件夹下生成一个文件test_weights.caffemodel

显示结果:

官方命令行:

python /SegNet/Scripts/test_segmentation_camvid.py --model /SegNet/Models/segnet_inference.prototxt --weights /SegNet/Models/Inference/test_weights.caffemodel --iter 233  # Test SegNet
python /SegNet/Scripts/test_segmentation_camvid.py --model /SegNet/Models/segnet_basic_inference.prototxt --weights /SegNet/Models/Inference/test_weights.caffemodel --iter 233  # Test SegNetBasic

当然了,我采用的是第一个(因为我是在SegNet的上级目录输入命令行,所以将前面的/去掉)

python SegNet/Scripts/test_segmentation_camvid.py --model SegNet/Models/segnet_inference.prototxt --weights SegNet/Models/Inference/test_weights.caffemodel --iter 233  # Test SegNet

SegNet安装、训练、测试相关推荐

  1. 什么是端到端训练测试_为什么端到端测试对您的团队很重要

    什么是端到端训练测试 by Phong Huynh 由Phong Huynh 为什么端到端测试对您的团队很重要 (Why End-to-End Testing is Important for You ...

  2. 深度学习实战(七)——目标检测API训练自己的数据集(R-FCN数据集制作+训练+测试)

    TensorFlow提供的网络结构的预训练权重:https://cloud.tencent.com/developer/article/1006123 将voc数据集转换成.tfrecord格式供te ...

  3. 【MMDetection3D】环境搭建,使用PointPillers训练测试可视化KITTI数据集

    文章目录 前言 3D目标检测概述 KITTI数据集简介 MMDetection3D 环境搭建 数据集准备 训练 测试及可视化 绘制损失函数曲线 参考资料 前言 2D卷不动了,来卷3D,之后更多地工作会 ...

  4. 姿态估计1-02:HR-Net(人体姿态估算)-官方模型训练测试-报错解决

    以下链接是个人关于HR-Net(人体姿态估算)所有见解,如有错误欢迎大家指出,我会第一时间纠正.有兴趣的朋友可以加微信:17575010159 相互讨论技术.若是帮助到了你什么,一定要记得点赞!因为这 ...

  5. 完整目标检测项目流程——从使用LabelImg标注到使用YOLOv5训练测试

    完整目标检测项目流程--从使用LabelImg标注到使用YOLOv5训练测试 大家好呀,虽然前面已经有两篇,分别使用Faster RCNN和YOLOv3进行目标检测的项目了,但是!相信大家应该也和我一 ...

  6. ubuntu16.04+nvidia gt740m+cuda7.5+caffe安装、测试经历

    首先说明,这是在笔记本上的安装测试经历,首先安装的win10,然后安装ubuntu16.04双系统,显卡为nvidia gt740m win10上没有装nvidia gt740m驱动,也就是用的集显, ...

  7. vid2vid 代码调试+训练+测试(debug+train+test)(一)测试篇

    ## Prerequisites - Linux or macOS - Python 3 - NVIDIA GPU + CUDA cuDNN - PyTorch 0.4 但一般的话我们为了保护已有的环 ...

  8. YOLO v4在jetson nano的安装及测试

    You only look once (YOLO)是一款非常著名的物体识别深度学习网络,可实现快速检测的同时还达到较高的准确率.官网 https://pjreddie.com/darknet/yolo ...

  9. Yolov5自定义图片训练测试及模型调优(详细过程)

    Yolov5自定义图片训练测试及模型调优(详细过程) 1. 图像数据获取.标注 2. 数据集划分及准备 3. 配置训练参数,准备训练: 3.1 修改data/训练配置xxx.yaml文件: 3.2 修 ...

  10. 40系笔记本(可不联网激活)深度学习生产力(环境配置和简单训练测试)

    40系笔记本深度学习.转码生产力(环境配置和简单训练测试)这里写自定义目录标题 深度学习环境准备 CUDA.CUDNN版本问题 torch版本问题 其他软件版本的安装命令 训练测试代码地址 关于Lin ...

最新文章

  1. python 获取打印的内容并保存到记事本里面
  2. java 内部类 加载_举例讲解Java的内部类与类的加载器
  3. optee的RPC设计(模型)详解
  4. 万达电影携手神策数据 数据赋能打造全球领先电影生活生态圈
  5. mysql备份更换存储引擎_mysql数据库innodb存储引擎备份脚本
  6. pat 乙级 1010 一元多项式求导(C++)
  7. 浅析MATLAB中的内联函数、匿名函数和函数函数
  8. 前端学习(1955)vue之电商管理系统电商系统之完成添加分类功能
  9. git切换用户密码_Git 最基本的命令
  10. N进制正反累加判回文数(洛谷P1015题题解,Java语言描述)
  11. MVC简单介绍(转)
  12. C#高级编程9 第19章 程序集
  13. 明翰英语教学系列之雅思常见词汇与固定搭配篇V1.0(持续更新)
  14. 中兴服务器bios启动顺序设置,主板四大品牌BIOS设置开机第一启动项图文教程
  15. 移动机器人小众期刊Foundations and Trends in Roboics
  16. Android滑动菜单特效实现,仿人人客户端侧滑效果,史上最简单的侧滑实现
  17. Three.js实现太阳系八大行星的自转公转
  18. c语言此项目已过期是什么意思,Visual Studio 2017 许可证已过期解决方案
  19. openstack restful api 使用
  20. D3 CSV表格文件的读取详解

热门文章

  1. 怎样用matlab画斜条纹图案,CorelDRAW制作简单的均匀倾斜条纹
  2. Fileupload
  3. Android文件下载
  4. Python实现股票数据接口
  5. HTML电气规范表格不显示,ElecBook天正电气规范在线查询.chm
  6. 40个增长和管理你的WordPress网站的有用博客工具
  7. 利用Global Mapper处理正摄卫片
  8. 分享一个好用的图吧电脑工具
  9. 剖析STM32F103读写W25Q64
  10. 【软技能】完全写作指南--评论