[Caffe][原创]基于Caffe-Windows win 64位平台CPU版人脸表情识别模型训练

1、Caffe安装与配置:

关于Caffe-windows配置与安装网上有很多教程,我参考这篇博客配置成功:https://blog.csdn.net/nichengwuxiao/article/details/79113623

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

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

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

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

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文件https://blog.csdn.net/u010496857/article/details/82789879已经给出来了,请自行去下载

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

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

 

你可能感兴趣的:(Caffe)