finemolds模型_yolo模型训练

finemolds模型_yolo模型训练在已有模型上finetune自己的数据训练一个模型1、准备训练数据和测试数据2、制作标签3、数据转换,将图片转为LMDB格式前三步的过程和如何利用自己的数据训练一个分类网络是一样的,参考处理即可。4、修改网络模型文件复制/caffe-root/models/finetune_flickr_style文件夹下面的deploy.prototxt…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

在已有模型上finetune自己的数据训练一个模型

1、准备训练数据和测试数据

2、制作标签

3、数据转换,将图片转为LMDB格式

前三步的过程和 如何利用自己的数据训练一个分类网络 是一样的,参考处理即可。


4、修改网络模型文件

复制/caffe-root/models/finetune_flickr_style文件夹下面的deploy.prototxt readme.md solver.prototxt train_val.prototxt四个文件到自己的finetune项目根目录/caffe-root/models/finetune_test/下

vim train_val.prototxt

  • 修改train_val.prototxt中的数据层,设置成caffeNet中的train_val.prototxt一样,使用lmdb输入数据。
layer { name: "data" type: "Data" top: "data" top: "label" include { phase: TRAIN }
  transform_param { crop_size: 227 # 传入的图片是256*256,现在在其中框出一个227*227的小图片 以此来增大训练集 mean_value: 104 # 通用均值 mean_value: 117 mean_value: 123 mirror: true # 镜像操作 扩大数据集 }
  data_param { source: "/home/weijian/caffe/models/classification_CNN/lmdb/train" batch_size: 100 backend: LMDB }
}
layer { name: "data" type: "Data" top: "data" top: "label" include { phase: TEST }
  transform_param { crop_size: 227 mean_value: 104 mean_value: 117 mean_value: 123 mirror: false }
  data_param { source: "/home/weijian/caffe/models/classification_CNN/lmdb/test" batch_size: 50 backend: LMDB }
}  

Jetbrains全家桶1年46,售后保障稳定

  • 修改最后的一个全连接层fc8_flickr,finetune的目的是重塑最后这个全连接层fc8_flickr,其他层的参数不变。
layer { name: "fc8_flickr" # 原网络结构文件中,最后的一层就是fc8,我们在这里希望自行设计最后一层,所以我们齐了另外一个名字fc8_flickr,如果还是继续沿用fc8这个名字,就会造成finetune的时候,以前caffemodel里面的参数和权值直接填充进去。 type: "InnerProduct" bottom: "fc7" top: "fc8_flickr" # lr_mult is set to higher than for other layers, because this layer is starting from random while the others are already trained param { lr_mult: 10 # 基本学习率乘以10 decay_mult: 1 }
  param { lr_mult: 20 decay_mult: 0 }
  inner_product_param { num_output: 5 # 这里根据实际情况,有几种数据,就改成几。因为有house、flower、animal、guitar、plane五种数据,所以改成了5。 weight_filler { type: "gaussian" std: 0.01 }
    bias_filler { type: "constant" value: 0 }
  }
}

注意,这个fc8_flickr层下面的Accuracy层的bottom是fc8_flickr。

vim deploy.prototxt

layer { name: "fc8_flickr" type: "InnerProduct" bottom: "fc7" top: "fc8_flickr" # lr_mult is set to higher than for other layers, because this layer is starting from random while the others are already trained param { lr_mult: 10 decay_mult: 1 }
  param { lr_mult: 20 decay_mult: 0 }
  inner_product_param { num_output: 5 # 这里只是修改num_output为5即可。 weight_filler { type: "gaussian" std: 0.01 }
    bias_filler { type: "constant" value: 0 }
  }
}

5、修改超参数文件

修改net为刚刚我们修改的那个train_val.prototxt

还需要修改test_iter、test_interval、snapshot_prefix、solver_mode、type等内容

因为是在做微调,所以设置base_lr很小,仅为0.001。

net: "/home/weijian/caffe/models/finetune_test/train_val.prototxt"
test_iter: 30
test_interval: 250 
# lr for fine-tuning should be lower than when starting from scratch
base_lr: 0.001
lr_policy: "step"
gamma: 0.1
# stepsize should also be lower, as we're closer to being done
stepsize: 10001000的迭代降低学习率:乘以gamma
display: 100
max_iter: 150000
momentum: 0.9
weight_decay: 0.0005
snapshot: 5000
snapshot_prefix: "/home/weijian/caffe/models/finetune_flickr_style/models/type"
# uncomment the following to default to CPU mode solving
type: "AdaDelta"
solver_mode: GPU

6、训练模型

vim train.sh

#!/usr/bin/env sh
set -e

log_path="logs/"
mkdir -p $log_path

save_model_path="caffemodel/"
mkdir -p $save_model_path

# training log
file_prefix="classification_CNN"
log_file=$(date -d "today" +"%Y-%m-%d-%H:%M:%S")
log_file=$log_path$file_prefix$log_file".log"

# caffe execute file path
caffe_bin="/home/weijian/caffe/build/tools/caffe"


# finetune
$caffe_bin train --solver=solver.prototxt --weights=bvlc_reference_caffenet.caffemodel 2>&1 | tee ./logs/finetune_test.log

7、测试

修改以下部分,其余和 这里 一样。

#网络结构描述文件
deploy_file = caffe_root+'models/finetune_test/deploy.prototxt'
#训练好的模型
model_file = caffe_root+'models/finetune_test/models/solver_iter_15000.caffemodel'

finetune的好处

  • 如果我们想自己训练一个效果较好的模型,需要大量的数据,非常优秀的硬件条件,以及漫长的训练时间,但是,我们可以利用现有的caffemodel模型训练利用较少的数据训练一个效果较好的模型。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234264.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ctk框架搭建(一) ctk框架插件加载与项目结构

    ctk框架搭建(一) ctk框架插件加载与项目结构序 使用CTK框架开发有大半年了,就实际应用上来说框架还比较可靠,但网上资料很少。而刚接触时项目已经有了相当大的体量,与业务等其他逻辑混淆,现在单独把ctk框架部分抽离出来做个总结分享,避免后来的人走弯路。 该系列介绍简单的ctk框架构建的方法,具体架构可根据自身项目设计,开发环境为macOSHighSierra,QtCreator5.10.0。ctk框架插件    CTK源码可以从Gi…

    2022年6月5日
    95
  • Qt高级——QMake快速入门

    Qt高级——QMake快速入门一、QMake简介qmake是Trolltech公司创建的用来为不同的平台和编译器书写Makefile的工具。qmake是一个用来简化在不同平台间开发工程的构建过程的工具。qmake会自动生成MakeFile文件,可以用于任何软件项目中,无论是否由Qt编写。qmake会注意所有的编译器和平台的依赖性,开发者只需关注自己的代码。qmake作为Qt库和Qt所提供的工具的主要连编工具,可以自动的包含moc和uic的连编规则。二、QMake入门教程1、创建一个工程创建一个应用,包含hell

    2022年5月18日
    43
  • 总计划组属性控制

    总计划组属性控制

    2021年8月24日
    68
  • matlab超前滞后校正装置设计_matlab劳斯判据

    matlab超前滞后校正装置设计_matlab劳斯判据且1引言不确定性与时滞是工业过程中普通存在的现象,这使得系统的分析与综合变得更加复杂和困难,同时也是导致系统不稳定和性能恶化的主要因素.因此,对不确定时滞系统的鲁棒控制问题进行研究,具有重要的理论意义和实际应用价值.近年来,不确定时滞系统的稳定性研究得到了广泛的关注匡5}.中立时滞系统作为一类非常重要的控制系统,其稳定性研究己有不少有价值的结论{3一11}.中立时滞系统的稳定条件可分为两大类:时滞…

    2022年9月30日
    2
  • 讨论k值以及初始聚类中心对聚类结果的影响_K均值聚类需要标准化数据吗

    讨论k值以及初始聚类中心对聚类结果的影响_K均值聚类需要标准化数据吗摘要:进入二十一世纪以来,科学技术的不断发展,使得数据挖掘技术得到了学者越来越多的关注。数据挖掘是指从数据库中发现隐含在大量数据中的新颖的、潜在的有用信息和规则的过程,是一种处理数据库数据的知识发现。数据挖掘一种新兴的交叉的学科技术,涉及了模式识别、数据库、统计学、机器学习和人工智能等多个领撤分类、聚类、关联规则是数据挖掘技术几个主要的研究领域。在数据挖掘的几个主要研究领域中,聚类是其中一个重要研…

    2025年8月3日
    3
  • html超链接悬浮,下列css代码,能控制鼠标悬浮其上的超链接样式

    html超链接悬浮,下列css代码,能控制鼠标悬浮其上的超链接样式摘要:下列不属特性品的主要质量于食。标悬置为将E1端道化的命令是非信方式口设。新中国成0年立7来,上的式特色民主协商中国局面)的成(已形,特色提供中国主义制度障要保为建完善立和了重社会。…下列不属特性品的主要质量于食。变动成本法下,制鼠包括期间成本。标悬置为将E1端道化的命令是非信方式口设。在全基础竣后的售的()内程报业务完成后交付应数据。些积制度作用建立极的有哪务员和完回避善公。特点休的公务…

    2022年7月19日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号