V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rapperx2
V2EX  ›  算法

求助一个算法问题,老板发怒了,急

  •  2
     
  •   rapperx2 · 2020-08-28 15:52:06 +08:00 · 4313 次点击
    这是一个创建于 1549 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    我们的项目是 GPS 相关的业务,现在有一个算法问题一直没解决导致项目拖了很久了,中间尝试了很多办法。老板今天也发怒了,实在没办法。求助 V 友的大佬们给下思路

    需求

    有 N 条数据里面含有载重数据,载重数据是车上安装的设备传过来的。拿到数据我们需要根据载重值算出装卸货事件。

    难题

    1.行驶中因为车经常抖动导致载重值很不稳,一直都是一会上一会下,很少有连续性高的值。

    2.车辆斜着停也会造成载重值不准确,因为是根据角度得出的值。

    3.在卸货或者装货的时候没有速度,但是装卸货时车也是会有抖动,也会造成事件不准确。

    我们以前的算法是一个死算法,不能灵活的去对应场景。稍微抖动就造成事件生成不准确。我们是根据一个阈值比例判断它是否为重车和空车。

    根据连续点得出装卸货事件,但是最终做出来,事件点容差还是比较大。

    最后

    想问问大佬们这种东西是用机器学习去算出事件,还是怎么去做算法比较好。我对机器学习这些也不懂,所以现在只能看换下思路能不能解决这个问题。 如果能用机器学习的话主要涉及的东西是些什么,我们好招相关人员。

    感谢大家

    第 1 条附言  ·  2020-08-28 16:49:06 +08:00
    不好意思刚才发的比较急没阐述明确。判断值有载重值,还有速度值(但是经常为 0 )。现在误差比较大的就是装卸货的起始点误差比较大。或者一些条件因素导致误判装卸货事件点。

    我说的机器学习是想根据一些装卸货事件准确性高的数据来进行学习。

    我们现在是做了步长控制,分运动步长和静态步长,来控制它的跳动范围(优化曲线)。还有根据载重值的比例,达到阈值来生成装卸货事件(重车 80% 空车 30%)。

    如果算出的比例值达到了 80%就生成装货事件,空车低于 30%就生成卸货事件


    这上面说的是正常逻辑,但是异常逻辑比较多(也就是上面提的一些),所以造成很多事件无法准确生成。

    所以想问问大家能不能用机器学习去学习准确性的数据生成事件,然后来做异常数据的推测
    37 条回复    2020-08-29 18:25:56 +08:00
    yaming116
        1
    yaming116  
       2020-08-28 15:55:19 +08:00 via iPhone
    换成摄像头好了
    FutherAll
        2
    FutherAll  
       2020-08-28 15:55:47 +08:00
    抖动的话,加上速度应该可以判断吧
    imn1
        3
    imn1  
       2020-08-28 16:05:03 +08:00
    数据获取的频率?
    高频数据应该比较容易滤掉不准确数据,因为不准确的会有各种不同的值,准确的则在某个误差范围内
    这样,某个范围数据(准确的数据)是会多次出现的,不准确数据则分布在不同范围

    低频的话就麻烦了,例如几小时才测一次
    gggxxxx
        4
    gggxxxx  
       2020-08-28 16:10:56 +08:00 via iPhone
    这个问题有点意思啊。
    数据采集的频率很关键,感觉频率高的话,抖动导致的载重值和真正装满货后的载重值不难区分出来。
    另外换个思路,载重值不可靠的话,改用其他值来判断。例如会不会载重后汽车启动加速度不一样?通过汽车加速度或者刹车速度来判断是否重车?
    rapperx2
        5
    rapperx2  
    OP
       2020-08-28 16:11:10 +08:00
    @imn1 “准确的则在某个误差范围内“ 就这个误差值一直不能解决,这个是其一的因素。 数据是 10 秒-30 秒一条
    rapperx2
        6
    rapperx2  
    OP
       2020-08-28 16:14:24 +08:00
    @gggxxxx 车辆开起来,gps 的速度是不准确的,经常速度为 0 。大多数是 30-60 码。很难判断车辆是否一直在开。
    Vegetable
        7
    Vegetable  
       2020-08-28 16:15:36 +08:00
    感觉从你描述的问题来看,比较关键的是怎么过滤噪音。最简单的逻辑是根据前后的状态和复合逻辑来判断当前取到的数据是否是有效的。比如在有速度的时候卸货和装货应该是有问题的。斜着停车这个有点无解,不过去掉普通的抖动还是比较有希望的吧,这个用机器学习可能并没有那么好的效果,你能拿到学习数据吗
    mm163
        8
    mm163  
       2020-08-28 16:17:06 +08:00
    传感器连续测数据,然后去抖,取平均。
    imn1
        9
    imn1  
       2020-08-28 16:20:12 +08:00
    @rapperx2 #5
    你的业务场景我真是比较难理解
    如果只有空车、重车两种情况,我觉得空车应该远远偏离重车的检测误差范围吧?
    是否还存在货物量低,然后误差范围涵盖了空车,这种情况?

    或者你随便贴一段一小时内,监测数据的曲线图,给大家看看
    kop1989
        10
    kop1989  
       2020-08-28 16:20:46 +08:00
    我觉得需要先阐述:
    1 、能够参与判断这个“装卸货事件”的参数都有几个。
    2 、判断事件的准确率要高于多少?

    这俩不明确没法有人提供准确的方案吧……
    gggxxxx
        11
    gggxxxx  
       2020-08-28 16:22:21 +08:00 via iPhone
    @rapperx2 速度值也不准,载重值也不准........
    我想不出其他什么新思路了....
    imn1
        12
    imn1  
       2020-08-28 16:59:50 +08:00
    速度值不准的话,还不如上 GPS
    装卸货时间不短吧,还是说泥头车一分钟内直接就倒掉余泥?
    如果装卸货需要一定时间,GPS 位移+突变重量数据应该更容易判断
    唉,不是做这行,搞不清业务逻辑
    elmagnificogg
        13
    elmagnificogg  
       2020-08-28 17:13:02 +08:00
    学习可以,但是先需要标定,大概比如 1000 次车装卸数据,然后标定好正确的,然后拿去训练,但是吧,我感觉这个不是学习能解决的,首先 10s 一次数据 其实挺慢的,而且你本身也说了数据中存在不准的情况,gps 速度不可靠,而且可能有些路段可能还会有遮挡,导致位置信息啥的都是错的,我建议是先让 gps 那边传的数据里增加一个 gps 定位情况的东西,比如 HDOP,然后把 HDOP 太高的先过滤掉,再尝试吧
    kokutou
        14
    kokutou  
       2020-08-28 17:13:57 +08:00 via Android
    这。。。还不如换个准的陀螺仪。。。

    我觉得陀螺仪传感器应该是准的,是不是那个模块里的固件算法有毛病。。。
    goofool
        15
    goofool  
       2020-08-28 17:20:05 +08:00 via Android
    有速度就不用判断装卸货了吧
    nicaishizhu
        16
    nicaishizhu  
       2020-08-28 17:45:01 +08:00 via iPhone   ❤️ 1
    去抖可以用卡尔曼
    shuigui
        17
    shuigui  
       2020-08-28 17:46:42 +08:00
    上学时玩过一段时间四轴
    1 、数据类型还是不够,车载设备要提供当前姿态数据和加速度(典型的如 mpu9250 )
    2 、姿态数据和加速度有了后可以方便的解决你说的上坡还有抖动之类的
    3 、卸货不知道你们是怎么卸货的,是慢慢倒掉还是突然倒掉,那得对载重值的检查频率要比较高,然后对这个值做一个微分处理,根据变化趋势来判断是正常抖动还是在卸货
    4 、机器学习不是说丢一堆原始数据然后就完事了,一个简单的问题,你自己都不知道哪个数据是正常的卸货?
    wysnylc
        18
    wysnylc  
       2020-08-28 18:05:11 +08:00
    和算法没什么关系,是数据本身有问题
    GrayXu
        19
    GrayXu  
       2020-08-28 18:10:17 +08:00
    你的需求不需要上机器学习。
    lloovve
        20
    lloovve  
       2020-08-28 18:11:39 +08:00 via iPhone
    传感器有问题,再怎么研究也不行,至少我没看到 gps 速度误差那么大的,卸货车板或者门上安装传感器就行了,车上的载重传感器也有问题
    jtwor
        21
    jtwor  
       2020-08-28 18:19:15 +08:00
    根据不同情况所产生数据不准 都设个权重 感觉难题其实都在怎么过滤这些数据
    summic
        22
    summic  
       2020-08-28 18:32:53 +08:00
    传感器的问题,你靠算法去弥补?
    数据质量那么差,你作为专业人士应该跟老板指出关键问题所在,让大家少走弯路。
    grazie
        23
    grazie  
       2020-08-28 18:46:40 +08:00 via Android
    @nicaishizhu 加上 Markov Chain 应该可以了
    ghjacky
        24
    ghjacky  
       2020-08-28 18:48:43 +08:00
    是我想的太简单了吗?我觉得,装卸货事件肯定发生在速度为 0 时吧,只要速度为零,载重数据在一段时间内出现平稳的增长或者下降不就是装卸货吗,至于速度不为 0 时的数据抖动你管它干嘛。停车时,车身倾斜造成的数据不准但是总不会变化吧。
    zhouxiaoyuan
        25
    zhouxiaoyuan  
       2020-08-28 18:52:56 +08:00 via Android
    能不能把异常数据过滤掉,只关心正常数据
    heyjei
        26
    heyjei  
       2020-08-28 19:39:30 +08:00
    这个不应该把锅甩给硬件部门嘛?最笨的办法就是对着一堆的数据找规律
    heyjei
        27
    heyjei  
       2020-08-28 19:44:16 +08:00   ❤️ 1
    以前我们也出过类似的数据质量的问题,造成用户体验极差。最后的解决方法是大佬出面协调不同的组更改协议,同时要求源端提高采集质量。

    光靠软件,或许能解决,但是肯定是最费时费力的,你需要一个能够跨组协调的大佬。
    jarence
        28
    jarence  
       2020-08-28 19:48:51 +08:00
    建议楼主贴一点数据上来,没有具体数据给不出有效的建议。从楼主的表述上来看,可以用滤波的方式去掉噪声,比如最简单的平均值滤波。从最简单的技术来验证,机器学习里有异常检测的算法,但是得看具体得数据是否适用。
    imn1
        29
    imn1  
       2020-08-28 20:11:37 +08:00
    @ghjacky #24
    速度为 0 的情况很多,塞车、收费、服务区、司机疲劳休息、车辆故障……
    hurrytospring
        30
    hurrytospring  
       2020-08-28 20:24:30 +08:00
    感觉还是数据太少了啊,起 终点,运送距离,陀螺仪的水平角度,加速度,随便获得那两个数据问题都会简单很多啊。
    allan888
        31
    allan888  
       2020-08-29 02:11:07 +08:00
    我觉得 lz 应该贴上训练数据,数据+时间+空车还是负载的车,大家好一起玩玩
    ghjacky
        32
    ghjacky  
       2020-08-29 07:09:10 +08:00 via iPhone
    @imn1 他只是想知道是否发生装卸货事件,这些情况载重数据不会变化啊
    nightwitch
        33
    nightwitch  
       2020-08-29 12:34:42 +08:00
    机器学习的铁律: 垃圾数据进,垃圾结果出。

    你应该从提高传感器的数据质量着手,比如使用双传感器冗余进行数据对照,换用其他传感器等等
    xuanbg
        34
    xuanbg  
       2020-08-29 13:01:27 +08:00
    先求移动平均值,这样应该就可以把抖动消除了。
    EdwardL
        35
    EdwardL  
       2020-08-29 14:04:49 +08:00
    建议给门上装个传感器,总不能开着门开车和关着门卸货吧?
    Zhepro
        36
    Zhepro  
       2020-08-29 14:08:26 +08:00
    这是传感器质量太差导致的吧
    clayyj1210
        37
    clayyj1210  
       2020-08-29 18:25:56 +08:00
    再装个传感器,检查车厢在一定时间内是否垂直了。可以根据车子型号来判断启动速度。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1144 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 18:15 · PVG 02:15 · LAX 10:15 · JFK 13:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.