语义分割学习之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 ...
随机推荐
- Unreal Engine 4 系列教程 Part 4:UI教程
.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...
- Vue-CLI项目vuex仓库
0901自我总结 Vue-CLI项目vuex仓库 一.概念 vuex仓库是vue全局的数据仓库,好比一个单例,在任何组件中通过this.$store来共享这个仓库中的数据,完成跨组件间的信息交互. v ...
- Web安全之爆破中的验证码识别~
写爆破靶场的时候发现对于爆破有验证码的有点意思~这里简单总结下我们爆破有验证码的场景中几种有效的方法~~~ 0x01 使用现成工具 这里有pkav团队的神器PKAV HTTP Fuzzer 1.5.6 ...
- DNS记录类型
A 记录: A (Address) 记录是用来指定主机名(或域名)对应的IP地址记录.用户可以将该域名下的网站服务器指向到自己的web server上.同时也可以设置您域名的子域名.通俗来说A记录就是 ...
- vc++木马源码免杀一些常用方法
1.字符串连接 ////////////////////////////////////////////////////////////把字符串"canxin"连接起来(字符串连接 ...
- PHP array_udiff_uassoc
1.函数的参数:返回数组的差集.用定义的函数比较键值和值. 2.函数的参数: @params array $array @params array $array1 ... @params callab ...
- [POJ2248] Addition Chains 迭代加深搜索
Addition Chains Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5454 Accepted: 2923 ...
- Cocos2d-x 学习笔记(3.1) Scene 场景与场景切换
1. Scene 简介 游戏中我们看到/看不到的所有元素都是展示在场景之Scene上. 我们可以把场景比作放在地上的没盖纸箱,层Layer是纸箱里堆放的玻璃,Sprite等元素画在玻璃Layer上,这 ...
- PowerShell渗透--Empire
0x00 简介 Empire是一款针对Windows平台的,使用PowerShell脚本作为攻击载荷的渗透攻击框架代码具有从stager生成,提权到渗透维持的一系列功能,无需powershell.ex ...
- 使用 Django 项目中的 ORM 编写伪造测试数据脚本
作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 为了防止博客首页展示的文章过多以及提升加载速度,可以对文章列表进行分页展示.不过这需 ...