YOLO家族再度升级——阿里达摩院DAMO-YOLO重磅来袭
创始人
2024-04-15 05:39:03
0

最近看到阿里达摩院发表了他们的最新研究成果,在YOLO系列上推出的新的模型DAMO-YOLO,还没有来得及去仔细了解一下,这里只是简单介绍下,后面有时间的话再详细研究下。

官方项目在这里,首页截图如下所示:

 目前来看,star量不是很高,可能是还没有广泛关注起来,后面看看实际表现会如何。

 官方也提供了比较详细的使用说明:

【安装】

步骤一. 安装DAMO-YOLO.
git clone https://github.com/tinyvision/DAMO-YOLO.git
cd DAMO-YOLO/
conda create -n DAMO-YOLO python=3.7 -y
conda activate DAMO-YOLO
conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cudatoolkit=10.2 -c pytorch
pip install -r requirements.txt
export PYTHONPATH=$PWD:$PYTHONPATH步骤二. 安装pycocotools.
pip3 install cython;
pip3 install 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'

【推理】

python tools/torch_inference.py -f configs/damoyolo_tinynasL25_S.py --ckpt /path/to/your/damoyolo_tinynasL25_S.pth --path assets/dog.jpg

【COCO数据集零起步训练】

步骤一. 准备好COCO数据集,推荐将coco数据软链接到datasets目录下。
cd 
ln -s /path/to/your/coco ./datasets/coco步骤二. 在COCO数据上进行训练,使用-f选项指定配置(config)文件。
python -m torch.distributed.launch --nproc_per_node=8 tools/train.py -f configs/damoyolo_tinynasL25_S.py

【在自己的数据集上微调】

Step1. 将您的自定义数据转换成COCO格式,并且将数据集路径添加到damo/config/paths_catalog.py,确保您的自定义数据集名称以"coco"结尾。数据的目录组织结构如下:
├── Custom_coco
│   ├── annotations
│   │   ├── instances_train2017.json
│   │   └── instances_val2017.json
│   ├── train2017
│   ├── val2017
│   ├── LICENSE
│   ├── README.txtStep2. 在配置文件中加入预训练模型路径,例如: config.train.finetune_path='./damoyolo_tinynasL25_S.pth',最后根据您的自定义数据的数据量和数据特点,修改配置文件中的learning_rate/training epochs/datasets和其他必要超参。Step3. 开始微调训练:
python -m torch.distributed.launch --nproc_per_node=8 tools/train.py -f configs/damoyolo_tinynasL25_S_finetune.py

【COCO评估】

python -m torch.distributed.launch --nproc_per_node=8 tools/eval.py -f configs/damoyolo_tinynasL25_S.py --ckpt /path/to/your/damoyolo_tinynasL25_S.pth

【使用TinyNAS自定义DAMO-YOLO骨干网络】

步骤1. 如果您想自定义DAMO-YOLO骨干网络,可以参考适用于DAMO-YOLO的MAE-NAS教程,通过该教程您可以一步步学习如何使用latency/flops作为约束条件搜索该条件下的最优模型。步骤2. 模型搜索结束后,您可以使用搜索得到的模型结构文件替换config中的structure text。把Backbone的name设置成TinyNAS_res或者TinyNAS_csp,将会分别得到ResNet或者CSPNet形式的TinyNAS骨干网络, 请注意到TinyNAS_res骨干网络的out_indices=(2,4,5)而TinyNAS_csp骨干网络的out_indices=(2,3,4)。
structure = self.read_structure('tinynas_customize.txt')
TinyNAS = { 'name'='TinyNAS_res', # ResNet形式的Tinynas骨干网络'out_indices': (2,4,5)}
TinyNAS = { 'name'='TinyNAS_csp', # CSPNet形式的Tinynas骨干网络'out_indices': (2,3,4)}

【模型转换】

步骤一:将torch模型转换成onnx或者TensorRT推理引擎。具体使用方法如下:
python tools/converter.py -f configs/damoyolo_tinynasL25_S.py -c damoyolo_tinynasL25_S.pth --batch_size 1 --img_size 640 --trt --end2end --trt_eval
其中--end2end表示在导出的onnx或者TensorRT引擎中集成NMS模块,--trt_eval表示在TensorRT导出完成后即在coco2017 val上进行精度验证。已经完成TensorRT导出的模型也可由如下指令在coco2017 val上进行精度验证。--end2end表示待测试的TensorRT引擎包含NMS组件。
python tools/trt_eval.py -f configs/damoyolo_tinynasL25_S.py -trt deploy/damoyolo_tinynasL25_S_end2end.trt --batch_size 1 --img_size 640 --end2end步骤二:使用已经导出的TensorRT引擎进行目标检测。
python tools/trt_inference.py -f configs/damoyolo_tinynasL25_s.py -t deploy/damoyolo_tinynasL25_S_end2end_fp16_bs1.trt -p assets/dog.jpg --img_size 640 --end2end

官方目前一共放出来了三款模型分别为:S M T,结果图分别如下:

damoyolo_tinynasL20_T:

 damoyolo_tinynasL25_S:

 damoyolo_tinynasL35_M:

今天简单到这里,后面有时间再详细研究,记录一下! 

相关内容

热门资讯

银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...