fcn小小实战

Ariel_一只猫的旅行 Ariel_一只猫的旅行     2022-10-05     187

关键词:

先说一下前期准备工作:自己的运行环境是Ubuntu16.04+caffe+CPU(这台电脑没有GPU)+python

关于python的搭建就不说了,网上随便一搜,很多参考资源。说一下我配置好caffe之后,编译python接口时遇到的问题,以及我用到的解决办法。

比较顺利地配置好caffe只后,到了make pycaffe的时候,提示如下错误:

后来执行:~/caffe$ locate pyconfig.h

找到头文件pyconfig.h

下面是一步至关重要的操作:~/caffe$export CPLUS_INCLUDE_PATH=/usr/include/python2.7

就是这一步,我的问题完美解决。看一下编译成功的场景:

import caffe成功!

接下来就可以跑一下FCN了,由于本台电脑条件有限,直接使用大神已经跑好的模型进行测试,要这台电脑去跑此模型,有点费时。

OK,下面进入测试操作:

作者在github上开源了代码:Fully Convolutional Networks,我们首先将代码下载并且解压到home目录下。

下载voc-fcn32s,voc-fcn16s以及voc-fcn8s的caffemodel(根据提供好的caffemodel-url),fcn-16s和fcn32s都是缺少deploy.prototxt的,需要根据train.prototxt稍加修改。 

后续步骤:

修改infer.py文件:

  • caffe path的加入,由于FCN代码和caffe代码是独立的文件夹,因此,须将caffe的Python接口加入到path中去。这里有两种方案,一种是在所有代码中出现import caffe 之前,加入:
    1 import sys
    2 sys.path.append('caffe根目录/python')
  • 另一种一劳永逸的方法是:在终端或者bashrc中将接口加入到PYTHONPATH中:  export PYTHONPATH=caffe根目录/python:$PYTHONPATH

本次我们采用后者。

 在解压代码的根目录下找到一个文件:infer.py。略微修改infer.py,就可以测试我们自己的图片了,请大家根据自己实际情况来进行修改。

im = Image.open('voc-fcn8s/test.jpeg') 这里指的是测试图片路径!

net = caffe.Net('voc-fcn8s/deploy.prototxt', 'voc-fcn8s/fcn8s-heavy-pascal.caffemodel', caffe.TEST) ,这里指的是voc-fcn8s文件下的部署文件和模型。

注意,fcn下每一个模型其实都对应于一个文件夹,而每个文件夹下应当放着这个模型的caffemodel文件和prototxt文件!

plt.savefig('test.png'),这里指的是最终分割的结果应当放置在哪个路径下,大家都知道,语义分割的结果应当是一张图片!

修改完后的infer.py如下所示:

 1 import numpy as np
 2 from PIL import Image
 3 import matplotlib.pyplot as plt
 4 import caffe
 5 
 6 # load image, switch to BGR, subtract mean, and make dims C x H x W for Caffe
 7 im = Image.open('voc-fcn8s/test.jpeg')
 8 in_ = np.array(im, dtype=np.float32)
 9 in_ = in_[:,:,::-1]
10 in_ -= np.array((104.00698793,116.66876762,122.67891434))
11 in_ = in_.transpose((2,0,1))
12 
13 # load net
14 net = caffe.Net('voc-fcn8s/deploy.prototxt', 'voc-fcn8s/fcn8s-heavy-pascal.caffemodel', caffe.TEST)
15 # shape for input (data blob is N x C x H x W), set data
16 net.blobs['data'].reshape(1, *in_.shape)
17 net.blobs['data'].data[...] = in_
18 # run net and take argmax for prediction
19 net.forward()
20 out = net.blobs['score'].data[0].argmax(axis=0) 
21 
22 plt.imshow(out,cmap='gray');
23 plt.axis('off')
24 plt.savefig('test.png')
25 #plt.show()

然后终端运行:python infer.py

运行结束后会在软件的根目录下生成一个分割好的图片test.png!

 

全卷积网络(fcn)实战:使用fcn实现语义分割(代码片段)

全卷积网络(FCN)实战:使用FCN实现语义分割FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semanticsegmentation)问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分... 查看详情

stm32将采集数据以txt文件形式保存在sd卡的操作实战,小小单片机系统也能便携取出大量本地数据(sd卡+fatfs)

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来!《QT开发实战》《嵌入式通用开发实战》《 查看详情

stm32将采集数据以txt文件形式保存在sd卡的操作实战,小小单片机系统也能便携取出大量本地数据(sd卡+fatfs)

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来!《QT开发实战》《嵌入式通用开发实战》《 查看详情

字体反爬的起点,月票数解析,一个小小的python案例(代码片段)

文章目录⛳️实战起点⛳️实战编码⛳️实战起点本次要采集的目标站点为https://Python脱敏处理.qidian.Python脱敏处理/rank/yuepiao/。月票榜单的数字为特殊字体,并且class看起来为一个加密字符串。测试之后发现,字体样式恰好是字... 查看详情

fcn

fcn代码:https://github.com/shelhamer/fcn.berkeleyvision.orgdeconvolution实际上是转置卷积,是为了从小的featuremap恢复到大的featuremap动画展示怎么deconvolution:https://github.com/vdumoulin/conv_arithmetic 查看详情

r-fcn论文翻译

R-FCN论文翻译R-FCN:ObjectDetectionviaRegion-basedFullyConvolutionalNetworks2018-02-0611:43:35 论文地址:R-FCN:ObjectDetectionviaRegion-basedFullyConvolutionalNetworks 代码地址:https://github.com/daijifen 查看详情

目标检测之r-fcn

R-FCN:ObjectDetectionviaRegion-basedFullyConvolutionalNetworksR-FCN的网络结构一个Base的convolutional网络如RestNet101,一个RPN(FasterRCNN来的),一个PostitionSensitive的prediction层,最后的RoIpooling+投票的决策层R-FCN的关键思想分类需要特征具有平移不 查看详情

从fcn到deeplab

...图片,对图片上的每一个像素点分类。图像语义分割,从FCN把深度学习引入这个任务,一个通用的框架事:前端使用FCN全卷积网络输出粗糙的labelmap,后端使用CRF条件随机场/MRF马尔科夫随机场等优化前端的输出,最后得到一个精... 查看详情

fcn代码解析

...p://blog.csdn.net/zzzzzzz0407/article/details/69831388 网上有许多FCN网络的安装和训练教程,但却没有代码解读的详细教程,这让我这种刚刚入门深度学习的萌新不知所措;为了弄清楚FCN,不知走了多少弯路,想把它记录下来,给自己看... 查看详情

论文--r-fcn

 R-FCN: ObjectDetectionviaRegion-basedFullyConvolutionalNetworks R-FCN的网络结构: 不同于之前的fast/fasterR-CNN的region-based,paper中的newnetwork是shared,fullyconvolutional的网络结构。Paper是奔着节约计算的角度,因为 查看详情

基于lstm+fcn处理多变量时间序列问题记录(代码片段)

LongShortTermMemoryFullyConvolutionalNetwork(LSTM-FCN)andAttentionLSTM-FCN(ALSTM-FCN)havebeensuccessfulinclassifyingunivariatetimeseries.However,theyhaveneverbeenappliedtoonamultivariatetimeseriesclas 查看详情

java并发编程实战读书笔记5---executor在android中的应用(代码片段)

...utor了这句话让我想到了我以前在项目中对Executor做了一个小小的封装,可以当做一个小小的工具类使用。封装后可以将上面代 查看详情

java并发编程实战读书笔记5---executor在android中的应用(代码片段)

...utor了这句话让我想到了我以前在项目中对Executor做了一个小小的封装,可以当做一个小小的工具类使用。封装后可以将上面代 查看详情

目标检测方法——r-fcn

...链接:论文传送门代码链接:matlab版,python版方法概括R-FCN解决问题——目标检测整个R-FCN的结构一个base的conv网络如ResNet101,一个RPN(FasterRCNN来的),一个positionsensitive的prediction层,最 查看详情

fullyconvolutionalnetworksforsemanticsegmentation(全卷积网络fcn)

可以看看:https://github.com/jinhang/fcn【论文信息】《FullyConvolutionalNetworksforSemanticSegmentation》CVPR2015bestpaperReferencelink: http://blog.csdn.NET/tangwei2014http://blog.csdn.net/u010025211/artic 查看详情

python计算fcn32s偏移量(代码片段)

查看详情

基于深度学习的语义分割初探fcn以及pytorch代码实现(代码片段)

基于深度学习的语义分割初探FCN以及pytorch代码实现FCN论文论文地址:https://arxiv.org/abs/1411.4038FCN是基于深度学习方法的第一篇关于语义分割的开山之作,虽然这篇文章的分割结果现在看起来并不是目前最好的,但其意... 查看详情

基于lstm+fcn处理多变量时间序列问题记录

...的单变量时间序列分类模型即长短时记忆全卷积网络(LSTM-FCN)和注意力LSTM-FCN(ALSTM-FCN)转换为多变量时间序列分类模型,通过在全卷积块上增加一个Squeeze-and-ExcitationBlock来进一步提高分类精度。下面是文档阅读和程序运行时积... 查看详情