用自己的数据完成“分类”

来源:互联网 发布:广东11选5遗漏360数据 编辑:程序博客网 时间:2024/06/06 02:52

深度学习框架用的是caffe;网络模型是CaffeNet(AlexNet的变形)。

1.准备数据

我用的是Fish4knowledge数据集,数据集内总共有27370张图片,23类,每一类的数量不等且差异大。将其按照5:1:1的比例分为训练集、验证集、测试集。(记住由于每类的数据不均衡,所以一定要随机分配)

  • 训练集:19550张图片
  • 验证集:3910张图片
  • 测试集:3910张图片

2.生成filelist的txt文件

接下来要生成三个文件列表,train.txt、val.txt、test.txt。文件中的每一行存放的是一张图片的文件名(包含相对路径)和类别号,中间用空格隔开。我的类别号从1开始,到23。
可以用python\matlab\shell,任意挑一种你熟练的语言遍历整个数据集,获取文件名列表以及每个文件的类别。

3.转换为lmdb格式

在深度学习的实际应用中,我们经常用到的原始数据是图片文件,如jpg,jpeg,png,tif等格式的,而且有可能图片的大小还不一致。因此我们可以调用caffe里的convert_imageset工具来将图片文件转换成caffe框架中能直接使用的db文件。create_lmdb.sh 且数据集中的图片大小根据情况统一成47*47。

#!/usr/bin/en shrm -rf img_lmdb_train/home/zh/caffe/build/tools/convert_imageset --shuffle \    #  "\" 是另起一行的意思 --resize_height=47 --resize_width=47 \Image/train/ \ImageSets/train.txt img_lmdb_trainrm -rf img_lmdb_val/home/zh/caffe/build/tools/convert_imageset --shuffle \--resize_height=47 --resize_width=47 \Image/val/ \ImageSets/val.txt img_lmdb_valrm -rf img_lmdb_test/home/zh/caffe/build/tools/convert_imageset --shuffle \--resize_height=47 --resize_width=47 \Image/test/ \ImageSets/test.txt img_lmdb_test

convert_imageset的使用格式:

convert_imageset [FLAGS] ROOTFOLDER/ LISTFILE DB_NAME

FLAGS: 图片参数 # –shuffle是打乱数据顺序,–backend设置生成的数据形式:lmdb或者leveldb,默认生成lmdb。
ROOTFOLDER/: 图片存放路径
LISTFILE: 图片文件列表清单
DB_NAME: 最终生成的db文件存放目录

4.计算均值并保存

图片减去均值再训练,会提高训练速度和精度。因此,一般都会有这个操作。
caffe程序提供了一个计算均值的可执行文件compute_image_mean,我们直接使用就可以了。
compute_image_mean带两个参数,第一个参数是lmdb训练数据位置,第二个参数设定均值文件的名字及保存路径。
运行成功后,会在 设定的保存路径下面生成一个mean.binaryproto的均值文件。

5.创建模型并编写配置文件

模型就用caffe自带的”CaffeNet”模型( AlexNet的一个变体),位置在 models/bvlc_reference_caffenet/文件夹下, 将需要的两个配置文件solver.prototxt,train_val.prototxt 复制到自己的工程文件夹下;在models/文件夹下,除了CaffeNet还有AlexNet、GoogleNet、R-CNN等网络。

  1. 修改solver.prototxt

3910个测试数据,测试集的batch_size为50,因此test_iter设置为80,就能全cover了。

net: "/home/zh/data/fish4knowledge/Fish_species_recognition/train_val.prototxt"test_iter: 80         # 测试集的迭代次数test_interval: 80      #训练的时候,每迭代test_interval次就进行一次测试,得到准确率值。base_lr: 0.01          #初始的学习率lr_policy: "step"gamma: 0.1stepsize: 5000    #每隔stepsize次,学习率降低gamma倍display: 20              #每隔20次打印一次lossmax_iter: 25000   #训练的最大迭代次数momentum: 0.9weight_decay: 0.0005snapshot: 10000    #每迭代10000次备份一次中间caffemodelsnapshot_prefix: "models/bvlc_reference_caffenet/caffenet_train"      #中间模型的保存地址和命名前缀solver_mode: GPU  

2.修改train_val.prototx

只需要修改train和test的data层就可以了,其它可以不用管。

  name: "CaffeNet"layer {  name: "data"  type: "Data"  top: "data"  top: "label"  include {    phase: TRAIN       #这个层仅在train阶段       }  transform_param {          #数据的预处理    mirror: true    crop_size: 47   ##change    mean_file: "/home/zh/data/fish4knowledge/Fish_species_recognition/mean.binaryproto"   ##change  }  data_param {    source: "/home/zh/data/fish4knowledge/Fish_species_recognition/img_lmdb_train"    ##change    batch_size: 256    backend: LMDB  }}layer {  name: "data"  type: "Data"  top: "data"  top: "label"  include {    phase: TEST       #这个层仅在test阶段    }  transform_param {    mirror: false    crop_size: 47  ##change    mean_file: "/home/zh/data/fish4knowledge/Fish_species_recognition/mean.binaryproto"   ##change  }  data_param {    source: "/home/zh/data/fish4knowledge/Fish_species_recognition/img_lmdb_test"   ##change    batch_size: 50    #测试集的batch_size    backend: LMDB  }}

6.训练和测试

如果前面都没有问题,数据准备好了,配置文件也配置好了,这一步就比较简单了。

build/tools/caffe train -solver 绝对路径/solver.prototxt
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机百度上下载的文档打不开怎么办 5岁宝宝乘飞机没带证件怎么办 网上订飞机票忘记订儿童票了怎么办 两岁宝宝对牛奶鸡蛋过敏了怎么办 两岁宝宝坐不住好跑怎么办 宝宝两岁多了不愿意坐小马桶怎么办 坐火车小孩拉屎在被子上怎么办 川航飞机票名字错了一个字怎么办 胜战本领怎么看走向战场怎么办 数数字油画你的颜料干了怎么办? 数字油画涂颜料涂错了怎么办 绝地求生模拟器注册已达上限怎么办 孕妇把番茄和虾一起吃了怎么办 4岁宝贝吃了玩具小电池怎么办 微信使用零钱需完善实名信息怎么办 两岁宝宝刷牙不会吐水怎么办 孩子牙龈上长了小牙怎么办 供暖公司未供暖却收取供暖费怎么办 两岁宝宝认知和语言能力低怎么办 蜡笔同步被对方发现删掉的怎么办 微信时间和手机时间不同步怎么办 孩子们家乡爱画美丽的也自己怎么办 娃把豆豆弄进鼻孔了怎么办 20岁了不知道自己该干什么怎么办 遇到一个新手买家恶意拍下怎么办 淘宝卖螃蟹有什么要求美工怎么办 淘宝衣服吊牌剪了想退货怎么办修 用图片在淘宝搜衣服搜不到怎么办 汽车黑塑料水砂纸磨的不平怎么办 sat报名要你填10位电话怎么办 手绘板连接电脑绘画有点迟钝怎么办 走路不小心滑了一下特尴尬怎么办 小孩子头撞了头发长不出来怎么办 小孩子头磕破了不长头发怎么办 晚上洗了冷水头早上头痛怎么办 头发洗了一天就油了怎么办 米诺地尔搽剂喷了头皮油怎么办 头发可以种植吗如果是秃顶怎么办 前额头发少怎么办如何使头发增多 头发又细又软又少怎么办 宝宝一岁了头发又少又黄怎么办