WoodScape: A multi-task, multi-camera fisheye dataset for autonomous driving

2023-05-16

Paper name

WoodScape: A multi-task, multi-camera fisheye dataset for autonomous driving

Paper Reading Note

URL: https://openaccess.thecvf.com/content_ICCV_2019/papers/Yogamani_WoodScape_A_Multi-Task_Multi-Camera_Fisheye_Dataset_for_Autonomous_Driving_ICCV_2019_paper.pdf
GITHUB_URL: https://github.com/valeoai/WoodScape
数据集官网: https://woodscape.valeo.com

TL;DR

  • 2019 年 ICCV 文章,出自于德国 Valeo 自动驾驶公司,提出了首个基于鱼眼相机采集的自动驾驶数据集 woodscape(取名致敬鱼眼镜头发明者 Robert_W._Wood)
  • 适用于多个视觉任务:分割、深度估计、3D 包围框检测、镜头污渍检测等。分割标注在 instance level 有40类标注,提供了 10000 张图片,其他任务提供了 100000 张图片(其实并没有完全开源,比如雷达数据没有开源,总数据集数目大概是 10000 张左右)
  • 鼓励在进行畸变校正的情况下进行视觉处理

Introduction

  • 鱼眼相机和传统使用透视投影的针孔相机不一样,是使用非线性的投影来得到一个非常大的 FOV
  • 该数据集适用于多个视觉任务:分割、深度估计、3D 包围框检测、镜头污渍检测等。分割标注在 instance level 有40类标注,提供了 10000 张图片,其他任务提供了 100000 张图片(其实并没有完全开源,比如雷达数据一点都没有开源,总数据集数目大概是 10000 张左右)
    在这里插入图片描述
  • 主要贡献有:
    • 提出首个 10000 数量级的鱼眼图像分割数据集
    • 4 个鱼眼相机、9个视觉任务,鼓励多任务、多相机方面的研究
    • 提出了一种新颖的镜头表面污渍检测任务,并提出了该任务的首个数据集
    • 提出了一种训练速率提升 95x 的 3D 框检测方法

Dataset/Algorithm/Model/Experiment Detail

实现方式

采集车传感器配置

  • 前后左右分别安装一个鱼眼相机
    在这里插入图片描述

鱼眼相机投影

  • 鱼眼图像虽然 FOV 大,但成像模型较为复杂
  • 鱼眼畸变由径向映射函数 r ( θ ) r(\theta) r(θ) 建模, r ( θ ) r(\theta) r(θ) 是图像上距畸变中心(光轴与图像平面的交点)的距离,是入射光线与相机光轴夹角 θ \theta θ 的函数
  • 鱼眼相机投影方法
    • 一般的鱼眼投影方法有:Stereographic projection、Unified Camera Model (UCM)、eUCM (Enhanced UCM),这些方法由于使用了特定的 geometry 所以并不完美适配鱼眼
    • WoodScape 使用了 4阶多项式的映射函数,将入射角映射到图像像素
      在这里插入图片描述
  • 不同鱼眼相机投影的对比,其他投影模型参数都是优化到与 4 阶多项式投影对齐(入射角:0°与120°范围内,即 FOV 最大 240°)。
    在这里插入图片描述

畸变校正 vs 模型适配畸变图像

  • a 图是 rectilinear image 的简单畸变校正,缺点是降低了 FOV,且大于 180°的区域无法被正常校正,另外对于小区域 warp 到大区域的情况下有 resampling distortion
  • b 图的 Piecewise linear correction 能解决 FOV 缺失问题,但是从一个平面到另一个平面的过度区域存在一些问题,可以看成是对鱼眼透镜模型的分段线性近似
  • c 图展示了基于圆柱形视点进行的拟线性校正,在垂直方向是线性的,所以在垂直方向的竖直物体被较好保留,但是水平方向存在一些 distortion

在这里插入图片描述

  • 由于畸变校正方法的本质缺陷,使用 CNN 来适配这种畸变也是一种思路,但是 CNN 的平移不变性在鱼眼这里不能被满足,因为鱼眼存在 spatially variant distortion,隐式学习这种畸变较为困难,最近的球形模型是一种解决思路但远远不够,这个方向还是 open problem

数据采集

  • 大部分数据采集于: USA, Europe, and China(由于隐私问题不能开源)
  • 虽然大部分数据来自轿车,但运动型多用途车的数据量很大,确保了传感器机械配置的充分性
  • 采集设备
    在这里插入图片描述
  • 语义分割类别分布
    在这里插入图片描述

数据集对比

在这里插入图片描述

实验结果

  • 分割检测任务
    在这里插入图片描述

  • 镜头表面污渍检测
    在这里插入图片描述

  • slam
    在这里插入图片描述
    在这里插入图片描述

Thoughts

  • 非常全面的鱼眼数据集,支持多个任务,可惜开源工作不彻底,只开源了小部分数据(并且开源时间与承诺时间相比推迟了一年)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WoodScape: A multi-task, multi-camera fisheye dataset for autonomous driving 的相关文章

  • 访问 iOS 6 新 API 以获取相机曝光和快门速度

    在苹果的iOS 6 0 功能页面 https developer apple com technologies ios6 过去常说 利用内置摄像头的高级功能 新的 API 可让您控制焦点 曝光和感兴趣区域 您还可以使用人脸检测 API 访问
  • Gradle 额外属性在子项目中定义的自定义任务中不可见

    我正在尝试在多个 Gradle 任务之间重用通用逻辑 类似于中建议的内容这个答案 https stackoverflow com a 13072481 但我遇到了额外项目属性不可见的问题 归根结底 问题就在这里 假设我有一个根 Gradle
  • 关闭 Android 中的自动对焦

    这是在我的应用程序代码中关闭相机自动对焦的任何方法 我想检查如果手机没有自动对焦功能 我的扫描仪如何工作 但我的手机有该功 能 Use FOCUS MODE INFINITY http developer android com refer
  • 在 TPL 中返回空静态任务是一种不好的做法吗?

    在某些情况下 我想有条件地运行任务 我使用某种扩展方法 如下所示 public static class MyTaskExtension private static Task theEmptyTask Task Factory Start
  • 以编程方式截取屏幕截图不会捕获 surfaceVIew 的内容

    我有一个应用程序 我希望能够捕获屏幕截图 布局的背景是一个 SurfaceView 显示来自后置摄像头的视频 下面的代码可以截图 但是surfaceView的内容保存为黑色 这是代码 btn setOnClickListener new O
  • 如何检测位图中的红色像素

    android中的getPixels 是上下左右读取像素 还是左右上下读取像素 基本上是按行或列读取 如果我想知道图片中的红色值较高的位置 我可以这样做吗 我假设它是按列读取的 Bitmap thumbnail Bitmap data ge
  • Android相机无法从后台服务拍照

    我已经实现了一项从后台线程拍照的服务 但照片永远不会在我的任何设备上拍摄 这是代码 下面记录输出 public class PhotoCaptureService extends Service private static final S
  • 如何使用 UIImagePickerController CropRect

    我刚刚找到了一种方法来更改裁剪框的矩形 该裁剪框在捕获图像后出现UIImagePickerViewController 这可以在以下帮助下完成UIImagePickerControllerCropRect 但我不知道如何使用它 最初的裁剪框
  • iPhone 相机访问权限?

    我想知道如何访问 iPhone 相机并实时使用它 例如 仅在相机视图上绘图 另一个相关问题 可以显示吗同时 4 个摄像机视图就像 Mac 上的 Photo Booth 一样 您可以使用 AVFoundation 来做到这一点 void in
  • 如何在 AVCaptureDevice 上准确设置快速快门速度(曝光时间)?

    我正在开发适用于 IOS 13 的相机应用程序 为此 我将 AVCaptureSession 与 AVCaptureVideoPreviewLayer 结合使用 到目前为止一切正常 现在我想让用户从给定的典型快门速度值数组 以 1 3 曝光
  • 线程/进程/任务之间有什么区别?

    线程 进程 任务之间有什么区别 Process 进程是正在执行的计算机程序的实例 它包含程序代码及其当前活动 根据操作系统 OS 进程可能由同时执行指令的多个执行线程组成 基于进程的多任务处理使您能够在使用文本编辑器的同时运行 Java 编
  • 在无头模式下独立运行 Unity,同时捕获屏幕截图

    我需要创建一个在无头模式下运行的统一项目 使用 batchmode 命令 但它必须捕获屏幕截图 例如每一秒并将它们写到一个文件中 我知道在无头模式下 您需要强制调用 Camera Render 才能渲染任何内容 在捕获第一个屏幕截图后 时间
  • Task.Run 如何受 CPU 内核限制?

    为什么下面的程序只会运行有限数量的阻塞任 务 限制数量似乎是机器上的核心数量 最初 当我写这篇文章时 我希望看到以下内容 作业 1 24 的作业完成输出 2秒的间隙 工作产出 25 48 然而输出是 作业 1 4 的作业完成输出 然后每隔
  • Task.Delay 是否真的像 I/O 操作一样异步,即它依赖于硬件和中断而不是线程?

    我发现了大量相关内容 但这些内容都是拐弯抹角的 但我始终无法找到答案 我几乎 100 确定Task Delay int 不使用线程 因为我可以在只有 16 个逻辑处理器的机器上运行此代码 var tasks new List
  • Three.js 设置并读取相机外观向量

    而不是使用camera rotation或lookAt 函数旋转相机 我想将外观矢量直接传递给相机 是否可以直接设置相机外观矢量以及是否可以从相机读取外观矢量 相机没有 外观矢量 因此无法设置它 但是 您可以构造一个point通过将您的外观
  • 异步任务、视频缓冲

    我正在尝试理解 C 中的任务 但仍然遇到一些问题 我正在尝试创建一个包含视频的应用程序 主要目的是从文件中读取视频 我使用 Emgu CV 并通过 TCP IP 发送它以在板上进行处理 然后以流 实时 方式返回 首先 我是连续做的 所以 读
  • 将图片添加到图库 - Android

    我有一个活动 用相机拍照 然后将其添加到正确的文件夹 在本例中为 DCIM Camera 但是当你退出应用程序并加载 Android 图库时 它不在那里 我正在玩一些游戏 发现它只在重新启动手机后才出现 我不确定这背后的原因 也许它必须创建
  • 相机预览的有效模糊

    到目前为止我尝试过的 将每一帧转换为位图 然后用library https github com wasabeef Blurry并将其放入ImageView这是在相机预览前 显然太慢了 就像1 fps 然后我开始使用渲染脚本这会模糊每一帧
  • 如何将相机中的图像保存到 iPhone 图库中的特定文件夹?

    嘿 我是 iPhone 新手 最近我一直在尝试制作一个应用程序 基本上 我想要做的是 如果用户将从相机捕获任何图像 那么它应该保存在设备库中 我知道如何将照片保存在图库中 它对我有用 但我无法将所有捕获的图像保存到设备图库中的特定文件夹 例
  • 如何以编程方式创建和暂停 Google App Engine 任务队列

    我正在使用 Google App Engine 并且一直在使用命名推送队列来处理一些任务 队列是使用queue xml 定义和配置的 没关系 现在我正在尝试做更多的事情 1 有没有办法动态创建和配置Java 中的新队列 动态 2 另外 一旦

随机推荐