【计算机视觉】对比学习采样器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中再去重复采

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/13772.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

35.RocketMQ之Broker端消息存储文件详解

highlight: arduino-light Broker端文件详解 dubbo的核心是spi,看懂了spi那么dubbo基本上也懂了。对于rmq来说,它的核心是broker,而broker的核心是commitlog、consumequeue、indexfile,而这些文件对应的最终都是MappedFile&#x…

RTC时钟stm32f407(需要在手册上找到)

首先是备份域(BKP),看手册时必须要看的(以下的上电复位均是指备份域上电复位) RTC时钟 这里的电源电压时指V(BAT); 电源复位; 上面三个寄存器时影子寄存器

在Django中使用xlrd读取excel表格数据

目录 方法一:按行读取 方法二:按表头与表数据一一对应的关系 方法三:按列的方式读取 之前有说到如何在Django中读取数据库数据写入到excel中 今天来说说如何读取excel中的数据,(读取后就可以写入到数据库中了&#…

Mysql8安装教程与配置

添加密码 出现报错 MySQL error 1042: Unable to connect to any of the specified MySQL hosts. Failed to connect to MySQL Server 8.0.23 after 10 attempts. Ended configuration step: Starting the server 使用WinR --> 运行 “services.msc” --> 打开service服…

【通览一百个大模型】LaMDA(Google)

【通览一百个大模型】LaMDA(Google) 作者:王嘉宁,本文章内容为原创,仓库链接:https://github.com/wjn1996/LLMs-NLP-Algo 订阅专栏【大模型&NLP&算法】可获得博主多年积累的全部NLP、大模型和算法干…

NVIC的中断挂起寄存器和EXTI的中断挂起寄存器的区别

!!!!!!!!!!!!!!!!仅个人拙见,若有错误,欢迎大家指正&#xff0…

9.33UEC++、容器

1.定义: 2.TArray:快,小,高 :同质容器 :创建栈对象,不能创建堆对象 如何构建TArray: 获取方式: 实现方式:定义一个array容器数组,两种遍历方式…

E. Scuza - 二分+前缀和

分析: 暴力会超时,可以用二分,构建两个数组,一个是a[i],作为前缀和数组,一个是f[i]表示第i个台阶之前的最大高度的台阶,然后每次二分来查找k,因为尽可能地走的多,所以查找…

OpenCV库进行图像旋转、仿射变换和透视变换

#include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp>

2023/7/8总结

Tomcat 启动&#xff1a;双击bin目录下的startup.bat文件停止&#xff1a;双击bin目录下的shutdown.bat 文件访问 &#xff1a;http://localhost:8080&#xff08;默认是8080&#xff0c;可以修改&#xff09; git的使用 打开git bash git config --global user.name "名…

11 S整数小波分解图像(matlab程序)

1.简述 学习目标&#xff1a; 非标准小波分解&#xff08;用S整数变换&#xff09; 小波分解过程&#xff1a;读取加入噪声后的图片后&#xff0c;数据即是高度*宽度个数据点。对此矩阵数据要做二维离散小波分解&#xff0c;二维小波变换和一维小波变换的区别从原理上来说就是…

分别基于红黑树、timefd、多级时间轮实现定时器

文章目录 一、定时器的应用二、定时器的触发方式2.1 网络事件和定时事件在一个线程中处理2.2 二、定时器的设计2.1 接口设计2.2 数据结构设计2.2.1 红黑树2.2.3 最小堆2.2.4 时间轮 三、利用红黑树实现定时器3.1 数据结构3.2 接口实现3.2.1 初始化定时器3.2.2 添加定时器3.2.3 …