caffe实战,deep retinal image understanding 实现
来源:互联网 发布:php mvc demo 编辑:程序博客网 时间:2024/05/22 02:03
安装好caffe之后在官方网站下载model和script和image。分别代表模型,直接使用的脚本和测试图像。
放到/caffe/DRIU/
中。
打开test.py
import numpy as npimport matplotlib.pyplot as pltimport matplotlib.cm as cmimport scipy.miscfrom PIL import Imageimport scipy.ioimport osimport scipyimport sys# Point to Caffe folder /path/to/caffecaffe_root = '../'# Choose between 'DRIVE', 'STARE', 'DRIONS', and 'RIMONE'database = 'DRIVE'# Use GPU?这里将use_gpu设置为1,将gpu_id设置为0,caffe.set_device的gpu_id从0开始计数。use_gpu = 1;gpu_id = 'gpu 0';#sys.path.insert(0, caffe_root+'python/') 这里注释掉了,因为ms的caffe的根目录不在python下,在build\x64\release\pycaffe\caffe下。由于我将caffe的根目录直接放在python的sitepackage下,所以不用这句话直接使用import caffe也没问题。import caffeos.chdir(caffe_root+'/DRIU/')def imshow_im(im): plt.imshow(im,interpolation='none',cmap=cm.Grays_r)net_struct = 'deploy_'+database+'.prototxt'data_root = caffe_root+'/DRIU/Images/'+database+'/'save_root = caffe_root+'/DRIU/results/'+database+'/'if not os.path.exists(save_root): os.makedirs(save_root)with open(data_root+'test_'+database+'.txt') as f: imnames = f.readlines()test_lst = [data_root+x.strip() for x in imnames]if use_gpu: caffe.set_mode_gpu() caffe.set_device(gpu_id)# load netnet = caffe.Net('./'+net_struct, './DRIU_'+database+'.caffemodel', caffe.TEST)for idx in range(0,len(test_lst)): print("Scoring DRIU for image " + imnames[idx][:-1]) #Read and preprocess data im = Image.open(test_lst[idx]) in_ = np.array(im, dtype=np.float32) in_ = in_[:,:,::-1] #BGR in_ -= np.array((171.0773,98.4333,58.8811)) #Mean substraction in_ = in_.transpose((2,0,1)) #Reshape data layer net.blobs['data'].reshape(1, *in_.shape) net.blobs['data'].data[...] = in_ #Score the model net.forward() fuse = net.blobs['sigmoid-fuse'].data[0][0,:,:] #Save the results scipy.misc.imsave(save_root+imnames[idx][:-1], fuse)
执行一下:
出现异常,可能是因为显存不够,所以只执行了两张图片:
分割线
再尝试一下使用digits的实验结果,还是失败,于是乎试试命令行可不可做到。
狗日的编辑器没有自动保存!!
一般来说,图像的分类简单,lmdb直接提供这样的服务,可以将图像和label揉到一个数据库里面,只需要先把图像和label照这样放在txt文件就好了:
caffe分割图像的具体操作一直没搞得定,网上也没有教程,只能自己摸索,不过好像玩出点花样来了。
而图像分割好像没这么简单,label同样也是一个图像,所以如何用caffe还要用lmdn进行快速进行分割的训练就成了一个问题。其实归根结底就是不知道怎么在caffe里面分割图像时,设计正确的label格式(大概是这个意思)
一般来说,分类的时候data层的设计如下:
layer { name: "mnist" type: "Data" top: "data" top: "label" include { phase: TRAIN } transform_param { scale: 0.00390625 } data_param { source: "examples/mnist/mnist_train_lmdb" batch_size: 64 backend: LMDB }}
label和data 同时在这个层作为输出。而source只有一个路径。
所以是否可以尝试使用两个data层,一个输出data,一个输出label。打开给的那个啥视觉层文件,data层居然都没有:
name: "DRIU_STARE"input: "data"input_dim: 1input_dim: 3input_dim: 605input_dim: 700
将其删除并进行增添:
简而言之就是分为四个层分别用于训练和测试的特征与label的输入。这里使用的batch-size为2是因为内存不够了(lll¬ω¬)
layer { name: "data" type: "Data" top: "data" include { phase: TRAIN } data_param { source: "/home/lwm/caffe-master/examples/DRIU/train_db/features" batch_size: 2 backend: LMDB }}layer { name: "label" type: "Data" top: "label" include { phase: TRAIN } data_param { source: "/home/lwm/caffe-master/examples/DRIU/train_db/labels" batch_size: 2 backend: LMDB }}layer { name: "data" type: "Data" top: "data" include { phase: TEST } data_param { source: "/home/lwm/caffe-master/examples/DRIU/val_db/features" batch_size: 2 backend: LMDB }}layer { name: "label" type: "Data" top: "label" include { phase: TEST } data_param { source: "/home/lwm/caffe-master/examples/DRIU/val_db/labels" batch_size: 2 backend: LMDB }}
具体步骤
首先先预处理数据,在工程目录建立两个文件夹分别用于存放训练和测试数据:
然后在里面存入特征的图像和label的图像:
再编辑solver文件
test_iter: 1test_interval: 2base_lr: 0.01display: 1max_iter: 60lr_policy: "step"gamma: 0.1momentum: 0.9weight_decay: 0.0001stepsize: 20snapshot: 2snapshot_prefix: "snapshot"solver_mode: CPUnet: "/home/lwm/caffe-master/examples/DRIU/train_val.prototxt"solver_type: SGD
视觉层的设计还是按照之前说得做,网络的层次结构什么的直接套用原作者的(这个不是重点,用什么结构都ok)。
接下来执行命令:
caffe train -solver examples/DRIU/solver.prototxt -weights exampls/DRIU/DRIU_STARE.caffemodel
然后运行了一晚上总共迭代两次,成了这个样子
但是应该是对的。
- caffe实战,deep retinal image understanding 实现
- Understanding Deep Image Representations by Inverting Them
- Understanding Neural Networks Through Deep Visualization实现
- [深度学习论文笔记][Image Reconstruction] Understanding Deep Image Representations by Inverting Them
- Deep Compression, Song Han, Caffe 实现
- Understanding Convolution in Deep Learning
- Understanding Convolution in Deep Learning
- 论文笔记 Ensemble of Deep Convolutional Neural Networks for Learning to Detect Retinal Vessels in Fundus
- Caffe实战系列:实现自己Caffe网络层
- Caffe实战系列:实现自己Caffe网络层
- Caffe实战系列:实现自己Caffe网络层
- caffe 实战系列:如何写自己的数据层(以Deep Spatial Net为例)
- caffe 实战系列:如何写自己的数据层(以Deep Spatial Net为例)
- Deep Joint Image Filtering
- Caffe (CNN, deep learning )
- Deep Learning -- Caffe学习
- caffe|deep learning framework
- DeepLearning(基于caffe)实战项目(2)--mnist(image转lmdb)
- uva 119 Greedy Gift Givers
- @property 关键字的区别详解:assign、weak、 __block 、__weak、strong 、copy的区别
- Hadoop01-搭建
- AOJ.860 砝码
- 递归神经网络问题整理
- caffe实战,deep retinal image understanding 实现
- 如果笔记本的 WIN7 运行很卡,请尝试运行这些批处理
- The Water Problem——桶排序思想
- oracle日期英文
- windows下网络诊断基本命令
- 有赞 App 模块化实战经验总结
- SQLServer跨库查询--分布式查询
- A child container failed during start报错原因
- C++作业5