在使用DeepSort做跟踪的时候,遇到了下面这个问题
matrix contains invalid numeric entries
出问题的代码如下:
def min_cost_matching(
distance_metric, max_distance, tracks, detections, track_indices=None,
detection_indices=None):
if track_indices is None:
track_indices = np.arange(len(tracks))
if detection_indices is None:
detection_indices = np.arange(len(detections))
if len(detection_indices) == 0 or len(track_indices) == 0:
return [], track_indices, detection_indices # Nothing to match.
for det in detections:
print(det.tlwh,det.confidence)
cost_matrix = distance_metric(
tracks, detections, track_indices, detection_indices)
print("distance_metric",cost_matrix)
cost_matrix[cost_matrix > max_distance] = max_distance + 1e-5
cost_matrix=np.nan_to_num(cost_matrix)
row_indices, col_indices = linear_assignment(cost_matrix)
matches, unmatched_tracks, unmatched_detections = [], [], []
for col, detection_idx in enumerate(detection_indices):
if col not in col_indices:
unmatched_detections.append(detection_idx)
for row, track_idx in enumerate(track_indices):
if row not in row_indices:
unmatched_tracks.append(track_idx)
for row, col in zip(row_indices, col_indices):
track_idx = track_indices[row]
detection_idx = detection_indices[col]
if cost_matrix[row, col] > max_distance:
unmatched_tracks.append(track_idx)
unmatched_detections.append(detection_idx)
else:
matches.append((track_idx, detection_idx))
return matches, unmatched_tracks, unmatched_detections
由于代码来源开源代码,没有太多的注释,所以只能一步步的分析。
通过分析发现cost_matrix里包含nan
。
经过初步分心是cost_matrix包含nan造成的,于是,将nan转为0,所以在代码上面加上,如下代码:
cost_matrix=np.nan_to_num(cost_matrix)
然而,为啥为nan呢?我们进一步查找,继续打印log分析,打印出detections
for det in detections:
print(det.tlwh,det.confidence)
发现,凡是出现nan的时候,两个检测框几乎重叠。所以,我们就锁定了bug的位置。在distance_metric中
cost_matrix = distance_metric(
tracks, detections, track_indices, detection_indices)
这个函数是上层传入的,在tracker.py可以找到,如下图:
然后,我们就可以锁定iou_matching.iou_cost,继续打印log,发现iou(bbox, candidates)为nan。
所以就锁定iou函数有问题。
然后,进入iou继续找bug。发现area_intersection = wh.prod(axis=1)
,当出现nan的时候,area_intersection 为inf。
同时,打印wh,发现是整数数组,猜想应该溢出了。
将数组转为float类型。代码如下:
wh =np.maximum(0., br - tl).astype(float)
area_intersection = wh.prod(axis=1)
area_bbox = bbox[2:].astype(float).prod()
area_candidates = candidates[:, 2:].astype(float).prod(axis=1)
return area_intersection / (area_bbox + area_candidates - area_intersection)
【第61篇】AlexNet:CNN开山之作
【第1篇】VGG
【第2篇】GooLeNet
【第3篇】Inception V2
【第4篇】Inception V3
【第62篇】Inception-v4
【第5篇】ResNet
【第10篇】DenseNet
【第16篇】Swin Transformer
【第49篇】Swin Transformer V2:扩展容量和分辨率
【第21篇】MAE(屏蔽自编码器是可扩展的视觉学习器)
【第22篇】CoAtNet:将卷积和注意力结合到所有数据大小上
【第25篇】力压Tramsformer,ConvNeXt成了CNN的希望
【第64篇】ConvNeXt V2论文翻译:ConvNeXt V2与MAE激情碰撞
【第26篇】MobileNets:用于移动视觉应用的高效卷积神经网络
【第27篇】MobileNetV2:倒置残差和线性瓶颈
【第28篇】搜索 MobileNetV3
【第29篇】MPViT:用于密集预测的多路径视觉转换器
【第30篇】Vision Transformer
【第32篇】SWA:平均权重导致更广泛的最优和更好的泛化
【第34篇】 EfficientNetV2:更快、更小、更强——论文翻译
【第35篇】MOBILEVIT:轻量、通用和适用移动设备的Vision Transformer
【第37篇】EdgeViTs: 在移动设备上使用Vision Transformers 的轻量级 CNN
【第38篇】MixConv:混合深度卷积核
【第39篇】RepLKNet将内核扩展到 31x31:重新审视 CNN 中的大型内核设计
【第40篇】TransFG:用于细粒度识别的 Transformer 架构
【第41篇】ConvMAE:Masked Convolution 遇到 Masked Autoencoders
【第42篇】MicroNet:以极低的 FLOP 实现图像识别
【第46篇】RepVGG :让卷积再次伟大
【第48篇】MaxViT:多轴视觉转换器
【第53篇】MAFormer: 基于多尺度注意融合的变压器网络视觉识别
【第56篇】GhostNet:廉价操作得到更多的特征
【第57篇】RepGhost:一个通过重新参数化实现硬件高效的Ghost模块
【第58篇】DEiT:通过注意力训练数据高效的图像transformer &蒸馏
【第59篇】MetaFormer实际上是你所需要的视觉
【第60篇】RegNet:设计网络设计空间
【第73篇】InternImage:探索具有可变形卷积的大规模视觉基础模型
【第74篇】 FasterNet:CVPR2023年最新的网络,基于部分卷积PConv,性能远超MobileNet,MobileVit
【第23篇】NAM:基于标准化的注意力模块
【第6篇】SSD论文翻译和代码汇总
【第7篇】CenterNet
【第8篇】M2Det
【第9篇】YOLOX
【第11篇】微软发布的Dynamic Head,创造COCO新记录:60.6AP
【第12篇】Sparse R-CNN: End-to-End Object Detection with Learnable Proposals
【第13篇】CenterNet2论文解析,COCO成绩最高56.4mAP
【第14篇】UMOP
【第15篇】CBNetV2
【第19篇 】SE-SSD论文翻译
【第24篇】YOLOR:多任务的统一网络
【第31篇】探索普通视觉Transformer Backbones用于物体检测
【第36篇】CenterNet++ 用于对象检测
【第45篇】YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors
【第66篇】行人属性识别研究综述(一)
【第66篇】行人属性识别研究综述(二)
【第47篇】BoT-SORT:强大的关联多行人跟踪
【第65篇】SMILEtrack:基于相似度学习的多目标跟踪
【第70篇】DeepSort:论文翻译
【第72篇】深度学习在视频多目标跟踪中的应用综述
【第20篇】像人类一样阅读:自主、双向和迭代语言 场景文本识别建模
【第44篇】DBNet:具有可微分二值化的实时场景文本检测
【第33篇】SwinIR
【第52篇】RetinexNet: Deep Retinex Decomposition for Low-Light Enhancement
【第50篇】迈向快速、灵活、稳健的微光图像增强
【第17篇】TextCNN
【第18篇】Bert论文翻译
【第43篇】CLIP:从自然语言监督中学习可迁移的视觉模型
【第54篇】知识蒸馏:Distilling the Knowledge in a Neural Network
【第55篇】剪枝算法:通过网络瘦身学习高效卷积网络
【第71篇】DepGraph:适用任何结构的剪枝
【第51篇】用于交通预测的时空交互动态图卷积网络