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

工程造价建设信息网站做网站一年的维护费用是多少

工程造价建设信息网站,做网站一年的维护费用是多少,wordpress 读者墙不显示头像,网站推广策划思路的内容文章目录 摘要安装基础环境新建虚拟环境安装pytorch安装openmim、mmengine、mmcv安装 MMDetection验证安装配置OV-DINO环境 MMDetection的MM-Grounding-DINO详细介绍测试结果Zero-Shot COCO 结果与模型Zero-Shot LVIS ResultsZero-Shot ODinW#xff08;野生环境下的目标检测野生环境下的目标检测结果ODinW13的结果和模型ODinW35的结果和模型 零样本指代表达式理解结果零样本描述检测数据集DODPretrain Flickr30k Results通过微调验证预训练模型的泛化能力RTTSRUODBrain TumorCityscapesPeople in PaintingCOCOLVIS 1.0RefEXPRefCOCORefCOCORefCOCOggRefCOCO MM-GDINO-T 预训练数据准备和处理用到的数据集1 Objects365 v12 COCO 20173 GoldG4 GRIT-20M5 V3Det6 数据切分和可视化 MM-GDINO-L 预训练数据准备和处理用到的数据集1 Object365 v22 OpenImages v63 V3Det4 LVIS 1.05 COCO2017 OD6 GoldG7 COCO2014 VG8 Referring Expression Comprehension9 GRIT-20M 评测数据集准备1 COCO 20172 LVIS 1.03 ODinW4 DOD5 Flickr30k Entities6 Referring Expression Comprehension 微调数据集准备1 COCO 20172 LVIS 1.03 RTTS4 RUOD5 Brain Tumor6 Cityscapes7 People in Painting8 Referring Expression Comprehension 推理与微调MM Grounding DINO-T 模型权重下载推理评测评测数据集结果可视化模型训练预训练自定义格式说明 自定义数据集微调训练案例1 数据准备2 配置准备3 可视化和 Zero-Shot 评估4 模型训练 模型自训练伪标签迭代生成和优化 pipeline1 目标检测格式2 Phrase Grounding 格式 摘要 基础环境Ubuntu 22.04、CUDA 11.7 安装基础环境 新建虚拟环境 conda create --name openmm python3.9输入y。 安装pytorch conda install pytorch2.0.0 torchvision0.15.0 torchaudio2.0.0 pytorch-cuda11.7 -c pytorch -c nvidia安装openmim、mmengine、mmcv pip install -U openmim mim install mmengine mim install mmcv2.0.0rc4这里不要用如果使用了默认安装最新版本不兼容所以使用安装最低要求的版本即可 注意 在 MMCV-v2.x 中mmcv-full 改名为 mmcv如果你想安装不包含 CUDA 算子精简版可以通过 mim install mmcv-lite2.0.0rc1 来安装。 安装编译mmcv时间很长如上图如果不想安装编译可以使用编译好的库链接 https://mmcv.readthedocs.io/en/latest/get_started/installation.html 安装本机的环境安装编译 安装 MMDetection 下载MMdetection代码链接https://github.com/open-mmlab/mmdetection, 下载后解压进入到根目录。或者直接使用git获取源码如下 git clone https://github.com/open-mmlab/mmdetection.git cd mmdetection pip install -v -e . # -v 指详细说明或更多的输出 # -e 表示在可编辑模式下安装项目因此对代码所做的任何本地修改都会生效从而无需重新安装。或者将 mmdet 作为依赖或第三方 Python 包使用 MIM 安装 mim install mmdet验证安装 为了验证 MMDetection 是否安装正确我们提供了一些示例代码来执行模型推理。 步骤 1. 我们需要下载配置文件和模型权重文件。 mim download mmdet --config rtmdet_tiny_8xb32-300e_coco --dest .下载将需要几秒钟或更长时间这取决于你的网络环境。完成后你会在当前文件夹中发现两个文件 rtmdet_tiny_8xb32-300e_coco.py 和 rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth。 步骤 2. 推理验证。 如果你通过源码安装的 MMDetection那么直接运行以下命令进行验证 python demo/image_demo.py demo/demo.jpg rtmdet_tiny_8xb32-300e_coco.py --weights rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth --device cpu你会在当前文件夹中的 outputs/vis 文件夹中看到一个新的图像 demo.jpg图像中包含有网络预测的检测框。 如果你通过 MIM 安装的 MMDetection那么可以打开你的 Python 解析器复制并粘贴以下代码 from mmdet.apis import init_detector, inference_detector import mmcv# 指定模型的配置文件和 checkpoint 文件路径 config_file configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py checkpoint_file checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth# 根据配置文件和 checkpoint 文件构建模型 model init_detector(config_file, checkpoint_file, devicecuda:0)# 测试单张图片并展示结果 img test.jpg # 或者 img mmcv.imread(img)这样图片仅会被读一次 result inference_detector(model, img) # 在一个新的窗口中将结果可视化 model.show_result(img, result) # 或者将可视化结果保存为图片 model.show_result(img, result, out_fileresult.jpg)# 测试视频并展示结果 video mmcv.VideoReader(video.mp4) for frame in video:result inference_detector(model, frame)model.show_result(frame, result, wait_time1)你将会看到一个包含 DetDataSample 的列表预测结果在 pred_instance 里包含有检测框类别和得分。 配置OV-DINO环境 安装OV-DINO需要用到的库文件如下 首先安装numpy库默认安装是2.x的版本不能用需要切换到1.x的版本。命令如下 pip install numpy1.24.3安装其他的库文件命令如下 pip install terminaltables pip install pycocotools pip install shapely pip install scipy pip install fairscale安装Transformer由于用到了Bert所以要安装Transformer安装命令 pip install transformers由于国内不能直接链接huggingface所以需要用到代理设置方式如下 在image_demo脚本中加入代理链接代码如下 import os os.environ[HF_ENDPOINT] https://hf-mirror.com然后运行命令 python demo/image_demo.py demo/0016.jpg configs/mm_grounding_dino/grounding_dino_swin-b_pretrain_obj365_goldg_v3det.py --weights grounding_dino_swin-b_pretrain_all-f9818a7c.pth --texts the standing man . the squatting man -c --device cuda:1 MMDetection的MM-Grounding-DINO详细介绍 Grounding-DINO 是一种先进的开放集检测模型能够处理包括开放词汇检测OVD、短语定位PG和指代表达式理解REC在内的多种视觉任务。由于其有效性Grounding-DINO 已被广泛采用为各种下游应用的主流架构。然而尽管它意义重大但由于训练代码的不可用性原始的 Grounding-DINO 模型缺乏全面的公共技术细节。为了弥补这一差距我们推出了 MM-Grounding-DINO这是一个基于 MMDetection 工具箱构建的开源、全面且用户友好的基线。它采用了丰富的视觉数据集进行预训练并利用各种检测和定位数据集进行微调。我们对每个报告的结果进行了全面分析并提供了详细的设置以便复现。在提到的基准测试上的广泛实验表明我们的 MM-Grounding-DINO-Tiny 优于 Grounding-DINO-Tiny 基线。我们已将所有模型向研究界公开。 测试结果 Zero-Shot COCO 结果与模型 ModelBackboneStyleCOCO mAPPre-Train DataConfigDownloadGDINO-TSwin-TZero-shot46.7O365GDINO-TSwin-TZero-shot48.1O365,GoldGGDINO-TSwin-TZero-shot48.4O365,GoldG,Cap4MconfigmodelMM-GDINO-TSwin-TZero-shot48.5(1.8)O365configMM-GDINO-TSwin-TZero-shot50.4(2.3)O365,GoldGconfigmodel | logMM-GDINO-TSwin-TZero-shot50.5(2.1)O365,GoldG,GRITconfigmodel | logMM-GDINO-TSwin-TZero-shot50.6(2.2)O365,GoldG,V3Detconfigmodel | logMM-GDINO-TSwin-TZero-shot50.4(2.0)O365,GoldG,GRIT,V3Detconfigmodel | logMM-GDINO-BSwin-BZero-shot52.5O365,GoldG,V3Detconfigmodel | logMM-GDINO-B*Swin-B-59.5O365,ALLconfigmodel | logMM-GDINO-LSwin-LZero-shot53.0O365V2,OpenImageV6,GoldGconfigmodel | logMM-GDINO-L*Swin-L-60.3O365V2,OpenImageV6,ALLconfigmodel | log 这个*表示模型尚未完全训练。我们将在未来发布最终权重。ALL: GoldG,V3det,COCO2017,LVISV1,COCO2014,GRIT,RefCOCO,RefCOCO,RefCOCOg,gRefCOCO。 Zero-Shot LVIS Results ModelMiniVal APrMiniVal APcMiniVal APfMiniVal APVal1.0 APrVal1.0 APcVal1.0 APfVal1.0 APPre-Train DataGDINO-T18.824.234.728.810.115.329.920.1O365,GoldG,Cap4MMM-GDINO-T28.130.242.035.7(6.9)17.122.436.527.0(6.9)O365,GoldGMM-GDINO-T26.632.441.836.5(7.7)17.322.636.427.1(7.0)O365,GoldG,GRITMM-GDINO-T33.036.045.940.5(11.7)21.525.540.230.6(10.5)O365,GoldG,V3DetMM-GDINO-T34.237.446.241.4(12.6)23.627.640.531.9(11.8)O365,GoldG,GRIT,V3Det MM-GDINO-T的配置文件是mini-lvis和lvis 1.0 Zero-Shot ODinW野生环境下的目标检测结果 ODinW13的结果和模型 MethodGDINO-T (O365,GoldG,Cap4M)MM-GDINO-T (O365,GoldG)MM-GDINO-T (O365,GoldG,GRIT)MM-GDINO-T (O365,GoldG,V3Det)MM-GDINO-T (O365,GoldG,GRIT,V3Det)AerialMaritimeDrone0.1730.1330.1550.1770.151Aquarium0.1950.2520.2610.2660.283CottontailRabbits0.7990.7710.8100.7780.786EgoHands0.6080.4990.5370.5060.519NorthAmericaMushrooms0.5070.3310.4620.6690.767Packages0.6870.7070.6870.7100.706PascalVOC0.5630.5650.5800.5560.566pistols0.7260.5850.7090.6710.729pothole0.2150.1360.2850.1990.243Raccoon0.5490.4690.5110.5530.535ShellfishOpenImages0.3930.3210.4370.5190.488thermalDogsAndPeople0.6570.5560.6030.4930.542VehiclesOpenImages0.6130.5660.6030.6140.615Average0.5140.4530.5110.5160.533 MM-GDINO-T的配置文件是odinw13 ODinW35的结果和模型 MethodGDINO-T (O365,GoldG,Cap4M)MM-GDINO-T (O365,GoldG)MM-GDINO-T (O365,GoldG,GRIT)MM-GDINO-T (O365,GoldG,V3Det)MM-GDINO-T (O365,GoldG,GRIT,V3Det)AerialMaritimeDrone_large0.1730.1330.1550.1770.151AerialMaritimeDrone_tiled0.2060.1700.2250.1840.206AmericanSignLanguageLetters0.0020.0160.0200.0110.007Aquarium0.1950.2520.2610.2660.283BCCD0.1610.0690.1180.0830.077boggleBoards0.0000.0020.0010.0010.002brackishUnderwater0.0210.0330.0210.0250.025ChessPieces0.0000.0000.0000.0000.000CottontailRabbits0.8060.7710.8100.7780.786dice0.0040.0020.0050.0010.001DroneControl0.0420.0470.0970.0880.074EgoHands_generic0.6080.5270.5370.5060.519EgoHands_specific0.0020.0010.0050.0070.003HardHatWorkers0.0460.0480.0700.0700.108MaskWearing0.0040.0090.0040.0110.009MountainDewCommercial0.4300.4530.4650.1940.430NorthAmericaMushrooms0.4710.3310.4620.6690.767openPoetryVision0.0000.0010.0000.0000.000OxfordPets_by_breed0.0030.0020.0040.0060.004OxfordPets_by_species0.0110.0190.0160.0200.015PKLot0.0010.0040.0020.0080.007Packages0.6950.7070.6870.7100.706PascalVOC0.5630.5650.5800.5660.566pistols0.7260.5850.7090.6710.729plantdoc0.0050.0050.0070.0080.011pothole0.2150.1360.2190.0770.168Raccoons0.5490.4690.5110.5530.535selfdrivingCar0.0890.0910.0760.0940.083ShellfishOpenImages0.3930.3210.4370.5190.488ThermalCheetah0.0870.0630.0810.0300.045thermalDogsAndPeople0.6570.5560.6030.4930.543UnoCards0.0060.0120.0100.0090.005VehiclesOpenImages0.6130.5660.6030.6140.615WildfireSmoke0.1340.1060.1540.0420.127websiteScreenshots0.0120.020.0160.0160.016Average0.2270.2020.2280.2140.284 MM-GDINO-T的配置文件是odinw35 零样本指代表达式理解结果 MethodGDINO-T (O365,GoldG,Cap4M)MM-GDINO-T (O365,GoldG)MM-GDINO-T (O365,GoldG,GRIT)MM-GDINO-T (O365,GoldG,V3Det)MM-GDINO-T (O365,GoldG,GRIT,V3Det)RefCOCO val 1,5,1050.8/89.5/94.953.1/89.9/94.753.4/90.3/95.552.1/89.8/95.053.1/89.7/95.1RefCOCO testA 1,5,1057.4/91.3/95.659.7/91.5/95.958.8/91.70/96.258.4/86.8/95.659.1/91.0/95.5RefCOCO testB 1,5,1045.0/86.5/92.946.4/86.9/92.246.8/87.7/93.345.4/86.2/92.646.8/87.8/93.6RefCOCO val 1,5,1051.6/86.4/92.653.1/87.0/92.853.5/88.0/93.752.5/86.8/93.252.7/87.7/93.5RefCOCO testA 1,5,1057.3/86.7/92.758.9/87.3/92.959.0/88.1/93.758.1/86.7/93.558.7/87.2/93.1RefCOCO testB 1,5,1046.4/84.1/90.747.9/84.3/91.047.9/85.5/92.746.9/83.7/91.548.4/85.8/92.1RefCOCOg val 1,5,1060.4/92.1/96.261.2/92.6/96.162.7/93.3/97.061.7/92.9/96.662.9/93.3/97.2RefCOCOg test 1,5,1059.7/92.1/96.361.1/93.3/96.762.6/94.9/97.161.0/93.1/96.862.9/93.9/97.4 Methodthresh_scoreGDINO-T (O365,GoldG,Cap4M)MM-GDINO-T (O365,GoldG)MM-GDINO-T (O365,GoldG,GRIT)MM-GDINO-T (O365,GoldG,V3Det)MM-GDINO-T (O365,GoldG,GRIT,V3Det)gRefCOCO val Pr(F11, IoU≥0.5),N-acc0.539.3/70.439.4/67.5gRefCOCO val Pr(F11, IoU≥0.5),N-acc0.640.5/83.840.6/83.1gRefCOCO val Pr(F11, IoU≥0.5),N-acc0.741.3/91.839.8/84.740.7/89.740.3/88.841.0/91.3gRefCOCO val Pr(F11, IoU≥0.5),N-acc0.841.5/96.841.1/96.4gRefCOCO testA Pr(F11, IoU≥0.5),N-acc0.531.9/70.433.1/69.5gRefCOCO testA Pr(F11, IoU≥0.5),N-acc0.629.3/82.929.2/84.3gRefCOCO testA Pr(F11, IoU≥0.5),N-acc0.727.2/90.226.3/89.026.0/91.925.4/91.826.1/93.0gRefCOCO testA Pr(F11, IoU≥0.5),N-acc0.825.1/96.323.8/97.2gRefCOCO testB Pr(F11, IoU≥0.5),N-acc0.530.9/72.533.0/69.6gRefCOCO testB Pr(F11, IoU≥0.5),N-acc0.630.0/86.131.6/96.7gRefCOCO testB Pr(F11, IoU≥0.5),N-acc0.729.7/93.531.3/84.830.6/90.230.7/89.930.4/92.3gRefCOCO testB Pr(F11, IoU≥0.5),N-acc0.829.1/97.429.5/84.2 MM-GDINO-T的配置文件位于refcoco/grounding_dino_swin-t_pretrain_zeroshot_refexp.py 零样本描述检测数据集DOD pip install ddd-datasetMethodmodeGDINO-T (O365,GoldG,Cap4M)MM-GDINO-T (O365,GoldG)MM-GDINO-T (O365,GoldG,GRIT)MM-GDINO-T (O365,GoldG,V3Det)MM-GDINO-T (O365,GoldG,GRIT,V3Det)FULL/short/middle/long/very longconcat17.2/18.0/18.7/14.8/16.315.6/17.3/16.7/14.3/13.117.0/17.7/18.0/15.7/15.716.2/17.4/16.8/14.9/15.417.5/23.4/18.3/14.7/13.8FULL/short/middle/long/very longparallel22.3/28.2/24.8/19.1/13.921.7/24.7/24.0/20.2/13.722.5/25.6/25.1/20.5/14.922.3/25.6/24.5/20.6/14.722.9/28.1/25.4/20.4/14.4PRES/short/middle/long/very longconcat17.8/18.3/19.2/15.2/17.316.4/18.4/17.3/14.5/14.217.9/19.0/18.3/16.5/17.516.6/18.8/17.1/15.1/15.018.0/23.7/18.6/15.4/13.3PRES/short/middle/long/very longparallel21.0/27.0/22.8/17.5/12.521.3/25.5/22.8/19.2/12.921.5/25.2/23.0/19.0/15.021.6/25.7/23.0/19.5/14.821.9/27.4/23.2/19.1/14.2ABS/short/middle/long/very longconcat15.4/17.1/16.4/13.6/14.913.4/13.4/14.5/13.5/11.914.5/13.1/16.7/13.6/13.314.8/12.5/15.6/14.3/15.815.9/22.2/17.1/12.5/14.4ABS/short/middle/long/very longparallel26.0/32.0/33.0/23.6/15.522.8/22.2/28.7/22.9/14.725.6/26.8/33.9/24.5/14.724.1/24.9/30.7/23.8/14.726.0/30.3/34.1/23.9/14.6 注 考虑到跨场景评估时间非常长且性能较低因此暂时不支持。上述指标是针对单场景Intra-scenario的。concat是Grounding DINO的默认推理模式它将多个子句用点.连接起来形成一个单独的句子进行推理。另一方面“parallel”模式则在for循环中对每个子句分别进行推理。MM-GDINO-T的配置文件是concat_doddod/grounding_dino_swin-t_pretrain_zeroshot_concat_dod.py和parallel_doddod/grounding_dino_swin-t_pretrain_zeroshot_parallel_dod.py Pretrain Flickr30k Results ModelPre-Train DataVal R1Val R5Val R10Test R1Test R5Test R10GLIP-TO365,GoldG84.994.996.385.695.496.7GLIP-TO365,GoldG,CC3M,SBU85.395.596.986.095.997.2GDINO-TO365,GoldG,Cap4M87.896.698.088.196.998.2MM-GDINO-TO365,GoldG85.595.697.286.295.797.4MM-GDINO-TO365,GoldG,GRIT86.795.897.687.096.297.7MM-GDINO-TO365,GoldG,V3Det85.995.797.486.395.797.4MM-GDINO-TO365,GoldG,GRIT,V3Det86.796.097.687.296.297.7 注 1,5,10指的是在预测的排名列表中前1、5和10个位置的精确度。MM-GDINO-T的配置文件位于flickr30k/grounding_dino_swin-t-pretrain_flickr30k.py 通过微调验证预训练模型的泛化能力 RTTS ArchitectureBackboneLr schdbox APFaster R-CNNR-501x48.1Cascade R-CNNR-501x50.8ATSSR-501x48.2TOODR-501X50.8MM-GDINO(zero-shot)Swin-T49.8MM-GDINOSwin-T1x69.1 参考指标来自 https://github.com/BIGWangYuDong/lqit/tree/main/configs/detection/rtts_datasetMM-GDINO-T 配置文件是rtts/grounding_dino_swin-t_finetune_8xb4_1x_rtts.py RUOD ArchitectureBackboneLr schdbox APFaster R-CNNR-501x52.4Cascade R-CNNR-501x55.3ATSSR-501x55.7TOODR-501X57.4MM-GDINO(zero-shot)Swin-T29.8MM-GDINOSwin-T1x65.5 参考指标来自 https://github.com/BIGWangYuDong/lqit/tree/main/configs/detection/ruod_datasetMM-GDINO-T 配置文件位于ruod/grounding_dino_swin-t_finetune_8xb4_1x_ruod.py Brain Tumor ArchitectureBackboneLr schdbox APFaster R-CNNR-5050e43.5Cascade R-CNNR-5050e46.2DINOR-5050e46.4Cascade-DINOR-5050e48.6MM-GDINOSwin-T50e47.5 参考指标来自 https://arxiv.org/abs/2307.11035MM-GDINO-T 配置文件是brain_tumor/grounding_dino_swin-t_finetune_8xb4_50e_brain_tumor.py Cityscapes ArchitectureBackboneLr schdbox APFaster R-CNNR-5050e30.1Cascade R-CNNR-5050e31.8DINOR-5050e34.5Cascade-DINOR-5050e34.8MM-GDINO(zero-shot)Swin-T34.2MM-GDINOSwin-T50e51.5 参考指标来自 https://arxiv.org/abs/2307.11035MM-GDINO-T 配置文件是cityscapes/grounding_dino_swin-t_finetune_8xb4_50e_cityscapes.py People in Painting ArchitectureBackboneLr schdbox APFaster R-CNNR-5050e17.0Cascade R-CNNR-5050e18.0DINOR-5050e12.0Cascade-DINOR-5050e13.4MM-GDINO(zero-shot)Swin-T23.1MM-GDINOSwin-T50e38.9 参考指标来自 https://arxiv.org/abs/2307.11035MM-GDINO-T 配置文件是 people_in_painting/grounding_dino_swin-t_finetune_8xb4_50e_people_in_painting.py COCO (1) Closed-set performance ArchitectureBackboneLr schdbox APFaster R-CNNR-501x37.4Cascade R-CNNR-501x40.3ATSSR-501x39.4TOODR-501X42.4DINOR-501X50.1GLIP(zero-shot)Swin-T46.6GDINO(zero-shot)Swin-T48.5MM-GDINO(zero-shot)Swin-T50.4GLIPSwin-T1x55.4GDINOSwin-T1x58.1MM-GDINOSwin-T1x58.2 MM-GDINO-T 配置文件是coco/grounding_dino_swin-t_finetune_16xb4_1x_coco.py (2) 开放集继续预训练性能 ArchitectureBackboneLr schdbox APGLIP(zero-shot)Swin-T46.7GDINO(zero-shot)Swin-T48.5MM-GDINO(zero-shot)Swin-T50.4MM-GDINOSwin-T1x54.7 MM-GDINO-T 配置文件是 coco/grounding_dino_swin-t_finetune_16xb4_1x_sft_coco.py由于COCO数据集的大小较小仅在COCO上进行继续预训练很容易导致过拟合。上面显示的结果是来自第三个训练周期。我不推荐使用这种方法进行训练。 (3) 开放词汇性能 ArchitectureBackboneLr schdbox APBase box APNovel box APbox AP50Base box AP50Novel box AP50MM-GDINO(zero-shot)Swin-T51.148.458.966.764.074.2MM-GDINOSwin-T1x57.256.160.473.673.075.3 MM-GDINO-T 配置文件coco/grounding_dino_swin-t_finetune_16xb4_1x_coco_48_17.py LVIS 1.0 (1) 开放集继续预训练性能 ArchitectureBackboneLr schdMiniVal APrMiniVal APcMiniVal APfMiniVal APVal1.0 APrVal1.0 APcVal1.0 APfVal1.0 APGLIP(zero-shot)Swin-T18.121.233.126.710.814.729.019.6GDINO(zero-shot)Swin-T18.824.234.728.810.115.329.920.1MM-GDINO(zero-shot)Swin-T34.237.446.241.423.627.640.531.9MM-GDINOSwin-T1x50.758.860.158.745.250.256.151.7 MM-GDINO-T 配置文件lvis/grounding_dino_swin-t_finetune_16xb4_1x_lvis.py (2) 开放词汇性能 ArchitectureBackboneLr schdMiniVal APrMiniVal APcMiniVal APfMiniVal APMM-GDINO(zero-shot)Swin-T34.237.446.241.4MM-GDINOSwin-T1x43.257.459.357.1 MM-GDINO-T 配置文件lvis/grounding_dino_swin-t_finetune_16xb4_1x_lvis_866_337.py RefEXP RefCOCO ArchitectureBackboneLr schdval 1val 5val 10testA 1testA 5testA 10testB 1testB 5testB 10GDINO(zero-shot)Swin-T50.889.594.957.591.395.645.086.592.9MM-GDINO(zero-shot)Swin-T53.189.795.159.191.095.546.887.893.6GDINOSwin-TUNK89.291.986.0MM-GDINOSwin-T5e89.598.699.491.499.299.886.697.999.1 MM-GDINO-T 配置文件refcoco/grounding_dino_swin-t_finetune_8xb4_5e_refcoco.py RefCOCO ArchitectureBackboneLr schdval 1val 5val 10testA 1testA 5testA 10testB 1testB 5testB 10GDINO(zero-shot)Swin-T51.686.492.657.386.792.746.484.190.7MM-GDINO(zero-shot)Swin-T52.787.793.558.787.293.148.485.892.1GDINOSwin-TUNK81.187.474.7MM-GDINOSwin-T5e82.197.899.287.599.299.774.096.396.4 MM-GDINO-T 配置文件refcoco/grounding_dino_swin-t_finetune_8xb4_5e_refcoco_plus.py RefCOCOg ArchitectureBackboneLr schdval 1val 5val 10test 1test 5test 10GDINO(zero-shot)Swin-T60.492.196.259.792.196.3MM-GDINO(zero-shot)Swin-T62.993.397.262.993.997.4GDINOSwin-TUNK84.284.9MM-GDINOSwin-T5e85.598.499.485.898.699.4 MM-GDINO-T 配置文件refcoco/grounding_dino_swin-t_finetune_8xb4_5e_refcocog.py gRefCOCO ArchitectureBackboneLr schdval Pr(F11, IoU≥0.5)val N-acctestA Pr(F11, IoU≥0.5)testA N-acctestB Pr(F11, IoU≥0.5)testB N-accGDINO(zero-shot)Swin-T41.391.827.290.229.793.5MM-GDINO(zero-shot)Swin-T41.091.326.193.030.492.3MM-GDINOSwin-T5e45.164.742.565.540.363.2 MM-GDINO-T 配置文件refcoco/grounding_dino_swin-t_finetune_8xb4_5e_grefcoco.py MM-GDINO-T 预训练数据准备和处理 MM-GDINO-T 模型中我们一共提供了 5 种不同数据组合的预训练配置数据采用逐步累加的方式进行训练因此用户可以根据自己的实际需求准备数据。 用到的数据集 1 Objects365 v1 对应的训练配置为./grounding_dino_swin-t_pretrain_obj365.py Objects365_v1 可以从https://opendatalab.com/OpenDataLab/Objects365_v1下载其提供了 CLI 和 SDK 两者下载方式。 下载并解压后将其放置或者软链接到 data/objects365v1 目录下目录结构如下 mmdetection ├── configs ├── data │ ├── objects365v1 │ │ ├── objects365_train.json │ │ ├── objects365_val.json │ │ ├── train │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── val │ │ │ ├── xxxx.jpg │ │ │ ├── ... │ │ ├── test然后使用 coco2odvg.py 转换为训练所需的 ODVG 格式 python tools/dataset_converters/coco2odvg.py data/objects365v1/objects365_train.json -d o365v1程序运行完成后会在 data/objects365v1 目录下创建 o365v1_train_od.json 和 o365v1_label_map.json 两个新文件完整结构如下 mmdetection ├── configs ├── data │ ├── objects365v1 │ │ ├── objects365_train.json │ │ ├── objects365_val.json │ │ ├── o365v1_train_od.json │ │ ├── o365v1_label_map.json │ │ ├── train │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── val │ │ │ ├── xxxx.jpg │ │ │ ├── ... │ │ ├── test2 COCO 2017 上述配置在训练过程中会评估 COCO 2017 数据集的性能因此需要准备 COCO 2017 数据集。你可以从 COCO 官网下载或者从 opendatalab 下载 下载并解压后将其放置或者软链接到 data/coco 目录下目录结构如下 mmdetection ├── configs ├── data │ ├── coco │ │ ├── annotations │ │ │ ├── instances_train2017.json │ │ │ ├── instances_val2017.json │ │ ├── train2017 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── val2017 │ │ │ ├── xxxx.jpg │ │ │ ├── ...3 GoldG 下载该数据集后就可以训练 ./grounding_dino_swin-t_pretrain_obj365_goldg.py配置了。 GoldG 数据集包括 GQA 和 Flickr30k 两个数据集来自 GLIP 论文中提到的 MixedGrounding 数据集其排除了 COCO 数据集。下载链接为 mdetr_annotations我们目前需要的是 mdetr_annotations/final_mixed_train_no_coco.json 和 mdetr_annotations/final_flickr_separateGT_train.json 文件。 然后下载 GQA images 图片。下载并解压后将其放置或者软链接到 data/gqa 目录下目录结构如下 mmdetection ├── configs ├── data │ ├── gqa | | ├── final_mixed_train_no_coco.json │ │ ├── images │ │ │ ├── xxx.jpg │ │ │ ├── ...然后下载 Flickr30k images 图片。这个数据下载需要先申请再获得下载链接后才可以下载。下载并解压后将其放置或者软链接到 data/flickr30k_entities 目录下目录结构如下 mmdetection ├── configs ├── data │ ├── flickr30k_entities │ │ ├── final_flickr_separateGT_train.json │ │ ├── flickr30k_images │ │ │ ├── xxx.jpg │ │ │ ├── ...对于 GQA 数据集你需要使用 goldg2odvg.py 转换为训练所需的 ODVG 格式 python tools/dataset_converters/goldg2odvg.py data/gqa/final_mixed_train_no_coco.json程序运行完成后会在 data/gqa 目录下创建 final_mixed_train_no_coco_vg.json 新文件完整结构如下 mmdetection ├── configs ├── data │ ├── gqa | | ├── final_mixed_train_no_coco.json | | ├── final_mixed_train_no_coco_vg.json │ │ ├── images │ │ │ ├── xxx.jpg │ │ │ ├── ...对于 Flickr30k 数据集你需要使用 goldg2odvg.py 转换为训练所需的 ODVG 格式 python tools/dataset_converters/goldg2odvg.py data/flickr30k_entities/final_flickr_separateGT_train.json程序运行完成后会在 data/flickr30k_entities 目录下创建 final_flickr_separateGT_train_vg.json 新文件完整结构如下 mmdetection ├── configs ├── data │ ├── flickr30k_entities │ │ ├── final_flickr_separateGT_train.json │ │ ├── final_flickr_separateGT_train_vg.json │ │ ├── flickr30k_images │ │ │ ├── xxx.jpg │ │ │ ├── ...4 GRIT-20M 对应的训练配置为 grounding_dino_swin-t_pretrain_obj365_goldg_grit9m GRIT数据集可以从 GRIT 中使用 img2dataset 包下载默认指令下载后数据集大小为 1.1T下载和处理预估需要至少 2T 硬盘空间可根据硬盘容量酌情下载。下载后原始格式为 mmdetection ├── configs ├── data │ ├── grit_raw │ │ ├── 00000_stats.json │ │ ├── 00000.parquet │ │ ├── 00000.tar │ │ ├── 00001_stats.json │ │ ├── 00001.parquet │ │ ├── 00001.tar │ │ ├── ...下载后需要对格式进行进一步处理: python tools/dataset_converters/grit_processing.py data/grit_raw data/grit_processed处理后的格式为 mmdetection ├── configs ├── data │ ├── grit_processed │ │ ├── annotations │ │ │ ├── 00000.json │ │ │ ├── 00001.json │ │ │ ├── ... │ │ ├── images │ │ │ ├── 00000 │ │ │ │ ├── 000000000.jpg │ │ │ │ ├── 000000003.jpg │ │ │ │ ├── 000000004.jpg │ │ │ │ ├── ... │ │ │ ├── 00001 │ │ │ ├── ...对于 GRIT 数据集你需要使用 grit2odvg.py 转化成需要的 ODVG 格式 python tools/dataset_converters/grit2odvg.py data/grit_processed/程序运行完成后会在 data/grit_processed 目录下创建 grit20m_vg.json 新文件大概包含 9M 条数据完整结构如下 mmdetection ├── configs ├── data │ ├── grit_processed | | ├── grit20m_vg.json │ │ ├── annotations │ │ │ ├── 00000.json │ │ │ ├── 00001.json │ │ │ ├── ... │ │ ├── images │ │ │ ├── 00000 │ │ │ │ ├── 000000000.jpg │ │ │ │ ├── 000000003.jpg │ │ │ │ ├── 000000004.jpg │ │ │ │ ├── ... │ │ │ ├── 00001 │ │ │ ├── ...5 V3Det 对应的训练配置为 grounding_dino_swin-t_pretrain_obj365_goldg_v3detgrounding_dino_swin-t_pretrain_obj365_goldg_grit9m_v3det V3Det 数据集下载可以从 opendatalab 下载下载并解压后将其放置或者软链接到 data/v3det 目录下目录结构如下 mmdetection ├── configs ├── data │ ├── v3det │ │ ├── annotations │ │ | ├── v3det_2023_v1_train.json │ │ ├── images │ │ │ ├── a00000066 │ │ │ │ ├── xxx.jpg │ │ │ ├── ...然后使用 coco2odvg.py 转换为训练所需的 ODVG 格式 python tools/dataset_converters/coco2odvg.py data/v3det/annotations/v3det_2023_v1_train.json -d v3det程序运行完成后会在 data/v3det/annotations 目录下创建目录下创建 v3det_2023_v1_train_od.json 和 v3det_2023_v1_label_map.json 两个新文件完整结构如下 mmdetection ├── configs ├── data │ ├── v3det │ │ ├── annotations │ │ | ├── v3det_2023_v1_train.json │ │ | ├── v3det_2023_v1_train_od.json │ │ | ├── v3det_2023_v1_label_map.json │ │ ├── images │ │ │ ├── a00000066 │ │ │ │ ├── xxx.jpg │ │ │ ├── ...6 数据切分和可视化 考虑到用户需要准备的数据集过多不方便对图片和标注进行训练前确认因此我们提供了一个数据切分和可视化的工具可以将数据集切分为 tiny 版本然后使用可视化脚本查看图片和标签正确性。 切分数据集 脚本位于 这里, 以 Object365 v1 为例切分数据集的命令如下 python tools/misc/split_odvg.py data/object365_v1/ o365v1_train_od.json train your_output_dir --label-map-file o365v1_label_map.json -n 200上述脚本运行后会在 your_output_dir 目录下创建和 data/object365_v1/ 一样的文件夹结构但是只会保存 200 张训练图片和对应的 json方便用户查看。 可视化原始数据集 脚本位于 这里, 以 Object365 v1 为例可视化数据集的命令如下 python tools/analysis_tools/browse_grounding_raw.py data/object365_v1/ o365v1_train_od.json train --label-map-file o365v1_label_map.json -o your_output_dir --not-show上述脚本运行后会在 your_output_dir 目录下生成同时包括图片和标签的图片方便用户查看。 可视化 dataset 输出的数据集 脚本位于 这里, 用户可以通过该脚本查看 dataset 输出的结果即包括了数据增强的结果。 以 Object365 v1 为例可视化数据集的命令如下 python tools/analysis_tools/browse_grounding_dataset.py configs/mm_grounding_dino/grounding_dino_swin-t_pretrain_obj365.py -o your_output_dir --not-show上述脚本运行后会在 your_output_dir 目录下生成同时包括图片和标签的图片方便用户查看。 MM-GDINO-L 预训练数据准备和处理 用到的数据集 1 Object365 v2 Objects365_v2 可以从 opendatalab 下载其提供了 CLI 和 SDK 两者下载方式。 下载并解压后将其放置或者软链接到 data/objects365v2 目录下目录结构如下 mmdetection ├── configs ├── data │ ├── objects365v2 │ │ ├── annotations │ │ │ ├── zhiyuan_objv2_train.json │ │ ├── train │ │ │ ├── patch0 │ │ │ │ ├── xxx.jpg │ │ │ ├── ...由于 objects365v2 类别中有部分类名是错误的因此需要先进行修正。 python tools/dataset_converters/fix_o365_names.py会在 data/objects365v2/annotations 下生成新的标注文件 zhiyuan_objv2_train_fixname.json。 然后使用 coco2odvg.py 转换为训练所需的 ODVG 格式 python tools/dataset_converters/coco2odvg.py data/objects365v2/annotations/zhiyuan_objv2_train_fixname.json -d o365v2程序运行完成后会在 data/objects365v2 目录下创建 zhiyuan_objv2_train_fixname_od.json 和 o365v2_label_map.json 两个新文件完整结构如下 mmdetection ├── configs ├── data │ ├── objects365v2 │ │ ├── annotations │ │ │ ├── zhiyuan_objv2_train.json │ │ │ ├── zhiyuan_objv2_train_fixname.json │ │ │ ├── zhiyuan_objv2_train_fixname_od.json │ │ │ ├── o365v2_label_map.json │ │ ├── train │ │ │ ├── patch0 │ │ │ │ ├── xxx.jpg │ │ │ ├── ...2 OpenImages v6 OpenImages v6 可以从 官网 下载由于数据集比较大需要花费一定的时间下载完成后文件结构如下 mmdetection ├── configs ├── data │ ├── OpenImages │ │ ├── annotations | │ │ ├── oidv6-train-annotations-bbox.csv | │ │ ├── class-descriptions-boxable.csv │ │ ├── OpenImages │ │ │ ├── train │ │ │ │ ├── xxx.jpg │ │ │ ├── ...然后使用 openimages2odvg.py 转换为训练所需的 ODVG 格式 python tools/dataset_converters/openimages2odvg.py data/OpenImages/annotations程序运行完成后会在 data/OpenImages/annotations 目录下创建 oidv6-train-annotation_od.json 和 openimages_label_map.json 两个新文件完整结构如下 mmdetection ├── configs ├── data │ ├── OpenImages │ │ ├── annotations | │ │ ├── oidv6-train-annotations-bbox.csv | │ │ ├── class-descriptions-boxable.csv | │ │ ├── oidv6-train-annotations_od.json | │ │ ├── openimages_label_map.json │ │ ├── OpenImages │ │ │ ├── train │ │ │ │ ├── xxx.jpg │ │ │ ├── ...3 V3Det 参见前面的 MM-GDINO-T 预训练数据准备和处理 数据准备部分完整数据集结构如下 mmdetection ├── configs ├── data │ ├── v3det │ │ ├── annotations │ │ | ├── v3det_2023_v1_train.json │ │ | ├── v3det_2023_v1_train_od.json │ │ | ├── v3det_2023_v1_label_map.json │ │ ├── images │ │ │ ├── a00000066 │ │ │ │ ├── xxx.jpg │ │ │ ├── ...4 LVIS 1.0 参见后面的 微调数据集准备 的 2 LVIS 1.0 部分。完整数据集结构如下 mmdetection ├── configs ├── data │ ├── coco │ │ ├── annotations │ │ │ ├── instances_train2017.json │ │ │ ├── lvis_v1_train.json │ │ │ ├── lvis_v1_val.json │ │ │ ├── lvis_v1_train_od.json │ │ │ ├── lvis_v1_label_map.json │ │ │ ├── instances_val2017.json │ │ │ ├── lvis_v1_minival_inserted_image_name.json │ │ │ ├── lvis_od_val.json │ │ ├── train2017 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── val2017 │ │ │ ├── xxxx.jpg │ │ │ ├── ...5 COCO2017 OD 数据准备可以参考前面的 MM-GDINO-T 预训练数据准备和处理 部分。为了方便后续处理请将下载的 mdetr_annotations 文件夹软链接或者移动到 data/coco 路径下 完整数据集结构如下 mmdetection ├── configs ├── data │ ├── coco │ │ ├── annotations │ │ │ ├── instances_train2017.json │ │ │ ├── instances_val2017.json │ │ ├── mdetr_annotations │ │ │ ├── final_refexp_val.json │ │ │ ├── finetune_refcoco_testA.json │ │ │ ├── ... │ │ ├── train2017 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── val2017 │ │ │ ├── xxxx.jpg │ │ │ ├── ...由于 COCO2017 train 和 RefCOCO/RefCOCO/RefCOCOg/gRefCOCO val 中存在部分重叠如果不提前移除在评测 RefExp 时候会存在数据泄露。 python tools/dataset_converters/remove_cocotrain2017_from_refcoco.py data/coco/mdetr_annotations data/coco/annotations/instances_train2017.json会在 data/coco/annotations 目录下创建 instances_train2017_norefval.json 新文件。最后使用 coco2odvg.py 转换为训练所需的 ODVG 格式 python tools/dataset_converters/coco2odvg.py data/coco/annotations/instances_train2017_norefval.json -d coco会在 data/coco/annotations 目录下创建 instances_train2017_norefval_od.json 和 coco_label_map.json 两个新文件完整结构如下 mmdetection ├── configs ├── data │ ├── coco │ │ ├── annotations │ │ │ ├── instances_train2017.json │ │ │ ├── instances_val2017.json │ │ │ ├── instances_train2017_norefval_od.json │ │ │ ├── coco_label_map.json │ │ ├── mdetr_annotations │ │ │ ├── final_refexp_val.json │ │ │ ├── finetune_refcoco_testA.json │ │ │ ├── ... │ │ ├── train2017 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── val2017 │ │ │ ├── xxxx.jpg │ │ │ ├── ...注意 COCO2017 train 和 LVIS 1.0 val 数据集有 15000 张图片重复因此一旦在训练中使用了 COCO2017 train那么 LVIS 1.0 val 的评测结果就存在数据泄露问题LVIS 1.0 minival 没有这个问题。 6 GoldG 参见 MM-GDINO-T 预训练数据准备和处理 部分 mmdetection ├── configs ├── data │ ├── flickr30k_entities │ │ ├── final_flickr_separateGT_train.json │ │ ├── final_flickr_separateGT_train_vg.json │ │ ├── flickr30k_images │ │ │ ├── xxx.jpg │ │ │ ├── ... │ ├── gqa | | ├── final_mixed_train_no_coco.json | | ├── final_mixed_train_no_coco_vg.json │ │ ├── images │ │ │ ├── xxx.jpg │ │ │ ├── ...7 COCO2014 VG MDetr 中提供了 COCO2014 train 的 Phrase Grounding 版本标注 最原始标注文件为 final_mixed_train.json和之前类似文件结构如下 mmdetection ├── configs ├── data │ ├── coco │ │ ├── annotations │ │ │ ├── instances_train2017.json │ │ │ ├── instances_val2017.json │ │ ├── mdetr_annotations │ │ │ ├── final_mixed_train.json │ │ │ ├── ... │ │ ├── train2017 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── train2014 │ │ │ ├── xxx.jpg │ │ │ ├── ...我们可以从 final_mixed_train.json 中提取出 COCO 部分数据 python tools/dataset_converters/extract_coco_from_mixed.py data/coco/mdetr_annotations/final_mixed_train.json会在 data/coco/mdetr_annotations 目录下创建 final_mixed_train_only_coco.json 新文件最后使用 goldg2odvg.py 转换为训练所需的 ODVG 格式 python tools/dataset_converters/goldg2odvg.py data/coco/mdetr_annotations/final_mixed_train_only_coco.json会在 data/coco/mdetr_annotations 目录下创建 final_mixed_train_only_coco_vg.json 新文件完整结构如下 mmdetection ├── configs ├── data │ ├── coco │ │ ├── annotations │ │ │ ├── instances_train2017.json │ │ │ ├── instances_val2017.json │ │ ├── mdetr_annotations │ │ │ ├── final_mixed_train.json │ │ │ ├── final_mixed_train_only_coco.json │ │ │ ├── final_mixed_train_only_coco_vg.json │ │ │ ├── ... │ │ ├── train2017 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── train2014 │ │ │ ├── xxx.jpg │ │ │ ├── ...注意 COCO2014 train 和 COCO2017 val 没有重复图片因此不用担心 COCO 评测的数据泄露问题。 8 Referring Expression Comprehension 其一共包括 4 个数据集。数据准备部分请参见 微调数据集准备 部分。 mmdetection ├── configs ├── data │ ├── coco │ │ ├── annotations │ │ │ ├── instances_train2017.json │ │ │ ├── instances_val2017.json │ │ │ ├── instances_train2014.json │ │ ├── train2017 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── val2017 │ │ │ ├── xxxx.jpg │ │ │ ├── ... │ │ ├── train2014 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── mdetr_annotations │ │ │ ├── final_refexp_val.json │ │ │ ├── finetune_refcoco_testA.json │ │ │ ├── finetune_refcoco_testB.json │ │ │ ├── finetune_refcoco_testA.json │ │ │ ├── finetune_refcoco_testB.json │ │ │ ├── finetune_refcocog_test.json │ │ │ ├── finetune_refcoco_train_vg.json │ │ │ ├── finetune_refcoco_train_vg.json │ │ │ ├── finetune_refcocog_train_vg.json │ │ │ ├── finetune_grefcoco_train_vg.json9 GRIT-20M 参见 MM-GDINO-T 预训练数据准备和处理 部分 评测数据集准备 1 COCO 2017 数据准备流程和前面描述一致最终结构如下 mmdetection ├── configs ├── data │ ├── coco │ │ ├── annotations │ │ │ ├── instances_train2017.json │ │ │ ├── instances_val2017.json │ │ ├── train2017 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── val2017 │ │ │ ├── xxxx.jpg │ │ │ ├── ...2 LVIS 1.0 LVIS 1.0 val 数据集包括 mini 和全量两个版本mini 版本存在的意义是 LVIS val 全量评测数据集比较大评测一次需要比较久的时间LVIS val 全量数据集中包括了 15000 张 COCO2017 train, 如果用户使用了 COCO2017 数据进行训练那么将存在数据泄露问题 LVIS 1.0 图片和 COCO2017 数据集图片完全一样只是提供了新的标注而已minival 标注文件可以从 这里下载 val 1.0 标注文件可以从 这里 下载。 最终结构如下 mmdetection ├── configs ├── data │ ├── coco │ │ ├── annotations │ │ │ ├── instances_train2017.json │ │ │ ├── instances_val2017.json │ │ │ ├── lvis_v1_minival_inserted_image_name.json │ │ │ ├── lvis_od_val.json │ │ ├── train2017 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── val2017 │ │ │ ├── xxxx.jpg │ │ │ ├── ...3 ODinW ODinw 全称为 Object Detection in the Wild是用于验证 grounding 预训练模型在不同实际场景中的泛化能力的数据集其包括两个子集分别是 ODinW13 和 ODinW35代表是由 13 和 35 个数据集组成的。你可以从 这里下载然后对每个文件进行解压最终结构如下 mmdetection ├── configs ├── data │ ├── odinw │ │ ├── AerialMaritimeDrone │ │ | |── large │ │ | | ├── test │ │ | | ├── train │ │ | | ├── valid │ │ | |── tiled │ │ ├── AmericanSignLanguageLetters │ │ ├── Aquarium │ │ ├── BCCD │ │ ├── ...在评测 ODinW3535 时候由于需要自定义 prompt因此需要提前对标注的 json 文件进行处理你可以使用 override_category.py 脚本进行处理处理后会生成新的标注文件不会覆盖原先的标注文件。 python configs/mm_grounding_dino/odinw/override_category.py data/odinw/4 DOD DOD 来自 Described Object Detection: Liberating Object Detection with Flexible Expressions。其数据集可以从 这里下载最终的数据集结构如下 mmdetection ├── configs ├── data │ ├── d3 │ │ ├── d3_images │ │ ├── d3_json │ │ ├── d3_pkl5 Flickr30k Entities 在前面 GoldG 数据准备章节中我们已经下载了 Flickr30k 训练所需文件评估所需的文件是 2 个 json 文件你可以从 这里 和 这里下载最终的数据集结构如下 mmdetection ├── configs ├── data │ ├── flickr30k_entities │ │ ├── final_flickr_separateGT_train.json │ │ ├── final_flickr_separateGT_val.json │ │ ├── final_flickr_separateGT_test.json │ │ ├── final_flickr_separateGT_train_vg.json │ │ ├── flickr30k_images │ │ │ ├── xxx.jpg │ │ │ ├── ...6 Referring Expression Comprehension 指代性表达式理解包括 4 个数据集 RefCOCO, RefCOCO, RefCOCOg, gRefCOCO。这 4 个数据集所采用的图片都来自于 COCO2014 train和 COCO2017 类似你可以从 COCO 官方或者 opendatalab 中下载而标注可以直接从 这里 下载mdetr_annotations 文件夹里面包括了其他大量的标注你如果觉得数量过多可以只下载所需要的几个 json 文件即可。最终的数据集结构如下 mmdetection ├── configs ├── data │ ├── coco │ │ ├── annotations │ │ │ ├── instances_train2017.json │ │ │ ├── instances_val2017.json │ │ │ ├── instances_train2014.json │ │ ├── train2017 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── val2017 │ │ │ ├── xxxx.jpg │ │ │ ├── ... │ │ ├── train2014 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── mdetr_annotations │ │ │ ├── final_refexp_val.json │ │ │ ├── finetune_refcoco_testA.json │ │ │ ├── finetune_refcoco_testB.json │ │ │ ├── finetune_refcoco_testA.json │ │ │ ├── finetune_refcoco_testB.json │ │ │ ├── finetune_refcocog_test.json │ │ │ ├── finetune_refcocog_test.json注意 gRefCOCO 是在 GREC: Generalized Referring Expression Comprehension 被提出并不在 mdetr_annotations 文件夹中需要自行处理。具体步骤为 下载 gRefCOCO并解压到 data/coco/ 文件夹中 mmdetection ├── configs ├── data │ ├── coco │ │ ├── annotations │ │ │ ├── instances_train2017.json │ │ │ ├── instances_val2017.json │ │ │ ├── instances_train2014.json │ │ ├── train2017 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── val2017 │ │ │ ├── xxxx.jpg │ │ │ ├── ... │ │ ├── train2014 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── mdetr_annotations │ │ ├── grefs │ │ │ ├── grefs(unc).json │ │ │ ├── instances.json转换为 coco 格式 你可以使用 gRefCOCO 官方提供的转换脚本。注意需要将被注释的 161 行打开并注释 160 行才可以得到全量的 json 文件。 # 需要克隆官方 repo git clone https://github.com/henghuiding/gRefCOCO.git cd gRefCOCO/mdetr python scripts/fine-tuning/grefexp_coco_format.py --data_path ../../data/coco/grefs --out_path ../../data/coco/mdetr_annotations/ --coco_path ../../data/coco会在 data/coco/mdetr_annotations/ 文件夹中生成 4 个 json 文件完整的数据集结构如下 mmdetection ├── configs ├── data │ ├── coco │ │ ├── annotations │ │ │ ├── instances_train2017.json │ │ │ ├── instances_val2017.json │ │ │ ├── instances_train2014.json │ │ ├── train2017 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── val2017 │ │ │ ├── xxxx.jpg │ │ │ ├── ... │ │ ├── train2014 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── mdetr_annotations │ │ │ ├── final_refexp_val.json │ │ │ ├── finetune_refcoco_testA.json │ │ │ ├── finetune_refcoco_testB.json │ │ │ ├── finetune_grefcoco_train.json │ │ │ ├── finetune_grefcoco_val.json │ │ │ ├── finetune_grefcoco_testA.json │ │ │ ├── finetune_grefcoco_testB.json微调数据集准备 1 COCO 2017 COCO 是检测领域最常用的数据集我们希望能够更充分探索其微调模式。从目前发展来看一共有 3 种微调方式 闭集微调即微调后文本端将无法修改描述转变为闭集算法在 COCO 上性能能够最大化但是失去了通用性。开集继续预训练微调即对 COCO 数据集采用和预训练一致的预训练手段。此时有两种做法第一种是降低学习率并固定某些模块仅仅在 COCO 数据上预训练第二种是将 COCO 数据和部分预训练数据混合一起训练两种方式的目的都是在尽可能不降低泛化性时提高 COCO 数据集性能开放词汇微调即采用 OVD 领域常用做法将 COCO 类别分成 base 类和 novel 类训练时候仅仅在 base 类上进行评测在 base 和 novel 类上进行。这种方式可以验证 COCO OVD 能力目的也是在尽可能不降低泛化性时提高 COCO 数据集性能 (1) 闭集微调 这个部分无需准备数据直接用之前的数据即可。 mmdetection ├── configs ├── data │ ├── coco │ │ ├── annotations │ │ │ ├── instances_train2017.json │ │ │ ├── instances_val2017.json │ │ ├── train2017 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── val2017 │ │ │ ├── xxxx.jpg │ │ │ ├── ...(2) 开集继续预训练微调 这种方式需要将 COCO 训练数据转换为 ODVG 格式你可以使用如下命令转换 python tools/dataset_converters/coco2odvg.py data/coco/annotations/instances_train2017.json -d coco会在 data/coco/annotations/ 下生成新的 instances_train2017_od.json 和 coco2017_label_map.json完整的数据集结构如下 mmdetection ├── configs ├── data │ ├── coco │ │ ├── annotations │ │ │ ├── instances_train2017.json │ │ │ ├── instances_train2017_od.json │ │ │ ├── coco2017_label_map.json │ │ │ ├── instances_val2017.json │ │ ├── train2017 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── val2017 │ │ │ ├── xxxx.jpg │ │ │ ├── ...在得到数据后你可以自行选择单独预习还是混合预训练方式。 (3) 开放词汇微调 这种方式需要将 COCO 训练数据转换为 OVD 格式你可以使用如下命令转换 python tools/dataset_converters/coco2ovd.py data/coco/会在 data/coco/annotations/ 下生成新的 instances_val2017_all_2.json 和 instances_val2017_seen_2.json完整的数据集结构如下 mmdetection ├── configs ├── data │ ├── coco │ │ ├── annotations │ │ │ ├── instances_train2017.json │ │ │ ├── instances_train2017_od.json │ │ │ ├── instances_val2017_all_2.json │ │ │ ├── instances_val2017_seen_2.json │ │ │ ├── coco2017_label_map.json │ │ │ ├── instances_val2017.json │ │ ├── train2017 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── val2017 │ │ │ ├── xxxx.jpg │ │ │ ├── ...然后可以直接使用 配置 进行训练和测试。 2 LVIS 1.0 LVIS 是一个包括 1203 类的数据集同时也是一个长尾联邦数据集对其进行微调很有意义。 由于其类别过多我们无法对其进行闭集微调因此只能采用开集继续预训练微调和开放词汇微调。 你需要先准备好 LVIS 训练 JSON 文件你可以从 这里 下载我们只需要 lvis_v1_train.json 和 lvis_v1_val.json然后将其放到 data/coco/annotations/ 下然后运行如下命令 mmdetection ├── configs ├── data │ ├── coco │ │ ├── annotations │ │ │ ├── instances_train2017.json │ │ │ ├── lvis_v1_train.json │ │ │ ├── lvis_v1_val.json │ │ │ ├── instances_val2017.json │ │ │ ├── lvis_v1_minival_inserted_image_name.json │ │ │ ├── lvis_od_val.json │ │ ├── train2017 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── val2017 │ │ │ ├── xxxx.jpg │ │ │ ├── ...(1) 开集继续预训练微调 使用如下命令转换为 ODVG 格式 python tools/dataset_converters/lvis2odvg.py data/coco/annotations/lvis_v1_train.json会在 data/coco/annotations/ 下生成新的 lvis_v1_train_od.json 和 lvis_v1_label_map.json完整的数据集结构如下 mmdetection ├── configs ├── data │ ├── coco │ │ ├── annotations │ │ │ ├── instances_train2017.json │ │ │ ├── lvis_v1_train.json │ │ │ ├── lvis_v1_val.json │ │ │ ├── lvis_v1_train_od.json │ │ │ ├── lvis_v1_label_map.json │ │ │ ├── instances_val2017.json │ │ │ ├── lvis_v1_minival_inserted_image_name.json │ │ │ ├── lvis_od_val.json │ │ ├── train2017 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── val2017 │ │ │ ├── xxxx.jpg │ │ │ ├── ...然后可以直接使用 配置 进行训练测试或者你修改配置将其和部分预训练数据集混合使用。 (2) 开放词汇微调 使用如下命令转换为 OVD 格式 python tools/dataset_converters/lvis2ovd.py data/coco/会在 data/coco/annotations/ 下生成新的 lvis_v1_train_od_norare.json 和 lvis_v1_label_map_norare.json完整的数据集结构如下 mmdetection ├── configs ├── data │ ├── coco │ │ ├── annotations │ │ │ ├── instances_train2017.json │ │ │ ├── lvis_v1_train.json │ │ │ ├── lvis_v1_val.json │ │ │ ├── lvis_v1_train_od.json │ │ │ ├── lvis_v1_label_map.json │ │ │ ├── instances_val2017.json │ │ │ ├── lvis_v1_minival_inserted_image_name.json │ │ │ ├── lvis_od_val.json │ │ │ ├── lvis_v1_train_od_norare.json │ │ │ ├── lvis_v1_label_map_norare.json │ │ ├── train2017 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── val2017 │ │ │ ├── xxxx.jpg │ │ │ ├── ...然后可以直接使用 配置 进行训练测试 3 RTTS RTTS 是一个浓雾天气数据集该数据集包含 4,322 张雾天图像包含五个类自行车 (bicycle)、公共汽车 (bus)、汽车 (car)、摩托车 (motorbike) 和人 (person)。可以从 这里下载, 然后解压到 data/RTTS/ 文件夹中。完整的数据集结构如下 mmdetection ├── configs ├── data │ ├── RTTS │ │ ├── annotations_json │ │ ├── annotations_xml │ │ ├── ImageSets │ │ ├── JPEGImages4 RUOD RUOD 是一个水下目标检测数据集你可以从 这里下载, 然后解压到 data/RUOD/ 文件夹中。完整的数据集结构如下 mmdetection ├── configs ├── data │ ├── RUOD │ │ ├── Environment_pic │ │ ├── Environmet_ANN │ │ ├── RUOD_ANN │ │ ├── RUOD_pic5 Brain Tumor Brain Tumor 是一个医学领域的 2d 检测数据集你可以从 这里下载, 请注意选择 COCO JSON 格式。然后解压到 data/brain_tumor_v2/ 文件夹中。完整的数据集结构如下 mmdetection ├── configs ├── data │ ├── brain_tumor_v2 │ │ ├── test │ │ ├── train │ │ ├── valid6 Cityscapes Cityscapes 是一个城市街景数据集你可以从 这里 或者 opendatalab 中下载, 然后解压到 data/cityscapes/ 文件夹中。完整的数据集结构如下 mmdetection ├── configs ├── data │ ├── cityscapes │ │ ├── annotations │ │ ├── leftImg8bit │ │ │ ├── train │ │ │ ├── val │ │ ├── gtFine │ │ │ ├── train │ │ │ ├── val在下载后然后使用 cityscapes.py 脚本生成我们所需要的 json 格式 python tools/dataset_converters/cityscapes.py data/cityscapes/会在 annotations 中生成 3 个新的 json 文件。完整的数据集结构如下 mmdetection ├── configs ├── data │ ├── cityscapes │ │ ├── annotations │ │ │ ├── instancesonly_filtered_gtFine_train.json │ │ │ ├── instancesonly_filtered_gtFine_val.json │ │ │ ├── instancesonly_filtered_gtFine_test.json │ │ ├── leftImg8bit │ │ │ ├── train │ │ │ ├── val │ │ ├── gtFine │ │ │ ├── train │ │ │ ├── val7 People in Painting People in Painting 是一个油画数据集你可以从 这里, 请注意选择 COCO JSON 格式。然后解压到 data/people_in_painting_v2/ 文件夹中。完整的数据集结构如下 mmdetection ├── configs ├── data │ ├── people_in_painting_v2 │ │ ├── test │ │ ├── train │ │ ├── valid8 Referring Expression Comprehension 指代性表达式理解的微调和前面一样也是包括 4 个数据集在评测数据准备阶段已经全部整理好了完整的数据集结构如下 mmdetection ├── configs ├── data │ ├── coco │ │ ├── annotations │ │ │ ├── instances_train2017.json │ │ │ ├── instances_val2017.json │ │ │ ├── instances_train2014.json │ │ ├── train2017 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── val2017 │ │ │ ├── xxxx.jpg │ │ │ ├── ... │ │ ├── train2014 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── mdetr_annotations │ │ │ ├── final_refexp_val.json │ │ │ ├── finetune_refcoco_testA.json │ │ │ ├── finetune_refcoco_testB.json │ │ │ ├── finetune_refcoco_testA.json │ │ │ ├── finetune_refcoco_testB.json │ │ │ ├── finetune_refcocog_test.json │ │ │ ├── finetune_refcocog_test.json然后我们需要将其转换为所需的 ODVG 格式请使用 refcoco2odvg.py 脚本转换 python tools/dataset_converters/refcoco2odvg.py data/coco/mdetr_annotations会在 data/coco/mdetr_annotations 中生成新的 4 个 json 文件。 转换后的数据集结构如下 mmdetection ├── configs ├── data │ ├── coco │ │ ├── annotations │ │ │ ├── instances_train2017.json │ │ │ ├── instances_val2017.json │ │ │ ├── instances_train2014.json │ │ ├── train2017 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── val2017 │ │ │ ├── xxxx.jpg │ │ │ ├── ... │ │ ├── train2014 │ │ │ ├── xxx.jpg │ │ │ ├── ... │ │ ├── mdetr_annotations │ │ │ ├── final_refexp_val.json │ │ │ ├── finetune_refcoco_testA.json │ │ │ ├── finetune_refcoco_testB.json │ │ │ ├── finetune_refcoco_testA.json │ │ │ ├── finetune_refcoco_testB.json │ │ │ ├── finetune_refcocog_test.json │ │ │ ├── finetune_refcoco_train_vg.json │ │ │ ├── finetune_refcoco_train_vg.json │ │ │ ├── finetune_refcocog_train_vg.json │ │ │ ├── finetune_grefcoco_train_vg.json推理与微调 需要安装额外的依赖包 cd $MMDETROOTpip install -r requirements/multimodal.txt pip install emoji ddd-dataset pip install githttps://github.com/lvis-dataset/lvis-api.git请注意由于 LVIS 第三方库暂时不支持 numpy 1.24因此请确保您的 numpy 版本符合要求。建议安装 numpy 1.23 版本。 MM Grounding DINO-T 模型权重下载 为了方便演示您可以提前下载 MM Grounding DINO-T 模型权重到当前路径下 wget load_from https://download.openmmlab.com/mmdetection/v3.0/mm_grounding_dino/grounding_dino_swin-t_pretrain_obj365_goldg_grit9m_v3det/grounding_dino_swin-t_pretrain_obj365_goldg_grit9m_v3det_20231204_095047-b448804b.pth # noqa模型的权重和对应的配置详见 ModelBackboneStyleCOCO mAPPre-Train DataConfigDownloadGDINO-TSwin-TZero-shot46.7O365GDINO-TSwin-TZero-shot48.1O365,GoldGGDINO-TSwin-TZero-shot48.4O365,GoldG,Cap4MconfigmodelMM-GDINO-TSwin-TZero-shot48.5(1.8)O365configMM-GDINO-TSwin-TZero-shot50.4(2.3)O365,GoldGconfigmodel | logMM-GDINO-TSwin-TZero-shot50.5(2.1)O365,GoldG,GRITconfigmodel | logMM-GDINO-TSwin-TZero-shot50.6(2.2)O365,GoldG,V3Detconfigmodel | logMM-GDINO-TSwin-TZero-shot50.4(2.0)O365,GoldG,GRIT,V3Detconfigmodel | logMM-GDINO-BSwin-BZero-shot52.5O365,GoldG,V3Detconfigmodel | logMM-GDINO-B*Swin-B-59.5O365,ALLconfigmodel | logMM-GDINO-LSwin-LZero-shot53.0O365V2,OpenImageV6,GoldGconfigmodel | logMM-GDINO-L*Swin-L-60.3O365V2,OpenImageV6,ALLconfigmodel | log 这个*表示模型尚未完全训练。我们将在未来发布最终权重。ALL: GoldG,V3det,COCO2017,LVISV1,COCO2014,GRIT,RefCOCO,RefCOCO,RefCOCOg,gRefCOCO。 推理 在推理前为了更好的体验不同图片的推理效果建议您先下载 这些图片 到当前路径下 MM Grounding DINO 支持了闭集目标检测开放词汇目标检测Phrase Grounding 和指代性表达式理解 4 种推理方式下面详细说明。 (1) 闭集目标检测 由于 MM Grounding DINO 是预训练模型理论上可以应用于任何闭集检测数据集目前我们支持了常用的 coco/voc/cityscapes/objects365v1/lvis 等下面以 coco 为例 python demo/image_demo.py images/animals.png \configs/mm_grounding_dino/grounding_dino_swin-t_pretrain_obj365.py \--weights grounding_dino_swin-t_pretrain_obj365_goldg_grit9m_v3det_20231204_095047-b448804b.pth \--texts $: coco会在当前路径下生成 outputs/vis/animals.png 的预测结果如下图所示 由于鸵鸟并不在 COCO 80 类中, 因此不会检测出来。 需要注意由于 objects365v1 和 lvis 类别很多如果直接将类别名全部输入到网络中会超过 256 个 token 导致模型预测效果极差此时我们需要通过 --chunked-size 参数进行截断预测, 同时预测时间会比较长。 python demo/image_demo.py images/animals.png \configs/mm_grounding_dino/grounding_dino_swin-t_pretrain_obj365.py \--weights grounding_dino_swin-t_pretrain_obj365_goldg_grit9m_v3det_20231204_095047-b448804b.pth \--texts $: lvis --chunked-size 70 \--palette random不同的 --chunked-size 会导致不同的预测效果您可以自行尝试。 (2) 开放词汇目标检测 开放词汇目标检测是指在推理时候可以输入任意的类别名 python demo/image_demo.py images/animals.png \configs/mm_grounding_dino/grounding_dino_swin-t_pretrain_obj365.py \--weights grounding_dino_swin-t_pretrain_obj365_goldg_grit9m_v3det_20231204_095047-b448804b.pth \--texts zebra. giraffe -c(3) Phrase Grounding Phrase Grounding 是指的用户输入一句语言描述模型自动对其涉及到的名词短语想对应的 bbox 进行检测有两种用法 这里用到了NLTK 库首先寻找NLTK 的文件路径执行代码 import nltkif __name__ __main__:print(nltk.find(.))如下图 下载NLTK 将其放到上面的任意路径。下载链接https://gitee.com/qwererer2/nltk_data/tree/gh-pages。解压后将packages重新命名为nltk_data然后将nltk_data移动上面图片中的任意目录。 新建任意脚本运行下面代码 from nltk.book import *出现下图结果则表明没有问题。 通过 NLTK 库自动提取名词短语然后进行检测 python demo/image_demo.py images/apples.jpg \configs/mm_grounding_dino/grounding_dino_swin-t_pretrain_obj365.py \--weights grounding_dino_swin-t_pretrain_obj365_goldg_grit9m_v3det_20231204_095047-b448804b.pth \--texts There are many apples here.程序内部会自动切分出 many apples 作为名词短语然后检测出对应物体。不同的输入描述对预测结果影响很大。 用户自己指定句子中哪些为名词短语避免 NLTK 提取错误的情况 python demo/image_demo.py images/fruit.jpg \configs/mm_grounding_dino/grounding_dino_swin-t_pretrain_obj365.py \--weights grounding_dino_swin-t_pretrain_obj365_goldg_grit9m_v3det_20231204_095047-b448804b.pth \--texts The picture contains watermelon, flower, and a white bottle. \--tokens-positive [[[21,31]], [[45,59]]] --pred-score-thr 0.1221,31 对应的名词短语为 watermelon45,59 对应的名词短语为 a white bottle。 (4) 指代性表达式理解 指代性表达式理解是指的用户输入一句语言描述模型自动对其涉及到的指代性表达式进行理解, 不需要进行名词短语提取。 python demo/image_demo.py images/apples.jpg \configs/mm_grounding_dino/grounding_dino_swin-t_pretrain_obj365.py \--weights grounding_dino_swin-t_pretrain_obj365_goldg_grit9m_v3det_20231204_095047-b448804b.pth \--texts red apple. \--tokens-positive -1评测 我们所提供的评测脚本都是统一的你只需要提前准备好数据然后运行相关配置就可以了 (1) Zero-Shot COCO2017 val # 单卡 python tools/test.py configs/mm_grounding_dino/grounding_dino_swin-t_pretrain_obj365.py \grounding_dino_swin-t_pretrain_obj365_goldg_grit9m_v3det_20231204_095047-b448804b.pth# 8 卡 ./tools/dist_test.sh configs/mm_grounding_dino/grounding_dino_swin-t_pretrain_obj365.py \grounding_dino_swin-t_pretrain_obj365_goldg_grit9m_v3det_20231204_095047-b448804b.pth 8(2) Zero-Shot ODinW13 # 单卡 python tools/test.py configs/mm_grounding_dino/odinw/grounding_dino_swin-t_pretrain_odinw13.py \grounding_dino_swin-t_pretrain_obj365_goldg_grit9m_v3det_20231204_095047-b448804b.pth# 8 卡 ./tools/dist_test.sh configs/mm_grounding_dino/odinw/grounding_dino_swin-t_pretrain_odinw13.py \grounding_dino_swin-t_pretrain_obj365_goldg_grit9m_v3det_20231204_095047-b448804b.pth 8评测数据集结果可视化 为了方便大家对模型预测结果进行可视化和分析我们支持了评测数据集预测结果可视化以指代性表达式理解为例用法如下 python tools/test.py configs/mm_grounding_dino/refcoco/grounding_dino_swin-t_pretrain_zeroshot_refexp \grounding_dino_swin-t_pretrain_obj365_goldg_grit9m_v3det_20231204_095047-b448804b.pth --work-dir refcoco_result --show-dir save_path模型在推理过程中会将可视化结果保存到 refcoco_result/{当前时间戳}/save_path 路径下。其余评测数据集可视化只需要替换配置文件即可。 下面展示一些数据集的可视化结果 左图为 GT右图为预测结果 COCO2017 val 结果 Flickr30k Entities 结果 DOD 结果 RefCOCO val 结果 RefCOCO testA 结果 gRefCOCO val 结果 模型训练 如果想复现我们的结果你可以在准备好数据集后直接通过如下命令进行训练 # 单机 8 卡训练仅包括 obj365v1 数据集 ./tools/dist_train.sh configs/mm_grounding_dino/grounding_dino_swin-t_pretrain_obj365.py 8 # 单机 8 卡训练包括 obj365v1/goldg/grit/v3det 数据集其余数据集类似 ./tools/dist_train.sh configs/mm_grounding_dino/grounding_dino_swin-t_pretrain_obj365_goldg_grit9m_v3det.py 8多机训练的用法请参考 train.md。MM-Grounding-DINO T 模型默认采用的是 32 张 3090Ti如果你的总 bs 数不是 32x4128那么你需要手动的线性调整学习率。 预训练自定义格式说明 为了统一不同数据集的预训练格式我们参考 Open-GroundingDino 所设计的格式。具体来说分成 2 种格式 (1) 目标检测数据格式 OD {filename: obj365_train_000000734304.jpg,height: 512,width: 769,detection: {instances: [{bbox: [109.4768676992, 346.0190429696, 135.1918335098, 365.3641967616], label: 2, category: chair},{bbox: [58.612365705900004, 323.2281494016, 242.6005859067, 451.4166870016], label: 8, category: car}]} }label字典中所对应的数值需要和相应的 label_map 一致。 instances 列表中的每一项都对应一个 bbox (x1y1x2y2 格式)。 (2) phrase grounding 数据格式 VG {filename: 2405116.jpg,height: 375,width: 500,grounding:{caption: Two surfers walking down the shore. sand on the beach.,regions: [{bbox: [206, 156, 282, 248], phrase: Two surfers, tokens_positive: [[0, 3], [4, 11]]},{bbox: [303, 338, 443, 343], phrase: sand, tokens_positive: [[36, 40]]},{bbox: [[327, 223, 421, 282], [300, 200, 400, 210]], phrase: beach, tokens_positive: [[48, 53]]}]}tokens_positive 表示当前 phrase 在 caption 中的字符位置。 自定义数据集微调训练案例 为了方便用户针对自定义数据集进行下游微调我们特意提供了以简单的 cat 数据集为例的微调训练案例。 1 数据准备 cd mmdetection wget https://download.openmmlab.com/mmyolo/data/cat_dataset.zip unzip cat_dataset.zip -d data/cat/cat 数据集是一个单类别数据集包含 144 张图片已经转换为 coco 格式。 2 配置准备 由于 cat 数据集的简单性和数量较少我们使用 8 卡训练 20 个 epoch相应的缩放学习率不训练语言模型只训练视觉模型。 详细的配置信息可以在 grounding_dino_swin-t_finetune_8xb4_20e_cat 中找到。 3 可视化和 Zero-Shot 评估 由于 MM Grounding DINO 是一个开放的检测模型所以即使没有在 cat 数据集上训练也可以进行检测和评估。 单张图片的可视化结果如下 cd mmdetection python demo/image_demo.py data/cat/images/IMG_20211205_120756.jpg configs/mm_grounding_dino/grounding_dino_swin-t_finetune_8xb4_20e_cat.py --weights grounding_dino_swin-t_pretrain_obj365_goldg_grit9m_v3det_20231204_095047-b448804b.pth --texts cat.测试集上的 Zero-Shot 评估结果如下 python tools/test.py configs/mm_grounding_dino/grounding_dino_swin-t_finetune_8xb4_20e_cat.py grounding_dino_swin-t_pretrain_obj365_goldg_grit9m_v3det_20231204_095047-b448804b.pthAverage Precision (AP) [ IoU0.50:0.95 | area all | maxDets100 ] 0.881Average Precision (AP) [ IoU0.50 | area all | maxDets1000 ] 1.000Average Precision (AP) [ IoU0.75 | area all | maxDets1000 ] 0.929Average Precision (AP) [ IoU0.50:0.95 | area small | maxDets1000 ] -1.000Average Precision (AP) [ IoU0.50:0.95 | areamedium | maxDets1000 ] -1.000Average Precision (AP) [ IoU0.50:0.95 | area large | maxDets1000 ] 0.881Average Recall (AR) [ IoU0.50:0.95 | area all | maxDets100 ] 0.913Average Recall (AR) [ IoU0.50:0.95 | area all | maxDets300 ] 0.913Average Recall (AR) [ IoU0.50:0.95 | area all | maxDets1000 ] 0.913Average Recall (AR) [ IoU0.50:0.95 | area small | maxDets1000 ] -1.000Average Recall (AR) [ IoU0.50:0.95 | areamedium | maxDets1000 ] -1.000Average Recall (AR) [ IoU0.50:0.95 | area large | maxDets1000 ] 0.9134 模型训练 ./tools/dist_train.sh configs/mm_grounding_dino/grounding_dino_swin-t_finetune_8xb4_20e_cat.py 8 --work-dir cat_work_dir模型将会保存性能最佳的模型。在第 16 epoch 时候达到最佳性能如下所示 Average Precision (AP) [ IoU0.50:0.95 | area all | maxDets100 ] 0.901Average Precision (AP) [ IoU0.50 | area all | maxDets1000 ] 1.000Average Precision (AP) [ IoU0.75 | area all | maxDets1000 ] 0.930Average Precision (AP) [ IoU0.50:0.95 | area small | maxDets1000 ] -1.000Average Precision (AP) [ IoU0.50:0.95 | areamedium | maxDets1000 ] -1.000Average Precision (AP) [ IoU0.50:0.95 | area large | maxDets1000 ] 0.901Average Recall (AR) [ IoU0.50:0.95 | area all | maxDets100 ] 0.967Average Recall (AR) [ IoU0.50:0.95 | area all | maxDets300 ] 0.967Average Recall (AR) [ IoU0.50:0.95 | area all | maxDets1000 ] 0.967Average Recall (AR) [ IoU0.50:0.95 | area small | maxDets1000 ] -1.000Average Recall (AR) [ IoU0.50:0.95 | areamedium | maxDets1000 ] -1.000Average Recall (AR) [ IoU0.50:0.95 | area large | maxDets1000 ] 0.967我们可以发现经过微调训练后cat 数据集的训练性能从 88.1 提升到了 90.1。同时由于数据集比较小评估指标波动比较大。 模型自训练伪标签迭代生成和优化 pipeline 为了方便用户从头构建自己的数据集或者希望利用模型推理能力进行自举式伪标签迭代生成和优化不断修改伪标签来提升模型性能我们特意提供了相关的 pipeline。 由于我们定义了两种数据格式为了演示我们也将分别进行说明。 1 目标检测格式 此处我们依然采用上述的 cat 数据集为例假设我们目前只有一系列图片和预定义的类别并不存在标注。 生成初始 odvg 格式文件 import os import cv2 import json import jsonlinesdata_root data/cat images_path os.path.join(data_root, images) out_path os.path.join(data_root, cat_train_od.json) metas [] for files in os.listdir(images_path):img cv2.imread(os.path.join(images_path, files))height, width, _ img.shapemetas.append({filename: files, height: height, width: width})with jsonlines.open(out_path, modew) as writer:writer.write_all(metas)# 生成 label_map.json由于只有一个类别所以只需要写一个 cat 即可 label_map_path os.path.join(data_root, cat_label_map.json) with open(label_map_path, w) as f:json.dump({0: cat}, f)会在 data/cat 目录下生成 cat_train_od.json 和 cat_label_map.json 两个文件。 使用预训练模型进行推理并保存结果 我们提供了直接可用的 配置, 如果你是其他数据集可以参考这个配置进行修改。 python tools/test.py configs/mm_grounding_dino/grounding_dino_swin-t_pretrain_pseudo-labeling_cat.py \grounding_dino_swin-t_pretrain_obj365_goldg_grit9m_v3det_20231204_095047-b448804b.pth会在 data/cat 目录下新生成 cat_train_od_v1.json 文件你可以手动打开确认或者使用 脚本 可视化效果 python tools/analysis_tools/browse_grounding_raw.py data/cat/ cat_train_od_v1.json images --label-map-file cat_label_map.json -o your_output_dir --not-show会在 your_output_dir 目录下生成可视化结果 继续训练提高性能 在得到伪标签后你可以混合一些预训练数据联合进行继续预训练提升模型在当前数据集上的性能然后重新运行 2 步骤得到更准确的伪标签如此循环迭代即可。 2 Phrase Grounding 格式 生成初始 odvg 格式文件 Phrase Grounding 的自举流程要求初始时候提供每张图片对应的 caption 和提前切割好的 phrase 信息。以 flickr30k entities 图片为例生成的典型的文件应该如下所示 [ {filename: 3028766968.jpg,height: 375,width: 500,grounding:{caption: Man with a black shirt on sit behind a desk sorting threw a giant stack of people work with a smirk on his face .,regions: [{bbox: [0, 0, 1, 1], phrase: a giant stack of people, tokens_positive: [[58, 81]]},{bbox: [0, 0, 1, 1], phrase: a black shirt, tokens_positive: [[9, 22]]},{bbox: [0, 0, 1, 1], phrase: a desk, tokens_positive: [[37, 43]]},{bbox: [0, 0, 1, 1], phrase: his face, tokens_positive: [[103, 111]]},{bbox: [0, 0, 1, 1], phrase: Man, tokens_positive: [[0, 3]]}]}} {filename: 6944134083.jpg,height: 319,width: 500,grounding:{caption: Two men are competing in a horse race .,regions: [{bbox: [0, 0, 1, 1], phrase: Two men, tokens_positive: [[0, 7]]}]}} ]初始时候 bbox 必须要设置为 [0, 0, 1, 1]因为这能确保程序正常运行但是 bbox 的值并不会被使用。 {filename: 3028766968.jpg, height: 375, width: 500, grounding: {caption: Man with a black shirt on sit behind a desk sorting threw a giant stack of people work with a smirk on his face ., regions: [{bbox: [0, 0, 1, 1], phrase: a giant stack of people, tokens_positive: [[58, 81]]}, {bbox: [0, 0, 1, 1], phrase: a black shirt, tokens_positive: [[9, 22]]}, {bbox: [0, 0, 1, 1], phrase: a desk, tokens_positive: [[37, 43]]}, {bbox: [0, 0, 1, 1], phrase: his face, tokens_positive: [[103, 111]]}, {bbox: [0, 0, 1, 1], phrase: Man, tokens_positive: [[0, 3]]}]}} {filename: 6944134083.jpg, height: 319, width: 500, grounding: {caption: Two men are competing in a horse race ., regions: [{bbox: [0, 0, 1, 1], phrase: Two men, tokens_positive: [[0, 7]]}]}}你可直接复制上面的文本并假设将文本内容粘贴到命名为 flickr_simple_train_vg.json 文件中并放置于提前准备好的 data/flickr30k_entities 数据集目录下具体见数据准备文档。 使用预训练模型进行推理并保存结果 我们提供了直接可用的 配置, 如果你是其他数据集可以参考这个配置进行修改。 python tools/test.py configs/mm_grounding_dino/grounding_dino_swin-t_pretrain_pseudo-labeling_flickr30k.py \grounding_dino_swin-t_pretrain_obj365_goldg_grit9m_v3det_20231204_095047-b448804b.pth会在 data/flickr30k_entities 目录下新生成 flickr_simple_train_vg_v1.json 文件你可以手动打开确认或者使用 脚本 可视化效果 python tools/analysis_tools/browse_grounding_raw.py data/flickr30k_entities/ flickr_simple_train_vg_v1.json flickr30k_images -o your_output_dir --not-show会在 your_output_dir 目录下生成可视化结果如下图所示 继续训练提高性能 在得到伪标签后你可以混合一些预训练数据联合进行继续预训练提升模型在当前数据集上的性能然后重新运行 2 步骤得到更准确的伪标签如此循环迭代即可。
http://www.dnsts.com.cn/news/118283.html

相关文章:

  • 网站建设过程中服务器的搭建方式青岛路桥建设集团有限公司网站
  • 株洲网站制作公司网页设计属于什么行业类别
  • 淘宝网现状 网站建设如何做彩票网站代理
  • qq网站临时会话wordpress高级靶机
  • html5企业网站无锡电商网站设计
  • 东莞网站建设lhznkj网站建设费1万多入什么科目
  • 扬中网站建设怎么样兰州网站设计
  • 怎么攻击网站吗opencart做外贸网站怎样
  • 网站建设需要保存什么什么是网站组件
  • 界面设计网站推荐广州番禺人才网
  • 企业做网站域名需要自己申请吗湖南大和品牌设计有限公司
  • win2008r2搭建php网站优化设计七年级上册数学答案
  • 做外贸在什么网站好安徽网络推广新手
  • 无锡做家纺公司网站苏州新区网页设计培训
  • 机械类 网站源码基金从业培训网站
  • 一个服务器上有两个网站 要备案两次吗怎样做像绿色和平组织类似的网站
  • 现在流行什么语言建设网站芜湖seo网站优化
  • 建立企业网站步骤wordpress 旅游 主题
  • 沧州网站建设设计太原网络推广
  • 手机如何做软件淘宝客网站做seo
  • 南宁兴宁区建设局网站h5制作报价细则
  • 网站跳出打开上次浏览的网站模板
  • 网站建设跟前端有什么区别全国门户网站有哪些
  • 公司自建网站万户网络做网站怎么样
  • 丽水房产网站建设企业logo标志设计公司
  • 优化网站工具怎么建设电子邮箱网站
  • 湘西州建设银行网站北京网站建设 乐云seo
  • 扬州电子商务网站建设百度云分享tp响应式网站开发
  • 广州番禺专业做网站网络营销案例并分析
  • h5 服装网站模板windows优化大师有用吗