mlperf_retinanet_pytorch目标检测算法模型

RetinaNet

论文

Focal Loss for Dense Object Detection

模型结构

RetinaNet是一种基于特征金字塔网络(Feature Pyramid Network)和Focal Loss损失函数的目标检测模型,由Facebook AI Research团队在2018年提出。RetinaNet旨在解决传统目标检测算法(如Faster R-CNN)在检测小目标时表现不佳的问题。与传统的目标检测算法相比,RetinaNet具有更高的检测精度和更快的检测速度。它对小目标的检测表现尤为优秀,在各种视觉任务中都取得了很好的效果,例如物体检测、行人重识别等。

RetinaNet的网络结构主要分为两个部分:特征提取网络和检测头。

  1. 特征提取网络:RetinaNet采用了ResNet作为特征提取网络,通过不同深度的ResNet模块对输入图像进行特征提取,得到一系列的特征金字塔图。这些特征金字塔图代表了不同尺度的物体信息,可以用于检测不同大小的目标。
  2. 检测头:RetinaNet的检测头由两个分支组成,一个分支用于预测目标的置信度,另一个分支用于预测目标的边界框。每个分支都由一系列卷积层和全连接层组成,最终输出一个特定数量的预测值。置信度分支使用Focal Loss损失函数来处理正负样本不均衡问题,边界框分支使用Smooth L1 Loss损失函数来计算边界框的误差。

在检测过程中,RetinaNet首先在特征金字塔图上进行目标检测,然后在检测结果中使用非极大值抑制(NMS)来消除重叠的边界框,并保留置信度最高的边界框。

算法原理

RetinaNet网络即ResNet+FPN+FCN网络的组合,损失函数为Focal loss也是one-stage的目标检测算法,最大的贡献就是解决了前景背景种类不均衡问题,让one-stage算法的精度也能达到two-stage的水平。主要是通过重塑了标准的交叉熵损失函数,以减少对容易分类例子的损失,并由此提出来一种新的损失函数Focal Loss,这个损失函数的出现就是为了解决在训练过程中一些稀疏难以区分的样本,可能会被大量容易区分的消极样本压倒的问题。

RetinaNet的主网络部分采用的是FPN结构,两个不同任务的子网络,一个是分类网络,一个是位置回归网络。

环境配置

Docker (方法一)

提供光源拉取的训练的docker镜像:

docker pull image.sourcefind.cn:5000/dcu/admin/base/custom:mlperf_retinanet_mpirun
# <Image ID>用上面拉取docker镜像的ID替换
# <Host Path>主机端路径
# <Container Path>容器映射路径
docker run -it --name mlperf_retinanet --shm-size=32G  --device=/dev/kfd --device=/dev/dri/ --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --ulimit memlock=-1:-1 --ipc=host --network host --group-add video -v <Host Path>:<Container Path> <Image ID> /bin/bash

Dockerfile (方法二)

docker build --no-cache -t mlperf_retinanet:latest .
docker run -it --name mlperf_retinanet --shm-size=32G  --device=/dev/kfd --device=/dev/dri/ --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --ulimit memlock=-1:-1 --ipc=host --network host --group-add video -v <Host Path>:<Container Path> <Image ID> /bin/bash
# <Image ID>用上面拉取docker镜像的ID替换
# <Host Path>主机端路径
# <Container Path>容器映射路径

镜像版本依赖:

  • DTK驱动:dtk22.10
  • python: python3.7.12

测试目录

/root/RetinaNet

数据集

模型训练的数据集来自训练数据:Open Images,该数据一个大规模的图像数据集,由Google在2016年发布。该数据集包含了超过900万张标注图像,其中每张图像都包含了多个物体的边界框和类别标签,可用于各种计算机视觉任务,例如物体检测、物体识别、场景理解等。

该数据集的来源为OpenImages-v6,可按照官方教程进行数据下载,数据大小约为352G;该网络采用的预训练模型为来自ImageNet的ResNeXt50_32x4d,同样可通过上述方式进行自行下载;

数据集的目录结构如下:

<DOWNLOAD_PATH>
│
└───info.json
│
└───train
│   └─── data
│   │      000002b66c9c498e.jpg
│   │      000002b97e5471a0.jpg
│   │      ...
│   └─── metadata
│   │      classes.csv
│   │      hierarchy.json
│   │      image_ids.csv
│   └─── labels
│          detections.csv
│          openimages-mlperf.json
│
└───validation
    └─── data
    │      0001eeaf4aed83f9.jpg
    │      0004886b7d043cfd.jpg
    │      ...
    └─── metadata
    │      classes.csv
    │      hierarchy.json
    │      image_ids.csv
    └─── labels
           detections.csv
           openimages-mlperf.json

训练

单机8卡

单机8卡进行性能&&精度测试

nohup bash sbatch.sh >& bs16_epoch6.log &
#输出结果见bs16_epoch6.log
#注:可通过修改dcu.sh中DATASET_DIR参数按需修改输入数据的位置

result

精度

采用上述输入数据,加速卡采用Z100L * 8,可最终达到官方收敛要求,即34.0% mAP (注:运行完成退出时如有报错可忽略,该bug不影响运行会在下一版本修复)

卡数类型进程数达到精度
8混合精度834.0% mAP

应用场景

算法类别

目标检测

热点应用行业

制造,政府,医疗,科研

源码仓库及问题反馈

参考资料

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要下载Chinese_roberta_wwm_ext_pytorch,首先需要确定下载来源和平台。一般来说,可以在开源社区或者代码托管平台找到该模型的下载链接。在网上搜索“Chinese_roberta_wwm_ext_pytorch下载”可以获得相关的下载资源。 在找到下载链接后,点击链接进入下载页面。根据页面上的指引和说明,选择合适的版本和格式进行下载。通常情况下,会提供预训练好的模型文件和相应的代码。 下载完成后,解压缩模型文件。通常情况下,模型文件会以压缩包的形式进行下载,所以需要解压缩以获得可用的模型文件。 接下来,可以使用Python的torch或者pytorch库进行模型的加载和使用。根据具体的使用场景和需求,可以参考相关的文档和代码示例。 要注意的是,Chinese_roberta_wwm_ext_pytorch是基于PyTorch框架的预训练模型,所以在下载前需要确保已安装PyTorch和相关的依赖库。 总结起来,要下载Chinese_roberta_wwm_ext_pytorch,首先找到下载链接,然后选择合适的版本和格式进行下载,解压缩模型文件,最后使用PyTorch库进行加载和使用。 ### 回答2: chinese_roberta_wwm_ext_pytorch是一个基于PyTorch框架的汉语预训练模型。它是对RoBERTa模型的扩展,专门为中文自然语言处理任务而设计。下载chinese_roberta_wwm_ext_pytorch分为以下几个步骤: 1. 在GitHub上搜索chinese_roberta_wwm_ext_pytorch,找到该模型的开源代码库。 2. 确保你已经安装了PyTorch框架以及其他相关依赖库,如Transformers。 3. 在代码库中找到下载链接,点击链接下载模型文件。通常,该模型文件的格式为.pth或.bin。 4. 下载完成后,将模型文件保存在你的工作目录中,以备后续使用。 使用chinese_roberta_wwm_ext_pytorch模型时,可以参考以下示例代码: ```python import torch from transformers import AutoTokenizer, AutoModel # 加载tokenizer和model tokenizer = AutoTokenizer.from_pretrained("chinese_roberta_wwm_ext_pytorch") model = AutoModel.from_pretrained("chinese_roberta_wwm_ext_pytorch") # 输入文本 text = "这是一个例子。" # 文本编码和模型推理 inputs = tokenizer(text, return_tensors="pt") outputs = model(**inputs) # 获取模型的预测结果 hidden_states = outputs.last_hidden_state ``` 以上代码中,我们首先通过`AutoTokenizer`和`AutoModel`加载了预训练的tokenizer和模型。然后,我们将文本输入通过tokenizer进行编码,生成模型所需的输入张量`inputs`。接下来,我们将编码后的输入传递给模型,得到模型的输出结果`outputs`。最后,我们从输出结果中获取最后一层的隐藏状态`hidden_states`,可用于后续任务。 总结来说,下载chinese_roberta_wwm_ext_pytorch模型需要找到相应的代码库并下载模型文件,然后使用PyTorch框架加载模型和tokenizer,进行文本编码和模型推理。 ### 回答3: chinese_roberta_wwm_ext_pytorch是一个预训练的中文RoBERTa模型,它基于PyTorch实现。RoBERTa在自然语言处理任务中具有很高的性能,可以用于文本分类、词性标注、命名实体识别等多种任务。 要下载chinese_roberta_wwm_ext_pytorch模型,首先需要在互联网上找到可靠的下载源。可以通过搜索引擎或者在GitHub等代码托管平台上查找。找到对应的下载链接后,点击链接进入下载页面。 在下载页面上,一般会提供下载命令或者直接提供预训练模型文件的下载链接。根据页面的提示进行相应的操作即可完成下载过程。 下载完成后,可以将模型文件解压缩到本地的指定目录中,以方便后续使用。通常模型文件会以一个文件夹的形式存在,其中包含了模型的参数、配置文件以及其他相关文件。 下载好模型后,就可以在项目中通过加载模型文件,使用其中的预训练参数进行文本处理任务。使用PyTorch的相关API可以很方便地加载模型,然后将待处理的文本输入模型,获取模型的输出结果。 总之,要下载chinese_roberta_wwm_ext_pytorch模型,需要找到可靠的下载源,按照下载页面的提示进行下载和解压缩,然后在项目中加载模型,使用其进行中文文本处理任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术瘾君子1573

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值