语义分割学习之SegNet的C++编译
Abstract
安装好Segnet并使用Python进行训练和测试之后,考虑项目的应用,需要在C++的工程环境下进行继续开发,所以这里的主要内容是用C++建立工程,使用相应的数据集和权重参数文件进行测试。
Caffe本身就是用C++开发的,所以也提供了相应的C++接口。作为简单的测试和学习,这里采用开源代码里的SegNet_with_C++进行测试,主要熟悉相关流程。在SegNet的目录下,examples/SegNet_with_C++里包含test_segmentation.cpp。可以使用该文件,建立C++工程。下面是相应步骤。
- 建立一个新的文件夹MySegNet,内部再建立src文件夹,将上述cpp文件copy到src文件夹里。同时将caffe里src下的其他cpp按源目录结构拷贝至此src下。
- 对应的include文件夹也拷贝到MySegNet下。
- 新建一个build文件夹。
- 新建一个CMakeLists.txt。按以下编辑相应的内容。
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(MySegnet)
SET(CMAKE_BUILD_TYPE Debug)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -march=native -O3 -pthread")
set(build_libraries
${Caffe_LIBRARIES}
${OpenCV_LIBS}
${BOOST_LIBRARIES}
)
add_executable(MySegnet
test_segmentation.cpp
)
INCLUDE_DIRECTORIES(/home/SegNet/MySegnet/include
/home/SegNet/MySegnet/include/caffe
/home/SegNet/MySegnet/include/caffe/layer
/home/SegNet/MySegnet/include/caffe/util
/home/SegNet/MySegnet/include/caffe/test
/usr/local/include
/usr/local/cuda/include
)
target_link_libraries(MySegnet /home/SegNet/caffe-segnet-cudnn5-master/build/lib/libcaffe.so
/usr/local/lib/libopencv_highgui.so
/usr/local/lib/libopencv_core.so
/usr/local/lib/libopencv_imgproc.so
/usr/lib/x86_64-linux-gnu/libglog.so
/usr/lib/x86_64-linux-gnu/libboost_system.so
/usr/local/lib/libopencv_imgcodecs.so.3.4
)上面可能有多余,也可能有不够的,按需添加。注意相应路径的修改。在路径使用上,可以使用绝对路径,也可以使用相对路径。
- 进入build文件夹,在终端打开。
cmake (之前CMakeLists.txt所在的路径)
makemake成功建立target文件就好的,有什么错误对应解决,一般是缺东西,添加相应的内容即可。
- 这时可以看到生成的可执行文件,直接执行是没有什么作用的,需要带参数执行。由cpp中main函数代码可知,基本的执行语句是:
sudo ./MySegnet /home/SegNet/MySegnet/bin/segnet_sun.prototxt /home/SegNet/MySegnet/bin/segnet_sun.caffemodel /home/SegNet/MySegnet/image/cat_gray.jpg /home/SegNet/MySegnet/img/sun.png
(exe) (model_file) (trained_file) (test_img) (colors_img)部分文件或图片在caffe_segnet_cudnn5-master里能找到,部分可以去Github上下载。附网址。
需要测试更多图片的,可以在main函数中做相应的修改,重新make。测试新的分割,可以自己更改网络,重新训练并使用自己的model_file和trained_file
附相关文章链接:Segnet学习
语义分割学习之SegNet的C++编译的更多相关文章
- 【Keras】基于SegNet和U-Net的遥感图像语义分割
上两个月参加了个比赛,做的是对遥感高清图像做语义分割,美其名曰"天空之眼".这两周数据挖掘课期末project我们组选的课题也是遥感图像的语义分割,所以刚好又把前段时间做的成果重新 ...
- 比较语义分割的几种结构:FCN,UNET,SegNet,PSPNet和Deeplab
简介 语义分割:给图像的每个像素点标注类别.通常认为这个类别与邻近像素类别有关,同时也和这个像素点归属的整体类别有关.利用图像分类的网络结构,可以利用不同层次的特征向量来满足判定需求.现有算法的主要区 ...
- 语义分割(semantic segmentation) 常用神经网络介绍对比-FCN SegNet U-net DeconvNet,语义分割,简单来说就是给定一张图片,对图片中的每一个像素点进行分类;目标检测只有两类,目标和非目标,就是在一张图片中找到并用box标注出所有的目标.
from:https://blog.csdn.net/u012931582/article/details/70314859 2017年04月21日 14:54:10 阅读数:4369 前言 在这里, ...
- 语义分割:基于openCV和深度学习(二)
语义分割:基于openCV和深度学习(二) Semantic segmentation in images with OpenCV 开始吧-打开segment.py归档并插入以下代码: Semanti ...
- 语义分割:基于openCV和深度学习(一)
语义分割:基于openCV和深度学习(一) Semantic segmentation with OpenCV and deep learning 介绍如何使用OpenCV.深度学习和ENet架构执行 ...
- 笔记︱图像语义分割(FCN、CRF、MRF)、论文延伸(Pixel Objectness、)
图像语义分割的意思就是机器自动分割并识别出图像中的内容,我的理解是抠图- 之前在Faster R-CNN中借用了RPN(region proposal network)选择候选框,但是仅仅是候选框,那 ...
- 【Semantic segmentation Overview】一文概览主要语义分割网络(转)
文章来源:https://www.tinymind.cn/articles/410 本文来自 CSDN 网站,译者蓝三金 图像的语义分割是将输入图像中的每个像素分配一个语义类别,以得到像素化的密集分类 ...
- 语义分割丨DeepLab系列总结「v1、v2、v3、v3+」
花了点时间梳理了一下DeepLab系列的工作,主要关注每篇工作的背景和贡献,理清它们之间的联系,而实验和部分细节并没有过多介绍,请见谅. DeepLabv1 Semantic image segmen ...
- 使用Keras基于RCNN类模型的卫星/遥感地图图像语义分割
遥感数据集 1. UC Merced Land-Use Data Set 图像像素大小为256*256,总包含21类场景图像,每一类有100张,共2100张. http://weegee.vision ...
随机推荐
- 【C语言笔记】#define与typedef的区别
1.#define define是预处理指令,在编译时不进行任何检查,只进行简单的替换 宏定义的一般形式为: #define 宏名 字符串 这里所说的字符串是一般意义上的字符序列,不要和C语言中的字符 ...
- Cocos2d-x 学习笔记(11.8) DelayTime ReverseTime TargetedAction ActionFloat Blink TintTo TintBy ResizeTo ResizeBy
1. DelayTime 通过create方法create(float d)设置时长,update方法没有任何操作.可以用于动作之间的延迟. 2. ReverseTime create方法create ...
- C#基础操作符详解(上)
本节内容: 1.操作符概览: 2.操作符的本质: 3.操作符与运算顺序 4.操作符详解. 1.操作符概览: 操作符(Operator)也译为”运算符” 操作符是用来操作数据的,被操作符操作的数据称为操 ...
- 《利用Python进行数据分析·第2版》第四章 Numpy基础:数组和矢量计算
<利用Python进行数据分析·第2版>第四章 Numpy基础:数组和矢量计算 numpy高效处理大数组的数据原因: numpy是在一个连续的内存块中存储数据,独立于其他python内置对 ...
- unity 内置shader
几个有用的Unity 内置shader: (一)Standard RenderingMode:Opaque为实体渲染,更改Color的透明通道不会有影响:Cutout会把图片的透明通道显示出来,非严格 ...
- C#操作sql server
C#操作sqlserver跟操作其他数据没有太大差别,但是又一些细节要注意一下. 在安装sqlserver时不要选择默认实例,如果是则需要更改设置,还有远程连接要去连接服务中设置一下,如端口1433等 ...
- 记录一些常用的python库、软件或者网址
1.数据收集 BeautifulSoup.scrapy.selenium.requests 2.数据分析 pandas.numpy.pyDD.spacy 3.数据可视化 matplotlib.seab ...
- 设置和获取html里面的内容.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- RESTful基本概念
文章目录 01 前言 02 RESTful的来源 03 RESTful6大原则 1. C-S架构 2. 无状态 3.统一的接口 4.一致的数据格式 4.系统分层 5.可缓存 6.按需编码.可定制代码( ...
- OV5640摄像头的数据处理配置流程(一)
module RGB_init( //系统信号输入(时钟+复位) input cmos_clk_i, //模块控制时钟 input rst_n_i, //系统复位信号 //OV5640输出信号(从56 ...