164 Star 1K Fork 236

MindSpore / community

 / 详情

基于MindSpore实现Lite-HRNet模型

DONE
Task-Tracking
创建于  
2022-04-14 19:43

【背景描述】
通过结合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行。

评论 (4)

wanghaocong 创建了Task-Tracking

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
恭喜你,你已经学会了使用命令来打标签,接下来就在下面的评论里打上标签吧!

wanghaocong 修改了描述
wanghaocong 修改了描述
fangwenyi 任务状态TODO 修改为ACCEPTED
fangwenyi 负责人设置为ZOMI酱
wanghaocong 修改了描述
wanghaocong 修改了描述
wanghaocong 修改了描述
wanghaocong 修改了描述
wanghaocong 修改了描述
wanghaocong 修改了描述
wanghaocong 修改了描述
wanghaocong 修改了标题

蔡诚宗,深研院,认领

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 定义函数训练以及测试:

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(3)
1
https://gitee.com/mindspore/community.git
git@gitee.com:mindspore/community.git
mindspore
community
community

搜索帮助