参考博客:

http://blog.csdn.net/jacke121/article/details/78160398

以视网膜血管分割的数据集为例:

训练样本:

训练标签:

标签图的制作依据voc数据集中的样例,将被检测的目标改为voc中的一类。

将用ps软件制作的黑底白色标签转化为,目标为(128,0,0)的单通道彩色图片,存储格式为.png。也就是将待分割的目标当做飞机。

转化png的matlab的代码如下:

imgname='15.jpg';
I=imread(imgname);
I_gray=rgb2gray(I);
I_bw=uint8(im2bw(I_gray))*128;
I1=uint8(zeros(size(I,1),size(I,2),3));
I1(:,:,1)=I_bw;
[x,map]=rgb2ind(I1,256);
imgSaveName=imgname(1:length(imgname)-4);
imwrite(x,map,strcat(imgSaveName,'.png'));

制作好训练集后,修改一些文件中的路径。

我的工程路径:

I:\caffe171101\caffe-master\fcn-master\retina200-fcn32s

I:\caffe171101\caffe-master\fcn-master\data\retina200_200

voc_layers.py修改:

可以删掉底下的class SBDDSegDataLayer(caffe.Layer)   训练的时候用不到。

修改这三个地方的路径即可。

train.prototxt修改:

这个mean,就是计算训练样本RGB三通道的平均值。

将后面的num_output:21  全部改为num_output:2      只有背景和待分割的目标两类。

val.prototxt的修改同理。

deploy_voc_32s.prototxt  不变

solver.prototxt  不需要改动

因为是第一次训练,采用fcn32s-heavy-pascal.caffemodel作为预训练模型。

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 = 'fcn32s-heavy-pascal.caffemodel'
deploy_proto = 'deploy_voc_32s.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
val = np.loadtxt('../data/retina200_200/val.txt', dtype=str) for _ in range(50):
solver.step(2000)
score.seg_tests(solver, False, val, layer='score')

必须采用transplant的方式训练。因为这个模型的网络中的图片尺寸和自己的数据集中的图片尺寸不一样。

训练完成之后,进行预测时,这个deploy.prototxt文件需要改动一下。

将其中num_output:21的地方全部改为num_output:21

实验结果:

  

fcn+caffe+制作自己的数据集的更多相关文章

  1. fcn+caffe+siftflow实验记录

    环境搭建: vs2013,编译caffe工程,cuda8.0,cudnn5.1,python2.7. 还需要安装python的一些包.Numpy+mkl  scipy  matplotlib  sci ...

  2. 自动化工具制作PASCAL VOC 数据集

    自动化工具制作PASCAL VOC 数据集   1. VOC的格式 VOC主要有三个重要的文件夹:Annotations.ImageSets和JPEGImages JPEGImages 文件夹 该文件 ...

  3. matlab遍历文件制作自己的数据集 .mat文件

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9115788.html 看到深度学习里面的教学动不动就是拿MNIST数据集,或者是IMGPACK ...

  4. 仿照CIFAR-10数据集格式,制作自己的数据集

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50801226 前一篇博客:C/C++ ...

  5. SSD-tensorflow-2 制作自己的数据集

    VOC2007数据集格式: VOC2007详细介绍在这里,提供给大家有兴趣作了解.而制作自己的数据集只需用到前三个文件夹,所以请事先建好这三个文件夹放入同一文件夹内,同时ImageSets文件夹内包含 ...

  6. Windows10+YOLOv3实现检测自己的数据集(1)——制作自己的数据集

    本文将从以下三个方面介绍如何制作自己的数据集 数据标注 数据扩增 将数据转化为COCO的json格式 参考资料 一.数据标注 在深度学习的目标检测任务中,首先要使用训练集进行模型训练.训练的数据集好坏 ...

  7. fcn+caffe+voc2012实验记录

    参考博客: http://blog.csdn.net/haoji007/article/details/77148374 http://blog.csdn.net/jacke121/article/d ...

  8. caffe训练自己的数据集

    默认caffe已经编译好了,并且编译好了pycaffe 1 数据准备 首先准备训练和测试数据集,这里准备两类数据,分别放在文件夹0和文件夹1中(之所以使用0和1命名数据类别,是因为方便标注数据类别,直 ...

  9. Mask-RCNN:教你如何制作自己的数据集进行像素级的目标检测

    概述 Mask-RCNN,是一个处于像素级别的目标检测手段.目标检测的发展主要历程大概是:RCNN,Fast-RCNN,Fster-RCNN,Darknet,YOLO,YOLOv2,YOLO3(参考目 ...

随机推荐

  1. SQL[Err] ORA-00933: SQL command not properly ended

    原文链接:https://www.cnblogs.com/godtrue/p/3784526.html 1:可能SQL语句中关键字前后缺少空格 2:Oracle 给表起别名时,直接在表名的后面空格别名 ...

  2. 在window 2008r2开发服务器上安装MSMQ消息队列

    1.打开”服务器管理器“------”功能“-------”添加功能“,勾选”消息队列“,如下图: 如果之前已经勾选,则忽略此步. 2.”功能“------”消息队列“------”专有对列“---- ...

  3. Java并发问题--乐观锁与悲观锁以及乐观锁的一种实现方式-CAS

    首先介绍一些乐观锁与悲观锁: 悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁.传统的关系型数据库里边就用到了很 ...

  4. 【Assembly】NO.70.EBook.7.Assembly.1.001-【汇编语言 第3版 张爽】- 基础知识

    1.0.0 Summary Tittle:[Assembly]NO.70.EBook.7.Assembly.1.001-[汇编语言 第3版 张爽]- 基础知识 Style:Assembly Serie ...

  5. 家庭记账本之微信小程序(二)

    在网上查阅了资料后,了解到了在完成微信小程序之前要完成注册阶段的工作,此次在这介绍注册阶段的流程. 1.首先你要确定小程序的定位.目的以及文案资料等(准备工作). 2.打开微信公众平台官网,点击右上角 ...

  6. 台式电脑、笔记本快捷选择启动项Boot 快捷键大全

    我们在安装系统时,会去设置电脑是从硬盘启动.U盘启动.光驱启动.网卡启动. 一般设置的方法有两种:一种是进BIOS主板菜单设置启动项顺序:另一种就是我在这里要介绍的快捷选择启动项. 以下是网友整理的各 ...

  7. RxJava 详解——简洁的异步操作(二)

    上次说的两个例子,事件的发出和消费都是在同一个线程的.如果只用上面的方法,实现出来的只是一个同步的观察者模式.观察者模式本身的目的就是异步机制,因此异步对于 RxJava 是至关重要的.而要实现异步, ...

  8. 创建servlet程序知识点详解---servlet-day05

    jdbc.properties怎么写? 把秘密改为自己电脑设置的 password url 3306 是安装mysql时所确定的端口  后面还可以接字符集的限定 #1 jsp是什么?(java ser ...

  9. inux下输入ifconfig命令,没有eth0,怎么解决

    用ifconfig命令,只有lo,没有eth0的解决方案 问题描述:视频中输入ifconfig命令,显示eth0和lo,但是自己在虚拟机中并非得到这样的结果,而是只有lo,即网卡未启动,也没有ip,无 ...

  10. Eclipse进度条出现“Remote System Explorer Operation”解决方法

    Eclipse进度条出现“Remote System Explorer Operation”解决方法