1、Caffe安装与配置

关于Caffe-windows配置与安装网上有很多教程,我参考这篇博客配置成功

配置过程中可能会有很多错误,其实是由于文件编码问题,百度即可解决,注意要按照步骤进行

2、(可选)运行一下Mnist手写识别,这样你会更清楚整个训练过程

3、参考Ubuntu版人脸表情识别,这个简介很详细,但是训练实在Intel云上跑的,我去注册发现好像已经不行了,建议大家去看看

这里要注意数据集的转换,我是在windows上生成LMDB数据集,我也生成LEVELDB数据集,过程与ubuntu版很类似,只需要调用caffe/buile/release下convert_imageset.exe即可生成,注意转换可能会提示Map Size溢出达到上限,具体参考我的博客

4、标签文件生成,由于我对.net非常熟练,所以标签生成我是用C#写的,python其实也是很简单,这里我贴出标签生成的C#代码

using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Data;
 using System.Drawing;
 using System.IO;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows.Forms;namespace 图片转标签文件
 {
     public partial class Form1 : Form
     {
         public Form1()
         {
             InitializeComponent();
         }        private void button1_Click(object sender, EventArgs e)
         {
             string root = @"D:\Caffe\FaceExpression\ImageData";
             string test = "test";
             string train = "train";
             string val = "val";
             //生成train.txt
             using (StreamWriter sw = new StreamWriter(root + "\\" + train + ".txt",true,Encoding.GetEncoding("GB2312")))
             {
                 for (int i = 0; i < 7; i++)
                 {
                     DirectoryInfo di = new DirectoryInfo(root + "\\" + train + "\\" + i);
                     foreach (var fi in di.GetFiles())
                     {
                         sw.WriteLine(i+"\\"+fi.Name+" "+i);
                     }
                 }
             }           //test.txt
             using (StreamWriter sw = new StreamWriter(root + "\\" + test + ".txt", true, Encoding.GetEncoding("GB2312")))
             {
                 for (int i = 0; i < 7; i++)
                 {
                     DirectoryInfo di = new DirectoryInfo(root + "\\" + test + "\\" + i);
                     foreach (var fi in di.GetFiles())
                     {
                         sw.WriteLine(i + "\\" + fi.Name + " " + i);
                     }
                 }
             }
             //val.txt
             using (StreamWriter sw = new StreamWriter(root + "\\" + val + ".txt", true, Encoding.GetEncoding("GB2312")))
             {
                 for (int i = 0; i < 7; i++)
                 {
                     DirectoryInfo di = new DirectoryInfo(root + "\\" + val + "\\" + i);
                     foreach (var fi in di.GetFiles())
                     {
                         sw.WriteLine(i + "\\" + fi.Name + " " + i);
                     }
                 }
             }        }
     }
 }


 

5、网络配置文件和solver文件已经给出来了,请自行去下载

6、训练模型,caffe/buile/release下有个训练的exe,写个bat文件即可运行,这里最纠结的是bat路径问题,比如linux下../../是本目录上一级目录,但是windows下式../才是同一个意思,配置文件写的20万迭代完毕,20万我用的i5处理器,比较烂而且是很久的CPU,跑了十几个小时才跑了一个模型,准确率不到20%

好了总结到此结束,我先大概记录下过程,后面有时间给出详细的训练全过程