FCN制作自己的数据集、训练和测试全流程
花了两三周的时间,把FCN的全部流程走了一遍,期间走了很多弯路,现在记录一下。系统环境:ubuntu 16.04LTS
一、数据集的制作
注:我的数据集是仿照VOC数据集进行制作的
1.resize 数据集
我的GPU显存4G,跑过大的图片带不动,需要resize图片大小,放几个修改图片大小的程序。
(1)单张图片resize
# coding = utf-8
import Image
def convert(width,height):
im = Image.open("C:\\xxx\\test.jpg")
out = im.resize((width, height),Image.ANTIALIAS)
out.save("C:\\xxx\\test.jpg")
if __name__ == '__main__':
convert(256,256)
(2)resize整个文件夹里的图片
# coding = utf-8
import Image
import os
def convert(dir,width,height):
file_list = os.listdir(dir)
print(file_list)
for filename in file_list:
path = ''
path = dir+filename
im = Image.open(path)
out = im.resize((256,256),Image.ANTIALIAS)
print "%s has been resized!"%filename
out.save(path)
if __name__ == '__main__':
dir = raw_input('please input the operate dir:')
convert(dir,256,256)
(3)按比例resize
# coding = utf-8
import Image
import os
def convert(dir,width,height):
file_list = os.listdir(dir)
print(file_list)
for filename in file_list:
path = ''
path = dir+filename
im = Image.open(path)
out = im.resize((256,256),Image.ANTIALIAS)
print "%s has been resized!"%filename
out.save(path)
if __name__ == '__main__':
dir = raw_input('please input the operate dir:')
convert(dir,256,256)
2.制作索引图
(1)下载labelme
下载地址:labelme网址
下载后按提示打开软件,进行标注,保存会生成后缀为json的文件。
(2)生成dataset文件夹
在终端输入指令:
labelme_json_to_dataset 你的路径/你的json文件名.json //这里的文件名根据自己的实际情况更改
(3)为文件夹下的label.png着色
首先需要对照VOC分割的颜色进行着色,一定要保证颜色的准确性。
Matlab代码:(这个代码的作用是得出各种颜色的rgb值,颜色值在pascal voc中其实已经知道了,如果类数没有超过21的话,这一步不需要操作)
function cmap = labelcolormap(N)
if nargin==0
N=256
end
cmap = zeros(N,3);
for i=1:N
id = i-1; r=0;g=0;b=0;
for j=0:7