aleo1's picture
Upload 23 files
9f3352f verified
raw
history blame
10.7 kB
from .segmenter import CRIS, CISEN, Clip_hash_model, zh_clip, poi_clip, Clip_model, CISEN_vit, CISEN_rsvit, CISEN_new, CISEN_rsvit_classification, CISEN_lclip
from .segmenter import *
from loguru import logger
from transformers import AlignProcessor, AlignModel
# def build_segmenter(args):
# model = CRIS(args)
# backbone = []
# backbone_no_decay = []
# head = []
# for k, v in model.named_parameters():
# if k.startswith('backbone') and 'positional_embedding' not in k:
# backbone.append(v)
# elif 'positional_embedding' in k:
# backbone_no_decay.append(v)
# else:
# head.append(v)
# print('Backbone with decay: {}, Backbone without decay: {}, Head: {}'.format(
# len(backbone), len(backbone_no_decay), len(head)))
# param_list = [{
# 'params': backbone,
# 'initial_lr': args.lr_multi * args.base_lr
# }, {
# 'params': backbone_no_decay,
# 'initial_lr': args.lr_multi * args.base_lr,
# 'weight_decay': 0
# }, {
# 'params': head,
# 'initial_lr': args.base_lr
# }]
# return model, param_list
def build_CISEN(args, stage):
model = CISEN_new(args)
backbone = []
head = []
ADP = []
ADP_t = []
fuse = []
name = []
for k, v in model.named_parameters():
if k.startswith('backbone') and 'backbone.positional_embedding' not in k:
# if k.startswith('backbone'):
v.requires_grad = False
backbone.append(v)
elif k.startswith('ADP'):
# v.requires_grad = False
ADP.append(v)
elif k.startswith('FPN'):
fuse.append(v)
elif k.startswith('gap'):
fuse.append(v)
elif k.startswith('ADP_t'):
ADP_t.append(v)
else:
head.append(v)
name.append(k)
# logger.info('Backbone with decay={}, Head={}'.format(len(backbone), len(head)))
# param_list = [{
# 'params': backbone,
# 'initial_lr': args.lr_multi * float(args.base_lr)
# }, {
# 'params': head,
# 'initial_lr': args.base_lr
# }, {
# 'params': proj,
# 'initial_lr': args.base_lr
# }]
if stage == '1st':
param_list = [{
'params': ADP,
'initial_lr': args.base_lr
},{
'params': head,
'initial_lr': args.base_lr
}]
elif stage == '2nd':
param_list = [{
'params': fuse,
'initial_lr': args.base_lr
}]
elif stage == '4th':
param_list = [{
'params': fuse,
'initial_lr': args.base_lr
}]
elif stage == '5th':
param_list = [{
# 'params': ADP,
# 'initial_lr': args.base_lr
# },{
# 'params': ADP_t,
# 'initial_lr': args.base_lr
# },{
'params': fuse,
'initial_lr': args.base_lr
}]
else:
print('stage should be either 1st or 2nd')
return model, param_list
def build_CISEN_lclip(args, stage):
model = CISEN_lclip(args)
backbone = []
head = []
ADP = []
ADP_t = []
fuse = []
name = []
for k, v in model.named_parameters():
# if k.startswith('backbone') and 'backbone.positional_embedding' not in k:
if k.startswith('backbone'):
v.requires_grad = False
backbone.append(v)
elif k.startswith('ADP'):
# v.requires_grad = False
ADP.append(v)
elif k.startswith('FPN'):
fuse.append(v)
elif k.startswith('gap'):
fuse.append(v)
elif k.startswith('ADP_t'):
ADP_t.append(v)
else:
head.append(v)
name.append(k)
# logger.info('Backbone with decay={}, Head={}'.format(len(backbone), len(head)))
# param_list = [{
# 'params': backbone,
# 'initial_lr': args.lr_multi * float(args.base_lr)
# }, {
# 'params': head,
# 'initial_lr': args.base_lr
# }, {
# 'params': proj,
# 'initial_lr': args.base_lr
# }]
if stage == '1st':
param_list = [{
'params': ADP,
'initial_lr': args.base_lr
},{
'params': head,
'initial_lr': args.base_lr
}]
elif stage == '2nd':
param_list = [{
'params': fuse,
'initial_lr': args.base_lr
}]
elif stage == '4th':
param_list = [{
'params': fuse,
'initial_lr': args.base_lr
}]
elif stage == '5th':
param_list = [{
# 'params': ADP,
# 'initial_lr': args.base_lr
# },{
# 'params': ADP_t,
# 'initial_lr': args.base_lr
# },{
'params': fuse,
'initial_lr': args.base_lr
}]
else:
print('stage should be either 1st or 2nd')
return model, param_list
def build_CISEN_vit(args, stage):
model = CISEN_rsvit(args)
backbone = []
head = []
ADP = []
ADP_t = []
fuse = []
name = []
for k, v in model.named_parameters():
# if k.startswith('backbone') and 'backbone.positional_embedding' not in k:
if k.startswith('backbone'):
v.requires_grad = False
backbone.append(v)
elif k.startswith('ADP'):
v.requires_grad = False
ADP.append(v)
elif k.startswith('FPN'):
# v.requires_grad = False
fuse.append(v)
elif k.startswith('ms_adaptor'):
# v.requires_grad = False
fuse.append(v)
else:
head.append(v)
name.append(k)
# logger.info('Backbone with decay={}, Head={}'.format(len(backbone), len(head)))
# param_list = [{
# 'params': backbone,
# 'initial_lr': args.lr_multi * float(args.base_lr)
# }, {
# 'params': head,
# 'initial_lr': args.base_lr
# }, {
# 'params': proj,
# 'initial_lr': args.base_lr
# }]
if stage == '1st':
param_list = [{
'params': ADP,
'initial_lr': args.base_lr
},{
'params': head,
'initial_lr': args.base_lr
}]
elif stage == '2nd':
param_list = [{
'params': fuse,
'initial_lr': args.base_lr
}]
elif stage == '4th':
param_list = [{
'params': fuse,
'initial_lr': args.base_lr
}]
elif stage == '5th':
param_list = [{
# 'params': ADP,
# 'initial_lr': args.base_lr
# },{
# 'params': ADP_t,
# 'initial_lr': args.base_lr
# },{
'params': fuse,
'initial_lr': args.base_lr
}]
else:
print('stage should be either 1st or 2nd')
return model, param_list
def build_CISEN_vit_classification(args, stage):
model = CISEN_rsvit_classification(args)
# logger.info('Backbone with decay={}, Head={}'.format(len(backbone), len(head)))
# param_list = [{
# 'params': backbone,
# 'initial_lr': args.lr_multi * float(args.base_lr)
# }, {
# 'params': head,
# 'initial_lr': args.base_lr
# }, {
# 'params': proj,
# 'initial_lr': args.base_lr
# }]
return model
def build_segmenter(args):
model = CRIS(args)
backbone = []
head = []
for k, v in model.named_parameters():
if k.startswith('backbone') and 'positional_embedding' not in k:
backbone.append(v)
elif k.startswith('Label_encoder') and "token_embedding" not in k:
v.requires_grad = False
else:
head.append(v)
logger.info('Backbone with decay={}, Head={}'.format(len(backbone), len(head)))
param_list = [{
'params': backbone,
'initial_lr': args.lr_multi * float(args.base_lr)
}, {
'params': head,
'initial_lr': args.base_lr
}]
return model, param_list
def build_hash(args):
model = Clip_hash_model(args)
backbone = []
head = []
for k, v in model.named_parameters():
if k.startswith('backbone') and 'positional_embedding' not in k:
backbone.append(v)
else:
head.append(v)
logger.info('Backbone with decay={}, Head={}'.format(len(backbone), len(head)))
param_list = [{
'params': backbone,
'initial_lr': args.lr_multi * args.base_lr
}, {
'params': head,
'initial_lr': args.base_lr
}]
return model, param_list
def build_zh_segmenter(args):
model = zh_clip(args)
backbone = []
head = []
for k, v in model.named_parameters():
if k.startswith('backbone') and 'positional_embedding' not in k:
backbone.append(v)
else:
head.append(v)
logger.info('Backbone with decay={}, Head={}'.format(len(backbone), len(head)))
param_list = [{
'params': backbone,
'initial_lr': args.lr_multi * args.base_lr
}, {
'params': head,
'initial_lr': args.base_lr
}]
return model, param_list
def build_poi_segmenter(args):
model = poi_clip(args)
backbone = []
head = []
for k, v in model.named_parameters():
if k.startswith('backbone') and 'positional_embedding' not in k:
backbone.append(v)
else:
head.append(v)
logger.info('Backbone with decay={}, Head={}'.format(len(backbone), len(head)))
param_list = [{
'params': backbone,
'initial_lr': args.lr_multi * args.base_lr
}, {
'params': head,
'initial_lr': args.base_lr
}]
return model, param_list
def build_clip(args):
model = Clip_model(args)
backbone = []
head = []
for k, v in model.named_parameters():
if k.startswith('backbone') and 'positional_embedding' not in k:
backbone.append(v)
else:
head.append(v)
logger.info('Backbone with decay={}, Head={}'.format(len(backbone), len(head)))
param_list = [{
'params': backbone,
'initial_lr': args.lr_multi * args.base_lr
}, {
'params': head,
'initial_lr': args.base_lr
}]
return model, param_list