【YOLACT】代码解读

87 篇文章 20 订阅
64 篇文章 9 订阅

源码:https://github.com/dbolya/yolact

num_class是算上背景的类别,比如你的类别就一个person,那么记得此时的num_class应该为2,因为还需要算上背景啊。

YOLACT的网络结构及输出

YOLACT的backbone结构

 其中_make_layer就是常规的resnet101中的_make_layer,具体是如何操作的可以查看源码https://github.com/dbolya/yolact

 

其中浅蓝色的就是后续将要使用的特征图。

YOLACT的FPN结构

FPN选用了backbone结构结构中的1、2、3作为输入,得到新的输出,也就是橘黄色的三角形0到4。

YOLACT的proto结构

将FPN中的输出0作为proto的输入,最终得到proto的输出(1,138,138,32)。

YOLACT的pred_heads结构

其中的3表示每个位置有3个预设anchor_box,然后对FPN中的所有特征图都进行操作,得到对应的bbox,conf,mask,priors,proto。

还有一个输出segm,具体的操作如下图所示:

所以综上所述,网络训练时的输出preds共包括:

'loc':每个anchorbox的预测偏移量,形状为(1,19248,4)

'conf':每个anchorbox的类别预测,形状为(1,19248,num_class)

'mask':就是论文中指出的mask系数,形状为(1,19248,32)

'priors':预设的anchorbox的坐标,形状为(19248,4)

'proto':与mask系数配合使用的分割特征图,形状为(1,138,138,32)

'segm':得到一个类似分割的热度图,这里的形状为(1,num_class-1,69,69),我估计segm是为了使得网络快速收敛用的。

YOLACT的损失函数

具体调用的方式在train.py中的类class NetLoss(nn.Module)

self.criterion(self.net, preds, targets, masks, num_crowds)

接下来介绍这几个参数:

net:就是上面的网络结构。

preds:是一个字典,上面红色字体部分就是preds中字典的内容。

targets:一般的形状为(batch,n,5),batch就是输入了常规的batchsize,n表示一张图片中有几个目标物体,5当中前4个表示目标物体的坐标,第5个数字表示该目标物体的类别。

masks:一般形状为(batch,n,550,550),这个n不是固定的,batch中的每张图片得到的目标物体数量都不相同,这个mask和maskrcnn那个是一样的。

num_crowds:(batch,)表示拥挤程度,0表示不拥挤,1表示拥挤,一般都是0。

 

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值