轻量级人脸属性Slim-CNN
文章链接:https://arxiv.org/abs/1907.02157
作者提出了一种micro-architecture 名字叫Slim Module的轻量网络结构,网络结构中使用了depthwise separable convolutions(什么是depthwise separable convolutions,可以只看总结)这种结构,实验数据集是CelebA datasets,获得了91.24%的精度,但是参数与可执行方法相比较(comparable performing methods)少了25倍。
作者的方法
作者提出来的micro-architecture包括以下特点:
1)多分支(如:Inception and ResNets),网络结构中多分支意味着网络中有多条路径可以传递判别性信息(discrimination features);
2)卷积核小(如:VGG-Net and GoogleNet,卷积核大小【1*1,3*3,5*5】),提升网络结构的性能,减少训练参数;
3)skip-connections(跳层连接)
提出的slim module:
然后整体的网络结构细节:
和结构框架:
作者使用了sigmoid cross-entropy loss函数:
根据作者提供的信息,我还没将网络结构搭建出来;
实验1:作者在CelebA上进行几种人脸属性分类方法的横向比较实验:
通过表三,作者想说明,虽然自己的方法不是最好的,但是与平均精度排名第一的论文【4】的方法相比较,所占空间最小7.9M,参数量最少0.6M,而且精度还没有差太多。
实验2:作者将slim-net与其他几种深度学习的微结构(micro-architecture)进行了比较,实验结果:
(实验细节需要自行移步到论文的4.3.2节)
实验3:作者对slim-module中的3*3卷积核的depthwise separable convolutional层的卷积核进行了探究性的实验,
原文链接:https://blog.csdn.net/qq_22764813/article/details/97803221
有预训练 pytorch:
https://github.com/gtamba/pytorch-slim-cnn
torch网络结构:
https://github.com/Joyako/Slim-CNN/blob/master/SlimCNN/slim_cnn.py
import torch
import torch.nn as nn
import torch.nn.functional as Fclass ConvBNReLU(nn.Sequential):def __init__(self, in_planes, out_planes, kernel_size=3, stride=1, groups=1):padding = (kernel_size - 1) // 2super(ConvBNReLU, self).__init__(nn.Conv2d(in_planes, out_planes, kernel_size, stride, padding, groups=groups, bias=False),nn.BatchNorm2d(out_planes),nn.ReLU(inplace=True))class DWSeparableConv(nn.Module):"""Depth-Wise Separable Convolution"""def __init__(self, inp, oup):super().__init__()self.dwc = ConvBNReLU(inp, inp, kernel_size=3, groups=inp)self.pwc = ConvBNReLU(inp, oup, kernel_size=1)def forward(self, x):x = self.dwc(x)x = self.pwc(x)return xclass SSEBlock(nn.Module):"""Separable Squeeze-Expand Block"""def __init__(self, inp, oup):super().__init__()out_channel = oup * 4self.pwc1 = ConvBNReLU(inp, oup, kernel_size=1)self.pwc2 = ConvBNReLU(oup, out_channel, kernel_size=1)self.dwc = DWSeparableConv(oup, out_channel)def forward(self, x):x = self.pwc1(x)out1 = self.pwc2(x)out2 = self.dwc(x)return torch.cat((out1, out2), 1)class SlimModule(nn.Module):def __init__(self, inp, oup):super().__init__()hidden_dim = oup * 4out_channel = oup * 3self.sse1 = SSEBlock(inp, oup)self.sse2 = SSEBlock(hidden_dim * 2, oup)self.dwc = DWSeparableConv(hidden_dim * 2, out_channel)self.conv = ConvBNReLU(inp, hidden_dim * 2, kernel_size=1)def forward(self, x):out = self.sse1(x)out += self.conv(x)out = self.sse2(out)out = self.dwc(out)return outclass SlimNet(nn.Module):def __init__(self, num_classes):super().__init__()self.conv = ConvBNReLU(3, 96, kernel_size=7, stride=2)self.max_pool0 = nn.MaxPool2d(kernel_size=3, stride=2)# 4 stacked Slim Moduleself.module1 = SlimModule(96, 16)self.module2 = SlimModule(48, 32)self.module3 = SlimModule(96, 48)self.module4 = SlimModule(144, 64)self.max_pool1 = nn.MaxPool2d(kernel_size=3, stride=2)self.max_pool2 = nn.MaxPool2d(kernel_size=3, stride=2)self.max_pool3 = nn.MaxPool2d(kernel_size=3, stride=2)self.max_pool4 = nn.MaxPool2d(kernel_size=3, stride=2)self.gap = nn.AdaptiveAvgPool2d((1, 1))self.fc = nn.Linear(192, num_classes)def forward(self, x):x = self.max_pool0(self.conv(x))x = self.max_pool1(self.module1(x))x = self.max_pool2(self.module2(x))x = self.max_pool3(self.module3(x))x = self.max_pool4(self.module4(x))# global average poolingx = self.gap(x)x = torch.flatten(x, 1)x = self.fc(x)x = F.sigmoid(x)return xfrom torchstat import stat
net =SlimNet(4)
stat(net, (3, 178, 218))
轻量级人脸属性Slim-CNN相关推荐
- 【每周CV论文推荐】 初学深度学习人脸属性分析必读的文章
欢迎来到<每周CV论文推荐>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的. 人脸属性分析在社交娱乐,人机交互等领域有重要 ...
- LFFD:轻量级人脸检测器,不止是快
点击我爱计算机视觉标星,更快获取CVML新技术 上面的gif图展示的是LFFD人脸检测算法,在Nvidia GPU上对1080P的图像可以跑到16ms左右. 该算法出自论文: LFFD: A Ligh ...
- 基于深度学习的多任务人脸属性分析(基于飞桨PaddlePaddle)
目录 一.概述 1.1 多任务人脸属性分析 1.2 本文任务 二.环境配置 2.1 安装PaddlePaddle 2.2 安装PaddleClas 三.算法模型开发 3.1 算法原理 3.2 数据集准 ...
- 【每周CV论文推荐】StyleGAN人脸属性编辑有哪些经典论文需要阅读
欢迎来到<每周CV论文推荐>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的. 当前人脸图像领域的研究和落地都发展得非常迅速 ...
- 最强六大开源轻量级人脸检测项目分析
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 随着深度学习的兴起,工业界和学术界越来越多的使用基于深度学习的方法 ...
- 【CV】10种轻量级人脸检测算法大PK | 代码集合开源
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 最近在微信公众号 AIZOO 里看到轻量级人脸检测算法大盘点的文章 ...
- 大盘点|轻量级人脸检测算法实现,快到没朋友的都在这里了~
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 整理:公众号@OpenCV中文网 本文仅做学术分享,如有侵权,请联系删除. 人脸检测是计算机视觉中的老 ...
- 「每周CV论文推荐」 初学深度学习人脸属性分析必读的文章
人脸属性分析在社交娱乐,人机交互等领域有重要的作用,本次我们介绍初学人脸属性分析需要读的文章,包括年龄,表情等. 作者&编辑 | 言有三 1 IMDB-WIKI 人脸年龄的估计包括真实年龄和表 ...
- 离线人脸属性分析_最新开源 | 人脸识别应用套件:毫秒级离线识别 适用多类场景...
随着人脸识别技术的不断发展,尤其是在部分算法平台对外开放算法之后,人脸识别的应用门槛得到了极大降低.但是从算法到一款真正可落地的人脸识别产品,在完整的应用开发中,不仅需要考虑底层算法的运行逻辑,也需要 ...
最新文章
- 2014年新鲜出炉的16款免费英文字体
- Silverlight中服务通信方式的选择(WCF、Data Service、Ria Service)
- 01 Servlet Jsp 技术概述
- 题目:求100以内的全部素数,每行输出10个。1不是素数
- 2003系统虚拟dns服务器向导,安装和管理dns服务器.doc
- 如何优化Flash动画使文件更小播放更流畅
- 汽车电子技术——CAN总线系统
- snagit 注册码
- drive翻译成中文_drive是什么意思_drive翻译_读音_用法_翻译
- 表单中enter键,导致表单提交
- 经典拼数字游戏NumPuzzle C# By Red_angelX
- 多线程处理Excel导入数据入库
- 树莓派之树莓派系统安装
- 李永乐(七)向量组的秩、矩阵的秩——笔记
- 新加坡网络安全软件公司【Republic Power 】申请纳斯达克IPO上市
- CCF中国开源大会开源雨林论坛丨七大亮点议题抢鲜看!
- 19.系统知识-数字证书
- 计算机屏幕广播系统,ip网络广播终端_ip广播终端连接图_ip广播系统方案
- 通俗易懂谈上拉电阻与下拉电阻
- 前端js打开pdf文件--文件通过浏览器打开,以pdf形式进行预览