三元组

行人重识别

匿名 (未验证) 提交于 2019-12-03 00:30:01
前言: 行人重识别(Person Re-identification)也称行人再识别,本文简称为ReID,是利用计算机视觉技术判断图像或者视频序列中是否存在特定行人的技术。广泛被认为是一个图像检索的子问题。给定一个监控行人图像,检索跨设备下的该行人图像。 在监控视频中,由于相机分辨率和拍摄角度的缘故,通常无法得到质量非常高的人脸图片。当人脸识别失效的情况下,ReID就成为了一个非常重要的替代品技术。ReID有一个非常重要的特性就是跨摄像头,所以学术论文里评价性能的时候,是要检索出不同摄像头下的相同行人图片。ReID已经在学术界研究多年,但直到最近几年随着深度学习的发展,才取得了非常巨大的突破。因此本文介绍一些近几年基于深度学习的ReID工作,由于精力有限并不能涵盖所有工作,只能介绍几篇代表性的工作。按照个人的习惯,我把这些方法分为以下几类: 基于表征学习的ReID方法 基于度量学习的ReID方法 基于局部特征的ReID方法 基于视频序列的ReID方法 基于GAN造图的ReID方法 1、基于表征学习的ReID方法 基于表征学习(Representation learning)的方法是一类非常常用的行人重识别方法[1-4]。这主要得益于深度学习,尤其是卷积神经网络(Convolutional neural network, CNN)的快速发展

triplets 、triplet Loss和 hard triplets

匿名 (未验证) 提交于 2019-12-03 00:30:01
本文大多数知识来源于此文:https://blog.csdn.net/fire_light_/article/details/79592804 triplets 设左一的图为 Anchor(参考点),左二为 Negative(反例),右一为 Positive(正例),这三张图片构成一个三元组(t riplet ),其中 A和P的欧式距离可能很大,A和N的欧式距离可能很小。 triplet Loss 什么是Triplet Loss呢?顾名思义,也就是根据三张图片组成的三元组(Triplet)计算而来的损失(Loss)。 其中,三元组由Anchor(A),Negative(N),Positive(P)组成,任意一张图片都可以作为一个基点(A),然后与它属于同一人的图片就是它的P,与它属于同一人的图片就是它的N。 Triplet Loss 的学习目标可以形象的表示如下图: 网络没经过学习之前,A和P的欧式距离可能很大,A和N的欧式距离可能很小,如上图左边,在网络的学习过程中,A和P的欧式距离会逐渐减小,而A和N的距离会逐渐拉大。 也就是说,网络会直接学习特征间的可分性:同一类的特征之间的距离要尽可能的小,而不同类之间的特征距离要尽可能的大。 意思就是说通过学习,使得类间的距离要大于类内的距离。 损失函数 为: 其中,左边的二范数表示类内距离,右边的二范数表示类间距离,α是一个常量

行逻辑三元组稀疏矩阵加减乘的编程实现

匿名 (未验证) 提交于 2019-12-03 00:22:01
目的: 编程实现稀疏矩阵的四则运算。 实现: 1. 稀疏矩阵的存储结构采用行逻辑表示的三元组 2. # define MAXSIZE 12500 # define MAXRC 12500 typedef struct { int i , j ; int e ; } Triple ; typedef struct { Triple data [ MAXSIZE + 1 ]; int rpos [ MAXRC + 1 ]; int mu , nu , tu ; } RLSMatrix ; 先通过创建mu nu tu的值再根据这些值采用循环输入得到data,之后再通过扫描确定rpos的值则可以完成创建。 通过三元组的形式将非零元对应的行列以及数值存储下来,再由稀疏矩阵结构存下矩阵的行数列数以及非零元个数,即可囊括稀疏矩阵的所有信息。这样就可以以三元组的形式把矩阵非零元素存储下来,节省了存储量的同时便于矩阵运算。 矩阵的加法 根据矩阵的相关知识,两个矩阵相加要求两个矩阵的行数,列数要相等。故需要设置判断是否满足矩阵相加的条件。若满足条件,则进行加法运算。根据矩阵加法法则,得到的新矩阵拥有与原来两矩阵相同的行数和列数,其元素数值则为两矩阵对应位置的元素值之和。 矩阵的减法 和加法相同地根据三种情况采用三个循环处理对应的数据,只不过两个都有的情况结果要变为两者之差

稀疏矩阵――三元组顺序表

匿名 (未验证) 提交于 2019-12-03 00:15:02
Ŀ¼ 假设m n的矩阵中,有t的非零元,令s=t/m n,当,s<=0.05时,称此矩阵为稀疏矩阵,简单理解就是非零元特别少的矩阵 //一般矩阵a 1 2 3 a= 4 5 6 7 8 9 //稀疏矩阵s 0 0 0 0 0 0 2 0 0 5 s= 0 0 3 0 0 0 0 0 0 4 一个m * n的矩阵转置后变为 n * m的矩阵 //3*2的矩阵-转置前 1 2 4 5 7 8 //转置后变为2*3 1 4 7 2 5 8 转置后的矩阵每个元素的下表与原来的下表刚好相反,例如上面4转置前的下标为(2,1),转置后变为(1,2); 之所以引入三元组顺序表,是因为,对于稀疏矩阵而言,用传统的存储方法会造成存储空间的浪费 0 12 9 0 0 0 0 0 0 0 0 0 0 0 -3 0 0 0 0 14 0 M= 0 0 24 0 0 0 0 0 18 0 0 0 0 0 15 0 0 -7 0 0 0 //上面矩阵用三元组表示 i j v 1 2 12 1 3 9 3 1 -3 3 6 14 4 3 24 5 2 18 6 1 15 6 4 -7 typedef struct { int i,j; //行坐标、列坐标 ElemType e; //元素 }Triple; typedef struct { Triple date[MAXSIZE+1]; //0不存储元素 int

三元组 [01Trie]

匿名 (未验证) 提交于 2019-12-03 00:11:01
三 Ԫ 组 三元组 三 Ԫ 组 给 n n n 个数的数组 a a a ,问有多少个三元组 ( x , y , z ) (x,y,z) ( x , y , z ) 满足 a [ x ] a[x] a [ x ] xor a [ y ] < a [ y ] a[y]\ <\ a[y] a [ y ] < a [ y ] xor a [ z ] a[z] a [ z ] 并且 1 ≤ x < y < z ≤ n 1 \le x<y<z \le n 1 ≤ x < y < z ≤ n . T T T 组数据 . 1 ≤ n ≤ 50000 , 1 ≤ T ≤ 5 , 1 ≤ a [ i ] ≤ 1 0 9 1 \le n \le 50000,1 \le T \le 5,1 \le a[i] \le 10^9 1 ≤ n ≤ 5 0 0 0 0 , 1 ≤ T ≤ 5 , 1 ≤ a [ i ] ≤ 1 0 9 正 解 部 分 \color{red}{正解部分} 正 解 部 分 枚举 y y y , 考虑统计有多少对满足条件的 ( x , z ) (x, z) ( x , z ) 点对, 按位考虑 , 若两个数字的 二进制位 从高位 t t t 到低位 b b b 全部相同, 到了下一位不同时, 就可以确定这两个数字的大小了, 由此, 可以对区间 [ 1 , y ) , ( y , N ]

抽象数据类型三元组的定义

匿名 (未验证) 提交于 2019-12-02 23:49:02
主要功能:构造三元组;销毁三元组;用e返回T的第i元的值;置T的第i元的值为e;判断是否为升序排列;判断是否为降序排列;求最大值;求最小值;显示三元组。 1 #include <stdio.h> 2 #include <stdlib.h> 3 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<自定义数据类型<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 4 typedef int Status; 5 typedef int ElemType; 6 typedef ElemType *Triplet; 7 #define OVERFLOW -2 8 #define OK 1 9 #define ERROR 0 10 //---------------------------------------------构造三元组T----------------------------------------------- 11 Status InitTriplet(Triplet &T,ElemType v1,ElemType v2,ElemType v3) 12 {//构造三元组T,依此置T的三个元素的初值为v1,v2,v3 13 T=(ElemType*)malloc(3*sizeof

稀疏矩阵——三元组顺序表

心不动则不痛 提交于 2019-12-02 16:32:46
目录 稀疏矩阵 矩阵的转置 矩阵压缩存储-三元组顺序表 稀疏矩阵的转置 第一种:以列序为主序的转置 第二种:快速转置 完整代码: 稀疏矩阵 假设m n的矩阵中,有t的非零元,令s=t/m n,当,s<=0.05时,称此矩阵为稀疏矩阵,简单理解就是非零元特别少的矩阵 //一般矩阵a 1 2 3 a= 4 5 6 7 8 9 //稀疏矩阵s 0 0 0 0 0 0 2 0 0 5 s= 0 0 3 0 0 0 0 0 0 4 矩阵的转置 一个m * n的矩阵转置后变为 n * m的矩阵 //3*2的矩阵-转置前 1 2 4 5 7 8 //转置后变为2*3 1 4 7 2 5 8 转置后的矩阵每个元素的下表与原来的下表刚好相反,例如上面4转置前的下标为(2,1),转置后变为(1,2); 矩阵压缩存储-三元组顺序表 之所以引入三元组顺序表,是因为,对于稀疏矩阵而言,用传统的存储方法会造成存储空间的浪费 0 12 9 0 0 0 0 0 0 0 0 0 0 0 -3 0 0 0 0 14 0 M= 0 0 24 0 0 0 0 0 18 0 0 0 0 0 15 0 0 -7 0 0 0 //上面矩阵用三元组表示 i j v 1 2 12 1 3 9 3 1 -3 3 6 14 4 3 24 5 2 18 6 1 15 6 4 -7 typedef struct { int i,j; /

稀疏矩阵计算器(三元组实现矩阵加减乘法)

回眸只為那壹抹淺笑 提交于 2019-12-02 09:05:38
一、问题描述: 稀疏矩阵是指那些多数元素为零的矩阵。利用“稀疏”特点进行存储(只存储非零元)和计算可以大大节省存储空间,提高计算效率。实现一个能进行稀疏矩阵基本运算的运算器。 二、需求分析: 以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵,实现两个矩阵相加、相减和相乘的运算。稀疏矩阵的输入形式采用三元组表示,而运算结果的矩阵则以通常的阵列形式列出。稀疏矩阵的输出要求:矩阵的行数、列数、非零元个数,以及详细的矩阵阵列形式。 三、代码实现 #include <stdio.h> #include <iostream> #define ERROR -1 #define MAXSIZE 12500 //非零元个数最大值MAXSIZE #define MAXRC 21 //各行第一个非零元位置最大值MAXRC #define OK 1 typedef int ElemType; typedef struct //同课本P98 { int i,j; ElemType e; } Triple; typedef struct //同课本P100 { Triple data[MAXSIZE+1]; //非零元三元组表 int rpos[MAXRC+1]; //各行第一个非零元的位置表 int mu,nu,tu; //矩阵的行数、列数和非零元个数 } RLSMatrix; void

google Cayley图谱数据库初试

◇◆丶佛笑我妖孽 提交于 2019-11-30 03:49:22
一.安装 mkdir cayley cd cayley mkdir src export GOPATH=$(pwd) go get github.com/google/cayley go build src/github.com/google/cayley/cayley.go 其中缺什么包下什么包,没有hg工具安装hg 修改下源码cayley.go switch cmd { case "init": db.Init(cfg, *tripleFile) case "load": ts, _ = db.Open(cfg) db.Load(ts, cfg, *tripleFile) ts.Close() case "repl": ts, _ = db.Open(cfg)           db.Repl(ts, *queryLanguage, cfg) ts.Close() case "http": ts, _ := db.Open(cfg) http.Serve(ts, cfg) ts.Close() default: fmt.Println("No command", cmd) flag.Usage() } 运行 go build $GOPATH/src/github.com/google/cayley/cayley.go && ./cayley http --port=8080

【阅读笔记】:End-to-end Structure-Aware Convolutional Networks for Knowledge Base Completion

一世执手 提交于 2019-11-29 14:54:04
为解决知识图谱(KG)中三元组不完整问题,本文结合加权图卷积神经网络(WGCN)和Conv-TransE两个模块,提出了SACN(Structure-Aware Convolutional Networks)模型。SACN通过WGCN来建模KG中的实体和关系,提取实体特征,然后输入至ConvE中使实体满足KG三元组约束,得到实体的embedding表示。通过实验证明,在FB15k-237和WN18RR数据集上超越了之前最佳模型效果的10%,是当前的SOTA模型。 发表于AAAI 2019,作者信息如下: 引言 首先简要介绍知识库(Knowledge Base,KB)。知识库中的知识有很多种不同的形式,例如本体知识、关联性知识、规则库、案例知识等。相比于知识库的概念,知识图谱(Knowledge Graph,KG)更加侧重关联性知识的构建。定义KG的主要方法是采用(s, r, o)三元组的形式,举例来说,北京是中国的首都,那么这句话就可以用三元组表示为:(s = Beijing, r = IsCapitalOf, o = China )。其中s称为头实体,r称为关系,o为尾实体。本文的知识库补全任务指的就是知识图谱中三元组的补全。 那么,在有了三元组的定义之后,本文的任务就可以描述为:给定KG,学习实体和关系的嵌入表示,完成三元组补全任务(s, r, o),即给定头实体和关系