• YOLO家族再度升级——阿里达摩院DAMO-YOLO重磅来袭


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

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

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

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

    【安装】

    1. 步骤一. 安装DAMO-YOLO.
    2. git clone https://github.com/tinyvision/DAMO-YOLO.git
    3. cd DAMO-YOLO/
    4. conda create -n DAMO-YOLO python=3.7 -y
    5. conda activate DAMO-YOLO
    6. conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cudatoolkit=10.2 -c pytorch
    7. pip install -r requirements.txt
    8. export PYTHONPATH=$PWD:$PYTHONPATH
    9. 步骤二. 安装pycocotools.
    10. pip3 install cython;
    11. 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数据集零起步训练】

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

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

    1. Step1. 将您的自定义数据转换成COCO格式,并且将数据集路径添加到damo/config/paths_catalog.py,确保您的自定义数据集名称以"coco"结尾。数据的目录组织结构如下:
    2. ├── Custom_coco
    3. │ ├── annotations
    4. │ │ ├── instances_train2017.json
    5. │ │ └── instances_val2017.json
    6. │ ├── train2017
    7. │ ├── val2017
    8. │ ├── LICENSE
    9. │ ├── README.txt
    10. Step2. 在配置文件中加入预训练模型路径,例如: config.train.finetune_path='./damoyolo_tinynasL25_S.pth',最后根据您的自定义数据的数据量和数据特点,修改配置文件中的learning_rate/training epochs/datasets和其他必要超参。
    11. Step3. 开始微调训练:
    12. 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. 步骤1. 如果您想自定义DAMO-YOLO骨干网络,可以参考适用于DAMO-YOLO的MAE-NAS教程,通过该教程您可以一步步学习如何使用latency/flops作为约束条件搜索该条件下的最优模型。
    2. 步骤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)。
    3. structure = self.read_structure('tinynas_customize.txt')
    4. TinyNAS = { 'name'='TinyNAS_res', # ResNet形式的Tinynas骨干网络
    5. 'out_indices': (2,4,5)}
    6. TinyNAS = { 'name'='TinyNAS_csp', # CSPNet形式的Tinynas骨干网络
    7. 'out_indices': (2,3,4)}

    【模型转换】

    1. 步骤一:将torch模型转换成onnx或者TensorRT推理引擎。具体使用方法如下:
    2. 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
    3. 其中--end2end表示在导出的onnx或者TensorRT引擎中集成NMS模块,--trt_eval表示在TensorRT导出完成后即在coco2017 val上进行精度验证。
    4. 已经完成TensorRT导出的模型也可由如下指令在coco2017 val上进行精度验证。--end2end表示待测试的TensorRT引擎包含NMS组件。
    5. 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
    6. 步骤二:使用已经导出的TensorRT引擎进行目标检测。
    7. 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:

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

  • 相关阅读:
    18_ue4进阶末日生存游戏开发[创建运行时UI]
    Maven配置阿里云中央仓库settings.xml
    华测监测预警系统 2.2 任意文件读取漏洞复现 [附POC]
    Yolov8小目标检测(20):多尺度MultiSEAM,提高特征图的分辨率增强小目标检测能力
    yolov4模型部署流程
    1005. K 次取反后最大化的数组和-快速排序
    论文阅读--On optimization methods for deep learning
    flex布局中父元素常用属性总结
    从开源项目探讨“FPGA挖矿”的本质
    【39元用上Rockchip linux 1.5G双核开发板】-[板载Flash烧写镜像系统]-幸狐Luckfox Pico-超越树莓派PICO
  • 原文地址:https://blog.csdn.net/Together_CZ/article/details/128120674