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

news2024/11/27 7:34:54

前置知识准备

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.coloradmin.cn/o/722203.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【设计模式】第十章:组合模式详解及应用案例

系列文章 【设计模式】七大设计原则 【设计模式】第一章:单例模式 【设计模式】第二章:工厂模式 【设计模式】第三章:建造者模式 【设计模式】第四章:原型模式 【设计模式】第五章:适配器模式 【设计模式】第六章&…

【数据可视化】SVG(一)

一、邂逅SVG和初体验 什么是SVG  SVG全称为(Scalable Vector Graphics),即可缩放矢量图形。(矢量定义:既有大小又有方向的量。在物理学中称作矢量,如一个带箭头线段:长度表示大小&#xff0…

(位运算) 1356. 根据数字二进制下 1 的数目排序 ——【Leetcode每日一题】

❓ 1356. 根据数字二进制下 1 的数目排序 难度:简单 给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。 请你返回排序后的数组。 示…

python flask sqlite http服务

python flask 服务 为了让拼接项目能够简单实用http服务,用python flask 来做一个http服务,使用python的原因是拼接项目本身很多人工智能的服务是用python来写。数据库为了简单实用sqlite,python自带sqlite3 ,很方便 db.sql CREATE TABLE …

AcWing 98. 分形之城

题目链接:AcWing 98. 分形之城 问题描述 分析 这一道题看起来很麻烦,其实就是比较麻烦。 这是一道递归坐标变换的问题,坐标变换比较难想,建议自己动手画一画容易明白一些。 首先是城市等级 n n n 与总点数的关系,不难发现总点数…

golang Redis的新数据类型github.com/go-redis/redis/v8实践

Redis的新数据类型# 在redis中,后面添加了几个比较高级的数据类型 hyperloglog基数统计、GEO存储地理位置、bitmap位图、stream为消息队列设计的数据类型 这 4 种数据类型。 HyperLogLog类型# HyperLogLog简介# HyperLogLog 是一种用于数据统计的集合类型&#x…

亚马逊云科技Zero ETL数据库,助力企业走向数据驱动的业务增长之路

据Forrester研究,相对于数据应用不够成熟的公司,那些有效获取业务洞察的公司,有高达8.5倍的可能性实现至少20%的收入增长。然而,要实现这一增长,需要简化一项流程——在数据分析前管理和准备好数据。这就是为什么亚马逊…

16.电容触摸按键

1.电容触摸按键介绍: R是外接的充电电阻, Cs是没有触摸按下的触摸感应区和四周覆铜区域的一个杂散的电容;当使用手指去触摸感应区时,手指和感应区形成一个电容Cx,开关是电容放电的一个开关,在实际设计中是利…

Ubuntu 22.04.2 LTS LTS x86_64 安装 stable-diffusion-webui 【2】基本版本完结。

前篇 Ubuntu 20.04 LTS x86_64 安装 stable-diffusion-webui_hkNaruto的博客-CSDN博客 内容太多,分第二篇继续 中途重装了机器,20.04 ,apt upgrade后自动升级到22.04.2 现状:起来了,又没完全起来 启动日志 (stab…

如何在 Linux 中将本地网络 IP 设置为静态的

文章目录 对于普通的 Linux 操作系统对于 Red Hat Enterprise Linux 9 笔者的运行环境: CentOS 8 Red Hat Enterprise Linux 9 在 Linux 中将本地网络 IP 设置为静态的,只需要在那台 Linux 上设置即可。为了方便,这里笔者使用了 Xshell 来远…

手写操作系统--主引导扇区以及内核加载器

在CPU上电后,会自动将cs:ip置为f000:fff0,下图就是一个计算机刚上电的模拟: ffff00这里开始的代码是BIOS自检,检查计算机的硬件完备性,做完这一切后将第一个扇区的内容复制到0x7c00的位置,并从0x7c00位置执行代码&…

第五章 逻辑回归

第五章 逻辑回归 Logistic回归的⼀般过程 收集数据:采⽤任意⽅法收集数据。准备数据:由于需要进⾏距离计算,因此要求数据类型为数值型。另外,结构化数据格式则最佳。分析数据:采⽤任意⽅法对数据进⾏分析。训练算法&…

Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分

目录 341. 扁平化嵌套列表迭代器 Flatten Nested List Iterator 🌟🌟 343. 整数拆分 Integer Break 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/…

vscode工作区实现机制

工作区是编辑器的重要部分,它承载着编辑器和本地文件的连接,对文件增、删、改、查。下面我会介绍vscode工作区的创建。同样我们知道vscode软件打开的时候没有默认工作区,这里我对它进行了改造,软件启动时指向默认工作区。 工作区目…

提高腾讯QQ(电脑版)语音通话、视频聊天和远程协助的稳定性的方法

一、背景说明 腾讯QQ默认使用的通讯协议是UDP。但是各大运营商将UDP的优先级设置为最低,导致UDP数据包经常被丢弃。导致腾讯QQ在语音通话、视频聊天和远程协助的时候,会出现连接不上、卡顿和断线,非常不稳定。我们可以手动将通讯协议调整为TC…

用Python实现自动化交易:从趋势到收益

在现代金融市场中,自动化交易已经成为越来越流行的一种方式。相比于传统的手工交易方式,自动化交易更加高效、精准、快速且免除了人为因素的影响。而Python作为一种高级编程语言,凭借其简单易学、灵活性强的优势逐渐成为自动化交易中最受欢迎…

Ubuntu下Go语言TCP广播服务器实现

最近在学习Go语言网络编程,突然想到很久以前的用C语言写过的TCP广播聊天程序,然后就用Go尝试写了一遍,在此做个记录。 目录 1.广播结构 2.实现效果 3.源码 4.Go语言学习参考网站 1.广播结构 2.实现效果 服务器: 客户端1&…

小程序 web-view h5页面背景音乐自动播放

/*** 年度账单-登录首页*/ import React,{useEffect} from react import swiper/swiper-bundle.min.css import styles from ./styles.less import bgm from ./bgm2.mp3 // 主体 const annualAccountLoginIndex (props) > {const goAnnualAccount ()>{const {location: …

Java Web Tomcat 23.7.5

Tomcat 1, Tomcat 1.1 简介 1.1.1 什么是Web服务器 Web服务器是一个应用程序(软件),对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更加便捷。主要功能是"提供网上信息浏览服务"…

[Python系列] Python虚拟环境Virtualenv

1. 什么是Virtualenv Python virtualenv 是一个用于创建和管理虚拟环境的工具。它可以帮助开发者在不同的项目中使用不同的 Python 版本和包,而不会相互干扰。使用 virtualenv,可以轻松地创建一个独立的 Python 环境,在其中安装所需的包和版本…