Windows10下使用Caffe训练神经网络步骤一

一、生成Caffe数据库

1、准备数据

参考链接中的作者提供了一些图片,共有500张图片,分为大巴车、恐龙、大象、鲜花和马五个类,每个类100张。

编号分别以3,4,5,6,7开头,各为一类。其中每类选出20张用作测试,其余80张用作训练。因此最终训练图片400张,测试图片100张,共5类。我在caffe根目录下的examples文件夹里新建了test_A文件夹,并将图片集放入其中。即,训练图片目录:examples/test_A/train,测试图片目录: examples/test_A/val  

备注:总的图片500张,序号300-799;val文件夹下面试300-319,400-419,500-519,600-619,700-719共计100张;其余在train文件夹下


2、生成图片文件列表清单

在生成数据库之前,需要生成图片文件列表清单,一般为.txt文件。我创建.py脚本文件来执行这一步,具体代码create_txt.py如下(代码只是随便写的,可以优化):

就是在上述目录下面新建train.txt和val.txt文件

上生成标签的代码:

# -*- coding: UTF-8 -*-
# Date:2018.07.05

import os
import re

path_train = train文件夹绝对目录
path_val = val文件夹绝对目录

if not os.path.exists(path_train):
    print("path_train not exist!!!")
    os._exit()
else:
    print("path_train exist!!!")

if not os.path.exists(path_val):
    print("path_val not exist!!!")
    os._exit()
else:
    print("path_val exist!!!")

file_train = open(train.txt文件绝对目录,'wt')
file_val = open(val.txt文件绝对目录,'wt')

file_train.truncate()#截断文件
file_val.truncate()

pa = r".+(?=\.)"
pattern = re.compile(pa)

print "now,creating train.txt..."
for filename in os.listdir(path_train):
    # print filename
    # abspath = os.path.join(path_train,filename);
    group_lable = pattern.search(filename)
    str_label = str(group_lable.group())
    if str_label[0] == '3':
        train_lable = '0'
    elif str_label[0] == '4':
        train_lable = '1'
    elif str_label[0] == '5':
        train_lable = '2'
    elif str_label[0] == '6':
        train_lable = '3'
    elif str_label[0] == '7':
        train_lable = '4'
    else:
        print "error data!!!"
        os._exit()
#	print abspath,train_lable.group()
    file_train.write(filename + ' ' + train_lable + '\n')
print "train.txt created!!!"
print "-----------------------------------"
print "now,creating val.txt..."

for filename in os.listdir(path_val):
    #	print filename
    #	abspath = os.path.join(path_val,filename);
    group_lable = pattern.search(filename)
    str_label = str(group_lable.group())
    if str_label[0] == '3':
        val_lable = '0'
    elif str_label[0] == '4':
        val_lable = '1'
    elif str_label[0] == '5':
        val_lable = '2'
    elif str_label[0] == '6':
        val_lable = '3'
    elif str_label[0] == '7':
        val_lable = '4'
    else:
        print "error data!!!"
        os._exit()
    #	print abspath,train_lable.group()
    file_val.write(filename + ' ' + val_lable + '\n')
print "val.txt created!!!"

print "function over!!!"

点开train.txt和val.txt就会发现生成好了


3、生成lmdb数据库

在cmd中进入caffe根目录,分别执行以下 指令:

win+R 操作打开运行面板,输入cmd,回车

在cmd下打开caffe根目录,作者的是caffe-master

输入:

Build\x64\Release\convert_imageset.exe --shuffle --resize_height=256 --resize_width=256 examples\test_A\ examples\test_A\val.txt examples\test_A\val_lmdb

然后回车就会发现上述目录下多了val_lmdb文件夹

再输入:

Build\x64\Release\convert_imageset.exe --shuffle --resize_height=256 --resize_width=256 examples\test_A\ examples\test_A\train.txt examples\test_A\train_lmdb

然后回车就会发现上述目录下多了train_lmdb文件夹

4、生成均值文件

图片减去均值再训练,会提高训练速度和精度。因此,一般都会有这个操作。caffe程序提供了一个计算均值的文件compute_image_mean.cpp,我们直接使用就可以。

输入Build\x64\Release\compute_image_mean.exe examples\test_A\train_lmdb examples\test_A\mean.binaryproto

回车就会发现test_A文件夹下面就有了mean.binaryproto文件



猜你喜欢

转载自blog.csdn.net/qq_37124237/article/details/80928470