赛题名称:科大讯飞人脸情绪识别挑战赛

赛题类型:cv 图像分类

赛题报名链接:http://challenge.xfyun.cn/topic/info?type=facial-emotion-recognition&ch=dw-sq-1

赛题介绍

人脸表情是传播人类情感信息与协调人际关系的重要方式,表情识别是指从静态照片或视频序列中选择出表情状态,从而确定对人物的情绪与心理变化。

在日常生活中人类习惯从面部表情中吸收非言语暗示,那么计算机可以完成类似任务吗?答案是肯定的,但是需要训练它学会识别情绪。

赛事任务

给定人脸照片完成具体的情绪识别,选手需要根据训练集数据构建情绪识别任务,并对测试集图像进行预测,识别人脸的7种情绪。

赛题数据由训练集和测试集组成,训练集数据集按照不同情绪的文件夹进行存放。其中:

  • 训练集:2.8W张人脸图像;

  • 测试集:7K张人脸图像;

为了简化任务赛题图像只包含单张人脸,所有图像的尺寸为48*48像素。数据集包括的情绪标签包括以下7类:

  • angry

  • disgusted

  • fearful

  • happy

  • neutral

  • sad

  • surprised

赛题baseline思路

赛题为一个典型的图像分类任务,所以可以使用CNN来完成图像分类过程。具体实现步骤如下:

  • 定义数据读取和数据扩增

  • 定义CNN模型

  • 模型训练与验证

Keras实现

首先定义网络模型,这里可以自定义一个多层CNN网络模型结构,最后加上全连接层。

model = Sequential()
model.add(Conv2D(16, (5, 5), padding='same', input_shape=(48, 48, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))model.add(Conv2D(32, (5, 5), padding='same', ))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))model.add(Conv2D(32, (5, 5), padding='same', ))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(7, activation="softmax"))model.compile(loss='categorical_crossentropy',optimizer=Adam(learning_rate=0.001),metrics=['accuracy'])

定义数据读取,划分20%数据作为验证集:

train_datagen = ImageDataGenerator(rescale=1./255,validation_split=0.2)val_datagen = ImageDataGenerator(rescale=1./255, validation_split=0.2)

一行代码完成模型训练过程:

model.fit_generator(train_data,epochs=5,validation_data=val_data,validation_steps=200)
model.save_weights('first_try.h5')

Pytorch实现

定义网络模型,这里可以用预训练的CNN网络模型,精度会更高:

class XunFeiNet(nn.Module):def __init__(self):super(XunFeiNet, self).__init__()model = models.resnet18(True)model.avgpool = nn.AdaptiveAvgPool2d(1)model.fc = nn.Linear(512, 7)self.resnet = modeldef forward(self, img):        out = self.resnet(img)return out

定义模型的正常传播和反向传播:

def train(train_loader, model, criterion, optimizer, epoch):model.train()acc1 = []for i, (input, target) in enumerate(train_loader):input = input.cuda(non_blocking=True)target = target.cuda(non_blocking=True)output = model(input)loss = criterion(output, target)acc1.append((output.argmax(1) == target).float().mean().item())optimizer.zero_grad()loss.backward()optimizer.step()if i % 100 == 0:print('Train: {0}'.format(np.mean(acc1)))

完成模型的训练与验证:

model = XunFeiNet().cuda()
criterion = nn.CrossEntropyLoss().cuda()
optimizer = torch.optim.SGD(model.parameters(), 0.003)
best_acc = 0.0
for epoch in range(10):train(train_loader, model, criterion, optimizer, epoch)val_acc = validate(val_loader, model, criterion)

公众号后台,回复“CV”可下载baseline代码,同时可进群加入cv队伍,一起组队参赛

科大讯飞CV赛baseline:图像分类实践+0.55相关推荐

  1. 赛桨PaddleScience v1.0 Beta:基于飞桨核心框架的科学计算通用求解器

    近年来,关于AI for Science的主题被广泛讨论,重点领域包含使用AI方法加速设计并发现新材料,助力高能物理及天文领域的新问题探索,以及加速智慧工业实时设备数据与模型的"数字孪生&q ...

  2. 赛桨PaddleScience v1.0正式版发布,飞桨科学计算能力全面升级!

    AI for Science日益表现出突破传统科学研究能力瓶颈的巨大潜力,正在成为全球科学研究新范式.近年来,各学科不断加入,模型精度.泛化性逐渐提高,不同技术路径.不同应用场景的AI for Sci ...

  3. 百度网盘AI大赛-图像处理挑战赛:文档检测优化赛 Baseline

    转自AI Studio,原文链接:百度网盘AI大赛-图像处理挑战赛:文档检测优化赛 Baseline - 飞桨AI Studio 百度网盘AI大赛-图像处理挑战赛:文档检测优化赛 使用Resnet15 ...

  4. 深度学习笔记(二)图像分类实践

    深度学习笔记(二)图像分类实践 使用keras中的ResNet模型进行图像处理记忆预测 import keras #import tensorflow from keras.applications. ...

  5. 公司项目NODEJS实践0.3[ mongo / session ...]

    一.前言 ⋅⋅⋅书接上回,我们搭建了WEB服务端路由.模板等功能,完成了register 通过ajax与后端的通信,今天主要完成数据与mongodb的存取,实现注册 / 登录 / 退出功能 ⋅⋅⋅DE ...

  6. tomcat7.0.55配置单向和双向HTTPS连接

    HTTPS配置中分为单向连接和双向连接,单向连接只需要服务器安装证书,客户端不需要,双向连接需要服务器和客户端都安装证书 下面的配置都没有用CA签名来配置,都不能用于生产环境,实际配置中是需要CA的, ...

  7. 中国一汽发布L4级智能驾驶技术,解放商用车率先使用;科大讯飞今日将发翻译机2.0版本;阿里巴巴已以50亿控股全球第二大WiFi芯片商乐鑫信息科技

    中国一汽发布L4级智能驾驶技术,解放商用车率先使用 4月18日, 中国一汽解放J7下线暨L4级系列智能车发布活动在山东青岛成功举行.一汽解放全新换代产品J7正式下线,并对外发布L4级系列智能车.未来, ...

  8. “Derivative of state ‘1‘ in block ‘X/Y/Integrator‘ at time 0.55 is not finite“类问题解决办法

    在MATLAB的simulink仿真时有时会遇到如下报错: Derivative of state '1' in block 'X/Y/Integrator' at time 0.55 is not ...

  9. 华数tv直播android,华数tv电视版apk下载-华数TV电视版下载v5.0.0.55 官方最新版__西西安卓tv下载...

    华数tv电视版是华数针对智能电视打造的视频应用,安装了华数TV的智能电视可享受免费高清正版电影.电视剧内容.华数TV实时更新最新的院线大片,与电视台同步上线最新剧集内容,以高清影像.最新内容让用户获得 ...

最新文章

  1. bootstraptable 汇总_JS组件系列——表格组件神器:bootstrap table
  2. 解决VC++ Error spawning cl.exe 问题·
  3. (转)常用正则表达式
  4. server精简版代理意外终止 sql_来自阿里巴巴内部JAVA面试宝典意外流出
  5. Linux下.o,.so,.a,.la文件
  6. 2016开始工作一点谈
  7. mysql jdbc实例_jdbc操作mysql数据库实例
  8. 利用程序动态管理Web.config文件
  9. [APIO2009]抢掠计划
  10. 2008 r2 server 提权_Windows UAC 本地提权(CVE-2019-1388)
  11. Codeforces Round #757 (Div. 2)ABCD1
  12. numpy.ndarray size changed, may indicate binary incompatibil
  13. idea视图化配置html页面,IntelliJ IDEA:配置JavaScript库
  14. 违反计算机安全网络,违反网络安全法规定会受到哪些处罚
  15. Python 玩转数据 3 - NumPy ndarray Array Indexing, Slicing, Striding, View Subarray,Copy Subarray
  16. 《你若安好,便是晴天》
  17. 滴滴如何调度_怎么看待滴滴的调度小助手?_科技数码通
  18. 使用晨曦记账本,记录家庭财政收支明细
  19. H5(HTML)网页制作基础
  20. 【正点原子FPGA连载】第六章Petalinux设计流程实战摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Linux开发指南

热门文章

  1. tensorflow1
  2. 重温Thinking in java
  3. 自定义View步骤学习笔记
  4. api工程IOS学习:在IOS开发中使用GoogleMaps SDK
  5. 动态规划:求最大公共子串
  6. Python字符编码详解
  7. 如何设置matplotlib中x,y坐标轴的位置?
  8. 技术图文:排序技术在求解算法题中的应用
  9. 刻意练习:LeetCode实战 -- Task26.判断子序列
  10. LeetCode实战:旋转链表