Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rotated Localization Distillation #78

Merged
merged 35 commits into from
Dec 3, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
75d94ae
Add files via upload
Zzh-tju Nov 28, 2022
d89a35c
Merge branch 'Jittor:master' into master
Zzh-tju Nov 28, 2022
89f8d35
Add files via upload
Zzh-tju Nov 28, 2022
149f43c
Add files via upload
Zzh-tju Nov 28, 2022
748d1a3
Add files via upload
Zzh-tju Nov 28, 2022
b2116af
Add files via upload
Zzh-tju Nov 28, 2022
158f0ea
Add files via upload
Zzh-tju Nov 28, 2022
dd20221
Add files via upload
Zzh-tju Nov 28, 2022
1ae2413
Update README.md
Zzh-tju Nov 28, 2022
0b84ebf
Update dota.py
Zzh-tju Nov 28, 2022
26918b4
Update dota.py
Zzh-tju Nov 28, 2022
18c3767
Update ld_rotated_retinanet_obb_r18_r50_fpn_1x_dota.py
Zzh-tju Nov 29, 2022
a166092
Create ld_rotated_retinanet
Zzh-tju Nov 29, 2022
de7f02f
Delete ld_rotated_retinanet
Zzh-tju Nov 29, 2022
0adc653
Add files via upload
Zzh-tju Nov 29, 2022
d7070e8
Delete projects/ld directory
Zzh-tju Nov 29, 2022
4672ea4
Update README.md
Zzh-tju Nov 29, 2022
46e11a0
Update README.md
Zzh-tju Nov 29, 2022
c242464
Update test_ld_rotated_retinanet.py
Zzh-tju Nov 29, 2022
d45108a
Update test_ld_rotated_retinanet.py
Zzh-tju Nov 29, 2022
5d5291e
Update test_ld_rotated_retinanet.py
Zzh-tju Nov 29, 2022
d83a725
Update ld_rotated_retinanet_obb_r18_r50_fpn_1x_dota.py
Zzh-tju Dec 1, 2022
b98714d
Update ld_rotated_retinanet_obb_r18_r50_fpn_1x_dota.py
Zzh-tju Dec 1, 2022
c5334bd
Update test_ld_rotated_retinanet.py
Zzh-tju Dec 1, 2022
5803a13
Update ld_rotated_retinanet_obb_r18_r50_fpn_1x_dota.py
Zzh-tju Dec 1, 2022
d99a3e5
Update ld_rotated_retinanet_obb_r18_r50_fpn_1x_dota.py
Zzh-tju Dec 1, 2022
69d2146
Update test_models.py
Zzh-tju Dec 1, 2022
79d52c5
Update __init__.py
Zzh-tju Dec 1, 2022
27dd3fd
Update ld_rotated_retina_head.py
Zzh-tju Dec 1, 2022
d3f8731
update dota.py
Zzh-tju Dec 3, 2022
67b7745
update dota.py
Zzh-tju Dec 3, 2022
0f3f032
update
Zzh-tju Dec 3, 2022
8b50319
update
Zzh-tju Dec 3, 2022
1508015
Update __init__.py
Zzh-tju Dec 3, 2022
c52261c
Delete projects/ld_rotated_retinanet/configs/__pycache__ directory
Zzh-tju Dec 3, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
166 changes: 166 additions & 0 deletions configs/ld/ld_rotated_retinanet_obb_r18_r50_fpn_1x_dota.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
# model settings
teacher_ckpt = 'https://cloud.tsinghua.edu.cn/f/b737fe43de8c47a6810e/?dl=1' # noqa
model = dict(
type='KnowledgeDistillationSingleStageDetector',
teacher_config='configs/ld/rotated_retinanet_obb_distribution_r50_fpn_1x_dota.py',
teacher_ckpt=teacher_ckpt,
backbone=dict(
type='Resnet18',
frozen_stages=1,
return_stages=["layer1","layer2","layer3","layer4"],
pretrained= True),
neck=dict(
type='FPN',
in_channels=[64, 128, 256, 512],
out_channels=256,
start_level=1,
add_extra_convs="on_input",
num_outs=5),
bbox_head=dict(
type='RotatedRetinaLocalizationDistillationHead',
num_classes=16,
in_channels=256,
feat_channels=256,
stacked_convs=4,
octave_base_scale=4,
scales_per_octave=3,
anchor_ratios=[1.0, 0.5, 2.0],
anchor_strides=[8, 16, 32, 64, 128],
target_means=[.0, .0, .0, .0, .0],
target_stds=[1.0, 1.0, 1.0, 1.0, 1.0],
loss_cls=dict(
type='FocalLoss',
use_sigmoid=True,
gamma=2.0,
alpha=0.25,
loss_weight=1.0),
loss_bbox=dict(
type='L1Loss', loss_weight=1.0),
loss_ld=dict(
type='KnowledgeDistillationKLDivLoss', loss_weight=10, T=10),
loss_kd=dict(
type='KnowledgeDistillationKLDivLoss', loss_weight=10, T=2),
loss_im=dict(type='IMLoss', loss_weight=0),
imitation_method='finegrained',
reg_max=8,
test_cfg=dict(
nms_pre=2000,
min_bbox_size=0,
score_thr=0.05,
nms=dict(type='nms_rotated', iou_thr=0.1),
max_per_img=2000),
train_cfg=dict(
assigner=dict(
type='MaxIoUAssigner',
pos_iou_thr=0.5,
neg_iou_thr=0.4,
min_pos_iou=0,
ignore_iof_thr=-1,
iou_calculator=dict(type='BboxOverlaps2D_rotated')),
bbox_coder=dict(type='DeltaXYWHABBoxCoder',
target_means=(0., 0., 0., 0., 0.),
target_stds=(1., 1., 1., 1., 1.),
clip_border=True),
allowed_border=-1,
pos_weight=-1,
debug=False)
)
)
dataset = dict(
train=dict(
type="DOTADataset",
dataset_dir='/home/ubuntu/ZZH/datasets/processed_DOTA/train_600_150_1.0',
transforms=[
dict(
type="RotatedResize",
min_size=1024,
max_size=1024
),
dict(type='RotatedRandomFlip', prob=0.5, direction="horizontal"),
dict(type='RotatedRandomFlip', prob=0.5, direction="vertical"),
dict(
type = "Pad",
size_divisor=32),
dict(
type = "Normalize",
mean = [123.675, 116.28, 103.53],
std = [58.395, 57.12, 57.375],
to_bgr=False,)

],
batch_size=2,
num_workers=4,
shuffle=True,
filter_empty_gt=False
),
val=dict(
type="DOTADataset",
dataset_dir='/home/ubuntu/ZZH/datasets/processed_DOTA/val_600_150_1.0',
transforms=[
dict(
type="RotatedResize",
min_size=1024,
max_size=1024
),
dict(
type = "Pad",
size_divisor=32),
dict(
type = "Normalize",
mean = [123.675, 116.28, 103.53],
std = [58.395, 57.12, 57.375],
to_bgr=False),
],
batch_size=2,
num_workers=4,
shuffle=False
),
test=dict(
type="ImageDataset",
images_dir='/home/ubuntu/ZZH/datasets/processed_DOTA/val_600_150_1.0/images',
transforms=[
dict(
type="RotatedResize",
min_size=1024,
max_size=1024
),
dict(
type = "Pad",
size_divisor=32),
dict(
type = "Normalize",
mean = [123.675, 116.28, 103.53],
std = [58.395, 57.12, 57.375],
to_bgr=False,),
],
num_workers=4,
batch_size=1,
)
)

optimizer = dict(
type='SGD',
lr=0.01/4., #0.0,#0.01*(1/8.),
momentum=0.9,
weight_decay=0.0001,
grad_clip=dict(
max_norm=35,
norm_type=2))

scheduler = dict(
type='StepLR',
warmup='linear',
warmup_iters=500,
warmup_ratio=1.0 / 3,
milestones=[7, 10])


logger = dict(
type="RunLogger")

max_epoch = 12
eval_interval = 1
checkpoint_interval = 1
log_interval = 50

#resume_path='/home/ubuntu/ZZH/JDet/rotated_retinanet_obb_distribution_r18_fpn_1x_dota.pkl'
156 changes: 156 additions & 0 deletions configs/ld/rotated_retinanet_obb_distribution_r18_fpn_1x_dota.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
# model settings
model = dict(
type='RotatedRetinaNet',
backbone=dict(
type='Resnet18',
frozen_stages=1,
return_stages=["layer1","layer2","layer3","layer4"],
pretrained= True),
neck=dict(
type='FPN',
in_channels=[64, 128, 256, 512],
out_channels=256,
start_level=1,
add_extra_convs="on_input",
num_outs=5),
bbox_head=dict(
type='RotatedRetinaDistributionHead',
num_classes=16,
in_channels=256,
feat_channels=256,
stacked_convs=4,
octave_base_scale=4,
scales_per_octave=3,
anchor_ratios=[1.0, 0.5, 2.0],
anchor_strides=[8, 16, 32, 64, 128],
target_means=[.0, .0, .0, .0, .0],
target_stds=[1.0, 1.0, 1.0, 1.0, 1.0],
loss_cls=dict(
type='FocalLoss',
use_sigmoid=True,
gamma=2.0,
alpha=0.25,
loss_weight=1.0),
loss_bbox=dict(
type='L1Loss', loss_weight=1.0),
test_cfg=dict(
nms_pre=2000,
min_bbox_size=0,
score_thr=0.05,
nms=dict(type='nms_rotated', iou_thr=0.1),
max_per_img=2000),
train_cfg=dict(
assigner=dict(
type='MaxIoUAssigner',
pos_iou_thr=0.5,
neg_iou_thr=0.4,
min_pos_iou=0,
ignore_iof_thr=-1,
iou_calculator=dict(type='BboxOverlaps2D_rotated')),
bbox_coder=dict(type='DeltaXYWHABBoxCoder',
target_means=(0., 0., 0., 0., 0.),
target_stds=(1., 1., 1., 1., 1.),
clip_border=True),
allowed_border=-1,
pos_weight=-1,
debug=False)
)
)
dataset = dict(
train=dict(
type="DOTADataset",
dataset_dir='/home/ubuntu/ZZH/datasets/processed_DOTA/train_600_150_1.0',
transforms=[
dict(
type="RotatedResize",
min_size=1024,
max_size=1024
),
dict(type='RotatedRandomFlip', prob=0.5, direction="horizontal"),
dict(type='RotatedRandomFlip', prob=0.5, direction="vertical"),
dict(
type = "Pad",
size_divisor=32),
dict(
type = "Normalize",
mean = [123.675, 116.28, 103.53],
std = [58.395, 57.12, 57.375],
to_bgr=False,)

],
batch_size=2,
num_workers=4,
shuffle=True,
filter_empty_gt=False
),
val=dict(
type="DOTADataset",
dataset_dir='/home/ubuntu/ZZH/datasets/processed_DOTA/val_600_150_1.0',
transforms=[
dict(
type="RotatedResize",
min_size=1024,
max_size=1024
),
dict(
type = "Pad",
size_divisor=32),
dict(
type = "Normalize",
mean = [123.675, 116.28, 103.53],
std = [58.395, 57.12, 57.375],
to_bgr=False),
],
batch_size=2,
num_workers=4,
shuffle=False
),
test=dict(
type="ImageDataset",
images_dir='/home/ubuntu/ZZH/datasets/processed_DOTA/val_600_150_1.0/images',
transforms=[
dict(
type="RotatedResize",
min_size=1024,
max_size=1024
),
dict(
type = "Pad",
size_divisor=32),
dict(
type = "Normalize",
mean = [123.675, 116.28, 103.53],
std = [58.395, 57.12, 57.375],
to_bgr=False,),
],
num_workers=4,
batch_size=1,
)
)

optimizer = dict(
type='SGD',
lr=0.01/4., #0.0,#0.01*(1/8.),
momentum=0.9,
weight_decay=0.0001,
grad_clip=dict(
max_norm=35,
norm_type=2))

scheduler = dict(
type='StepLR',
warmup='linear',
warmup_iters=500,
warmup_ratio=1.0 / 3,
milestones=[7, 10])


logger = dict(
type="RunLogger")

max_epoch = 12
eval_interval = 1
checkpoint_interval = 1
log_interval = 50

#resume_path='/home/ubuntu/ZZH/JDet/rotated_retinanet_obb_distribution_r50_1x.pkl'