SegNet安装、训练、测试
这几天学习语义分割,做个记录
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安装、训练、测试相关推荐
- 什么是端到端训练测试_为什么端到端测试对您的团队很重要
什么是端到端训练测试 by Phong Huynh 由Phong Huynh 为什么端到端测试对您的团队很重要 (Why End-to-End Testing is Important for You ...
- 深度学习实战(七)——目标检测API训练自己的数据集(R-FCN数据集制作+训练+测试)
TensorFlow提供的网络结构的预训练权重:https://cloud.tencent.com/developer/article/1006123 将voc数据集转换成.tfrecord格式供te ...
- 【MMDetection3D】环境搭建,使用PointPillers训练测试可视化KITTI数据集
文章目录 前言 3D目标检测概述 KITTI数据集简介 MMDetection3D 环境搭建 数据集准备 训练 测试及可视化 绘制损失函数曲线 参考资料 前言 2D卷不动了,来卷3D,之后更多地工作会 ...
- 姿态估计1-02:HR-Net(人体姿态估算)-官方模型训练测试-报错解决
以下链接是个人关于HR-Net(人体姿态估算)所有见解,如有错误欢迎大家指出,我会第一时间纠正.有兴趣的朋友可以加微信:17575010159 相互讨论技术.若是帮助到了你什么,一定要记得点赞!因为这 ...
- 完整目标检测项目流程——从使用LabelImg标注到使用YOLOv5训练测试
完整目标检测项目流程--从使用LabelImg标注到使用YOLOv5训练测试 大家好呀,虽然前面已经有两篇,分别使用Faster RCNN和YOLOv3进行目标检测的项目了,但是!相信大家应该也和我一 ...
- ubuntu16.04+nvidia gt740m+cuda7.5+caffe安装、测试经历
首先说明,这是在笔记本上的安装测试经历,首先安装的win10,然后安装ubuntu16.04双系统,显卡为nvidia gt740m win10上没有装nvidia gt740m驱动,也就是用的集显, ...
- vid2vid 代码调试+训练+测试(debug+train+test)(一)测试篇
## Prerequisites - Linux or macOS - Python 3 - NVIDIA GPU + CUDA cuDNN - PyTorch 0.4 但一般的话我们为了保护已有的环 ...
- YOLO v4在jetson nano的安装及测试
You only look once (YOLO)是一款非常著名的物体识别深度学习网络,可实现快速检测的同时还达到较高的准确率.官网 https://pjreddie.com/darknet/yolo ...
- Yolov5自定义图片训练测试及模型调优(详细过程)
Yolov5自定义图片训练测试及模型调优(详细过程) 1. 图像数据获取.标注 2. 数据集划分及准备 3. 配置训练参数,准备训练: 3.1 修改data/训练配置xxx.yaml文件: 3.2 修 ...
- 40系笔记本(可不联网激活)深度学习生产力(环境配置和简单训练测试)
40系笔记本深度学习.转码生产力(环境配置和简单训练测试)这里写自定义目录标题 深度学习环境准备 CUDA.CUDNN版本问题 torch版本问题 其他软件版本的安装命令 训练测试代码地址 关于Lin ...
最新文章
- python 获取打印的内容并保存到记事本里面
- java 内部类 加载_举例讲解Java的内部类与类的加载器
- optee的RPC设计(模型)详解
- 万达电影携手神策数据 数据赋能打造全球领先电影生活生态圈
- mysql备份更换存储引擎_mysql数据库innodb存储引擎备份脚本
- pat 乙级 1010 一元多项式求导(C++)
- 浅析MATLAB中的内联函数、匿名函数和函数函数
- 前端学习(1955)vue之电商管理系统电商系统之完成添加分类功能
- git切换用户密码_Git 最基本的命令
- N进制正反累加判回文数(洛谷P1015题题解,Java语言描述)
- MVC简单介绍(转)
- C#高级编程9 第19章 程序集
- 明翰英语教学系列之雅思常见词汇与固定搭配篇V1.0(持续更新)
- 中兴服务器bios启动顺序设置,主板四大品牌BIOS设置开机第一启动项图文教程
- 移动机器人小众期刊Foundations and Trends in Roboics
- Android滑动菜单特效实现,仿人人客户端侧滑效果,史上最简单的侧滑实现
- Three.js实现太阳系八大行星的自转公转
- c语言此项目已过期是什么意思,Visual Studio 2017 许可证已过期解决方案
- openstack restful api 使用
- D3 CSV表格文件的读取详解