DETR代码解读(一)
创始人
2025-05-29 00:14:19

DETR的代码非常简洁,GitHub仓库,下面对DETR的每一部分进行详细解读

这一篇博文主要介绍参数、分布式初始化、随机种子和模型部分

参数部分

DETR的一开始是参数部分,这里只需要掌握argparse库即可,不做过多介绍

parser = argparse.ArgumentParser('DETR training and evaluation script', parents=[get_args_parser()])
args = parser.parse_args()

分布式初始化

这里我做了微小的修改,但是整体含义不变

分布式初始化的方法很简单,一般来说我们单机多卡进行训练,进入到第一个if语句,从环境变量中获取RANK、WORLD_SIZE和LOCAL_RANK这三个变量,再单机多卡中他们分别代表第几张卡,一共有几张卡,第几张卡,即RANK和LOCAL_RANK是一样的含义

随后设置当前分布式初始化的是第几张卡torch.cuda.set_device(args.gpu),并设置通信后端,默认的采取nccl进行通讯,然后就是init_process_group(backend, init_method, world_size, rank)进行初始化了,

最后通过barrier函数来同步初始化,barrier简单理解为当所有卡都运行到这一步时,再继续运行下面的步骤,如果有卡没运行到这一步,则其余的卡会等待他,最后setup_for_distributed函数设置输出的卡,这里的意思是只有0卡的print函数会进行输出

def init_distributed_mode(args):if 'RANK' in os.environ and 'WORLD_SIZE' in os.environ:args.rank = int(os.environ["RANK"])args.world_size = int(os.environ['WORLD_SIZE'])args.gpu = int(os.environ['LOCAL_RANK'])elif 'SLURM_PROCID' in os.environ:args.rank = int(os.environ['SLURM_PROCID'])args.gpu = args.rank % torch.cuda.device_count()else:print('Not using distributed mode')args.distributed = Falsereturnargs.distributed = Truetorch.cuda.set_device(args.gpu)args.dist_backend = 'nccl'print('| distributed init (rank {}): {}'.format(args.rank, args.dist_url), flush=True)torch.distributed.init_process_group(backend=args.dist_backend, init_method=args.dist_url,world_size=args.world_size, rank=args.rank)torch.distributed.barrier()setup_for_distributed(args.rank==0)  # 只有0卡进行输出

随机种子

从可复现的角度来考虑,所有的卡都要设置随机种子,并且对代码中可能出现的所有随机性函数赋值种子,这里考虑了torch,numpy以及random库中可能存在的随机初始化过程,来固定种子

seed = args.seed + utils.get_rank()
torch.manual_seed(seed)
np.random.seed(seed)
random.seed(seed)

模型初始化

这里我们主要讲解目标检测模型的初始化过程,DETR还可以进行实例分割与全景分割等任务,但是我们这里只讲解目标检测模型,后面会补充分割模型的设置

模型初始化函数为build_model

model, criterion, postprocessors = build_model(args)

对于coco检测任务,一共有91个类别,但是在实际模型中我们会看到92个类别,这是因为目标检测框如果内部无物体的话属于空,即多了背景类

DETR模型主要分为CNN的backbone和transformer,在模型中也分别初始化了这两点。下面对这两部分分别进行详细的解读

backbone = build_backbone(args)
transformer = build_transformer(args)

Backbone部分

backbone部分都是为transformer服务的,在backbone部分提供了位置编码和resnet特征提取器,位置编码采用的是attention is all you need中的常用位置编码,更详细的细节参考这篇文章

position_embedding = PositionEmbeddingSine(N_steps, normalize=True)

相关内容

热门资讯

民生金租牵头行业最大规模金租银... 本文来源:时代周报 作者:赵鹏 来源:图虫近日,民生金融租赁股份有限公司(以下简称“民生金租”)将...
锡业股份:拟1亿元-2亿元回购... 6月12日晚间,云南锡业股份有限公司(锡业股份,000960.SZ)公告,公司拟使用自有资金或自筹资...
Lady Gaga一张嘴,就有... 出品 | 虎嗅青年文化组作者 | 黄瓜汽水编辑、题图 | 渣渣郡本文首发于虎嗅年轻内容公众号“那個N...
老街商圈展新颜!“老街区+非遗... 央视网消息:近年来,云南昆明一批老旧商业街区通过提升打造,个性更加鲜明,街区范围也越扩越大。其中,昆...
张燕生:中美贸易走向何方? 中美两个大国有责任从全球福祉的角度对全球失衡作出共同努力。期待90天内,中美能够针对全球经济再平衡,...
6月12日曲美家居(60381... 证券之星消息,曲美家居6月12日涨停收盘,收盘价4.65元。该股于10点16分涨停,2次打开涨停,截...
海天味业刷新港股消费行业IPO... 6月11日,中国调味品行业龙头企业海天味业(3288)开启全球发售,此次发行价区间定为35-36.3...
润建股份等成立具身智能科技公司... 天眼查App显示,近日,广西智建具身智能科技有限公司成立,法定代表人为张鹏,注册资本1000万人民币...
电科院推进董事会换届选举 构建... 本报讯 (记者陈红) 6月12日,苏州电器科学研究院股份有限公司(以下简称“电科院”)发布关于董事会...
西部黄金:拟16.55亿元收购... 6月12日晚间,西部黄金股份有限公司(西部黄金,601069.SH)公告,公司拟以自有资金和贷款收购...
石药集团提前透露重磅利好,蔡东... 随着石药集团(01093)股价上涨,石家庄前首富蔡东晨身价再度水涨船高。 2025年初至今,石药集团...
三喜临门!人口第一城,疯狂补短... 文丨西部君两大“超级”工程,近期均迎来关键时刻。一是,总投资达286亿元的哈密—重庆±800千伏特高...
一场“金钱驱逐战”,正式打响!... 原创 刘博团队01两种力量博弈,谁是赢家?文章开始,不妨思考一个问题:你相信基于历史经验的“经济规律...
超500亿美元授权交易带火创新... 在投资人与创新药企交流过程中,对外授权进展已成为绕不开的话题。“创新药进入收获周期了,毕竟之前一直在...
印度客机坠毁致百人死亡:波音7... 本文来源:时代周报 作者:马欢6月12日,新华社援引印度当地电视台报道,一架飞机在印度古杰拉特邦艾哈...
*ST亚振26天16板,停牌核... 本文来源:时代周报 作者:宋逸霆山东富豪吴涛入主*ST亚振(603389.SH,亚振家居)后,公司股...
调查|义乌严打仿版LABUBU... LABUBU在全球爆火,但供不应求,相关产品不仅在二手市场出现高溢价,甚至有消费者、二道贩子转而寻求...
Labubu救不了银行,余额宝... 来源 | 深蓝财经撰文 | 王鑫近日,Labubu的风还是吹到了银行。前脚,平安银行多地分支机构推出...
3.85亿资金抢筹融发核电,机... 6月12日,上证指数上涨0.01%,深证成指下跌0.11%,创业板指上涨0.26%。盘后龙虎榜数据显...
荣盛发展拟再以物抵债,化解8.... 本文来源:时代周报 作者:郭鹏6月11日晚间,荣盛发展(002146.SZ)发布公告,再次进行以物抵...
别让传统信用“挡”住小微企业发... 题图|视觉中国“从2019年开始创业至今,店里的启动资金、装修资金、食材采购、房租支付,需要周转的时...
7连板易明医药:股份转让协议事... 新京报贝壳财经讯 6月12日,易明医药发布异动公告称,公司于2025年6月4日披露了《关于控股股东、...
6月12日沪深两市强势个股与概... 一、强势个股截至6月12日收盘,上证综指上涨0.01%,收于3402.66点,深证成指下跌0.11%...
IPO与存凭证并行,“H+A”... 注册地在粤港澳且在港股上市的企业,将能在深交所上市,注册地不在粤港澳但在港股上市的公司,若符合条件,...
江南化工拟1.7亿元收购峨边国... 微成都报道作为国内民爆行业头部企业,6月11日,安徽江南化工股份有限公司(以下简称“江南化工”;00...
刚刚,全球杀跌!两大变数,突然... 全球市场再现低迷!今天下午,全球股市集体杀跌。前期涨幅较大的中国香港市场在A股收盘后跌幅加大,恒生科...
菲林格尔:相关核查工作已完成,... 6月12日晚间,菲林格尔家居科技股份有限公司(菲林格尔,603226.SH)公告,近日,公司就相关事...
现货白银单日大涨超5%,避险与... 6月3日凌晨,国际贵金属市场见证了一场白银盛宴。现货白银价格单日暴涨超5%,盘中最高触及34.78美...