【背景描述】
通过结合shuffle block和HRNet(High-Resolution network)得到了轻量级网络Lite-HRNet。该网络提出了一种conditional channel weighting的轻量级权重单元来避免广泛应用1*1卷积核带来的计算瓶颈问题,从而在COCO数据集和MPII数据集上进行语义分割和姿态评估任务取得了良好效果。
【命题内容】
基于MindSpore实现Lite-HRNet模型
【数据集】
COCO2017
MPII(http://human-pose.mpi-inf.mpg.de/#overview)
【参考内容】
论文地址:https://arxiv.org/abs/2104.06403
参考github地址:https://github.com/HRNet/Lite-HRNet
【产出标准】
1.完成Lite-HRNet的model接口的编写;
2.完成参考链接中必要接口的编写,如backbone,cross-resolution,spatial weighting function等(该任务需开发者在任务开始的一个月内进行完善,输出所有必要接口列表);
3.完成端到端的Lite-HRNet模型案例,包括数据加载+算法原理+API代码+运行全流程代码+核心结构伪代码的ipython案例,有COCO数据集姿态检测的可视化结果展示,详细参考DCGAN;
4.输出精度达标的以下10个模型的ckpt文件。
Results on COCO val2017 with detector having human AP of 56.4 on COCO val2017 dataset
Arch | Input Size | #Params | FLOPs | AP | AP^50^ | AP^75^ | AR | AR^50^ | ckpt |
---|---|---|---|---|---|---|---|---|---|
Naive Lite-HRNet-18 | 256x192 | 0.7M | 194.8M | 0.628 | 0.855 | 0.699 | 0.691 | 0.901 | GoogleDrive or OneDrive |
Wider Naive Lite-HRNet-18 | 256x192 | 1.3M | 311.1M | 0.660 | 0.871 | 0.737 | 0.721 | 0.913 | GoogleDrive or OneDrive |
Lite-HRNet-18 | 256x192 | 1.1M | 205.2M | 0.648 | 0.867 | 0.730 | 0.712 | 0.911 | GoogleDrive or OneDrive |
Lite-HRNet-18 | 384x288 | 1.1M | 461.6M | 0.676 | 0.878 | 0.750 | 0.737 | 0.921 | GoogleDrive or OneDrive |
Lite-HRNet-30 | 256x192 | 1.8M | 319.2M | 0.672 | 0.880 | 0.750 | 0.733 | 0.922 | GoogleDrive or OneDrive |
Lite-HRNet-30 | 384x288 | 1.8M | 717.8M | 0.704 | 0.887 | 0.777 | 0.762 | 0.928 | GoogleDrive or OneDrive |
Results on MPII val set
Arch | Input Size | #Params | FLOPs | Mean | Mean@0.1 | ckpt |
---|---|---|---|---|---|---|
Naive Lite-HRNet-18 | 256x256 | 0.7M | 259.6M | 0.853 | 0.305 | GoogleDrive or OneDrive |
Wider Naive Lite-HRNet-18 | 256x256 | 1.3M | 418.7M | 0.868 | 0.311 | GoogleDrive or OneDrive |
Lite-HRNet-18 | 256x256 | 1.1M | 273.4M | 0.854 | 0.295 | GoogleDrive or OneDrive |
Lite-HRNet-30 | 256x256 | 1.8M | 425.3M | 0.870 | 0.313 | GoogleDrive or OneDrive |
【编程语言】
python
【PR提交地址】
https://gitee.com/mindspore/vision
【答题要求】
必须使用昇思MindSpore框架,不得引入Pytroch和Tensorflow等第三方AI框架及其库。
作业提交内容包括精度Benchmark等,格式参考examples/classification/mobilenetv2。
提供该网络模型原论文或者地址提供的所有结构,避免只实现一种结构,并尽可能复用vision套件的API接口。
代码按照开源的方式上传https://gitee.com/mindspore/vision,边开发边上传,每个PR代码按规则不超过300行。
Please assign maintainer to check this issue.
请为此issue分配处理人。
@fangwenyi @chengxiaoli
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
Please add labels (comp or sig), also you can visit https://gitee.com/mindspore/community/blob/master/sigs/dx/docs/labels.md to find more.
为了让代码尽快被审核,请您为Pull Request打上 组件(comp)或兴趣组(sig) 标签,打上标签的PR可直接推送给责任人进行审核。
更多的标签可以查看https://gitee.com/mindspore/community/blob/master/sigs/dx/docs/labels.md
以组件相关代码提交为例,如果你提交的是data组件代码,你可以这样评论:
//comp/data
当然你也可以邀请data SIG组来审核代码,可以这样写:
//sig/data
另外你还可以给这个PR标记类型,例如是bugfix或者是特性需求:
//kind/bug or //kind/feature
恭喜你,你已经学会了使用命令来打标签,接下来就在下面的评论里打上标签吧!
1.Lite-HRNet.py:通过调用其他.py中的函数定义Lite-HRNet的结构
(1)class LiteHRNetLayer(nn.Cell): #定义LiteHRNet中单层
①num_branches,
②num_blocks,
③in_channels,
④reduce_ratio,
⑤module_type,
⑥with_fuse=True
(2)class LiteHRNet(nn.Cell): #定义LiteHRNet整体
①in_channels,
②num_stages,
③stage_cfg,
④stem_cfg
(3)class NaiveLiteHRNet(nn.Cell): #定义NaiveLiteHRNet
①与前者相同
2.Modules.py :定义Lite-HRNet所需各个class
(1)class ConditionalChannelWeighting(nn.Cell):
①in_channels,
②stride,
③reduce_ratio,
(2)class CrossChannelWeighting(nn.Cell):
①channels
②ratio
(3)class SpatialWeighting(nn.Cell):
①channels
②ratio
(4)class IterativeHead(nn.Cell): #Lite-HRNet末尾融合各个分辨率feature map
①in_channels
(5)class Stem(nn.Cell): #Lite-HRNet第一阶段Stem神经网络模块
①in_channels
②stem_channels
③out_channels
④expand_ratio
(6)class FusionBlock(nn.Cell): #Lite-HRNet多分辨率融合
①num_branches
②in_channels
(7)class ShuffleBlock(nn.Cell): #Naive-HRNet中使用
①in_channels
②Out_channels
③stride
(8)class TwoHeatMapSimpleHead(): #从Lite-HRNet输出生成关键点Heatmap
①in_channels
②out_res
③out_channels
3.Utils.py:定义各类函数:
(1)def adaptive_avg_pool_2d(): #自适应2D平均池化函数
①out_size -> array,定义输出维度
(2)def channel_shuffle(): #特征通道重排序函数
①group -> 定义输入通道分组数
4.COCO2017.py 定义训练测试数据读取与预处理:
5.train.py test.py 定义函数训练以及测试:
登录 后才可以发表评论