• mmdetection使用记录汇总


    mmdetection及其他相关项目的使用汇总

    最近需要用到多模态尤其是CV方面的知识, 所以学习和使用了一下mmdetection和其他CV项目, 总结记录下遇到的各种问题, 以便往后查阅。

    一、mmdetection下载安装

    1. 总的安装见 requirements.txt

    mmdetection版本为当前最新的2.24.1, 总的安装见mmdetection/requirements.txt, 实际上包括requirements/build.txt/optional.txt/runtime.txt/tests.txt四个文件的包,
    建议手动安装, 尤其是涉及的torch、mmcv-full、opencv-python、detectron2(文档智能LayoutLM系列用到)。
    安装mmcv-full==1.5.1, 建议到到官方github查看版本要求, 需要指定cuda版本和torch版本, 例如下面的例子:

    pip install mmcv-full==1.5.1 -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.8.0/index.html
    pip install mmcv-full==1.5.1 -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.8.0/index.html
    pip install mmcv-full==1.5.1 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html
    
    • 1
    • 2
    • 3

    2. 安装 torch 以及其他

    建议到官网指定下载, 因为需要指定cuda版本等

    pip3 install torch==1.8.0 torchvision==0.9.0 torchmetrics==0.9.1 --extra-index-url https://download.pytorch.org/whl/cu113
    
    • 1

    3. 安装 detectron2

    因为各种安装有问题, 所以改为源码安装, detectron20.6, datasets2.2.1。

    git clone https://github.com/facebookresearch/detectron2.git
    python -m pip install -e detectron2
    
    • 1
    • 2

    4. 安装 PaddleOCR==2.5.0.3 【需要当前最新 paddle 2.3.0】

    看着百度paddle的项目, 官方中文的各大任务, 颇有那么点京东直营的味道。
    pip install paddleOCR==2.5.0.3
    版本太低: ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.22’ not found (required by /home/anaconda3/envs/myzhuo/lib/python3.7/site-packages/paddle/fluid/core_avx.so)

    sudo cp /home/myzhuo/cv/layoutlmft/examples/libstdc++.so.6.0.28 /usr/lib/x86_64-linux-gnu
    sudo rm /usr/lib/x86_64-linux-gnu/libstdc++.so.6
    sudo move /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.bak
    sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28 /usr/lib/x86_64-linux-gnu/libstdc++.so.6
    
    • 1
    • 2
    • 3
    • 4

    5. 安装 protobuf

    PaddleOCR的protobuf版本冲突(推理阶段), [libprotobuf FATAL google/protobuf/stubs/common.cc:83]

    pip install protobuf==3.19.4
    
    • 1

    6. paddle 与 detectron2 冲突

    这就是相对路径的问题了, 两个库都定义了tools这样常见的包名, 觉得还是依赖到项目名比较好, 这样不容易冲突。

    将site-packages/paddleocr/目录中的所有tools.infer
    改为
    paddleocr.tools.infer
    
    • 1
    • 2
    • 3

    7. 安装 tensorboardX

    tensorboardX报错, TypeError: init() got an unexpected keyword argument ‘serialized_options’

    因为PaddleOCR需要protobuf低版本, 如3.10.0, 但是transformers需要protobuf至少3.19.0
    pip install tensorboardX==1.8
    pip install protobuf==3.19.4
    
    • 1
    • 2
    • 3

    二、mmdetection使用记录

    1. 详情

    尝试使用目标检测detection、实例分割instance等功能, 如算法YOLOX/YOLOv3/Faster-RCNN/Cascade-RCNN/Swin-T/Deformable_DETR。

    2、自定义数据需要修改

    修改mmdetection/configs/base/datasets/coco_detection.py或者coco_instance, dataset_type/data_root/data/classes等定义;
    修改mmdet/datasets/coco.py中CocoDataset类的CLASSES, 以及evaluate函数的设置classwise=True;
    修改mmdet/core/evaluation/class_names.py中coco_classes, 以及其他的类;
    部分模型需要修改mmdetection/configs/base/models, 如faster_rcnn_r50_fpn.py的classes;

    3、训练模型参数定义

    以YOLOX_S为例, 修改mmdetection/configs/yolox/yolox_s_8x8_300e_coco.py的data_root/dataset_type/train_pipeline/train_dataset/test_pipeline/data等参数;

    4、训练

    cd mmdetection
    nohup python tools/train.py configs/yolox/yolox_s_8x8_300e_coco_CDLA.py > tc_yolox.log 2>&1 &
    tailf -1000 tc_yolox.log
    
    • 1
    • 2
    • 3

    5、推理

    python image_demo.py
    
    • 1

    三、汇总

    3.1 YOLOv5、YOLOX(mmdet)、PPYOLOE比较(单GPU)

    默认条件下训练时间: YOLOv5 > YOLOX(mmdet) > PPYOLOE, 2k训练数据/1k验证数据, 如果记得没错的话, YOLOv5需要大半天, YOLOX(mmdet)需要一天, PPYOLOE需要5天(可能配得不对), 放弃PPYOLOE;
    默认条件下自带指标: YOLOv5(mAP@0.5-0.9586.65%) > YOLOX(mmdet, mAP@0.5-0.95), YOLOv5要稍微好一些;
    个人的主观测试指标: YOLOX与YOLOv5效果大致相当, YOLOX(mmdet)的学习率除以4, 实测要比YOLOX默认参数好一点;
    建议: 不过YOLOv5是GPL协议的, 建议还是用更宽松协议的源码。

    希望对你有所帮助!

  • 相关阅读:
    深入探讨梯度下降:优化机器学习的关键步骤(二)
    Vue 项目部署为 HTTPS 站点
    低代码技术的全面应用:加速创新、降低成本
    java计算机毕业设计交通规则考试系统源码+mysql数据库+系统+lw文档+部署
    MCE | 淀粉样蛋白沉积或是阿尔茨海默症发展“驱动者”
    【Python面试】——Python如何进行内存管理
    Linux0.12内核源码解读(2)-Bootsect.S
    【leetcode】【2022/10/19】1700. 无法吃午餐的学生数量
    Linux 环境安装【jdk、Tomcat、Docker、Maven、Kafka、Redis等】
    Ai图像绘制模型训练以及应用
  • 原文地址:https://blog.csdn.net/rensihui/article/details/125619229