【三维目标检测】Complex-Yolov4详解(二):模型结构

        Complex-Yolo网络模型的核心思想是用鸟瞰图BEV替换Yolo网络输入的RGB图像。因此,在完成BEV处理之后,模型的训练和推理过程基本和Yolo完全一致。Yolov4中输入的RGB图片的尺寸维度为608x608x3,因此BEV的尺寸维度也为608x608x3,由强度图、高度图和密度图组成。

        Complex-Yolov4的数据处理部分详细介绍请参考:详细理解Complex-Yolo(Complex Yolov4)目标检测>三维目标检测算法 — 数据处理(一)_Coding的叶子的博客-CSDN博客。Yolov4的详细介绍网上已经有较多资料进行了详细分析,例如:yolov4的全面详解_无尽的沉默的博客-CSDN博客_yolov4。关于Yolov4的原理,本文不进行详细介绍,仅重点介绍一些需要改动的地方。

        算法参考来源于Github上的Complex Yolov4,地址为:https://github.com/maudzung/Complex-YOLOv4-Pytorch。

1 模型数据输入

        上一节http分析得出,数据处理后主要返回img_file、rgb_map、targets。假设Batch Size大小为B。img_file存储了image_2中对应图片的路径列表,长度为B。Rgb_map是维度为Bx3X608x608的BEV鸟瞰图。targets为真实标签,Mx8,M为目标总数量,真实标签target由8个维度组成,即batch_id、class_id、x、y、w、l、im、re。其中,x、y、w、l、rz转换成yolo格式,其中rz用欧拉公式转换为虚部(im)和实部(re)。

        实际上,获取了鸟瞰图和真实值标签之后,就是一个完整的Yolo目标检测,可以应用在多种二维目标检测网络,不局限于Yolo系列。下面模型的描述部分也基本是对yolov4的描述。

2 锚框anchor设计

        锚框基本原理:深度学习目标检测分为两类,即有锚框和无锚框。针对有锚框的目标检测,算法的思路大致是:(1)设计大量的锚框作为候选框;(2)对锚框进行分类和回归,得到最终的目标类别和位置。锚框分为正样本和负样本,正样本是指与真实目标框重叠超过指定阈值的锚框,反之负样本是指与真实目标框目标框重叠小于指定阈值的锚框。对于正样本锚框,我们需要计算其与真实目标框之间的偏差,包括中心坐标、长宽、角度等的偏差,算法回归是这个偏差就是需要回归得到的真实值。

        Complex-Yolov4锚框设计:考虑在鸟瞰图视角下,同一类目标的长宽尺寸变化不大,但是目标存在方向信息,所以在设计锚框的时候,本文根据数据集内的外接框分布,定义了三种不同尺寸和两个角度方向:i)车辆尺寸(朝上);i i)车辆尺寸(朝下);i i i)自行车尺寸(朝上);i v)自行车尺寸(朝下);v)行人尺寸(朝左)。

        锚框anchor的具体设计过程可以参考:三维点云目标检测 — VoxelNet详解之数据处理 (二)_Coding的叶子的博客-CSDN博客。

3 模型结构

        模型的网路结构与Yolov4基本完全一致,其结构图如下所示。Yolov4的详细介绍网上已经有较多资料进行了详细分析,例如:https://blog.csdn.net/hgnuxc_1993/article/details/120724812。关于Yolov4的原理,本文不进行详细介绍,仅重点介绍一些需要改动的地方。

图片

        (1)与Yolov4一样,每个位置设置三种尺寸的锚框。

        (2)Yolov4针对COCO数据集是有80个类别,而Complex-Yolov4主要针对车辆、行人和自行车三种类别,因此预测类别置信度时占据三个维度。

        (3)针对每一个锚框,共有10个维度输出,即x、y、w、h、im、re、conf、cls(3类)。

         (4)模型最终输出维度为Bx22743x10,其中22743为锚框的个数,即76x76x3+38x38x3+19x19x3。

        (5)在损失函数方面,Complex-Yolo将角度利用欧拉变换转换成了实部和虚部,因次损失函数增加了角度损失。

4 预训练模型检测效果可视化

        预训练模型下载地址为https://drive.google.com/drive/folders/16zuyjh0c7iiWRSNKQY7CnzXotecYN5vc,如果这个地址下载不了,csdn中的下载地址为:complex_yolov4_pytorch预训练模型-深度学习文档类资源-CSDN下载。

        运行命令如下:

python test.py --gpu_idx 0 --pretrained_path ../checkpoints/complex_yolov4/complex_yolov4_mse_loss.pth --cfgfile ./config/cfg/complex_yolov4.cfg --show_image

 

python三维点云从基础到深度学习_Coding的叶子的博客-CSDN博客_python三维点云重建

更多三维、二维感知算法和金融量化分析算法请关注“乐乐感知学堂”微信公众号,并将持续进行更新。


http://www.niftyadmin.cn/n/1257534.html

相关文章

【mmdetection】mmdetection安装详细步骤

mmdetection是由商汤科技和香港中文大学开源了一个基于Pytorch实现的深度学习计算机视觉工具箱,涵盖了目标检测、实例分割、全景分割、模型蒸馏等计算机视觉任务,复现了最新的一些论文和成果,特别是包括了大量CVPR论文的复现。 1 项目地址 项…

KeyError: ‘Cascade Mask R-CNN‘

在安装mmdetection之后,我们可能会按照官方文档来验证是否安装成功。而验证的第一步是下载预训练模型,运行命令为: mim download mmdet --config yolov3_mobilenetv2_320_300e_coco --dest . 运行完之后,在当前目录下会下载到两个…

【mmdetection3d】mmdetection3d安装详细步骤

MMDetection3D 是一个基于 PyTorch 的目标检测开源工具箱, 下一代面向3D检测的平台. 它是 OpenMMlab 项目的一部分,这个项目由香港中文大学多媒体实验室和商汤科技联合发起,涵盖了3D目标检测、单目3D目标检测、多模态3D目标检测、3D语义分割等三维深度学…

【点云格式互转】ply转bin、任意点云格式转ply

3D点云存储方式的种类较多,包括pcd、ply、txt、bin、obj等格式,各种点云格式的详细介绍请参考之前的博客:点云格式介绍(更新中,待补充)_Coding的叶子的博客-CSDN博客_txt点云格式。本节主要介绍ply格式转bi…

【深度学习】参数量、模型大小、显存

对于一个深度学习神经网络来说,其通常包含很多卷积层,用于不断提取目标的特征,或对目标进行最终定位或者分类。 1 数据存储精度与存储空间 在深度学习神经网络中,最常见的数据格式是float32,占4个字节(Byt…

【深度学习】为什么三维卷积数据量大

我们可能会经常听到在三维领域深度学习的参数量会非常庞大,以至于三维卷积的深度学习方不太适用。那么三维深度学习的参数量究竟是什么情况,本文将进行具体分析。 上一节,我们研究了深度学习神经网络中参数量、模型大小和显存大小之间的相互关…

Descriptors cannot not be created directly

1 Descriptors cannot not be created directly 在运行诸如深度学习python等程序时,如mmdetection、mmdetection3d中的程序,会出现报错:“Descriptors cannot not be created directly”。详细报错如下: TypeError: Descriptors c…

mmdetection3d 训练

本节以SECOND算法为例,简要介绍mmdetection3d second算法训练过程,含数据和python源码详细介绍。 1 mmdetection3d环境安装 mmdetection3d环境详细安装和调试请参考:【mmdetection3d】mmdetection3d安装详细步骤_Coding的叶子的博客-CSDN博客…