请教下领导提出图像识别的这种思路是否可行? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
xiaolinjia
V2EX    Python

请教下领导提出图像识别的这种思路是否可行?

  •  1
     
  •   xiaolinjia 2020-01-08 08:58:26 +08:00 11647 次点击
    这是一个创建于 2108 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求是领导想做一个船只的目标跟踪,即不断截取摄像头的图片,然后用 TensorFlow 等,框选出当前船只在图片中的像素坐标,再调用摄像头的移动命令去使其移动以保持船只在摄像头中间。

    姑且当其识别的比较准的前提下,测试发现有一个问题。

    如果有其他船只从旁边经过(即和目标船只出现在同一个摄像头中)的时候,因为图像识别到两艘船,且坐标不同,这时,我就不知道要跟哪艘了。

    针对这个问题,领导跟我说,让我看看 opencv 的相似度计算。他思路是,把之前框选的船只图,保存下来(不是保留摄像头整个图片,而是仅框选的船只图片),然后再把这个船,和之后的摄像头的图片做相似度计算,再判断出是要跟着哪艘船?

    注:是用框选出的小图,和整张摄像头的大图进行相似度计算。

    我也不是很懂机器学习这块,只是懂 python 就让我上了。。所以我想请问下这种思路到底可行不,如果是比较困难的话,或者有大佬提出其他可行的想法?

    第 1 条附言    2020-01-08 20:03:47 +08:00

    首先感谢各位大佬的建议,然后因为个人这块知识比较薄弱,所以你们说的一些名词我还得看看资料不能及时一一回复实在抱歉。

    总结了下大家的发言,方法大概几种,1是特征匹配,2是目标跟踪。 就先说说今天一天测试下来的结果吧。 首先看了下opencv的模板匹配和特征匹配的内容,觉得模板匹配肯定是不行的。然后去试了下特征匹配,看概念觉得这个大概比较靠谱(可能这也是领导所说的那种意思),58l的老哥说的features2d应该也是属于这种意思吧 @qieqie 然后看了特征匹配的几种算法, 1是BFMatcher,试了效果很不好。 2是sift,用的 https://blog.csdn.net/zhuisui_woxin/article/details/84400439 这位仁兄的代码如下(注:如48l老哥说的那样是老版本的opencv才有)

    不知道下面老哥说的features2d是不是也属于这种。这种测试过的结果的话,效果也不是很好,看成功的例子都是缩放,翻转类的。(具体是真的可以还是不行,等我再测测)。

    接下来,就是2l老哥和下面一些老哥提到的目标跟踪算法和滤波这块,好像是属于同一种,因为我看deepsoft算法里也提到什么卡尔曼滤波和IOU那些玩意(如果说错了麻烦指正)。至于有些老哥说到的reid的问题,看了下deepsoft也能解决,不过一天时间有限,还是下班明天刚鬼再战了。

    还有一些老哥说的船号这些,想了下大概不是很行,因为如果真能获取到这些,那我都可以直接跟我公司的那套gis信息系统直接进行船只匹配了,可惜就是目前的图片并没有什么深度信息,还不能做到匹配。

    再次感谢各位老哥的热情回复。

    第 2 条附言    2020-01-08 20:04:25 +08:00

    上面的字数超了,代码贴不了,补上

    import numpy as np import cv2 from matplotlib import pyplot as plt MIN_MATCH_COUNT = 10 #设置最低特征点匹配数量为10 template = cv2.imread('template_adjust.jpg',0) target = cv2.imread('target.jpg',0) sift = cv2.xfeatures2d.SIFT_create() kp1, des1 = sift.detectAndCompute(template,None) kp2, des2 = sift.detectAndCompute(target,None) FLANN_INDEX_KDTREE = 0 index_params = dict(algorithm = FLANN_INDEX_KDTREE, trees = 5) search_params = dict(checks = 50) flann = cv2.FlannBasedMatcher(index_params, search_params) matches = flann.knnMatch(des1,des2,k=2) good = [] for m,n in matches: if m.distance < 0.7*n.distance: good.append(m) if len(good)>MIN_MATCH_COUNT: src_pts = np.float32([ kp1[m.queryIdx].pt for m in good ]).reshape(-1,1,2) dst_pts = np.float32([ kp2[m.trainIdx].pt for m in good ]).reshape(-1,1,2) M, mask = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC, 5.0) matchesMask = mask.ravel().tolist() h,w = template.shape pts = np.float32([ [0,0],[0,h-1],[w-1,h-1],[w-1,0] ]).reshape(-1,1,2) dst = cv2.perspectiveTransform(pts,M) cv2.polylines(target,[np.int32(dst)],True,0,2, cv2.LINE_AA) else: print( "Not enough matches are found - %d/%d" % (len(good),MIN_MATCH_COUNT)) matchesMask = None draw_params = dict(matchColor=(0,255,0), singlePointColor=None, matchesMask=matchesMask, flags=2) result = cv2.drawMatches(template,kp1,target,kp2,good,None,**draw_params) plt.imshow(result, 'gray') plt.show() 
    83 条回复    2020-12-09 08:23:49 +08:00
    KisekiRemi
        1
    KisekiRemi  
       2020-01-08 09:04:32 +08:00
    虽然回答不了你的问题,但有些羡慕你的领导。。。
    SorryChen
        2
    SorryChen  
       2020-01-08 09:06:31 +08:00   2
    完全可行,这其实是两个算法。一个 detection,用于检测出船只。一个 tracking,意思就是跟踪标号,找出当前帧中检测出的船只与之前帧中哪个船只是同一个,同一个的话就标同样的 ID,给你个示例算法,你去搜搜看:deepsort。
    luckyrayyy
        3
    luckyrayyy  
       2020-01-08 09:08:19 +08:00
    两个船不可能完全重叠吧,从旁边经过角度和距离肯定有差距。不过我有疑问的是“姑且当其识别的比较准的前提下”,真的能有这么高的准确度吗?大疆的无人机跟人就经常有跟丢了的情况。
    b821025551b
        4
    b821025551b  
       2020-01-08 09:08:20 +08:00
    然而两只船有可能长得完全一样
    xiaolinjia
        5
    xiaolinjia  
    OP
       2020-01-08 09:08:45 +08:00   1
    @SorryChen 这船只是移动的也可行吗?就是上一帧框选的船,在之后的帧里,什么方位啊,角度都不一样了,这也是可行的吗?
    aogu555
        6
    aogu555  
       2020-01-08 09:08:53 +08:00
    目标跟踪。如果画面里只有一艘船的时候,这一帧找到了,可以记录下船只在图片的位置,下一帧从这个位置附近扩大一点的区域开始找,并且那块区域优先级更高。只是提供一下想法,我没接触过这种领域。
    sadfQED2
        7
    sadfQED2  
       2020-01-08 09:09:03 +08:00 via Android
    理论上可行,但是门槛有点高。计算相似度那个可以复用你找船只的模型。你把最后全连接层的数据输出,然后求余弦相似度。
    psychoo
        8
    psychoo  
       2020-01-08 09:09:24 +08:00
    为什么不是前小图和后小图做相似度?
    xiaolinjia
        9
    xiaolinjia  
    OP
       2020-01-08 09:09:59 +08:00
    @luckyrayyy 现在只能说姑且还算是比较准吧,如果不够准,只是再继续训练了,。
    CallMeReznov
        10
    CallMeReznov  
       2020-01-08 09:11:16 +08:00 via Android   2
    哈哈哈
    之前这边有人还提出过用摄像头跟踪记录进入区域的船只的吃水线,如果入区和出区吃水线不一就报警

    为了防止那种流动非法采砂的。
    SorryChen
        11
    SorryChen  
       2020-01-08 09:11:25 +08:00
    @xiaolinjia 可以的,deepsort 之类的跟踪算法用的是深度特征进行的追踪,相对更加鲁棒。但是精度自然会随着你的场景复杂度增加而变差。
    xenme
        12
    xenme  
       2020-01-08 09:13:03 +08:00 via iPhone
    跟踪啊,两艘船不可能突然跳到另外一个很远的位置
    SorryChen
        13
    SorryChen  
       2020-01-08 09:14:01 +08:00
    还有就是实际上船只这种移动不是很快的物体,你既然知道了相机的移动参数,很容易就能算出一个预测出的大概的下一帧的目标区域,结合这些跟踪算法,精度一般不会太差了。
    Cola90
        14
    Cola90  
       2020-01-08 09:14:39 +08:00
    oahebky
        15
    oahebky  
       2020-01-08 09:17:10 +08:00
    wingyiu
        16
    wingyiu  
       2020-01-08 09:23:08 +08:00
    可行的,我搞过特定水印识别
    turi
        17
    turi  
       2020-01-08 09:25:44 +08:00
    感觉走 opencv 在走弯路
    opencv 是先弄一个模板出来,然后在图片里面搜索模板。移动摄像头后,换了角度,船的成像都发生变化,还匹配个锤子。

    TensorFlow 没玩过,训练船只估计调参数也得调试一阵子吧。
    hardyfish
        18
    hardyfish  
       2020-01-08 09:37:48 +08:00   1
    kalman 滤波 做跟踪预测用的
    wangxiaoaer
        19
    wangxiaoaer  
       2020-01-08 09:38:34 +08:00
    对图像识别不太了解,借这个楼问几个问题:

    1 基于 TF 的识别,是不是要很多样本数据:大量不同船只的不同角度照片?最终达到的效果是什么?给定一张图片,他可以判断这个是不是一艘船?那么给定两张照片,他能分别判断出是不是船只,但是能判断出这两张照片的区别吗?

    2 从照片找特征点,这个特征点需要人工参与吗?还是自动计算的?如果是自动计算,移动目标感觉很难,前一秒选出来的特征点在后一秒可能就因为角度问题看不到了。
    hyy1995
        20
    hyy1995  
       2020-01-08 09:43:22 +08:00
    都这么先进了吗,害怕。。。
    lscho
        21
    lscho  
       2020-01-08 09:44:58 +08:00
    感觉不需要用相似度识别

    1.船只移动速度很慢的。摄像头的移动频率不太低的话,几乎可以保证跟踪的船只处于中间位置。别的船只进入画面肯定是从边缘进入,这样只跟随最中间的那个就行了。

    2.因为船只航向几乎是固定的,不有大幅度变化,只要有两三帧图片就可以预测一下下次位置。多艘船不可能航向都一致。。。如果一致的话,也不用处理了。都在画面内。
    gzchen
        22
    gzchen  
       2020-01-08 09:45:34 +08:00
    reid
    gzchen
        23
    gzchen  
       2020-01-08 09:46:03 +08:00
    object detection,tracking,reid
    lingxi27
        24
    lingxi27  
       2020-01-08 09:46:10 +08:00
    正解就是目标跟踪
    Muniesa
        25
    Muniesa  
       2020-01-08 09:51:36 +08:00
    @wangxiaoaer
    1 需要很多样本训练,大量不同船只不同角度照片可以让训练效果更好,最终效果就是判断图片里的是不是船,判断两张照片区别单靠 tensorflow 应该做不到(也可能有方法但是我不知道)
    2 我知道的 SIFT 算法找特征点不需要人工参与,一定范围内的角度变化不会影响结果
    iseejun
        26
    iseejun  
       2020-01-08 09:59:56 +08:00
    我们的摄像头的移动侦测,人形侦测大约就是这样的
    i4oolish
        27
    i4oolish  
       2020-01-08 10:01:43 +08:00
    nb plus
    robot777
        28
    robot777  
       2020-01-08 10:03:24 +08:00
    思路是对的,但是我觉得未必可以同 tf 实时检测控制摄像机跟踪,用传统的 opencv 方法就可以达到嵌入式实时,难点在交叉船不跟错
    dick20cm
        29
    dick20cm  
       2020-01-08 10:04:04 +08:00
    目标检测+追踪+卡尔曼滤波
    imn1
        30
    imn1  
       2020-01-08 10:09:36 +08:00
    此题我第一反应不是商用,而是军用

    不要啥都图像识别,要结合实际,知识组合才是解决问题的方案
    1.运动方向,船只是基本没有后退的
    2.运动速度,实际也是你的机器移动 /转动的速度
    3.距离

    不过有个疑问,目标是摩托艇么?不会是中国海军的鱼雷快艇吧?
    phli
        31
    phli  
       2020-01-08 10:12:04 +08:00
    opencv 的相似度应该可以。前后两张照片相似度大的,为要跟着的那艘船。
    imn1
        32
    imn1  
       2020-01-08 10:18:21 +08:00
    @turi
    @wangxiaoaer
    opencv 不是只有模板匹配,还有特征匹配
    模板匹配需要样本较少,也可以一个样本直接匹配;但特征匹配需要样本较多,然后预训练出特征

    如果是现场采样,就是人工发现目标、锁定,机器跟踪这种,就恐怕来不及训练
    coderluan
        33
    coderluan  
       2020-01-08 10:23:14 +08:00
    我们做过类似的,球场上跟踪球员,然后两个球员一交叉就有类似的问题,然后首先 opencv 相似度这个完全不行啊,或者说准确度会很低,然后解决这个问题最好别指望用两站图能解决,而且需要参考之前没交叉之前的大量正确图像,比如通过光流法判断运行状态这种。
    haosamax
        34
    haosamax  
       2020-01-08 10:34:02 +08:00
    领导是导师的意思吗(忽略我低学历的渣渣)
    xiaoxingzhi
        35
    xiaoxingzhi  
       2020-01-08 10:35:35 +08:00
    完全可行,这个很入门,很初级,直接做吧
    iuhiyuh
        36
    iuhiyuh  
       2020-01-08 10:39:27 +08:00
    完全可行,追踪的方面建议试试单目标追踪的方法。ps:自动驾驶就这么弄的
    iyaozhen
        37
    iyaozhen  
       2020-01-08 10:41:48 +08:00 via Android
    肯定可行,实际也有了,比如江上面识别挖沙船
    wangxiaoaer
        38
    wangxiaoaer  
       2020-01-08 10:59:26 +08:00
    @Muniesa #25 多谢。
    tuzexiansheng
        39
    tuzexiansheng  
       2020-01-08 11:02:12 +08:00
    1.绝大多数船首或尾都有船号,可以作为判定依据。
    2.对监控区域部署多机位多角度同步采样。
    yuruizhe
        40
    yuruizhe  
       2020-01-08 11:02:20 +08:00
    @SorryChen deepsort 是卡曼跟踪吧,完全 tracking by detection,为了指标我还是建议走 SiamNet 系列。。。。
    而且 deepsort 啥时候是深度特征了??? Siam 系列才是深度特征吧。。。。
    upczww
        41
    upczww  
       2020-01-08 11:07:05 +08:00 via Android
    这是 ReID 问题
    cjq8z
        42
    cjq8z  
       2020-01-08 11:16:19 +08:00 via Android
    不懂机器学习,你搞这个就有很大问题。船在运动过程中,不同距离、不同时间、不同光线下,船的外观是不同,你直接模板匹配,匹配不成功的。
    举个例子:你在追踪船过程中,突然晴转多云或是下起小雨,船外观就变了。这个时候,你还咋匹配。

    总结:你需要机器学习,训练程序能够识别不同光线、距离、不同时间下、不同的船只,这一步能成功,其它的就不是问题了。
    xytdj
        43
    xytdj  
       2020-01-08 11:18:04 +08:00
    难道不是用船体上的船标船号国标做识别特征的吗?
    anteros
        44
    anteros  
       2020-01-08 11:34:04 +08:00   1
    要不,买个大疆做个 FPV,成本几千块钱一个,自动对焦,自动锁定目标,物理防抖
    skymei
        45
    skymei  
       2020-01-08 11:59:25 +08:00
    机器学习比较难的模型建立,模型训练那块,你要是懂的话就好做了。
    loading
        46
    loading  
       2020-01-08 12:05:11 +08:00 via Android
    建议和讯飞或者海康合作,他们似乎就是一行代码。
    cydysm
        47
    cydysm  
       2020-01-08 12:19:29 +08:00
    以前读过一个算法研究 Fast Tracking via Spatio-Temporal Context Learning
    cz5424
        48
    cz5424  
       2020-01-08 12:28:26 +08:00 via iPhone
    旧版本的 opencv 有特征匹配算法
    Chase2E
        49
    Chase2E  
       2020-01-08 13:18:41 +08:00
    detection + tracking,开源算法太多太多了。
    难点前些年不是在追踪上,而是降低运算复杂度上
    wqzjk393
        50
    wqzjk393  
       2020-01-08 14:13:31 +08:00
    @wangxiaoaer 是需要大量船舶图片做训练,但是其实对于这个问题差不多可以当作二分类来处理,也就简单多了。但是他这个摄像头没明白是什么情况啊,码头的摄像头跟踪船舶移动来做安防么?那种分辨率做精细识别感觉挺不靠谱的,靠 tf 识别两个不同的船挺麻烦的。
    第二个问题,图片的特征点一般不需要人工干预的吧。一般都是根据网络结构自己生成,例如一个深层网络,每一层是学习什么部位的特征这好像人为很难控制,但是你训练好魔性以后打印各层 featuremap 反而是能看出来反应了什么部位的特征。
    他这个问题,感觉图像识别+位移预测好一点,类似于飞机惯导的原理,根据当前位置和前几个位置,计算移动方向、速度、加速度,然后做追踪,这比单纯的图像识别然后校准镜头,然后再识别再校准要方便吧
    jingous
        51
    jingous  
       2020-01-08 14:21:25 +08:00
    工业上一般都不是拿深度学习做的吧?想在能保证实时性的基本都是相关滤波。如果用 tensorflow 的花,数据收集也需要你花费好长的时间
    jingous
        52
    jingous  
       2020-01-08 14:22:41 +08:00
    关键词是目标跟踪,可以多查点资料
    bububububiu
        53
    bububububiu  
       2020-01-08 14:51:31 +08:00
    你这个是 reid 的问题,行人重识别
    ReisenZ
        54
    ReisenZ  
       2020-01-08 15:28:17 +08:00
    不懂识别这一块, 但是楼主方案里会不会遇到多艘船在画面中遮挡问题? 比如其他船经过挡在了目标船和摄像头之间...
    nmecury
        55
    nmecury  
       2020-01-08 15:44:35 +08:00
    可行,没做过的门槛有点高。
    建议描述再详细一点,在服务器上做和在端上做完全是两个问题,以及摄像机机位、安装环境等等等等……
    服务器上深度学习的话,detection+tracking+reid。姑且认为船是刚性物体,没 /较少有可变化的部分,需要考虑环境 /光线变化、遮挡、船只转弯,两艘船很像等等问题。要是做一个非常简单的版本,只用 detection,不涉及跟踪、ReID 算法都行;甚至传统算法像多高斯之类的也行。
    具体问题具体分析。
    julyclyde
        56
    julyclyde  
       2020-01-08 15:48:45 +08:00
    做的好不好另说
    至少做出来是可能的
    wingspread
        57
    wingspread  
       2020-01-08 15:50:29 +08:00
    mark 一下。估计需要 N 多训练的船只数据。
    qieqie
        58
    qieqie  
       2020-01-08 15:54:57 +08:00   1
    你领导的意思大概是用 OpenCV 的 features2d,
    但实际上计算 IoU 的方法效果就足够好了,毕竟两艘船高度重合的可能性很低(那不撞了吗)
    qieqie
        59
    qieqie  
       2020-01-08 15:58:12 +08:00
    发现很多人不审题
    首先楼主说 detection 已经不是问题,其次同一个镜头内的 tracking 有 reid 什么事
    jasonding
        60
    jasonding  
       2020-01-08 16:36:44 +08:00
    理论上来说是可行的,人眼盯着一艘船,来了另一艘第一艘也不会丢,毕竟脑袋已经记住了第一艘船的外观(假设后一艘与前一艘外观不一致),位置坐标(两艘船不可能重叠),就算某一瞬间丢失了也可以根据速度预估位置并在附近找到。

    但是技术实现上是不是可行就不清楚了。
    theqiang
        61
    theqiang  
       2020-01-08 17:02:01 +08:00   2
    船运动比较规律,用卡尔曼滤波跟踪不就行了,隔几帧检测一下校准。
    aguesuka
        62
    aguesuka  
       2020-01-08 17:23:06 +08:00 via Android
    保存船的时候同时保存船的速度,通过速度和加速度来预测船的下一个位置。
    encro
        63
    encro  
       2020-01-08 17:48:36 +08:00
    1,将船只简化为线框(去彩色,找出边界,描绘成点),
    2,跟踪线框移动,保证线框在屏幕中间。
    clemente0620
        64
    clemente0620  
       2020-01-08 19:31:57 +08:00
    我正好在做这块,我可以提供直接的方案和工程,而且可以做到实时 你需要吗???
    clemente0620
        65
    clemente0620  
       2020-01-08 19:33:58 +08:00
    其实就是 主干网络选型+跟踪算法结合就行
    xiaolinjia
        66
    xiaolinjia  
    OP
       2020-01-08 20:06:41 +08:00
    @clemente0620 需要啊老哥。
    lpf0309
        67
    lpf0309  
       2020-01-08 20:49:21 +08:00 via Android
    我做了半学期跟你做的差不多,哈哈,有好的算法求分享学习一下。
    qza1212
        68
    qza1212  
       2020-01-08 21:19:16 +08:00   2
    你要是研究目标跟踪,那可以去读博了,参考下这个知乎回答 :
    计算机视觉中,目前有哪些经典的目标跟踪算法? - YaqiLYU 的回答 - 知乎
    https://www.zhihu.com/question/26493945/answer/156025576

    如果只是应用,opencv 3.0 后就已经引入了 tracking api 直接用就行
    https://docs.opencv.org/4.2.0/d9/df8/group__tracking.html
    https://www.learnopencv.com/object-tracking-using-opencv-cpp-python/
    loissiau
        69
    loissiau  
       2020-01-09 01:17:14 +08:00 via Android
    卫星跟踪船只?
    westonWei
        70
    westonWei  
       2020-01-09 01:30:22 +08:00
    不是很懂这些,不过从实际的情况考虑,同一艘船,拍摄的角度不同,会被认为不同的船。
    realpg
        71
    realpg  
    PRO
       2020-01-09 02:09:19 +08:00
    完全可行。我有个合作伙伴有类似应用
    zjsxwc
        72
    zjsxwc  
       2020-01-09 08:25:27 +08:00 via Android
    碰到两艘同款船时 就凉凉
    horkooo
        73
    horkooo  
       2020-01-09 08:34:53 +08:00 via Android
    这个需求是可以实现的。用 php+opencv+tensorflow,最后记得云台控制。你可以搜搜树莓派方面有大量 python 的实例。
    atonku
        74
    atonku  
       2020-01-09 08:38:20 +08:00
    虽不明,蛋觉厉
    realpg
        75
    realpg  
    PRO
       2020-01-09 10:31:09 +08:00
    @zjsxwc #72


    并不会。

    我这边合作伙伴有个比这还复杂的,识别车辆,没有预先训练和预置图形样本,即时训练识别。我没研究过他们是怎么开发的,团队没几个人,搞 python 的,实际应用效果我是见到了的,很好。

    进出公路港高峰期,摄像头视野内很少有只有一辆车的时候。他们算法很简单的能区分不同车辆,但是全程过摄像头被遮挡一部分的车辆可能没法记录好是哪一辆,但是能认出来是一辆货车,只是特征记录不足

    他们的系统在实时摄像头预览上会像 <POI>那样标出车辆轮廓和车辆内部 ID,识别出来是一辆车,但是特征不足的会记录一辆未知车。

    我不知道船这种东西在机器看的辨识度,货车而论,人眼看不出区别的同样涂装的大货车,在他们计算机识别预览图上看识别飞快且能准确区分。

    不过他们的采集点有减速带,车速快不了,而且是刚过车辆闸门以后,考虑船只移动速度,应该差不多。

    我们承建了这个系统的内网传输,每个远端节点,80Gbps 的高速 LAN 到总数据中心。在每个采集点附近的建筑内有一个小 GPU 集群,然后高速网络回数据中心,我估计是保存共享数据给其他节点用
    mahonejolla
        76
    mahonejolla  
       2020-01-09 11:23:57 +08:00
    @zjsxwc #72 看到你这个回复,我哈哈笑了。其他答案我还很是谨慎的表情。
    Chenamy2017
        77
    Chenamy2017  
       2020-01-09 13:13:20 +08:00
    目标跟踪,目标有自己的特征,比如航向、速度,根据这个去推算下一帧(时刻)目标可能会出现的位置。
    我们以前做雷达跟踪目标就是这样,没有目标的图像数据,只有特征数据,推算的轨迹精确度相当高。
    uxff
        78
    uxff  
       2020-01-09 13:14:31 +08:00
    碰到 2 艘一样的船,要根据船的运行轨迹,预判下一秒可能出现的位置来判断。
    人类肉眼也是这么跟踪的。

    船应该不会在采集周期(一般 1 秒以内)内瞬间飘逸让肉眼也没法跟踪 2 船的位置吧。
    xiaolinjia
        79
    xiaolinjia  
    OP
       2020-01-10 11:57:22 +08:00
    @qza1212 大佬,拜读了你发的第三篇,突然有种茅塞顿开的感觉。确实一开始的思路应该是错了,不应该每帧都靠图像识别,而是应该像文章所说的,第一帧识别,n 帧跟踪,再 n+1 帧识别(个人理解是用于校准多帧跟踪可能造成的偏差),再 n 帧跟踪,如此反复。这么说,我更应该去看看跟踪算法。你的这篇文章确切帮我解决了响应速度和准度的部分问题,但是多船的问题,这个能解决吗。
    qza1212
        80
    qza1212  
       2020-01-11 02:05:09 +08:00   2
    @xiaolinjia 不是大佬哈……只是想提供一点帮助

    不可能每帧都 detection,也不可能不做 detection
    detection 能辅助 trackingtracking 也能提高 detection 的准确度

    你领导给你的这个任务……都可以用来做硕博的毕业课题了,既然你这是工业应用,那自然应该找现成的用

    推荐一个流程:
    1. 对初始帧做 detection 拿到多个目标 boundingbox,或者用交互手段直接框
    2. 针对每个 boundingbox,tracking N 帧之后的位置,计算它们之间的相似度
    3. 相似度大于某个阈值 continue, 否则重新 detection

    detection 用的方法推荐用深度学习,直接拿别人的模型用,用传统的 cv 特征学习门槛比较高,还得自己训练
    至于模型,楼上有大佬提到了一些方法,……或者你康康 12306 的验证码识别能不能直接用
    https://github.com/zhaipro/easy12306
    https://github.com/testerSunshine/12306model
    detection 再考虑细一点的话,还有一个候选区域生成的问题,可以用滑动窗,mser 或者 selective search

    tracking 的方法 opencv 3.0 之后的版本里有很多,自己选一个就行

    计算相似度的方法,7#已经帮你想好了

    这个流程可以 handle 多目标情况
    clemente0620
        81
    clemente0620  
       2020-01-12 23:29:54 +08:00
    @xiaolinjia 怎么联系你
    xiaolinjia
        82
    xiaolinjia  
    OP
       2020-01-13 13:33:49 +08:00
    @clemente0620 vx 联系? xiluzi_program
    xmoiduts
        83
    xmoiduts  
       2020-12-09 08:23:49 +08:00 via Android
    @qza1212 #80 做完了硕士毕设论文才发现,我写得一切都在这个回答里了。(我怎么就没早点看到这贴)(不过我 detection 部分用的是传统方法,总之因此效果很惨)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     895 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 20:07 PVG 04:07 LAX 13:07 JFK 16:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86