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 ...
随机推荐
- C#连接Oracle数据库解决报错(需要安装Oracle客户端软件8.1.7)的问题
1.通过nuget安装 ManagedDataAccess 2.引用 using Oracle.ManagedDataAccess.Client; 注:最低framework4.0 测试连接: // ...
- Oracle SQL调优之分区表
目录 一.分区表简介 二.分区表优势 三.分区表分类 3.1 范围分区 3.2 列表分区 3.3 散列分区 3.4 组合分区 四.分区相关操作 五.分区相关查询 附录:分区表索引失效的操作 一.分区表 ...
- [Leetcode]847. Shortest Path Visiting All Nodes(BFS|DP)
题解 题意 给出一个无向图,求遍历所有点的最小花费 分析 1.BFS,设置dis[status][k]表示遍历的点数状态为status,当前遍历到k的最小花费,一次BFS即可 2.使用DP 代码 // ...
- JS 识别生日、性别、年龄
<script> function IdCard(UUserCard,num){ if(num==1){ //获取出生日期 birth=UUserCard.substring(6, 10) ...
- solidity 学习笔记(3) 函数修饰符/继承
修饰符: 函数修饰符有 constant view pure 其中 constant和view的功能是一样的 不会消耗gas 也就是说不会做任何存储 constant在5.0以后的版本中被废弃 ...
- 洛谷P3004 [USACO10DEC]宝箱Treasure Chest
P3004 [USACO10DEC]宝箱Treasure Chest 题目描述 Bessie and Bonnie have found a treasure chest full of marvel ...
- uoj#279. 【UTR #2】题目交流通道(容斥+数数)
传送门 先考虑无解的情况,为以下几种:\(dis_{i,j}+dis_{j,k}<dis_{i,k}\),\(dis_{i,i}\neq 0\),\(dis_{i,j}\neq dis_{j,i ...
- 如何使用Node.js搭建一个服务器
在node环境中运行下面的代码 "use strict"; const http = require("http"), path = require(" ...
- sql server添加sa用户和密码
昨天给网站“搬家”(更换服务器),我是在win7上安装的 sql server2012,安装过程很顺利,用“Windows 身份验证” 也可正常访问.但是用sa用户访问数据库出现了 错误:18456. ...
- 【面试】迄今为止把同步/异步/阻塞/非阻塞/BIO/NIO/AIO讲的这么清楚的好文章(快快珍藏)
常规的误区 假设有一个展示用户详情的需求,分两步,先调用一个HTTP接口拿到详情数据,然后使用适合的视图展示详情数据. 如果网速很慢,代码发起一个HTTP请求后,就卡住不动了,直到十几秒后才拿到HTT ...