当前位置: 首页 > news >正文

HR_net逐步实现过程(2.2)

1.numpy实现数组卷积操作

这里是一个矩阵,换个图试一下

import numpy as np
#输入数组
input_image=np.array([[1,2,3],[4,5,6],[7,8,9]])
#卷积核
kernel=np.array([[1,0],[0,1]])
#卷积操作
output_image=np.zeros((2,2))
for i in range(2):for j in range(2):output_image[i][j]=(input_image[i:i+2,j:j+2]*kernel).sum()
print(output_image)

1.1图像卷积,使用numpy实现卷积

深度理解卷积--使用numpy实现卷积_numpy 卷积-CSDN博客

可以参考这篇文章写的很好。

另一篇是用python实现卷积操作_python 卷积-CSDN博客

1.2json的作用是什么?

        对于简单的数据集进行分类,可以用txt的形式对标签进行存储。但是对于目标检测中,标签不仅包含分类标签,还包含了检测目标的位置信息,因此采用json这种轻量级的数据交换格式,可以将不同的信息打包成一个个模块,并将这些模块按照一定顺序存储在json文件中,读文件时只需要根据关键字对相应的模块进行解析,即可得到该模块的打包信息。

        之后就可以对json文件进行解析,有很多现成的c++/c库用于解析json文件,但是比较麻烦。自己可以找找。

2.项目文件夹内容

checkpoint、outputs、data文件夹分别用来存放模型预训练权重、模型输出结果、训练数据

2.1预训练模型推理

        在进行姿态估计前需要目标检测将不同的目标检测出来,然后再分别对不同的目标进行姿态估计。所以选择一个目标检测模型。

        这里选择 mmdetection工具箱中的faster_rcnn中的resnet50模型文件。配置文件位于

demo/faster_rcnn_r50_fpn_1x_coco-person.py

权重文件

https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco-person/'
'faster_rcnn_r50_fpn_1x_coco-person_20201216_175929-d022e227.pth'

3.模型搭建

3.1定义一个3*3的卷积

#in_planes输入特征通道数
#out_planes输出特征通道数
#stride步长,默认为1
#定义一个3*3卷积,参数包括输入特征通道数,输出特征通道数,返回一个
def conv3x3(in_planes,out_planes,stride=1):return nn.Conv2d(in_planes,out_planes,kernel_size=3,stride=stride,padding=1,bias=False)
#Conv2d对由多个输入平面组成的输入信号进行二维卷积

参考教程pytorch之torch.nn.Conv2d()函数详解-CSDN博客

class BasicBlock(nn.Module):expansion=1def __init__(self,inplanes,planes,stride=1,downsample=None):super(BasicBlock,self).__init__()#第一句话,调用父类的构造函数self.conv1=conv3x3(inplanes,planes,stride)self.bn1=nn.BatchNorm2d(planes,momentum=BN_MOMENTUM)#归一化处理。

nn.BatchNorm2d含义:【深入理解Batch Normalization(3)】pytorch——nn.BatchNorm2d()函数-CSDN博客

作用:在卷积神经网络的卷积层之后总会添加BatchNorm2d进行数据的归一化处理,这使得数据在进行Relu之前不会因为数据过大而导致网络性能的不稳定。

相关文章:

  • 创建一个郭德纲相声GPTs
  • Intro project based on BERT
  • PHP进阶-实现网站的QQ授权登录
  • 一文讲透使用SPSS统计分析软件进行数据行列转置
  • python_数据可视化_pandas_导入excel数据
  • 静态网页设计——个人图书馆(HTML+CSS+JavaScript)(dw、sublime Text、webstorm、HBuilder X)
  • ROS2 Humble学习笔记
  • Android 输入系统介绍
  • 微信小程序实战-02翻页时钟-2
  • NACHI机器人模拟示教器如何切换中文
  • 初学者的基本 Python 面试问题和答案
  • AlexNet论文精读
  • 领域驱动模型之各层实体严格分层处理
  • Git分支学习
  • 考研个人经验总结【心理向】
  • Javascript基础之Array数组API
  • Laravel 菜鸟晋级之路
  • LeetCode29.两数相除 JavaScript
  • leetcode386. Lexicographical Numbers
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Objective-C 中关联引用的概念
  • PaddlePaddle-GitHub的正确打开姿势
  • Redash本地开发环境搭建
  • Redis的resp协议
  • spring + angular 实现导出excel
  • Sublime text 3 3103 注册码
  • 安卓应用性能调试和优化经验分享
  • 构建二叉树进行数值数组的去重及优化
  • 警报:线上事故之CountDownLatch的威力
  • 排序(1):冒泡排序
  • 详解NodeJs流之一
  • 小程序 setData 学问多
  • 学习ES6 变量的解构赋值
  • 正则与JS中的正则
  • Nginx实现动静分离
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​flutter 代码混淆
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​水经微图Web1.5.0版即将上线
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • $.ajax()方法详解
  • (1)(1.13) SiK无线电高级配置(六)
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (转载)CentOS查看系统信息|CentOS查看命令
  • **PHP二维数组遍历时同时赋值
  • .form文件_SSM框架文件上传篇
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .Net Core和.Net Standard直观理解
  • .net mvc部分视图
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅