首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[Caffe][原创]基于Caffe-Windows win 64位平台CPU版人脸表情识别模型训练

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

作者头像
云未归来
发布2025-07-18 13:30:01
发布2025-07-18 13:30:01
890
举报

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://cloud.tencent.com/developer/article/2543099

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 图片转标签文件

{

代码语言:txt
复制
 public partial class Form1 : Form
代码语言:txt
复制
 {
代码语言:txt
复制
     public Form1()
代码语言:txt
复制
     {
代码语言:txt
复制
         InitializeComponent();
代码语言:txt
复制
     }
代码语言:txt
复制
    private void button1\_Click(object sender, EventArgs e)
代码语言:txt
复制
     {
代码语言:txt
复制
         string root = @"D:\Caffe\FaceExpression\ImageData";
代码语言:txt
复制
         string test = "test";
代码语言:txt
复制
         string train = "train";
代码语言:txt
复制
         string val = "val";
代码语言:txt
复制
         //生成train.txt
代码语言:txt
复制
         using (StreamWriter sw = new StreamWriter(root + "\\" + train + ".txt",true,Encoding.GetEncoding("GB2312")))
代码语言:txt
复制
         {
代码语言:txt
复制
             for (int i = 0; i < 7; i++)
代码语言:txt
复制
             {
代码语言:txt
复制
                 DirectoryInfo di = new DirectoryInfo(root + "\\" + train + "\\" + i);
代码语言:txt
复制
                 foreach (var fi in di.GetFiles())
代码语言:txt
复制
                 {
代码语言:txt
复制
                     sw.WriteLine(i+"\\"+fi.Name+" "+i);
代码语言:txt
复制
                 }
代码语言:txt
复制
             }
代码语言:txt
复制
         }
代码语言:txt
复制
       //test.txt
代码语言:txt
复制
         using (StreamWriter sw = new StreamWriter(root + "\\" + test + ".txt", true, Encoding.GetEncoding("GB2312")))
代码语言:txt
复制
         {
代码语言:txt
复制
             for (int i = 0; i < 7; i++)
代码语言:txt
复制
             {
代码语言:txt
复制
                 DirectoryInfo di = new DirectoryInfo(root + "\\" + test + "\\" + i);
代码语言:txt
复制
                 foreach (var fi in di.GetFiles())
代码语言:txt
复制
                 {
代码语言:txt
复制
                     sw.WriteLine(i + "\\" + fi.Name + " " + i);
代码语言:txt
复制
                 }
代码语言:txt
复制
             }
代码语言:txt
复制
         }
代码语言:txt
复制
         //val.txt
代码语言:txt
复制
         using (StreamWriter sw = new StreamWriter(root + "\\" + val + ".txt", true, Encoding.GetEncoding("GB2312")))
代码语言:txt
复制
         {
代码语言:txt
复制
             for (int i = 0; i < 7; i++)
代码语言:txt
复制
             {
代码语言:txt
复制
                 DirectoryInfo di = new DirectoryInfo(root + "\\" + val + "\\" + i);
代码语言:txt
复制
                 foreach (var fi in di.GetFiles())
代码语言:txt
复制
                 {
代码语言:txt
复制
                     sw.WriteLine(i + "\\" + fi.Name + " " + i);
代码语言:txt
复制
                 }
代码语言:txt
复制
             }
代码语言:txt
复制
         }
代码语言:txt
复制
    }
代码语言:txt
复制
 }

}

5、网络配置文件和solver文件https://blog.csdn.net/u010496857/article/details/82789879已经给出来了,请自行去下载

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档