http://www.europe.naverlabs.com/Research/Computer-Vision/Proxy-Virtual-Worlds
3d深度信息训练效果: cyclegan 学习深度信息的效果
虚拟KITTI数据
虚拟KITTI是一个照片逼真的合成视频数据集,旨在学习和评估几个视频理解任务的计算机视觉模型:对象检测和多对象跟踪,场景级和实例级语义分割,光流和深度估计。 虚拟KITTI在不同的成像和天气条件下,包含50个城市环境中的五个不同虚拟世界产生的50个高分辨率单目视频(21,260帧)。这些世界是使用Unity游戏引擎和一种新颖的实时到虚拟的克隆方法创建的。这些照片逼真的合成视频是自动,准确,完整的注释为2D和3D多对象跟踪和像素级与类别,实例,流和深度标签(参见下面的下载链接)。 我们的CVPR 2016论文[pdf,arxiv]描述了数据集,我们用于构建它的半自动方法,以及测量实际到虚拟差距的实验,使用虚拟数据进行深度学习,以及测量成像变化下的泛化性能和天气条件。 新闻 2016年9月23日:新版本(v.1.3.1),有2个新版本(+/- 30度相机旋转),新的3D对象地面实况和摄像机参数(内在+姿态),汽车元数据(移动/不移动标志,颜色和汽车制造,...)以及细分和光流边缘情况(包括车轮和复杂的薄结构)的小错误修复。实验结论与我们的CVPR 2016论文相同。事实上,DPMCF的MOTA平均差距甚至更小(实际KITTI为81.0,VKITTI 1.3.1克隆为81.2)。以前版本的文件(1.2.1)仍然可以在这里下载(md5)。 2016年8月10日:更新场景地面实况(v.1.2.1)。小错误修复了极点和透明着色器,仅影响场景地面真实图像的几个像素。其余的都没有改变。 使用条款和参考 虚拟KITTI数据集(KITTI数据集的适应) 版权 虚拟KITTI数据集中的版权归Xerox所有。 在下载虚拟KITTI DATASET之前,请仔细阅读这些条款。下载或使用数据表示您接受这些条款。
虚拟KITTI数据集由施乐提供,可能仅用于非商业目的,并受知识共享署名 - 非商业性共享3.0的约束,其摘要位于此处。 归因 虚拟KITTI数据集是KITTI Vision Benchmark Suite的适应。另见2012年计算机视觉和模式识别(CVPR)中的Andreas Geiger和Philip Lenz和Raquel Urtasun的题为“我们准备好自主驾驶?KITTI Vision Benchmark Suite”的出版物。 引用 在您的研究中使用或引用此数据集时,请引用Xerox作为虚拟KITTI数据集的发起人,并引用我们的CVPR 2016论文[pdf](6MB)[arxiv],参见也全文参考如下: 虚拟世界作为多对象跟踪分析的代理
阿德里安·盖登,乔旺,Yohann Cabon,Eleonora Vig 在IEEE计算机视觉与模式识别会议(CVPR)2016年@inproceedings {Gaidon:虚拟:CVPR2016, 作者= {Gaidon,A和Wang,Q和Cabon,Y和Vig,E}, title = {虚拟世界作为多对象跟踪分析的代理} booktitle = {CVPR}, 年= {2016}}
资料下载 我们为每种数据提供一个.tar [.gz]存档,如下所述。以下是批量下载的所有URL的列表,以下是每个存档的MD5校验和列表。您可以通过命令'tar xvf filename.tar'将文件解压缩到文件夹中(用xzvf替换xvf来压缩.tar.gz文件)。 Windows用户可以使用7-zip软件来提取这些档案。 在下文中,“<version>”是数据集版本号(当前为1.3.1),“<world>”是虚拟世界的名称,它是相应原始“种子”现实世界的序列号KITTI序列(0001,0002,0006,0018,0020)。占位符“<variation>”表示成像或天气条件方面的10种不同渲染变体之一: 克隆:渲染尽可能接近原始的真实世界的KITTI条件 15度右:照相机水平旋转15度向右 15度左:照相机向左旋转15度 30度右:照相机水平旋转30度向右 30度左:照相机向左旋转30度 早晨:晴天后黎明的典型照明条件 日落:日落之前的照明典型 阴天:典型的阴天(漫反射阴影,强烈的环境照明) 雾:雾效应通过体积公式实现 雨:简单的雨水颗粒效应(忽略相机上水滴的折射)请注意,我们的索引始终从0开始。
请注意,我们的索引始终从0开始。
-------------------------------------------------- -----------------
渲染RGB帧:链接(14GB)
渲染RGB帧 每个视频只是一个文件夹,格式如下: vkitti_ <版本> _rgb / <世界> / <变异> /%05d.png -------------------------------------------------- ----------------- 对象检测(2D&3D)和多对象跟踪地面真相:链接(8.5MB)
物体检测和多物体跟踪地面实况
版本1.3.1中的新版本:我们将包含新的地面真相信息(3D摄像机坐标中的3D对象姿态,“移动”标志,汽车模型名称和颜色)的单个文件中的KITTI类注释和“原始”地面实况合并在一起更正了一些列的名称/含义(参见下文)。 每个视频的MOT地面实况由一个类似CSV的文本文件组成,命名为:vkitti_ <版本> _motgt / <世界> _ <变异> .txt的
这些文件是类似KITTI的格式,可以使用流行的熊猫库(假定“将大熊猫导入为pd”),在python中加载以下一行内容: motgt = pd.read_csv(“<filename>”,sep =“”,index_col = False) 每行包含一个对象注释,其中包含以下列: 帧:视频中的帧索引(从0开始) tid:跟踪标识号(每个对象实例唯一) 标签:对象的“类型”类似KITTI的名称(Car,Van,DontCare) 截断:(在v1.3中改名)KITTI类截断标志(0:未截断,1:截断,2:严重截断,标记为“DontCare”)
封闭:(在v1.3中改名)KITTI类遮挡标志(0:不闭塞, 1;闭塞,2:严重闭塞,标记为“DontCare”)
alpha:[-pi..pi]中物体的KITTI样观察角
l,t,r,b:KITTI像2D'bbox',分别是像素坐标中的左,上,右,下边界框(包括,(0,0)原点在图像的左上角)
w3d,h3d,l3d:像KITTI一样的3D对象'dimension',分别是宽度,高度,长度(以米为单位)
x3d,y3d,z3d:KITTI类3D对象“位置”,分别为x, y,z,以米为单位的摄像机坐标(3D边框底面的中心)
ry:像KITTI一样的3D对象“rotation_y”,在相机坐标[-pi..pi]中围绕Y轴(偏航)旋转(KITTI约定是ry == 0 iff对象与x轴对齐,指向右)
rx:摄像机坐标[-pi..pi]中的X轴旋转(间距)
rz:摄像机坐标[-pi..pi]绕Z轴(卷)旋转
truncr :(在v1.3中改变)对象2D截断比在[0..1](0:无截断,1:完全截断)
占用者:对象2D占用率(未遮挡像素的分数)在[0..1]( 0:完全闭塞,1:完全可见,独立于截断)
orig_label:原始的KITTI类似的对象的“类型”名称,忽略“DontCare”规则(允许知道DontCare对象的原始类型) move:0/1标志,以指示对象是否真正在此帧与下一帧之间移动 model:用于渲染对象的3D模型的名称(可用于细粒度识别) 颜色:对象颜色的名称 有关3D信息的说明 在内部,3D世界通过使用Unity Engine渲染管道和各种着色器在屏幕上投影。您可以通过使用我们的相机本征矩阵(以像素为单位,从我们的1242x375分辨率和29°fov计算出的常数)将相机空间(例如,坐标x3d,y3d,z3d)中的点投影到图像像素, [[725,0,620.5], K = [0,725,187.0], [0,0,1]] 在我们的3D摄像机坐标系统中,x向右移动,y向下,z向前(原点是摄像机的光学中心)。
相机姿态(外在参数):link(1.1MB) 视频的每个帧的3D摄像机姿态(旋转和转换)由一个类似CSV的文本文件组成,命名为: vkitti_ <版本> _extrinsicsgt / <世界> _ <变异> .txt的 每个文件可以使用普遍的熊猫库(Python将pandas导入为pd),在Python中加载以下一行内容: extgt = pd.read_csv(“<filename>”,sep =“”,index_col = False) 每行由视频中的帧索引(从0开始),之后是该帧处的逐行平坦化的4x4外在矩阵: r1,1 r1,2 r1,3 t1 M = r2,1 r2,2 r2,3 t2 r3,1 r3,2 r3,3 t3 0 0 0 1 其中ri,j是相机旋转矩阵R的系数,ti是相机平移系数t的系数。 该矩阵可用于将世界空间的点转换为相机空间。对于均匀坐标中的世界空间P =(x,y,z,1)中的点p =(x,y,z),可以通过点积MP获得相机空间中的坐标。 请参阅上面的摄像机内在参数和我们的摄像机坐标系的描述。
-------------------------------------------------- ----------------- 语义和实例级分割场实例:link(488MB)
语义分割地面真相 每像素语义和实例级分割地面真值被编码为每帧.png文件(每通道标准8位精度)和每个世界的每变化文本文件,给出RGB颜色代码和标签之间的对应关系: vkitti_ <版本> _scenegt / <世界> / <变异> /%05d.png vkitti_ <版本> _scenegt / <世界> _ <变异> _scenegt_rgb_encoding.txt 每个“vkitti_ <version> _scenegt / <world> _ <variation> _scenegt_rgb_encoding.txt'文件包含一个格式如”<category> [:<tid>] <R> <G> <B>“的类别, <category>“是该像素的语义类别的名称(建筑物,汽车,护卫队,杂项,极地,道路,天空,地形,交通灯,交通信号,树,卡车,范,植被),”<tid>“ (可选)整数轨道标识符来区分相同类别的实例(例如,“Car:0”,但Sky和Tree没有轨道ID),而<R> <G> <B>是颜色编码该标签在相应的“vkitti_ <version> _scenegt / <world> / <variation> /%05d.png”的地面真相图像中。
光流地面真相:链接(4.8GB)
vintti流氓真相的神秘可视化 每个视频从当前帧到下一帧的光流场实数是一个文件夹,格式如下: vkitti_ <版本> _flowgt / <世界> / <变异> /%05d.png 其中每个3信道PNG16流图像(从00000开始的索引)对应于从当前帧到下一帧的归一化,量化和掩蔽(参见下文)流(在t =帧t→帧t + 1处的流)。可以从每个像素的RGB值(每通道16位)解码像素中的流量值为: R =通过图像宽度归一化的沿x轴的流动并量化为[0; 2 ^ 16-1] G =通过图像高度归一化的沿y轴的流动并量化为[0; 2 ^ 16-1] B = 0表示无效流(例如,天空像素) 一些示例使用OpenCV和numpy在Python中解码代码: 导入numpy为np 进口cv2
def read_vkitti_png_flow(flow_fn): “从.png转换为(h,w,2)(flow_x,flow_y)float32数组” #读取png到bgr 16位无符号短 bgr = cv2.imread(flow_fn,cv2.IMREAD_ANYCOLOR | cv2.IMREAD_ANYDEPTH) h,w,_c = bgr.shape assert bgr.dtype == np.uint16和_c == 3 #b ==无效的流标志== 0为天空或其他无效流 invalid = bgr [...,0] == 0 #g,r == flow_y,x按高度,宽度归一化,并缩放到[0; 2 ** 16 - 1] out_flow = 2.0 /(2 ** 16 - 1.0)* bgr [...,2:0:-1] .astype('f4') - 1 out_flow [...,0] * = w - 1 out_flow [...,1] * = h - 1 out_flow [invalid] = 0#或另一个值(例如np.nan) 返回out_flow 请注意,我们的基本原理归一化/量化/掩蔽流程.png文件通常像紫色阴霾,与本节开头的可视化相反,该视图使用通用的Sintel色轮来显示以像素为单位的流量。这是正常的,我们的16位编码的结果旨在保持高精度,包括大型位移,采用标准无损压缩格式(PNG16)。
深度真相:链接(5.1GB):
深层次的真相 每个视频的深度基础真实存储在16位灰度PNG图像中: vkitti_ <版本> _depthgt / <世界> / <变异> /%05d.png 深度值是从z缓冲区获得的相机平面距理(https://en.wikipedia.org/wiki/Z-buffering)。它们对应于摄像机坐标空间中每个像素的z坐标(而不是与摄像机光学中心的距离)。我们使用了一个655.35米的固定远平面,即像天空像素这样的无穷远点被限制在655.3米的深度。这允许我们将Z值截断并归一化为[0; 2 ^ 16 - 1]整数范围,使得我们的单通道PNG16深度图像中的像素强度为1对应于距摄像机平面1cm的距离。以厘米为单位的深度图可以通过单线程(假设“import cv2”)以numpy和OpenCV直接加载到Python中: depth = cv2.imread(depth_png_filename,cv2.IMREAD_ANYCOLOR | cv2.IMREAD_ANYDEPTH) 附加信息 抽象 现代计算机视觉算法通常需要昂贵的数据采集和精确的人工标签在这项工作中,我们反而利用最近在计算机图形学方面的进展来生成完全标记的,动态的和照片级的代理虚拟世界。我们提出了一种高效的实时虚拟世界克隆方法,并通过构建和公开发布称为“虚拟KITTI”的新视频数据集来自动标记对象检测,跟踪,场景和实例分割的准确的基础真实性来验证我们的方法,深度和光流。我们提供定量的实验证据,表明(i)对真实数据进行预训练的现代深度学习算法在实际和虚拟世界中表现相似,(ii)对虚拟数据进行预训练可提高性能。由于虚拟世界之间的差距很小,虚拟世界能够测量各种天气和成像条件对识别性能的影响,其他所有方面都是相同的。我们显示这些因素可能会严重影响其他高性能深层模型的跟踪。 相关新闻报道 麻省理工科技评论:“要真正聪明,AI可能需要玩更多的视频游戏” 有线:“使AI玩很多视频游戏可能会很大(不,认真)” 福布斯:“深度学习网络如何利用虚拟世界来解决现实世界的问题” 相关链接 第一届“视觉人工智能虚拟/增强现实(VARVAI)”国际研讨会,结合ECCV 2016 联系有关问题,请联系Adrien Gaidon和Yohann Cabon(xrce.xerox.com的first.lastname)。 更像这样 2015/085 - 虚拟世界作为多对象跟踪分析的代理 2015/038 - 多对象跟踪的在线域适应 virtual_kitti_proxy_virtual_worlds_banner 第26届英国机器视觉会议(BMVC) 1998/202 - 知识泵:支持知识的流动和使用