【计算机视觉】对比学习采样器sampler

前置知识准备

Samplers — Open Metric Learning documentation​​​​​​

在该文档里,category表示类别,label表示商品,instance表示商品不同角度的图片。

  • category就是blouses_shirts;
  • label就是15;
  • instance就是这5张图片;

balance sampler

每个label下pick等量的instance..

batch = allsamples // batch_size

batch_size = n_instances x n_labels

L个不同的label,我这里是L=500个。labels=40,instance=10。

batch1

40/500,从500个商品中挑选40个商品;

10/40,再从40个商品中,每个label挑选10个图片

batch2

40/(500-40)

10/40

epoch ends

L//label

500//40=12.5=12(batch12)

在一个epoch里,所有label将会被pick一次,但不意味着所有的instance都会被挑选。

每个epoch会过完所有的label,也就是会过完所有的商品,但只会过40*10*12张图片=4800张。

总共有31w的图片,要想31w/4800=64.5=64,想要全部图片看一次需要设置这里的epoch=64次,想要看多次则64*多次。

categroy sampler

L=500,n_label=10,batch=500//10=50,需要采50个batch,每个batch里10个商品*n_instance。 

总共500个商品,每次挑10个商品角度图。每一个epoch会挑选完所有的500商品。

DistinctCategoryBalanceSampler

batch_size = n_instances x n_labels x n_categories

L个商品,C个类目,

1st batch采categrory个类目,在这些类目中,采label个商品,在这些商品中采instance个角度图片
2st batch

{L}^{'} = L-L^1,all label-1st picked label

{C}^{'} = {L}^{'} 对应的所有类目

{C}^{'}中挑选category个类目,从{L}^{'}中为每个类目category选择n_labels,再从n_labels中选n_instance.

epoch end

(自己设置的epoch size)

1. 如果在epoch size前选择了所有的类目all the categories,则sampler重置。不保证epochsize结束前能遍历完所有的category,相反,如果遍历完所有类目,则再重新开始重复采样。

2. L&n_label=1,则这个剩下的商品会从batch中drop掉,因为需要成pairs。(再理解一下,如果 L % n_labels == 1 则必须删除其中一个label,因为我们总是希望拥有超过 1 个label,这里label是商品的意思。)

3. 被选择的category下的未使用label不够设置的量,那么会从已使用的label中再去重复采

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值