1.用检测的方法把falling object标记为一个类别,然后检测出类别。这种方式不可行的原因:因为falling object可能是任何东西,所以可能是一个路锥,也可能是一个玻璃瓶,还可能是掉下的花盆等等,这个类别我们无法去定义,普通检测肯定解决不了。

如果用分割把道路上所有的这些东西都统一标成一个障碍物,也有问题:因为这些东西其实是没有固定形状和颜色特征的,我们认为这些是障碍物是从人的逻辑进行的判断而不仅仅依靠视觉逻辑,对于视觉,只会去学习appearance、颜色和位置等信息。还有一种情况,在道路上有一个路锥,其他地方也有一个路锥,如果用多label进行训练,那道路上的路锥就标记为障碍物,但其他地方的路锥就是路锥,同一个物体两种label这个没办法训练。如果只标记道路和道路上的路锥,其他地方都标同一个类,也是同一个物体标成不同类别。当然你可以认为在路上的路锥是一类,其他地方的是一类,但这个是从逻辑上来看的。还有,障碍物众多,形状颜色不同,很难学同一个特征出来。

2.用目标检测加分割的方法,分割分出道路,道路外的图像全部切割掉,然后这一部分的图像全部填充为0以保证图像还是原图大小,不然切分出来的道路是不规则的部分不方便训练,对于道路内部,任何障碍物都当做是前景,其他的部分全当做是背景。

这种思路就要考虑test时候输入是原图还是像训练那样输入切割掉后的图片。如果输入是切割后的图片,那就会让原图先经过网络得到道路的范围然后再切割掉然后再出入进网络得结果,这样做,耗时非常大,先要让原图进行目标分割,然后再裁剪,最后再求障碍物检测,前面的两步将会占据很多时间。如果输入是原图,很可能会出现一个问题:比如一个障碍物在路中间,也在人行道上,两个都会被识别成障碍物。其实这倒也无所谓,人行道上识别出来了,我不去用这个东西就好了,因为我只关心路面上的障碍物,或者为了给客户演示好看,我可以在网络检测障碍物的同时并行计算路面的曲面,然后进行后处理,把障碍物不在路面区域的去掉就好了。

但同时,这也引发我的一个思考,可以这样说,即使按照2这种方式去标注,对于这个障碍物,他可以是任何东西,那他具有的像素特征种类就会特别特别多,不仅是形状,也是颜色,因为这个障碍物可以是任何东西。那既然这样,他可以识别任何障碍物,那任何东西也可以被误认为是障碍物,这样的话,网络可能学不出任何东西,因为什么东西都在里面,网络根本没有这么强的表达能力

如果是在测试场地,前面都是道路一片空旷,然后放个杯子瓶子什么的东西,你这样把任何东西当成障碍物,我估计没问题,因为他可以学习只要那中间那一块和路面特征不一样的东西,肯定就是障碍物。但是对于实际的城市道路,很简单一个例子,一个车下面放一个很高的瓶子,我估计他会把这个整体识别为障碍物。

理想状态是障碍物在测试场地那种情况,或者高速公路

3.把图像中所有的物体都检测出来,然后只计算在道路中的

4.把所有的物体都都标为背景类,然后只计算在道路中的所有背景类物体

尝试的方法:

1.将整个类别分为路面、障碍物、其他三类进行分割。具体怎么标这三类数据:根据分割的gt数据的颜色找出三个类别,从下到上,找到第一个颜色为地面的点,然后继续一样的点,直到第一个颜色不为地面的点,这个点就是障碍物与地面的连接点,这些连续点都是地面。然后继续找颜色一样的点,直到其他颜色的点,这个点就是其他类别与障碍物的连接点,这些连续的点就是障碍物。剩下的点都是其他类别。

这种方式缺点:a、分割得出的结果较远处的障碍物识别能力较差,汽车在距离较近处识别效果较好,但远距离就识别能力很差。

        b、gt数据按照这种方式标注,标注出来的效果较差,比如:

    可以看到人的形状并没有很好标注出来,并且栅栏也没有很好标注

      最左侧的地面是白色的,但与地面有连接的是灰色的

所有的杆都没有标注出来,行人也没有,车也没有

原因:这个的问题不在于分割模型,还是在于生成原始的gt数据有问题,特别是马路旁边的人行道和绿地,这个在分割的gt数据中是单独的一类,经常会把人行道的区域也认为是障碍物,而在他上面的那些东西反而不能作为障碍物。第一张图生成的gt效果不好,是因为遮挡关系,并且在某些地方又有很多其他类别的东西存在。其实这种情况也说明了一旦有遮挡,一个障碍物我很难标注出一个整体的障碍物。

解决办法:把问题简化,最开始打算依旧按照以前方法从下往上找,遇到人行道绿地的类别就跳过,但总觉得这种依旧会出现很多复杂问题,因为特别是人行道上面有很多物体,物体的位置关系也差别很大,造成很多我可能想不到的情况。现在打算按照另一种思路来做:根据分割的polygan画出路面的区域,依旧从下往上找,但是在polygan的最顶点处就停止往上找。如果在最底点到最顶点的范围内出现了其他类别,就标为障碍物,其他所有的东西都标为其他类。如果底点到顶点中间是人行道和绿地这种类,直接忽略继续往上找。

falling object思路总结的更多相关文章

  1. Android开发之ViewPager的简单使用

    ViewPager是V4包中的,如果你的编译器敲不出ViewPager,那么你就需要添加,看下面: 第一步:点击+号 第二步:选择第一个Library 第三步:添加这个包: 然后点击ok-->o ...

  2. javascript王国的一次旅行,一个没有类的世界怎么玩转面向对象?

    1. 前言 作为Java 帝国的未来继承人,Java小王子受到了严格的教育, 不但精通Java语言.Java虚拟机.java类库和框架,还对各种官方的Java规范了如指掌. 近日他听说一个叫做Java ...

  3. java结合testng,利用mysql数据库做数据源的数据驱动实例

    上一篇我们介绍用如何用yaml结合testng做数据驱动,就又想来个数据库的参数化 备注:@DataProvider的返回值类型只能是Object[][]与Iterator<Object> ...

  4. Inventory Update

    依照一个存着新进货物的二维数组,更新存着现有库存(在 arr1 中)的二维数组. 如果货物已存在则更新数量 . 如果没有对应货物则把其加入到数组中,更新最新的数量. 返回当前的库存数组,且按货物名称的 ...

  5. Exact Change

    设计一个收银程序 checkCashRegister() ,其把购买价格(price)作为第一个参数 , 付款金额 (cash)作为第二个参数, 和收银机中零钱 (cid) 作为第三个参数. cid ...

  6. android 面试汇总<二>

    Animation Q:Android中有哪几种类型的动画? 技术点:动画类型 参考回答: 常见三类动画 View动画(View Animation)/补间动画(Tween animation):对V ...

  7. 【leetcode】1289. Minimum Falling Path Sum II

    题目如下: Given a square grid of integers arr, a falling path with non-zero shifts is a choice of exactl ...

  8. 【leetcode】931. Minimum Falling Path Sum

    题目如下: Given a square array of integers A, we want the minimum sum of a falling path through A. A fal ...

  9. javascript之Object.defineProperty的奥妙

    直切主题 今天遇到一个这样的功能: 写一个函数,该函数传递两个参数,第一个参数为返回对象的总数据量,第二个参数为初始化对象的数据.如: var o = obj (4, {name: 'xu', age ...

随机推荐

  1. ubuntu18.04安装opencv 3.4.1

    github 地址: https://github.com/opencv/opencv 安装依赖 sudo apt-get install build-essential sudo apt--dev ...

  2. 剑指Offer的学习笔记(C#篇)-- 矩形覆盖

    题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 一 . 解题思路 这个貌似就是普通的跳台阶问题. 二 . 代 ...

  3. iOS 技术支持

    iOS 技术支持网址:有问题或建议请留言. 邮箱地址:odeyrossskudder4266848@mail.com iOS program design & system consultat ...

  4. Androidstudio坑

    1.intel haxm sdkmanager显示不可选中,而且boost设置好了intervt 解决:重新关闭,打开系统,然后开启.... 2.解决不了一直报错,(自己的代码,明明已经没有问题) 有 ...

  5. $(function(){})返回值$(document)

    $(function(){})返回值为$(document). 做出下面的操作:可以使得页面背景改变. $(function (){}).find('body').css('background',' ...

  6. https://www.safaribooksonline.com/home/

    https://www.safaribooksonline.com/home/ https://www.safaribooksonline.com/library/view/instant-sikul ...

  7. linux打包文件,压缩文件

    1.打包: linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进行压缩. 1.命令格 ...

  8. MyBatis配置文件之properties属性

    MyBatis提供3个方式使用properties: 1.property子元素. 2.properties文件. 3.程序代码传递. properties属性系给系统配置一些运行参数,一般放在XML ...

  9. 利用wsdl.exe生成webservice代理类

    通常要手动生成WebService代理类需要把一句生成语句,如 wsdl.exe /l:cs /out:D:\Proxy_UpdateService.cs  http://localhost:1101 ...

  10. 深入JVM内核---原理,诊断与优化

    JVM的概念 JAM是Java Virtual Machine的简称.意为Java虚拟机 虚拟机 指通过软件模拟的具有完整硬件系统功能的,运行在一种完整隔离环境中的完整计算机系统 有哪些虚拟机 - V ...