cornernet_cornernet网络结构

网络 阅读: 2023-10-19 02:00:27
欧意最新版本

欧意最新版本

欧意最新版本app是一款安全、稳定、可靠的数字货币交易平台。

APP下载  官网地址

本文带来了【cornernet】内容供参考阅读,并对相关内容cornernet网络结构进行了分析,下面就跟随币王网小编一起了解cornernetcornernet网络结构。

cornernet转tensorrt

cornernet转成tensorrt时需要利用中间件onnx,所以第一步需要将pytorch模型转成onnx格式

ONNX:

2.1ONNXOverview

开放式神经网络交换(ONNX)是迈向开放式生态系统的第一步,它使AI开发人员能够随着项目的发展选择合适的工具。ONNX为AI模型提供开源格式。它定义了可扩展的计算图模型,以及内置运算符和标准数据类型的定义。最初的ONNX专注于推理(评估)所需的功能。ONNX解释计算图的可移植,它使用graph的序列化格式。它不一定是框架选择在内部使用和操作计算的形式。例如,如果在优化过程中操作更有效,则实现可以在存储器中以不同方式表示模型。

2.2ONNXmodel:

模型结构的主要目的是将元数据(metadata)与图形(graph)相关联,图形包含所有可执行元素。首先,读取模型文件时使用元数据,为实现提供所需的信息,以确定它是否能够:执行模型,生成日志消息,错误报告等功能。此外元数据对工具很有用,例如IDE和模型库,它需要它来告知用户给定模型的目的和特征。

2.2.1ONNXOperatorSets:

每个模型必须明确命名它依赖于其功能的运算符集。操作员集定义可用的操作符,其版本和状态。每个模型按其域定义导入的运算符集。所有模型都隐式导入默认的ONNX运算符集。

2.2.2ONNXOperator

图(graph)中使用的每个运算符必须由模型(model)导入的一个运算符集明确声明。

2.3.1ONNXGraph

序列化图由一组元数据字段(metadata),模型参数列表(alistofmodelparameters,)和计算节点列表组成(alistofcomputationnodes)。

每个计算数据流图被构造为拓扑排序的节点列表,这些节点形成图形,其必须没有周期。每个节点代表对运营商的呼叫。每个节点具有零个或多个输入以及一个或多个输出。

复现代码安装好包,怎么运行

复现代码安装好包运行:

可以直接开始在自己的系统上运行CornerNet,通过代码的运行了解何为CornerNet。

其次,可以先从U-net的复现开始,其复现也很简单,我已将代码调好,注释完善,环境要求都做了备注,可以从该代码的复现深入了解深度学习中的池化和采样过程。U-net代码实现CPU版本。

CornerNet是一种比较新颖的目标检测方法,使用沙漏网络作为其骨干网络,将之前的anchor boxes(最早出现在Faster R-CNN中)改为检测目标的一对关键点。

目标检测Anchor-free分支:基于关键点的目标检测

cornerNer论文链接:

github:

CenterNet论文链接:

github:

CornerNe-Lite论文链接:

github:

所谓基于关键点进行目标检测,其实就是使用one-stage网络将目标边界框检测为一对关键点(即边界框的左上角和右下角)。通过将目标检测为成对关键点,就可消除现有的one-stage检测网络中对一组anchors的需要,这个最近火热的anchor-free也是不谋而合。接下来,先简单介绍下CornetNet和CenterNet这两个基于特征点的目标检测网络。最后对CornerNet-Squeeze做个简单介绍!

CornerNet网络的整体思路是,首先通过Hourglass Network网络进行特征提取,紧接着将网络得到的特征输入到两个模块: Top-left Corner pooling 和 Bottom-right Corner pooling 提取关键点的特征,对于每个Corner Pooling模块都会进行目标框的左上角关键点和右下角关键点的类别分类( Heatmaps ),并找到每个目标的一对关键点( Embeddings ),以及减少基于坐标回算目标目标位置时的偏置( offsets )。网络的整体结构图如下:

很显然,CornerNet的核心是四个部分:

最终,如下图所示,上半支路的网络结果如下所示,网络最终是由两条支路组成的。

CenterNet网络主要是基于CornerNet网络存在的问题,而提出的基于关键点目标检测的网络。其实现了目前为止在one-stage系类算法中最高的MAP。CenterNet的作者发现,CornerNet是通过检测物体的左上角点和右下角点来确定目标,但在此过程中CornetNet使用corner pooling仅仅能够提取到目标边缘的特征,而导致CornetNet会产生很多的误检。基于此,CenterNet利用关键点 三元组 即 中心点、左上角关键点和右下角关键点 三个关键点而不是两个点来确定一个目标,使得网络能够获取到目标内部的特征。而CornerNet在论文中也说道了,约束其网络性能最重要的部分是关键点的提取,因此CenterNet提出了 Center Pooling 和 cascade corner Pooling 用来更好的提取本文提出的三个关键点。

作者基于Corner Pooling的系列思想,提出了Center Pooling的思想,使得网络提取到的中心点特征能够更好的表征目标物体。

最终,CenterNet在CornerNet的基础上增加了中心点的预测,以及修改了关键点特征的提取方式,大大减小了网络的误检,并且实现了one-stage系列算法中的最好效果。

普林斯顿大学在4月19号提出了两种更高效的基于关键点的目标检测算法,分别为: CornetNet-Saccade 和 CornetNet-Squeeze ,若将两种策略结合则称为 CornerNet-Lite 。

以下是Cver对这两个网络的介绍,个人感觉写的很好,我就不造轮子了:

最终我最感兴趣的网络CornerNet-Squeeze和YOLOv3进行对比,达到了如下图所示的效果。

然而,就在我学习并总结这篇文章的过程中,我发现CornerNet-Squeeze是基于CornerNet改进的,但正如上文中介绍CenterNet的时候提到过的CornerNet所具有的那些弊端,我总觉得CornerNet-Squeeze在误检的部分不一定会很优秀,所以接下来就是看源码阶段了,希望CornerNet-Squeeze能够不负我望哈~

有关cornernetcornernet网络结构分享到这里,想要阅读更多相关内容请关注币王网。

本文 原创,转载保留链接!网址:https://licai.bangqike.com/lzs/148036.html

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

扫一扫关注我们,了解最新精彩内容

搜索