fcn+caffe+siftflow实验记录

环境搭建:

vs2013,编译caffe工程,cuda8.0,cudnn5.1,python2.7。

还需要安装python的一些包。Numpy+mkl  scipy  matplotlib  scikit-image  protobuf

Pip install scikit-image的时候,需要注意,下载该模块

Windows版python模块的下载地址:

https://www.lfd.uci.edu/~gohlke/pythonlibs/

跑实验:

下载fcn的caffe源代码:

https://github.com/shelhamer/fcn.berkeleyvision.org

下载siftflow数据集:

http://www.cs.unc.edu/~jtighe/Papers/ECCV10/siftflow/SiftFlowDataset.zip

将下载的数据放在fcn文件夹下的data目录下,将其重新命名为sift-flow并将原data文件夹下的sift-flow中的文件拷贝到其中,删除原来的。

官方预训练好的模型下载链接:

http://dl.caffe.berkeleyvision.org/

网络比较大,预加载模型,用sift-flow中的图片调整参数。

下载caffemodel,在siftflow-fcn32s目录下根据caffemodel-url 下载预训练好的模型。将下载好的模型放在fcn目录下的siftflow-fcn32s文件夹下。 将fcn目录下的score.py siftflow_layer.py和surgery.py 复制到siftflow-fcn32s的文件夹下。

修改solve.prototxt文件

train_net: "trainval.prototxt"
test_net: "test.prototxt"
test_iter: 200
# make test net, but don‘t invoke it from the solver itself
test_interval: 999999999
display: 20
average_loss: 20
lr_policy: "fixed"
# lr for unnormalized softmax
base_lr: 1e-12
# high momentum
momentum: 0.99
# no gradient accumulation
iter_size: 1
max_iter: 100000
weight_decay: 0.0005
snapshot:10000    #训练10000次,保存一次模型
snapshot_prefix:"G:/caffe171101/caffe-master/fcn-master/siftflow-fcn16s/train"
test_initialization: false

书写启动文件solve.py

import caffe
import surgery, score

import numpy as np
import os
import sys

try:
    import setproctitle
    setproctitle.setproctitle(os.path.basename(os.getcwd()))
except:
    pass

weights = ‘siftflow-fcn8s-heavy.caffemodel‘
deploy_proto = ‘deploy8.prototxt‘

# init
caffe.set_device(int(0))
caffe.set_mode_gpu()

solver = caffe.SGDSolver(‘solver.prototxt‘)
#solver.net.copy_from(weights)
vgg_net=caffe.Net(deploy_proto,weights,caffe.TRAIN)
surgery.transplant(solver.net,vgg_net)
del vgg_net  

# surgeries
interp_layers = [k for k in solver.net.params.keys() if ‘up‘ in k]
surgery.interp(solver.net, interp_layers)

# scoring
test = np.loadtxt(‘../data/sift-flow/test.txt‘, dtype=str)

for _ in range(50):
    solver.step(2000)
    # N.B. metrics on the semantic labels are off b.c. of missing classes;
    # score manually from the histogram instead for proper evaluation
    score.seg_tests(solver, False, test, layer=‘score_sem‘, gt=‘sem‘)
score.seg_tests(solver, False, test, layer=‘score_geo‘, gt=‘geo‘)

通过transplant的方式加载网络,会同时加载网络,和copy_from方式的区别在于拷贝参数的同时,改造原来的网络。

进入该目录,运行python solve.py,即可跑该网络。

如果,遇到错误,按照提示,修改路径或其他的一些东西。

  

对单张图片的预测:testSingleImg.py

import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
import sys
sys.path.append(‘G:/caffe171101/caffe-master/python‘)
import caffe
import cv2
#matplotlib inline
# load image, switch to BGR, subtract mean, and make dims C x H x W for Caffe
im = Image.open(‘test_img/coast_arnat59.jpg‘)
in_ = np.array(im, dtype=np.float32)
in_ = in_[:,:,::-1]
in_ -= np.array((104.00698793,116.66876762,122.67891434))
in_ = in_.transpose((2,0,1))  

# load net
net = caffe.Net(‘siftflow-fcn16s/deploy16.prototxt‘, ‘siftflow-fcn16s/train_iter_100000.caffemodel‘, caffe.TEST)
# shape for input (data blob is N x C x H x W), set data
net.blobs[‘data‘].reshape(1, *in_.shape)
net.blobs[‘data‘].data[...] = in_
# run net and take argmax for prediction
net.forward()
out = net.blobs[‘score_sem‘].data[0].argmax(axis=0)
#print "hello,python!"  

#plt.imshow(out,cmap=‘gray‘);
plt.imshow(out)
plt.axis(‘off‘)
plt.savefig(‘test_img/coast_arnat59_infer_16s_100000iters.png‘)

预测:这是用fcn32s的网络,迭代10万次的结果,并不理想

fcn16s,迭代10w次:

fcn8s,迭代10w次:

Sift-flow中的图片都为256*256*3的彩色图片

images保存的是数据,semanticlabels保存的是语义分割标签,一共33类。geolabels保存场景识别标签,一共4类,除去标签-1,就是3类。

所以是分别训练了两个网络,网络的前七层一样。

  

  

时间: 2024-08-29 17:18:08

fcn+caffe+siftflow实验记录的相关文章

[转]Caffe安装过程记录(CentOS,无独立显卡,无GPU)

Caffe安装过程记录(CentOS,无独立显卡,无GPU) 原文地址:http://www.aiuxian.com/article/p-2410195.html 参考资料: http://www.tuicool.com/articles/uiuA3e Caffe 安装配置(CentOS + 无GPU) http://blog.sina.com.cn/s/blog_990865340102vewt.html caffe 安装配置(CentOS 6.5 + 无GPU) http://www.cnb

Ubuntu16.04 Caffe 安装步骤记录(超详尽)

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> Ubuntu16.04 Caffe 安装步骤记录(超详尽) - yhao的博客 - 博客频道 - CSDN.NET yhao的博客 最怕庸碌无为,还安慰自己平凡可贵 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书讯]流畅的Pyt

【伊利丹】Hadoop2.0 NN HA实验记录

1.关于Hadoop2.2.0中HA的介绍 NameNode 简称: NN DateNode 简称: DN JournalNode  简称: JN Zookeeper  简称: ZK 从上面的图里,我们可以知道HA的大致架构: 01.利用共享存储来在两个NN之间同步元数据信息. 在NN中有两个重要的文件:一个是fsimage,一个是edits,其中fsimage指的是元数据镜像文件,存在磁盘中用来保持文件系统的目录树,然而edits指的是元数据操作日志,针对目录树的修改操作,被写入共享存储系统中

实验记录:vsftp整合mysql-pam管理虚拟账号

为了提高系统的安全性,我们采用虚拟用户而非系统(匿名)用户的形式访问FTP.整体思路是通过开启vsftp中的虚拟账户功能并调用新的pam认证模块,然后再修改pam模块使得可以通过mysql验证用户的合法性.以下为实验过程. 第一步装包: yum install -y vsftpd mysql-server mysql-devel pam-devel yum groupinstall -y Development tools tar -xf pam_mysql-0.7RC1.tar.gz -C /

实验记录三 通用输入输出(GPIO)

之前把所有程序都跑了一次后,得到了导师下一步的安排.如下: 1.编写一个程序,实现在LCD上显示一个万年历,包括年月日 星期 还有室内的温度.2.编写一个程序,将原来的交通灯改为跑马灯. 期限是这学期. 好吧.一学期编两个程序.还真是从0做起.虽然是用C编程,但是用的库函数却是相应工程开发自带的API.于是,开始从第一个基础程序做起,以便熟悉相应的API函数操作. GPIO 通用输入输出函数 函数名真长 参数也是两三个以上,不习惯.忙乎了大概两三个小时才基本把常用的六七个函数弄明白,真是白痴透了

caffe扩展实验

caffe实现caltech101图像分类 这里讲述如何用自己的数据集,在caffe平台一步步实现的过程[新手参考]; 主要分为下面3个环节: 数据集准备 Dataset preparation caffe网络准备 Caffe network files preparation 从零开始训练和微调 From scratch training and finetuning 复制imagenet项目到MyNet,修改内容完成caltech101数据集分类网络 数据集准备: caltech101(加利

CAFFE+FASTERCNN安装记录

本文记录了ubuntu15.10上面安装caffe和运行fasterRcnn的过程,把其中遇到的问题和解决办法记录一下,以备查看. 主要参考 http://ouxinyu.github.io/Blogs/20151108001.html Caffe + Ubuntu 15.04 + CUDA 7.5 新手安装配置指南 http://blog.csdn.net/helloeveryon/article/details/48789079 1:安装Ubuntu 下载ubuntu15.10,用ultra

CSAPP缓冲区溢出实验记录(三)

Level 5 Nitroglycerin (10 分) 题目说明:这一关是一道加分题.在bufbomb程序中还有一个'-n'的选项,使用这个选项时,bufbomb会运行Nitro模式,此时程序不会调用getbuf,而是调用getbufn: int getbufn() {     char buf[512];     Gets(buf);     return 1; } 这个函数与getbuf所不同的是,分配了512字节的字符数组,而调用getbufn的函数会在栈中随机分配一段存储区,这导致ge

RHCE实验记录总结

不管是运维还是开发系统的了解下Linux或者系统的温习整理一下Linux知识点无疑是较好的,这篇文章是对RHCSA&RHCE实验进行一个汇总,是我为了做实验方便(并分享给朋友)的一篇文章. 前言 开卷有益 准备考RHCSA(红帽认证系统管理员)RHCE(红帽认证工程师) 想做下Linux实验巩固下实操技能 测试下自己现在Linux的技能掌握度 环境提示 系统版本:Centos7 虚拟环境:文章下方 虚拟环境安装 虚拟环境常用管理命令 整体总结 1.看下第一个实验的例子,其实要是重置密码步骤:第一