2021-08-23 17:02:42 索煒達(dá)電子 1000
項目編號:E507
文件大?。?.5M
源碼說明:帶中文注釋
開發(fā)環(huán)境:Python
簡要概述:
分割->摳圖->檢測
比賽定位精度要求太高,關(guān)鍵還是使用cascade+更好的backbone,前幾大佬基本都用了4個cascade頭+cvpr19-HRNet,另外加上GIoU-loss和KL-loss應(yīng)該有可觀提升。
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
數(shù)據(jù)準(zhǔn)備
數(shù)據(jù)目錄為~/data/dfsign,下載zip文件和label文件,解壓zip到test和train目錄
~/data
├── dfsign
│ ├── test
│ ├── train
│ ├── Test_fix.zip
│ ├── Train_fix.zip
│ ├── train_label_fix.csv
代碼準(zhǔn)備
代碼需要放在特定目錄$WORKDIR = ~/working/dfsign
鏈接數(shù)據(jù)
ln -s ~/data $WORKDIR/mmdetection
mmdetection extensions
cd $WORKDIR/mmdetection
./compile.sh
python setup.py develop
模型權(quán)重準(zhǔn)備
將deeplab模型放在$WORKDIR/pytorch-deeplab-xception/run/dfsign
將detection模型放在WORKDIR/mmdetection/dfsign/work_dirs
生成訓(xùn)練數(shù)據(jù)
cd $WORKDIR/tools
# generate segmentation dataset
python convert2voc.py train_test
# generate detection trainset
python generate_train_chip.py
訓(xùn)練
使用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為最終結(jié)果
目錄│文件列表:
├ coco預(yù)訓(xùn)練模型
│ └ 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