Skip to content

Latest commit

 

History

History
292 lines (201 loc) · 8.7 KB

get_started.md

File metadata and controls

292 lines (201 loc) · 8.7 KB

安装和使用教程

环境需求

python>=3.6
numpy>=1.16.0
torch>=1.0  # effdet需要torch>=1.5,如果不使用effdet,在network/__init__.py下将其注释掉
tensorboardX>=1.6
utils-misc>=0.0.5
mscv>=0.0.3
matplotlib>=3.1.1
opencv-python==4.2.0.34  # opencv>=4.4版本需要编译,耗时较长,建议安装4.2版本
opencv-python-headless==4.2.0.34
albumentations>=0.5.1  # 需要opencv>=4.2
scikit-image>=0.17.2
easydict>=1.9
timm==0.1.30  # timm >= 0.2.0 不兼容 
typing_extensions==3.7.2
tqdm>=4.49.0
PyYAML>=5.3.1
Cython>=0.29.16
pycocotools>=2.0  # 需要Cython
omegaconf>=2.0.0  # effdet依赖
ipdb>=0.13.9  # 调试工具

  使用pip install逐行安装即可。也可以安装好pytorch后使用bash ./install.sh一键安装依赖项。

训练和验证模型voc或coco数据集

1. 克隆此项目

git clone https://github.com/misads/easy_detection
cd easy_detection

2. 准备数据集(以voc为例)

  1. 下载voc数据集,这里提供一个VOC0712的网盘下载链接:https://pan.baidu.com/s/1AYao-vYtHbTRN-gQajfHCw,密码7yyp。

  2. 在项目目录下新建datasets目录:

    mkdir datasets
  3. 将voc数据集的VOC2007或者VOC2017目录移动datasets/voc目录。(推荐使用软链接)

    ln -s <VOC的下载路径>/VOCdevkit/VOC2017 datasets/voc
  4. 数据准备好后,数据的目录结构看起来应该是这样的:

    easy_detection
        └── datasets
              ├── voc           
              │    ├── Annotations
              │    ├── JPEGImages
              │    └── ImageSets/Main
              │            ├── train.txt
              │            └── test.txt
              └── <其他数据集>
  5. 预览数据集标注

  运行下面的指令来预览数据集标注:

python3 preview.py --config configs/faster_rcnn_voc.yml
tensorboard --logdir logs/preview

  效果如下:   visualize

3. 单卡训练模型

Faster RCNN

python3 train.py --config configs/faster_rcnn_voc.yml

训练日志

YOLOv2

python3 train.py --config configs/yolo2_voc.yml

训练日志

darknet19_448.conv.23是Yolo2在ImageNet上的预训练模型,可以在yolo官网下载。[下载地址]

YOLOv3

python3 train.py --config configs/yolo3_voc.yml

darknet53.conv.74可以在yolo官网下载。[下载地址]

参数说明

作用 参数 示例 说明
指定训练标签 --tag --tag yolo2_voc 日志会保存在logs/标签目录下,模型会保存在checkpoints/标签目录下。
选择配置文件 --config --config configs/faster_rcnn_voc.yml 必须明确给定
加载之前的模型/恢复训练 --load --load pretrained/yolo2.pt --resume配合--load使用,会恢复上次训练的epoch和优化器。
调试模式 --debug --debug 调试模式下只会训练几个batch就会开始验证。

4. 多卡训练模型

Faster RCNN

# 8卡
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 ./dist_train.sh 8 --config configs/faster_rcnn_voc_dist.yml

5. 验证训练模型

  1. 新建pretrained文件夹:

    mkdir pretrained
  2. 以Faster-RCNN为例,下载[预训练模型],并将其放在pretrained目录下:

    easy_detection
        └── pretrained
              └── 0_voc_FasterRCNN.pt
  3. 运行以下命令来验证模型的mAP指标:

Faster RCNN

python3 eval.py --config configs/faster_rcnn_voc.yml --load pretrained/0_voc_FasterRCNN.pt

YOLOv2

python3 eval.py --config configs/yolo2_voc.yml --load pretrained/0_voc_Yolo2.pt
  1. 如果需要使用Tensorboard可视化预测结果,可以在上面的命令最后加上--vis参数。然后运行tensorboard --logdir results/cache查看检测的可视化结果。如下图所示:

  visualize

  1. 使用其他的模型只需要修改--config参数使用不同配置文件即可。

自定义数据集(以voc格式为例)

1. 准备数据集

  1. 将自己的数据集制作成VOC格式,并放在datasets目录下(可以使用软链接)。目录结构如下:

    easy_detection
        └── datasets
              └── mydata_dir    
                   ├── Annotations
                   ├── JPEGImages
                   └── ImageSets/Main
                           ├── train.txt
                           └── val.txt
  2. configs/data_roots目录下新建一个mydata.py,内容如下:

    class Data(object):
        data_format = 'VOC'
        voc_root = 'datasets/mydata_dir'
        train_split = 'train.txt'
        val_split = 'val.txt' 
        class_names = ["car", "person", "bus"]  # 所有的类别名
        
        img_format = 'jpg'  # 根据图片文件是jpg还是png设为'jpg'或者'png'
  3. configs目录下复制faster_rcnn_voc.yml,改为faster_rcnn_mydata.yml,修改内容如下:

MODEL:
  NAME: Faster_RCNN
  BACKBONE: resnet50
DATA:
  DATASET: mydata  # 这个注意要改一下
  TRANSFORM: frcnn
  SCALE: [600, 1000]
OPTIMIZE:
  OPTIMIZER: sgd
  BASE_LR: 0.001 
  SCHEDULER: 1x
  BATCH_SIZE: 1
  1. 完成定义数据集后,训练和验证时就可以使用--config configs/faster_rcnn_mydata.yml参数来使用自己的数据集。

2. 预览数据集标注

  1. 运行preview.py

    python3 preview.py --config faster_rcnn_mydata.yml
  2. 运行tensorboard

    tensorboard --logdir logs/preview
  3. 打开浏览器,查看标注是否正确。

3. 在自定义数据集上训练已有模型

Faster RCNN

python3 train.py --config configs/faster_rcnn_mydata.yml

  学习率和batch_size可以在config文件中视情况调整。

自定义检测模型

  1. 复制network目录下的Faster_RCNN文件夹,改成另外一个名字(比如MyNet)。
  2. 仿照Faster_RCNN的model.py,修改自己的网络结构、损失函数和优化过程。
  3. network/__init__.pyimport你模型的Model类并且在models = {}中添加它。
from .Faster_RCNN.Model import Model as Faster_RCNN
from .MyNet.Model import Model as MyNet
models = {
    'Faster_RCNN': Faster_RCNN,
    'MyNet': MyNet,
}
  1. 在config文件中将MODEL.NAME设置为自己的检测模型名称。

WEB端监控和监控任务

  1. 安装Flask
pip install Flask
  1. 打开web服务
python serve.py -p8000 # 打开在8000端口
  1. 用浏览器输入localhost:8000访问,效果如下:

msboard