caffe windows训练测试自己的图片
https://www.jianshu.com/p/607f1e51e3ab

前言:本文参考博客denny402
这里简要的介绍了下如何使用自己准备的图片数据来训练和测试网络。主要的几个步骤有,图片数据转换为lmdb格式,计算训练数据的均值,sovler文件和网络的简单修改,最后caffe训练。
数据准备
这里我照搬denny402准备的数据。其中共有5个类,每个类100张图片,每个类中用于测试的是20张图片(编号0-19),用于训练的是80张图片(编号20-99)。
首先我在caffe的根目录下的data目录新建文件夹my,将test和train两个目录拷贝到其中。
然后为train和test中的数据建立了两个txt的列表,分别是文件路径名和对应的label号,需要注意的是label号是从0开始,至4。

之后是使用convert_imageset.exe将图片转换为lmdb形式。如果你并没有生成这个exe,可以打开caffe的convert_imageset这个工程,右击生成,exe会保存在.\bin文件夹中。
然后调用下面的命令行生成两个数据集的lmdb。
//转换训练数据 .\bin\convert_imageset.exe --shuffle\ //表示打乱数据的顺序 --resize_height=256\ --resize_width=256 \ .\data\my\ //存放train和test文件夹的路径 .\data\trainlist.txt //根据trainlist.txt读取图片 .\data\img_train_lmdb //转换测试数据 .\bin\convert_imageset.exe --shuffle\ //表示打乱数据的顺序 --resize_height=256\ --resize_width=256 \ .\data\my\ .\data\testlist.txt .\data\img_test_lmdb
这样在data文件夹中会生成img_train_lmdb和img_test_lmdb两个文件夹分别保存了lmdb格式的数据。
计算图片均值
计算图片均值使用的是前一步生成的训练数据的lmdb求的。
同样如果需要使用的compute_image_mean.exe并没有生成,可以打开该工程,右击生成即可。生成后,使用下面的命令行得到均值文件。
.\bin\compute_image_mean.exe .\data\img_train_lmdb .\data\mean.binaryproto
这样就得到了训练数据的均值文件mean.binaryproto。
sovle.prototxt配置文件和train_val.prototxt模型修改
这里拷贝了models\bvlc_reference_caffenet\solver.prototxt和train_val.prototxt,并在其中简单修改。
//solver.prototxt net: "data/train_val.prototxt" test_iter: 2 test_interval: 50 base_lr: 0.001 lr_policy: "step" gamma: 0.1 stepsize: 100 display: 20 max_iter: 500 momentum: 0.9 weight_decay: 0.005 solver_mode: GPU
//train_val.prototxt name: "CaffeNet" layer { name: "data" type: "Data" top: "data" top: "label" include { phase: TRAIN } transform_param { mirror: true crop_size: 227 mean_file: "data/mean.binaryproto" } data_param { source: "data/img_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: "data/mean.binaryproto" } data_param { source: "data/img_test_lmdb" batch_size: 50 backend: LMDB } }
主要的修改就是test iter和test batchsize,以及数据源的修改。前者是因为我们的数据量发生了改变。另外,在FC这个layer处也要修改下,将1000改为5,因为我们这里只有5个类别。
训练和测试
以上最终完成了程序caffe.exe运行的准备,最后在命令行中输入
.\bin\caffe.exe train -solver=.\data\solver.prototxt
等待程序运行结束后可以查看结果。我这里的accuracy大致为93%。
每一个不曾起舞的日子,都是对生命的辜负。
But it is the same with man as with the tree. The more he seeks to rise into the height and light, the more vigorously do his roots struggle earthward, downward, into the dark, the deep - into evil.
其实人跟树是一样的,越是向往高处的阳光,它的根就越要伸向黑暗的地底。----尼采
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话