Windows+VS2013 caffe使用LeNet模型训练过程

前提:caffe 的源码已在Windows上成功编译通过

1、准备自己的数据集。如文件夹0和文件1,其中0和1是图像的类别标签,我这里用的是0_S,1_I,并将图像保存在F:\caffe-master\data\image中;

2、制作图像标签文件。利用Python或其他代码将图像和标签,写入相应的训练标签、验证标签文件中;

# -*- coding: utf-8 -*-
"""
Created on Fri Apr  6 00:40:04 2018

@author: Administrator
"""

import os


def dirlist(path, allfile):
    filelist = os.listdir(path)

    for filename in filelist:
        filepath = os.path.join(path, filename)
        if os.path.isdir(filepath):
            dirlist(filepath, allfile)
        else:
            allfile.append(filepath)
    return allfile


imgnames = dirlist('F:\\caffe-master\\data\\image', [])
#print(imgnames)
num_all = [0, 0]
dirs = ['0_S', '1_I']
for name in imgnames:
    if '.jpg' not in name:
        continue
    split_name = name.split('\\')#字符串分割
    #print(split_name[-2])#倒数第二个字符串
    if split_name[-2] in dirs:    
        id = dirs.index(split_name[-2])#获取类别文件夹号
        #print(id)
        num_all[id] += 1#统计各文件夹张数
        #print(num_all[id])
print(num_all[0])
print(num_all[1])


#随机打乱函数
import random

imgnames_s = imgnames
random.shuffle(imgnames)

dir = dirs
# dir = os.listdir('D:\\stomach_raw_data\\data')
# dir =['0','1','2','3','4']
f   = open('F:\\caffe-master\\data\\image\\train_8.txt', 'w')
f1  = open('F:\\caffe-master\\data\\image\\test_8.txt', 'w')
fal = open('F:\\caffe-master\\data\\image\\train_all_8.txt', 'w')
numframe = 0
numid6 = -1
for name in imgnames:
    if '.jpg' not in name:
        continue
    b = name.replace('\\', '/')
    print(b)
    c = b.replace('F:/caffe-master/data/image/', '')
    print(c)
    d = c.split("/")[1]
    print(d)
    
    #print(dir)
    if c.split('/')[0] in dir:
        id = str(dir.index(c.split('/')[0]))
        #id = str(id.split('/'))
        print(id)
        if id == '6':
            numid6 += 1
            if numid6 % 10 != 0:
                continue
        #line = d + ' ' + id + '\n'
        line = c + ' ' + id + '\n'
        
        print(line)
        #line = 'D:/stomach_raw_data/data/' + c + ' ' + id + '\n'
        fal.writelines(line)
        if numframe % 10 < 2:
            f1.writelines(line)
            
        else:
            f.writelines(line)
        numframe += 1#统计图片总数
    
print(numframe)
f.close()
f1.close()
fal.close()

3、制作训练LMDB和验证LMDB。

//训练LMDB脚本,可保存在create_train_lmdb.bat文件中
E:/caffe-master/Build/x64/Debug convert_imageset.exe --shuffle --resize_heiht=128 --resize width =128 F:/caffe-master/data/image/  F:/caffe-master/data/image/train_8.txt  
F:/caffe-master/data/image/train_lmdb

//制作测试LMDB同上
//综述:convert_imageset.exe执行文件 图像宽高 图像路径 标签文件 LMBD生成路径

4、配置超参数文件 lenet_slover.prototxt,文件在example下的minist文件下。

1)、修改网络描述文件的路径

2)、修改CPU/GPU模式

5、修改网络描述文件lenet_train.prototxt, 文件在example下的minist文件下。 

1)、修改LMDB的训练路径和验证路径

2)、修改num_output为你自己想要的输出标签个数

注意:LMDB路径千万不能错,仔细检查

6、最后运行

E:/caffe-master/Build/x64/Debug caffe.exe --slove=F:/caffe-master/data/lenet_slover.prototxt(超参数配置文件路径)

7、OK,完成。

猜你喜欢

转载自blog.csdn.net/penghejuan2012/article/details/82698119
今日推荐