本文主要描述如何使用 CAFFE 进行图像分类。

开发环境要求:windows 10 64位、Visual Studio 2017、.NET framework 4.6.1

 

 

分类

在一个项目的图像分类中,存在N个分类,每个分类需要有足量训练样本图像和测试样本图像。

训练

定义分类(标签)

分类的标签值 LabelValue 要求从0开始且连续增量为1

 

样本管理

用于管理每个分类的样本图像。

 

配置训练参数

主要用于修改基本配置、训练参数等。

 

 

 

注意:loss值越小代表训练效果越好,上图的loss=1.09699表示训练非常失败

 

 

 

复制代码
                //当前程序的根目录                string pathRoot = AppDomain.CurrentDomain.BaseDirectory;                  //demo项目的根目录                string projectPath = Path.Combine(pathRoot, "DemoProject");                  //图像分类的训练器                Trainer trainer = new Trainer(projectPath);                  //创建训练数据(首次必须创建,后续可以不再重新创建)                bool bRebuildData = true;                 if (bRebuildData)                 {                     //分类信息                    List<LabelInfo> listLabel = new List<LabelInfo>();                     listLabel.Add(new LabelInfo() { LabelValue = 0, LabelName = "b黑色" });                     listLabel.Add(new LabelInfo() { LabelValue = 1, LabelName = "w白色" });                     listLabel.Add(new LabelInfo() { LabelValue = 2, LabelName = "n无螺丝" });                     //...                      //存储样本图像的根目录                    string imagePath = Path.Combine(pathRoot, "DemoProject", "Images");                      //将用于训练的图像信息加入到列表中                    List<ImageSampleInfo> listTrain = new List<ImageSampleInfo>();                     listTrain.Add(new ImageSampleInfo() { LabelValue = 0, FileName = "4e1b2156a4d548b690b9630f6ca2f8aa.bmp" });                     //...                      //将用于测试的图像信息加入到列表中                    List<ImageSampleInfo> listTest = new List<ImageSampleInfo>();                     listTest.Add(new ImageSampleInfo() { LabelValue = 0, FileName = "0e48c295e2ab4eac85429ba94efa12c7.bmp"