### ATSS训练自己的数据集
[[Repo](https://github.com/sfzhang15/ATSS)] [[paper](https://arxiv.org/abs/1912.02424)]
### 1.Introduction
anchor-based和anchor-free最本质的区别是正负样本的定义(**how to define positive and negative training samples**). ATSS(Adaptive Training Sample Selection)可以自动选择正负样本基于一些统计学的指标。ATSS提高了anchor based和anchor free的模型的识别精度,使他们之间的gap变小。
### 2.Installation
对于环境的要求
```shell
Pytorch>=1.0
torchvision==0.2.1
cocoapi
yacs
matplotlib
GCC>=4.9 <6.0
python-opencv
```
安装:
```shell
# 自行安装pytorch和torchvision
pip3 install ninja yacs cython matplotlib tqdm
# 安装cocoapi
git clone https://github.com/cocodataset/cocoapi.git
cd cocoapi/PythonAPI
python3 setup.py build_ext install
# atss
git clone https://github.com/sfzhang15/ATSS.git
cd ATSS
# cuda 9.0 ,9.2
sudo CUDA_HOST_COMPILER=/usr/bin/gcc-5 python3 setup.py build develop --no-deps
```
### 3.数据准备
将数据按照MS COCO的数据格式准备,在项目根目录下新建文件夹`datasets/myData`
![](pic/p1.png)
修改项目根目录下`ATSS\atss_core\config\paths_catalog.py`文件
```python
class DatasetCatalog(object):
DATA_DIR = "datasets"
DATASETS = {
"coco_2017_train": {
"img_dir": "myData/train",
"ann_file": "myData/annotations/instances_train.json"
},
"coco_2017_val": {
"img_dir": "myData/val",
"ann_file": "myData/annotations/instances_val.json"
},
```
### 4.修改模型配置文件
修改模型配置文件`ATSS\configs\atss`,在该文件夹下新建文件夹比如`wei_score`,将`atss_dcnv2_X_101_64x4d_FPN_2x.yaml`配置文件拷贝到该文件夹并做如下修改(部分参数可自行修改)
```yaml
MODEL:
META_ARCHITECTURE: "GeneralizedRCNN"
WEIGHT: "catalog://ImageNetPretrained/FAIR/20171220/X-101-64x4d" #<--------预训练权重加载
RPN_ONLY: True
ATSS_ON: True
BACKBONE:
CONV_BODY: "R-101-FPN-RETINANET"
RESNETS:
STRIDE_IN_1X1: False
BACKBONE_OUT_CHANNELS: 256
NUM_GROUPS: 64
WIDTH_PER_GROUP: 4
STAGE_WITH_DCN: (False, False, True, True)
WITH_MODULATED_DCN: True
DEFORMABLE_GROUPS: 1
RETINANET:
USE_C5: False
ATSS:
ANCHOR_SIZES: (64, 128, 256, 512, 1024) # 8S
ASPECT_RATIOS: (1.0,)
SCALES_PER_OCTAVE: 1
USE_DCN_IN_TOWER: True
POSITIVE_TYPE: 'ATSS' # how to select positves: ATSS (Ours) , SSC (FCOS), IoU (RetinaNet)
TOPK: 9 # topk for selecting candidate positive samples from each level
REGRESSION_TYPE: 'BOX' # regressing from a 'BOX' or a 'POINT'
DATASETS:
TRAIN: ("coco_2017_train",) #<----------与数据集对应
TEST: ("coco_2017_val",)
INPUT:
MIN_SIZE_RANGE_TRAIN: (640, 800)
MAX_SIZE_TRAIN: 1333
MIN_SIZE_TEST: 800
MAX_SIZE_TEST: 1333
DATALOADER:
SIZE_DIVISIBILITY: 32
SOLVER:
BASE_LR: 0.01
WEIGHT_DECAY: 0.0001
STEPS: (120000, 160000)
MAX_ITER: 180000
IMS_PER_BATCH: 16 #<-----------batch size可以修改
WARMUP_METHOD: "constant"
TEST:
BBOX_AUG:
ENABLED: True #<--------------多尺度测试
VOTE: True
VOTE_TH: 0.66
MERGE_TYPE: "soft-vote"
H_FLIP: True
SCALES: (400, 500, 600, 640, 700, 900, 1000, 1100, 1200, 1300, 1400, 1800)
SCALE_RANGES: [[96, 10000], [96, 10000], [64, 10000], [64, 10000], [64, 10000], [0, 10000], [0, 10000], [0, 256], [0, 256], [0, 192], [0, 192], [0, 96]]
MAX_SIZE: 3000
SCALE_H_FLIP: True
```
### 5.模型训练
```shell
python3 -m torch.distributed.launch \
--nproc_per_node=8 \
--master_port=$((RANDOM + 10000)) \
tools/train_net.py \
--config-file configs/atss/atss_R_50_FPN_1x.yaml \
DATALOADER.NUM_WORKERS 2 \
OUTPUT_DIR training_dir/atss_R_50_FPN_1x
# 1.如果你使用少的GPU,可以更改--nproc_per_node,指定GPU数量,无需修改其他,batch size不依赖于该参数
# 2.如果你想改变batch size 则修改SOLVER.IMGS_PER_BATCH这个配置项中的参数
# 3.训练的模型江北保存在 OURPUT_DIR
# 4.如果想修改训练的backbone,可以修改--config-file
```
```shell
python3 -m torch.distributed.launch \
--nproc_per_node=1 \
tools/train_net.py \
--config-file configs/atss/wei_score/atss_dcnv2_X_101_64x4d_FPN_2x.yaml \
DATALOADER.NUM_WORKERS 2 \
OUTPUT_DIR checkpoint/atss_dcnv2_X_101_64x4d_FPN_2x
```
```shell
python3 tools/train_net.py \
--config-file configs/atss/wei_score/atss_dcnv2_X_101_64x4d_FPN_2x.yaml \
DATALOADER.NUM_WORKERS 2 \
OUTPUT_DIR checkpoint/atss_dcnv2_X_101_64x4d_FPN_2x\
SOLVER.IMS_PER_BATCH 8
# 单卡 V100 32G能开到batch size 8
```
出现如下界面,则正常开始训练
![](pic/p2.png)
训练过程中GPU的占用情况
```shell
nvidia-smi -lms 200
```
![](pic/p3.png)
### 6.模型推断
```shell
python3 tools/test_net.py \
--config-file configs/atss/wei_score/atss_dcnv2_X_101_64x4d_FPN_2x.yaml \
MODEL.WEIGHT ./checkpoint/atss_dcnv2_X_101_64x4d_FPN_2x/model_0010000.pth \
TEST.IMS_PER_BATCH 1\
OUTPUT_DIR result
# 1.MODEL.WEIGHT 是训练模型的存放地址
# 2.TEST.IMS_PER_BATCH是测试的batch size 可以设为1
# 3.--config-file可以修改模型的配置文件和训练后的模型保持一致
```
关于视频的测试可以参考`demo`文件夹下的测试脚本,内有详细的说明!
测试结果:
```shell
loading annotations into memory...
Done (t=0.00s)
creating index...
index created!
2020-07-28 13:00:05,839 atss_core.inference INFO: Start evaluation on coco_2017_val dataset(285 images).
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 285/285 [37:48<00:00, 7.96s/it]
2020-07-28 13:37:54,177 atss_core.inference INFO: Total run time: 0:37:48.337468 (7.9590788347679275 s / img per device, on 1 devices)
2020-07-28 13:37:54,177 atss_core.inference INFO: Model inference time: 0:37:45.241220 (7.948214806171886 s / img per device, on 1 devices)
2020-07-28 13:37:54,201 atss_core.inference INFO: Preparing results for COCO format
2020-07-28 13:37:54,202 atss_core.inference INFO: Preparing bbox results
2020-07-28 13:37:54,338 atss_core.inference INFO: Evaluating predictions
Loading and preparing results...
DONE (t=0.36s)
creating index...
index created!
Running per image evaluation...
Evaluate annotation type *bbox*
DONE (t=2.24s).
Accumulating evaluation results...
DONE (t=0.37s).
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.575
Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.762
Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.703
Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = -1.000
Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.391
Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.593
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.449
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.808
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.865
Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = -1.000
Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.843
Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.866
Maximum f-measures for classes:
[0.7241379310344828, 0.7339771729587358, 0.6219058553386911]
Score thresholds for classes (used in demos for visualization purposes):
[0.6439446806907654, 0.5525452494621277, 0.6701372265815735]
2020-07-28 13:37:58,352 atss_core.inference INFO: OrderedDi
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
firefire_用ATSS训练自己的目标检测模型!!_ (299个子文件)
ROIAlign_cpu.cpp 8KB
nms_cpu.cpp 2KB
vision.cpp 2KB
deform_conv_kernel_cuda.cu 41KB
deform_conv_cuda.cu 28KB
deform_pool_kernel_cuda.cu 16KB
ROIAlign_cuda.cu 12KB
ROIPool_cuda.cu 8KB
SigmoidFocalLoss_cuda.cu 6KB
ml_nms.cu 5KB
nms.cu 5KB
deform_pool_cuda.cu 4KB
Dockerfile 2KB
Dockerfile 2KB
.flake8 247B
.gitignore 320B
vision.h 6KB
deform_conv.h 4KB
deform_pool.h 2KB
ROIAlign.h 2KB
ROIPool.h 2KB
SigmoidFocalLoss.h 1KB
ml_nms.h 762B
nms.h 716B
vision.h 594B
test1.jpg 464KB
COCO_val2014_000000033759.jpg 370KB
test2.jpg 325KB
COCO_val2014_000000001000.jpg 314KB
COCO_val2014_000000050896.jpg 305KB
COCO_val2014_000000012639.jpg 270KB
COCO_val2014_000000479030.jpg 266KB
COCO_val2014_000000039769.jpg 169KB
COCO_val2014_000000005477.jpg 151KB
COCO_val2014_000000007281.jpg 134KB
COCO_val2014_000000000885.jpg 109KB
COCO_val2014_000000463842.jpg 105KB
COCO_val2014_000000053505.jpg 103KB
COCO_val2014_000000128654.jpg 91KB
LICENSE 1KB
README.md 12KB
README_ATSS.md 7KB
TROUBLESHOOTING.md 3KB
README.md 3KB
ABSTRACTIONS.md 3KB
INSTALL.md 2KB
CONTRIBUTING.md 2KB
README.md 2KB
README.md 804B
CODE_OF_CONDUCT.md 244B
README.md 175B
README.pdf 1.08MB
demo_e2e_mask_rcnn_R_50_FPN_1x.png 899KB
demo_e2e_mask_rcnn_X_101_32x8d_FPN_1x.png 894KB
p2.png 46KB
p4.png 23KB
p1.png 23KB
p3.png 19KB
fbnet_builder.py 24KB
defaults.py 19KB
segmentation_mask.py 17KB
loss.py 16KB
predictor.py 15KB
coco_eval.py 14KB
resnet.py 14KB
bbox_aug_vote.py 12KB
loss.py 11KB
anchor_generator.py 11KB
bounding_box.py 9KB
atss.py 9KB
convert_cityscapes_to_coco.py 9KB
paths_catalog.py 8KB
deform_conv_func.py 8KB
c2_model_loading.py 8KB
voc_eval.py 8KB
rpn.py 8KB
fbnet.py 8KB
test_nms.py 7KB
fcos.py 7KB
inference.py 7KB
loss.py 7KB
loss.py 7KB
build.py 7KB
inference.py 7KB
inference.py 7KB
inference.py 7KB
keypoint.py 6KB
inference.py 6KB
deform_pool_module.py 6KB
deform_conv_module.py 6KB
misc.py 6KB
fbnet_modeldef.py 6KB
loss.py 6KB
train_net.py 6KB
test_data_samplers.py 5KB
roi_box_feature_extractors.py 5KB
loss.py 5KB
retinanet.py 5KB
inference.py 5KB
matcher.py 5KB
共 299 条
- 1
- 2
- 3
资源评论
好家伙VCC
- 粉丝: 1452
- 资源: 5926
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功