企业网站改版新闻海会网络建设网站
2026/5/21 11:55:54 网站建设 项目流程
企业网站改版新闻,海会网络建设网站,织梦源码免费下载,营销策划咨询公司一. LightWeight概述 light weight openpose是openpose的简化版本#xff0c;使用了openpose的大体流程。 Light weight openpose和openpose的区别是#xff1a; a 前者使用的是Mobilenet V1#xff08;到conv5_5#xff09;#xff0c;后者使用的是Vgg19#xff08;前10…一. LightWeight概述light weight openpose是openpose的简化版本使用了openpose的大体流程。Light weight openpose和openpose的区别是a 前者使用的是Mobilenet V1到conv5_5后者使用的是Vgg19前10层。b 前者部分层使用了空洞卷积dilated convolution来提升感受视野后者使用一般的卷积。c 前者卷积核大小为3*3后者为7*7。d 前者只有一个refine stage后者有5个stage。e 前者的initial stage和refine stage里面的两个分支hotmaps和pafs使用权值共享后者则是并行的两个分支二. LightWeight的网络结构openpose的每个stage使用下图中左侧的两个并行的分支分别预测hotmaps和pafs为了进一步降低计算量light weight openpose中将前几层进行权值共享如下图右侧所示。其网络流程三. LightWeight的网络结构代码import torch from torch import nn from modules.conv import conv, conv_dw, conv_dw_no_bn class Cpm(nn.Module): def __init__(self, in_channels, out_channels): super().__init__() self.align conv(in_channels, out_channels, kernel_size1, padding0, bnFalse) self.trunk nn.Sequential( conv_dw_no_bn(out_channels, out_channels), conv_dw_no_bn(out_channels, out_channels), conv_dw_no_bn(out_channels, out_channels) ) self.conv conv(out_channels, out_channels, bnFalse) def forward(self, x): x self.align(x) x self.conv(x self.trunk(x)) return x class InitialStage(nn.Module): def __init__(self, num_channels, num_heatmaps, num_pafs): super().__init__() self.trunk nn.Sequential( conv(num_channels, num_channels, bnFalse), conv(num_channels, num_channels, bnFalse), conv(num_channels, num_channels, bnFalse) ) self.heatmaps nn.Sequential( conv(num_channels, 512, kernel_size1, padding0, bnFalse), conv(512, num_heatmaps, kernel_size1, padding0, bnFalse, reluFalse) ) self.pafs nn.Sequential( conv(num_channels, 512, kernel_size1, padding0, bnFalse), conv(512, num_pafs, kernel_size1, padding0, bnFalse, reluFalse) ) def forward(self, x): trunk_features self.trunk(x) heatmaps self.heatmaps(trunk_features) pafs self.pafs(trunk_features) return [heatmaps, pafs] class RefinementStageBlock(nn.Module): def __init__(self, in_channels, out_channels): super().__init__() self.initial conv(in_channels, out_channels, kernel_size1, padding0, bnFalse) self.trunk nn.Sequential( conv(out_channels, out_channels), conv(out_channels, out_channels, dilation2, padding2) ) def forward(self, x): initial_features self.initial(x) trunk_features self.trunk(initial_features) return initial_features trunk_features class RefinementStage(nn.Module): def __init__(self, in_channels, out_channels, num_heatmaps, num_pafs): super().__init__() self.trunk nn.Sequential( RefinementStageBlock(in_channels, out_channels), RefinementStageBlock(out_channels, out_channels), RefinementStageBlock(out_channels, out_channels), RefinementStageBlock(out_channels, out_channels), RefinementStageBlock(out_channels, out_channels) ) self.heatmaps nn.Sequential( conv(out_channels, out_channels, kernel_size1, padding0, bnFalse), conv(out_channels, num_heatmaps, kernel_size1, padding0, bnFalse, reluFalse) ) self.pafs nn.Sequential( conv(out_channels, out_channels, kernel_size1, padding0, bnFalse), conv(out_channels, num_pafs, kernel_size1, padding0, bnFalse, reluFalse) ) def forward(self, x): trunk_features self.trunk(x) heatmaps self.heatmaps(trunk_features) pafs self.pafs(trunk_features) return [heatmaps, pafs] class PoseEstimationWithMobileNet(nn.Module): def __init__(self, num_refinement_stages1, num_channels128, num_heatmaps19, num_pafs38): super().__init__() self.model nn.Sequential( conv( 3, 32, stride2, biasFalse), conv_dw( 32, 64), conv_dw( 64, 128, stride2), conv_dw(128, 128), conv_dw(128, 256, stride2), conv_dw(256, 256), conv_dw(256, 512), # conv4_2 conv_dw(512, 512, dilation2, padding2), conv_dw(512, 512), conv_dw(512, 512), conv_dw(512, 512), conv_dw(512, 512) # conv5_5 ) self.cpm Cpm(512, num_channels) self.initial_stage InitialStage(num_channels, num_heatmaps, num_pafs) self.refinement_stages nn.ModuleList() for idx in range(num_refinement_stages): self.refinement_stages.append(RefinementStage(num_channels num_heatmaps num_pafs, num_channels, num_heatmaps, num_pafs)) def forward(self, x): backbone_features self.model(x) backbone_features self.cpm(backbone_features) stages_output self.initial_stage(backbone_features) for refinement_stage in self.refinement_stages: stages_output.extend( refinement_stage(torch.cat([backbone_features, stages_output[-2], stages_output[-1]], dim1))) return stages_output四. LightWeight是怎么去识别跌倒呢LightWeight可以检测到人体的关键点所以可以通过两种方式来判断是否跌倒第一种方法是通过计算角度第二种方式是通过判断整体的关键点把抠出的关键点图送入到分类网络本文的做法是第二种方式五. LightWeight的演示效果具有图片和摄像头识别功能演示视频基于深度学习LightWeight的人体姿态检测跌倒系统源码_哔哩哔哩_bilibili六. 整个工程的内容提供源代码模型提供GUI界面代码项目完整文件下载请见演示与介绍视频的简介处给出➷➷➷https://www.bilibili.com/video/BV1CBz5YDEgU/

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询