Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 排序跟踪器-参数设置_Python_Sorting_Computer Vision_Yolo - Fatal编程技术网

Python 排序跟踪器-参数设置

Python 排序跟踪器-参数设置,python,sorting,computer-vision,yolo,Python,Sorting,Computer Vision,Yolo,我在足球视频中遇到了一些与排序跟踪器(卡尔曼滤波器和匈牙利算法的组合)以及YOLO v3相关的问题。 正如在主要论文中提到的,SORT在身份转换方面有很多困难(换句话说,即使跟踪的对象是相同的,ID也会发生变化),同样在没有遮挡的情况下!我想知道我是否可以(稍微)通过校准参数max_age(没有id分配的时间)和max_hits来缓解这个问题。这些参数如何影响最终跟踪?匈牙利语的借据参数呢?非常感谢 类排序(对象): 定义初始值(自我,最大年龄=8,最小点击次数=3): """ 设置排序的关键参

我在足球视频中遇到了一些与排序跟踪器(卡尔曼滤波器和匈牙利算法的组合)以及YOLO v3相关的问题。 正如在主要论文中提到的,SORT在身份转换方面有很多困难(换句话说,即使跟踪的对象是相同的,ID也会发生变化),同样在没有遮挡的情况下!我想知道我是否可以(稍微)通过校准参数max_age(没有id分配的时间)和max_hits来缓解这个问题。这些参数如何影响最终跟踪?匈牙利语的借据参数呢?非常感谢

类排序(对象):
定义初始值(自我,最大年龄=8,最小点击次数=3):
"""
设置排序的关键参数
"""
self.max\u age=max\u age
self.min\u hits=min\u hits
self.trackers=[]
self.frame\u计数=0
def更新(自我、数据):
"""
参数:
dets-格式为[[x,y,w,h,score],[x,y,w,h,score],…]的检测数数组
要求:即使检测为空,每个帧也必须调用一次此方法。
返回一个类似的数组,其中最后一列是对象ID。
注意:返回的对象数量可能与提供的检测数量不同。
"""
#防止“数组索引过多”错误
如果len(dets)==0:
返回np.empty((0,5))
self.frame_count+=1
#从现有跟踪器获取预测位置。
trks=np.zero((len(自跟踪器),5))
to_del=[]
ret=[]
对于t,枚举中的trk(trks):
pos=self.trackers[t].predict()[0]
trk[:]=[pos[0],pos[1],pos[2],pos[3],0]
如果(np.any(np.isnan(位置)):
附加到删除(t)
trks=np.ma.compress\u行(np.ma.masked\u无效(trks))
对于反向输入的t(至删除):
self.trackers.pop(t)
匹配的、不匹配的检测,不匹配的检测=将检测关联到跟踪程序(检测,检测)
#使用指定的检测更新匹配的跟踪器
对于t,枚举中的trk(自跟踪程序):
如果(t不在不匹配的测试中):
d=匹配的[np.其中(匹配的[:,1]==t)[0],0]
trk.update(数据[d,:][0])
#为不匹配的检测创建并初始化新的跟踪器
对于无可匹敌的我:
trk=KalmanBoxTracker(数据集[i,:])
self.trackers.append(trk)
i=len(自跟踪)
对于反向trk(自跟踪器):
d=trk.get_state()[0]
如果((自更新后的trk.time)<1)和(trk.hit\u streak>=self.min\u hits或self.frame\u count self.max\u age):
self.trackers.pop(一)
如果(len(ret)>0:

如果提高“最大年龄”,则可能会混淆场景中丢失/丢失的对象和进入最后可见区域的新对象。您应该使用此参数(可能会提高一点)并降低Kalman的IOU。这将创建更长、更稳健的跟踪,增加不同ID合并到一个跟踪中的风险。此调整对于跟踪器的性能至关重要,并且高度依赖数据。祝您好运:)

如果您提高了最大年龄,您可能会在丢失/丢失的场景对象和进入最后一次看到区域的新对象之间产生混淆。您应该使用此参数(可能会将其提高一点)并降低Kalman的IOU。这将创建更长、更健壮的跟踪,增加不同ID合并到一个跟踪中的风险。这种调整对于跟踪器的性能至关重要,并且高度依赖于数据。祝你好运:)