用caffe训练自己的数据

要将图片转换为lmdb的形式

在网上下载了一个图片数据集,包括5类图片,共500张,400作为训练集,100作为测试集

这里写图片描述

1.制作标签lable,转换lmdb

使用以下Python代码

# coding:utf-8


"<span style=""font-family:Arial;font-size:18px;"">"
"<span style=""font-size:18px;"">"
"<span style=""font-size:18px;"">"
import os


def IsSubString(SubStrList, Str):
    flag = True
    for substr in SubStrList:
        if not (substr in Str):
            flag = False

    return flag


# 扫面文件
def GetFileList(FindPath, FlagStr=[]):
    FileList = []
    FileNames = os.listdir(FindPath)
    if len(FileNames) > 0:
        for fn in FileNames:
            if len(FlagStr) > 0:
                if IsSubString(FlagStr, fn):
                    fullfilename = os.path.join(FindPath, fn)
                    FileList.append(fullfilename)
            else:
                fullfilename = os.path.join(FindPath, fn)
                FileList.append(fullfilename)

    if len(FileList) > 0:
        FileList.sort()

    return FileList


train_txt = open('train.txt', 'w')
# 制作标签数据
imgfile = GetFileList('train/bus')  # 将数据集放在与.py文件相同目录下
for img in imgfile:
    str0 = img + ' ' + '0' + '\n'  # 用空格代替转义字符 \t
    train_txt.writelines(str0)

imgfile = GetFileList('train/dinosaur')
for img in imgfile:
    str1 = img + ' ' + '1' + '\n'
    train_txt.writelines(str1)

imgfile = GetFileList('train/elephant')
for img in imgfile:
    str2 = img + ' ' + '2' + '\n'
    train_txt.writelines(str2)

imgfile = GetFileList('train/flower')
for img in imgfile:
    str3 = img + ' ' + '3' + '\n'
    train_txt.writelines(str3)

imgfile = GetFileList('train/horse')
for img in imgfile:
    str4 = img + ' ' + '4' + '\n'
    train_txt.writelines(str4)

train_txt.close()

# 测试集文件列表
test_txt = open('val.txt', 'w')

imgfile = GetFileList('val/bus')  # 将数据集放在与.py文件相同目录下
for img in imgfile:
    str5 = img + ' ' + '0' + '\n'
    test_txt.writelines(str5)

imgfile = GetFileList('val/dinosaur')
for img in imgfile:
    str6 = img + ' ' + '1' + '\n'
    test_txt.writelines(str6)

imgfile = GetFileList('val/elephant')  # 
for img in imgfile:
    str7 = img + ' ' + '2' + '\n'
    test_txt.writelines(str7)

imgfile = GetFileList('val/flower')  # 
for img in imgfile:
    str8 = img + ' ' + '3' + '\n'
    test_txt.writelines(str8)

imgfile = GetFileList('val/horse')  # 
for img in imgfile:
    str9 = img + ' ' + '4' + '\n'
    test_txt.writelines(str9)

test_txt.close()

print("成功生成文件列表")

结果生成两个txt文件,一个是train.txt,另一个val.txt,在标签里,将每一个类别分类为0,1,2,3,4五个类别

这里写图片描述

这里写图片描述

这里写图片描述

深度学习caffe平台–制作自己.lmdb格式数据集及分类标签文件

最后转换,在caffe/examples目录下新建mytest文件,复制caffe/examples/imagenet目录下面的create_imagenet.sh脚本到mytest目录下

这里写图片描述

修改create_imagenet.sh文件

这里写图片描述

运行之后

这里写图片描述

结果:生成lmdbe文件

这里写图片描述

2 计算均值
复制caffe/examples/imagenet目录下面的create_imagenet_mean.sh脚本到mytest目录下,修改里面的内容

这里写图片描述

运行生成test_mean.binaryproto

这里写图片描述

利用caffe官方给出的文本定义网络结构和solver文件来训练一个神经网络,选择/caffe/models/bvlc_alexnet,查看solver.prototxt,,修改参数,最下面改成CPU

这里写图片描述

查看train_val.prototxt文件,需要修改的是输入端的各种数据及mean file,如下:

name: "AlexNet"
layer {
  name: "data"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    mirror: true
    crop_size: 227
    mean_file:
    #此处需要修改 
    "/home/ryan/caffe/examples/mytest/test_mean.binaryproto"
  }
  data_param {
  #此处需要修改  
    source: "/home/ryan/caffe/examples/mytest/train_lmdb"
    batch_size: 256
    backend: LMDB
  }
}
layer {
  name: "data"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TEST
  }
  transform_param {
    mirror: false
    crop_size: 227
    mean_file:
    #此处需要修改 
    "/home/ryan/caffe/examples/mytest/test_mean.binaryproto"
  }
  data_param {
  #此处需要修改  
    source: "/home/ryan/caffe/examples/mytest/train_lmdb"
    batch_size: 50
    backend: LMDB
  }
}

执行train_caffenet.sh即可。(注意以上各种文件的路径是否加载正确,要以当前目录为准,不要单纯的安装文件的形式去修改,否则会找不到需要加载的各种文件而报错!!!)

这里写图片描述有点慢。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值