falling object思路总结
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思路总结的更多相关文章
- Android开发之ViewPager的简单使用
ViewPager是V4包中的,如果你的编译器敲不出ViewPager,那么你就需要添加,看下面: 第一步:点击+号 第二步:选择第一个Library 第三步:添加这个包: 然后点击ok-->o ...
- javascript王国的一次旅行,一个没有类的世界怎么玩转面向对象?
1. 前言 作为Java 帝国的未来继承人,Java小王子受到了严格的教育, 不但精通Java语言.Java虚拟机.java类库和框架,还对各种官方的Java规范了如指掌. 近日他听说一个叫做Java ...
- java结合testng,利用mysql数据库做数据源的数据驱动实例
上一篇我们介绍用如何用yaml结合testng做数据驱动,就又想来个数据库的参数化 备注:@DataProvider的返回值类型只能是Object[][]与Iterator<Object> ...
- Inventory Update
依照一个存着新进货物的二维数组,更新存着现有库存(在 arr1 中)的二维数组. 如果货物已存在则更新数量 . 如果没有对应货物则把其加入到数组中,更新最新的数量. 返回当前的库存数组,且按货物名称的 ...
- Exact Change
设计一个收银程序 checkCashRegister() ,其把购买价格(price)作为第一个参数 , 付款金额 (cash)作为第二个参数, 和收银机中零钱 (cid) 作为第三个参数. cid ...
- android 面试汇总<二>
Animation Q:Android中有哪几种类型的动画? 技术点:动画类型 参考回答: 常见三类动画 View动画(View Animation)/补间动画(Tween animation):对V ...
- 【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 ...
- 【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 ...
- javascript之Object.defineProperty的奥妙
直切主题 今天遇到一个这样的功能: 写一个函数,该函数传递两个参数,第一个参数为返回对象的总数据量,第二个参数为初始化对象的数据.如: var o = obj (4, {name: 'xu', age ...
随机推荐
- 读取静态Json文件
创建web项目: string Json = string.Empty; string filePath = Server.MapPath("/***.json");//根目录下的 ...
- 第6章 图的学习总结(邻接矩阵&邻接表)
我觉得图这一章的学习内容更有难度,其实图可以说是树结构更为普通的表现形式,它的每个元素都可以与多个元素之间相关联,所以结构比树更复杂,然而越复杂的数据结构在现实中用途就越大了,功能与用途密切联系,所以 ...
- 卸载/安装ubuntu系统教程
卸载ubuntu 1.修复Mbr 1.下载软件MbrFix,地址:https://www.softpedia.com/get/System/Hard-Disk-Utils/MBRFix.shtml 2 ...
- Android使用SO库时要注意的一些问题
转自:https://segmentfault.com/a/1190000005646078 正好动态加载系列文章谈到了加载SO库的地方,我觉得这里可以顺便谈谈使用SO库时需要注意的一些问题.或许这些 ...
- poj 2407 欧拉函数裸题
http://poj.org/problem?id=2407 题意:多组数据,每次输入一个数 ,求这个数的欧拉函数 int euler_phi(int n){//单个欧拉函数 int m=(int)s ...
- UIActionSheet的最后一项点击失效
在开发过程中,发现有时候UIActionSheet的最后一项点击失效,点最后一项的上半区域时有效,这是在特定情况下才会发生,这个场景就是试用了UITabBar的时候才有.解决办法: 在showView ...
- 笔记-JavaWeb学习之旅17
1.过滤选择器 首元素选择器:first 获得选择的元素中的第一个元素 尾元素选择器:last获得选择元素中的最后一个元素 非元素选择器:not(selector) 不包括指定内容的元素 偶数选择器: ...
- java基础第六篇之常用思想、封装、继承和多态
a.累加求和思想:求1~100的和,求数组/集合中元素的和,求偶数的数,求总分 int sum=0//循环外部定义sum变量,循环里面对每个元素累加 for (; ; ) { //sum+=数据 } ...
- python——类与对象
__init__ 方法: 1.Init 初始化方法的返回值必须是None. 3.类没有定义阶段,函数有定义阶段(不调用不执行). 实例化时触发__init__方法执行,为对象添加属性.[t1=stu ...
- 字典排序permutation
理论 C++ 中的next_permutation 一般作为正序全排列的使用规则,其实这个就是正序字典排序的实现. 比如我们要对 列表 [1,2,3] 做full permutation 一般使用递 ...