【E507】基于虚拟仿真环境下的自动驾驶交通标志识别

2021-08-23 17:02:42      索炜达电子      649     

项目编号:E507

文件大小:4.5M

源码说明:带中文注释

开发环境:Python

简要概述:

分割->抠图->检测


比赛定位精度要求太高,关键还是使用cascade+更好的backbone,前几大佬基本都用了4个cascade头+cvpr19-HRNet,另外加上GIoU-loss和KL-loss应该有可观提升。


requirements

    python>=3.6

    numpy

    pandas

    opencv-python

    pytorch >= 1.0.0

    matplotlib

    pycocotools

    tqdm

    cython

    cffi

    opencv-python >= 4.0

    scipy

    msgpack

    easydict

    matplotlib

    pyyaml

    tensorboardX

数据准备

数据目录为~/data/dfsign,下载zip文件和label文件,解压zip到test和train目录


~/data

├── dfsign

│   ├── test

│   ├── train

│   ├── Test_fix.zip

│   ├── Train_fix.zip

│   ├── train_label_fix.csv

代码准备

代码需要放在特定目录$WORKDIR = ~/working/dfsign


链接数据


ln -s ~/data $WORKDIR/mmdetection

mmdetection extensions


cd $WORKDIR/mmdetection

./compile.sh

python setup.py develop

模型权重准备

将deeplab模型放在$WORKDIR/pytorch-deeplab-xception/run/dfsign

将detection模型放在WORKDIR/mmdetection/dfsign/work_dirs

生成训练数据

cd $WORKDIR/tools

# generate segmentation dataset

python convert2voc.py train_test

# generate detection trainset

python generate_train_chip.py

训练

使用deeplab和mmdetection中cascade


测试

cd $WORKDIR/pytorch-deeplab-xception

# run deeplab

./test.sh


cd $WORKDIR/tools

# crop seg results

python generate_mask_chip.py


cd $WORKDIR/mmdetection/dfsign

# run detect model_1 on images from seg results

python detect.py cascade_rcnn_x101_64x4d_fpn.py work_dirs/cascade_rcnn_x101_64x4d_fpn_1x/9954.pth --chip


cd $WORKDIR/tools

# crop detect results

python generate_detect_chip.py


cd $WORKDIR/mmdetection/dfsign

# run detect model_1 on images from detect results

python detect.py cascade_rcnn_x101_64x4d_fpn.py work_dirs/cascade_rcnn_x101_64x4d_fpn_1x/9954.pth

cd $WORKDIR/tools

# predict_1

python dfsign_submit.py predict_1


cd $WORKDIR/mmdetection/dfsign

# 修改cascade_rcnn_x101_64x4d_fpn_1x.py中25行anchor_ratios为[0.5, 1.0, 2.0]

# run detect model_2 on images from detect results

python detect.py cascade_rcnn_x101_64x4d_fpn.py work_dirs/cascade_rcnn_x101_64x4d_fpn_1x/9946.pth

cd $WORKDIR/tools

# predict_2

python dfsign_submit.py predict_2


# ensemble

python dfsign_ensemble

# 生成的predict.csv为最终结果

目录│文件列表:

 ├ coco预训练模型

 │  └ mmdetection_with_SENet154

 │     │ .style.yapf

 │     │ .travis.yml

 │     │ compile.sh

 │     │ CONTRIBUTING.md

 │     │ GETTING_STARTED.md

 │     │ INSTALL.md

 │     │ LICENSE

 │     │ MODEL_ZOO.md

 │     │ README.md

 │     │ setup.py

 │     │ TECHNICAL_DETAILS.md

 │     ├ configs

 │     │  │ cascade_mask_rcnn_r101_fpn_1x.py

 │     │  │ cascade_mask_rcnn_r50_caffe_c4_1x.py

 │     │  │ cascade_mask_rcnn_r50_fpn_1x.py

 │     │  │ cascade_mask_rcnn_x101_32x4d_fpn_1x.py

 │     │  │ cascade_mask_rcnn_x101_64x4d_fpn_1x.py

 │     │  │ cascade_rcnn_r101_fpn_1x.py

 │     │  │ cascade_rcnn_r50_caffe_c4_1x.py

 │     │  │ cascade_rcnn_r50_fpn_1x.py

 │     │  │ cascade_rcnn_x101_32x4d_fpn_1x.py

 │     │  │ cascade_rcnn_x101_64x4d_fpn_1x.py

 │     │  │ faster_rcnn_ohem_r50_fpn_1x.py

 │     │  │ faster_rcnn_r101_fpn_1x.py

 │     │  │ faster_rcnn_r50_caffe_c4_1x.py

 │     │  │ faster_rcnn_r50_fpn_1x.py

 │     │  │ faster_rcnn_x101_32x4d_fpn_1x.py

 │     │  │ faster_rcnn_x101_64x4d_fpn_1x.py

 │     │  │ fast_mask_rcnn_r101_fpn_1x.py

 │     │  │ fast_mask_rcnn_r50_caffe_c4_1x.py

 │     │  │ fast_mask_rcnn_r50_fpn_1x.py

 │     │  │ fast_rcnn_r101_fpn_1x.py

 │     │  │ fast_rcnn_r50_caffe_c4_1x.py

 │     │  │ fast_rcnn_r50_fpn_1x.py

 │     │  │ mask_rcnn_r101_fpn_1x.py

 │     │  │ mask_rcnn_r50_caffe_c4_1x.py

 │     │  │ mask_rcnn_r50_fpn_1x.py

 │     │  │ mask_rcnn_x101_32x4d_fpn_1x.py

 │     │  │ mask_rcnn_x101_64x4d_fpn_1x.py

 │     │  │ retinanet_r101_fpn_1x.py

 │     │  │ retinanet_r50_fpn_1x.py

 │     │  │ retinanet_se154_fpn_1x.py

 │     │  │ retinanet_x101_32x4d_fpn_1x.py

 │     │  │ retinanet_x101_64x4d_fpn_1x.py

 │     │  │ rpn_r101_fpn_1x.py

 │     │  │ rpn_r50_caffe_c4_1x.py

 │     │  │ rpn_r50_fpn_1x.py

 │     │  │ rpn_x101_32x4d_fpn_1x.py

 │     │  │ rpn_x101_64x4d_fpn_1x.py

 │     │  │ ssd300_coco.py

 │     │  │ ssd512_coco.py

 │     │  ├ dcn

 │     │  │  │ cascade_mask_rcnn_dconv_c3-c5_r50_fpn_1x.py

 │     │  │  │ cascade_rcnn_dconv_c3-c5_r50_fpn_1x.py

 │     │  │  │ faster_rcnn_dconv_c3-c5_r50_fpn_1x.py

 │     │  │  │ faster_rcnn_dconv_c3-c5_x101_32x4d_fpn_1x.py

 │     │  │  │ faster_rcnn_dpool_r50_fpn_1x.py

 │     │  │  │ faster_rcnn_mdconv_c3-c5_r50_fpn_1x.py

 │     │  │  │ faster_rcnn_mdpool_r50_fpn_1x.py

 │     │  │  │ mask_rcnn_dconv_c3-c5_r50_fpn_1x.py

 │     │  │  └ README.md

 │     │  ├ fcos

 │     │  │  │ fcos_mstrain_640_800_r101_caffe_fpn_gn_2x_4gpu.py

 │     │  │  │ fcos_mstrain_640_800_x101_64x4d_fpn_gn_2x.py

 │     │  │  │ fcos_r50_caffe_fpn_gn_1x_4gpu.py

 │     │  │  └ README.md

 │     │  ├ ghm

 │     │  │  │ README.md

 │     │  │  └ retinanet_ghm_r50_fpn_1x.py

 │     │  ├ gn

 │     │  │  │ mask_rcnn_r101_fpn_gn_2x.py

 │     │  │  │ mask_rcnn_r50_fpn_gn_2x.py

 │     │  │  │ mask_rcnn_r50_fpn_gn_contrib_2x.py

 │     │  │  └ README.md

 │     │  ├ gn+ws

 │     │  │  │ faster_rcnn_r50_fpn_gn_ws_1x.py

 │     │  │  │ mask_rcnn_r50_fpn_gn_ws_20_23_24e.py

 │     │  │  │ mask_rcnn_r50_fpn_gn_ws_2x.py

 │     │  │  │ mask_rcnn_x101_32x4d_fpn_gn_ws_2x.py

 │     │  │  └ README.md

 │     │  ├ guided_anchoring

 │     │  │  │ ga_faster_r50_caffe_fpn_1x.py

 │     │  │  │ ga_faster_x101_32x4d_fpn_1x.py

 │     │  │  │ ga_fast_r50_caffe_fpn_1x.py

 │     │  │  │ ga_retinanet_r50_caffe_fpn_1x.py

 │     │  │  │ ga_retinanet_x101_32x4d_fpn_1x.py

 │     │  │  │ ga_rpn_r101_caffe_rpn_1x.py

 │     │  │  │ ga_rpn_r50_caffe_fpn_1x.py

 │     │  │  │ ga_rpn_x101_32x4d_fpn_1x.py

 │     │  │  └ README.md

 │     │  ├ hrnet

 │     │  │  │ cascade_rcnn_hrnetv2p_w32_20e.py

 │     │  │  │ faster_rcnn_hrnetv2p_w18_1x.py

 │     │  │  │ faster_rcnn_hrnetv2p_w32_1x.py

 │     │  │  │ faster_rcnn_hrnetv2p_w40_1x.py

 │     │  │  │ mask_rcnn_hrnetv2p_w18_1x.py

 │     │  │  │ mask_rcnn_hrnetv2p_w32_1x.py

 │     │  │  └ README.md

 │     │  ├ htc

 │     │  │  │ htc_dconv_c3-c5_mstrain_400_1400_x101_64x4d_fpn_20e.py

 │     │  │  │ htc_r101_fpn_20e.py

 │     │  │  │ htc_r50_fpn_1x.py

 │     │  │  │ htc_r50_fpn_20e.py

 │     │  │  │ htc_without_semantic_r50_fpn_1x.py

 │     │  │  │ htc_x101_32x4d_fpn_20e_16gpu.py

 │     │  │  │ htc_x101_64x4d_fpn_20e_16gpu.py

 │     │  │  └ README.md

 │     │  ├ libra_rcnn

 │     │  │  │ libra_faster_rcnn_r101_fpn_1x.py

 │     │  │  │ libra_faster_rcnn_r50_fpn_1x.py

 │     │  │  │ libra_faster_rcnn_x101_64x4d_fpn_1x.py

 │     │  │  │ libra_fast_rcnn_r50_fpn_1x.py

 │     │  │  │ libra_retinanet_r50_fpn_1x.py

 │     │  │  └ README.md

 │     │  ├ pascal_voc

 │     │  │  │ faster_rcnn_r50_fpn_1x_voc0712.py

 │     │  │  │ ssd300_voc.py

 │     │  │  └ ssd512_voc.py

 │     │  └ scratch

 │     │     │ README.md

 │     │     │ scratch_faster_rcnn_r50_fpn_gn_6x.py

 │     │     └ scratch_mask_rcnn_r50_fpn_gn_6x.py

 │     ├ demo

 │     │  └ coco_test_12510.jpg

 │     ├ mmdet

 │     │  │ __init__.py

 │     │  ├ apis

 │     │  │  │ env.py

 │     │  │  │ inference.py

 │     │  │  │ train.py

 │     │  │  └ __init__.py

 │     │  ├ core

 │     │  │  │ __init__.py

 │     │  │  ├ anchor

 │     │  │  │  │ anchor_generator.py

 │     │  │  │  │ anchor_target.py

 │     │  │  │  │ guided_anchor_target.py

 │     │  │  │  └ __init__.py

 │     │  │  ├ bbox

 │     │  │  │  │ assign_sampling.py

 │     │  │  │  │ bbox_target.py

 │     │  │  │  │ geometry.py

 │     │  │  │  │ transforms.py

 │     │  │  │  │ __init__.py

 │     │  │  │  ├ assigners

 │     │  │  │  │  │ approx_max_iou_assigner.py

 │     │  │  │  │  │ assign_result.py

 │     │  │  │  │  │ base_assigner.py

 │     │  │  │  │  │ max_iou_assigner.py

 │     │  │  │  │  └ __init__.py

 │     │  │  │  └ samplers

 │     │  │  │     │ base_sampler.py

 │     │  │  │     │ combined_sampler.py

 │     │  │  │     │ instance_balanced_pos_sampler.py

 │     │  │  │     │ iou_balanced_neg_sampler.py

 │     │  │  │     │ ohem_sampler.py

 │     │  │  │     │ pseudo_sampler.py

 │     │  │  │     │ random_sampler.py

 │     │  │  │     │ sampling_result.py

 │     │  │  │     └ __init__.py

 │     │  │  ├ evaluation

 │     │  │  │  │ bbox_overlaps.py

 │     │  │  │  │ class_names.py

 │     │  │  │  │ coco_utils.py

 │     │  │  │  │ eval_hooks.py

 │     │  │  │  │ mean_ap.py

 │     │  │  │  │ recall.py

 │     │  │  │  └ __init__.py

 │     │  │  ├ loss

 │     │  │  │  │ losses.py

 │     │  │  │  └ __init__.py

 │     │  │  ├ mask

 │     │  │  │  │ mask_target.py

 │     │  │  │  │ utils.py

 │     │  │  │  └ __init__.py

 │     │  │  ├ post_processing

 │     │  │  │  │ bbox_nms.py

 │     │  │  │  │ merge_augs.py

 │     │  │  │  └ __init__.py

 │     │  │  └ utils

 │     │  │     │ dist_utils.py

 │     │  │     │ misc.py

 │     │  │     └ __init__.py

 │     │  ├ datasets

 │     │  │  │ coco.py

 │     │  │  │ concat_dataset.py

 │     │  │  │ custom.py

 │     │  │  │ extra_aug.py

 │     │  │  │ repeat_dataset.py

 │     │  │  │ transforms.py

 │     │  │  │ utils.py

 │     │  │  │ voc.py

 │     │  │  │ xml_style.py

 │     │  │  │ __init__.py

 │     │  │  └ loader

 │     │  │     │ build_loader.py

 │     │  │     │ sampler.py

 │     │  │     └ __init__.py

 │     │  ├ models

 │     │  │  │ builder.py

 │     │  │  │ registry.py

 │     │  │  │ __init__.py

 │     │  │  ├ anchor_heads

 │     │  │  │  │ anchor_head.py

 │     │  │  │  │ fcos_head.py

 │     │  │  │  │ ga_retina_head.py

 │     │  │  │  │ ga_rpn_head.py

 │     │  │  │  │ guided_anchor_head.py

 │     │  │  │  │ retina_head.py

 │     │  │  │  │ rpn_head.py

 │     │  │  │  │ ssd_head.py

 │     │  │  │  └ __init__.py

 │     │  │  ├ backbones

 │     │  │  │  │ hrnet.py

 │     │  │  │  │ resnet.py

 │     │  │  │  │ resnext.py

 │     │  │  │  │ senet.py

 │     │  │  │  │ ssd_vgg.py

 │     │  │  │  └ __init__.py

 │     │  │  ├ bbox_heads

 │     │  │  │  │ bbox_head.py

 │     │  │  │  │ convfc_bbox_head.py

 │     │  │  │  └ __init__.py

 │     │  │  ├ detectors

 │     │  │  │  │ base.py

 │     │  │  │  │ cascade_rcnn.py

 │     │  │  │  │ faster_rcnn.py

 │     │  │  │  │ fast_rcnn.py

 │     │  │  │  │ fcos.py

 │     │  │  │  │ htc.py

 │     │  │  │  │ mask_rcnn.py

 │     │  │  │  │ retinanet.py

 │     │  │  │  │ rpn.py

 │     │  │  │  │ single_stage.py

 │     │  │  │  │ test_mixins.py

 │     │  │  │  │ two_stage.py

 │     │  │  │  └ __init__.py

 │     │  │  ├ losses

 │     │  │  │  │ balanced_l1_loss.py

 │     │  │  │  │ cross_entropy_loss.py

 │     │  │  │  │ focal_loss.py

 │     │  │  │  │ ghm_loss.py

 │     │  │  │  │ iou_loss.py

 │     │  │  │  │ smooth_l1_loss.py

 │     │  │  │  └ __init__.py

 │     │  │  ├ mask_heads

 │     │  │  │  │ fcn_mask_head.py

 │     │  │  │  │ fused_semantic_head.py

 │     │  │  │  │ htc_mask_head.py

 │     │  │  │  └ __init__.py

 │     │  │  ├ necks

 │     │  │  │  │ bfp.py

 │     │  │  │  │ fpn.py

 │     │  │  │  │ hrfpn.py

 │     │  │  │  └ __init__.py

 │     │  │  ├ plugins

 │     │  │  │  │ non_local.py

 │     │  │  │  └ __init__.py

 │     │  │  ├ roi_extractors

 │     │  │  │  │ single_level.py

 │     │  │  │  └ __init__.py

 │     │  │  ├ shared_heads

 │     │  │  │  │ res_layer.py

 │     │  │  │  └ __init__.py

 │     │  │  └ utils

 │     │  │     │ conv_module.py

 │     │  │     │ conv_ws.py

 │     │  │     │ norm.py

 │     │  │     │ scale.py

 │     │  │     │ weight_init.py

 │     │  │     └ __init__.py

 │     │  └ ops

 │     │     │ __init__.py

 │     │     ├ dcn

 │     │     │  │ setup.py

 │     │     │  │ __init__.py

 │     │     │  ├ functions

 │     │     │  │  │ deform_conv.py

 │     │     │  │  │ deform_pool.py

 │     │     │  │  └ __init__.py

 │     │     │  ├ modules

 │     │     │  │  │ deform_conv.py

 │     │     │  │  │ deform_pool.py

 │     │     │  │  └ __init__.py

 │     │     │  └ src

 │     │     │     │ deform_conv_cuda.cpp

 │     │     │     │ deform_conv_cuda_kernel.cu

 │     │     │     │ deform_pool_cuda.cpp

 │     │     │     └ deform_pool_cuda_kernel.cu

 │     │     ├ masked_conv

 │     │     │  │ setup.py

 │     │     │  │ __init__.py

 │     │     │  ├ functions

 │     │     │  │  │ masked_conv.py

 │     │     │  │  └ __init__.py

 │     │     │  ├ modules

 │     │     │  │  │ masked_conv.py

 │     │     │  │  └ __init__.py

 │     │     │  └ src

 │     │     │     │ masked_conv2d_cuda.cpp

 │     │     │     └ masked_conv2d_kernel.cu

 │     │     ├ nms

 │     │     │  │ nms_wrapper.py

 │     │     │  │ setup.py

 │     │     │  │ __init__.py

 │     │     │  └ src

 │     │     │     │ nms_cpu.cpp

 │     │     │     │ nms_cuda.cpp

 │     │     │     │ nms_kernel.cu

 │     │     │     └ soft_nms_cpu.pyx

 │     │     ├ roi_align

 │     │     │  │ gradcheck.py

 │     │     │  │ setup.py

 │     │     │  │ __init__.py

 │     │     │  ├ functions

 │     │     │  │  │ roi_align.py

 │     │     │  │  └ __init__.py

 │     │     │  ├ modules

 │     │     │  │  │ roi_align.py

 │     │     │  │  └ __init__.py

 │     │     │  └ src

 │     │     │     │ roi_align_cuda.cpp

 │     │     │     └ roi_align_kernel.cu

 │     │     ├ roi_pool

 │     │     │  │ gradcheck.py

 │     │     │  │ setup.py

 │     │     │  │ __init__.py

 │     │     │  ├ functions

 │     │     │  │  │ roi_pool.py

 │     │     │  │  └ __init__.py

 │     │     │  ├ modules

 │     │     │  │  │ roi_pool.py

 │     │     │  │  └ __init__.py

 │     │     │  └ src

 │     │     │     │ roi_pool_cuda.cpp

 │     │     │     └ roi_pool_kernel.cu

 │     │     └ sigmoid_focal_loss

 │     │        │ setup.py

 │     │        │ __init__.py

 │     │        ├ functions

 │     │        │  │ sigmoid_focal_loss.py

 │     │        │  └ __init__.py

 │     │        ├ modules

 │     │        │  │ sigmoid_focal_loss.py

 │     │        │  └ __init__.py

 │     │        └ src

 │     │           │ sigmoid_focal_loss.cpp

 │     │           └ sigmoid_focal_loss_cuda.cu

 │     └ tools

 │        │ analyze_logs.py

 │        │ coco_eval.py

 │        │ detectron2pytorch.py

 │        │ dist_test.sh

 │        │ dist_train.sh

 │        │ publish_model.py

 │        │ slurm_test.sh

 │        │ slurm_train.sh

 │        │ test.py

 │        │ train.py

 │        │ upgrade_model_version.py

 │        │ voc_eval.py

 │        └ convert_datasets

 │           └ pascal_voc.py

 └ dfsign

    ├ faster-rcnn.pytorch

    │  │ .gitignore

    │  │ dfsign_detect.py

    │  │ LICENSE

    │  │ README.m

TAG交通标志识别
  • 8 次
  • 1 分