deepsort问题解决记录贴

在复现代码时出现问题如下:

问题一:QObject::moveToThread: Current thread (0x558247080a00) is not the object's thread (0x558247900e40).Cannot move to target thread (0x558247080a00)

QObject::moveToThread: Current thread (0x558247080a00) is not the object's thread (0x558247900e40).
Cannot move to target thread (0x558247080a00)

原因:opencv安装版本太高,需要降低版本,卸载你原来的版本,重新安装

pip install opencv-contrib-python==4.1.2.30 -i https://pypi.tuna.tsinghua.edu.cn/simple

问题二:TypeError: tuple indices must be integers or slices, not tuple

Processing frame 00002
Traceback (most recent call last):
  File "deep_sort_app.py", line 327, in <module>
    args.max_cosine_distance, args.nn_budget, args.display)
  File "deep_sort_app.py", line 270, in run
    visualizer.run(frame_callback)
  File "/home/milk/deep_sort/application_util/visualization.py", line 100, in run
    self.viewer.run(lambda: self._update_fun(frame_callback))
  File "/home/milk/deep_sort/application_util/image_viewer.py", line 305, in run
    self._terminate = not self._user_fun()
  File "/home/milk/deep_sort/application_util/visualization.py", line 100, in <lambda>
    self.viewer.run(lambda: self._update_fun(frame_callback))
  File "/home/milk/deep_sort/application_util/visualization.py", line 105, in _update_fun
    frame_callback(self, self.frame_idx)
  File "deep_sort_app.py", line 242, in frame_callback
    tracker.update(detections)
  File "/home/milk/deep_sort/deep_sort/tracker.py", line 69, in update
    self._match(detections)
  File "/home/milk/deep_sort/deep_sort/tracker.py", line 127, in _match
    detections, iou_track_candidates, unmatched_detections)
  File "/home/milk/deep_sort/deep_sort/linear_assignment.py", line 63, in min_cost_matching
    if col not in indices[:, 1]:
TypeError: tuple indices must be integers or slices, not tuple

这个出现原因相当奇怪,代码一模一样,就是突然出现的,网上看到的基本都是修改代码段,很明显问题应该不是这里,重新建立文件夹,运行源代码,又可以运行了,把不能运行的代码复制过来之后也可以运行,环境也一样,问题出现在哪?

怀疑:可能是回调文件出现问题,去看def frame_callback(vis, frame_idx)了,发现问题再回来继续写

debug之后发现不是代码的问题,是引入的库包不行,降低scikit-learn版本,卸载原来的版本,重新安装

pip install scikit-learn==0.19.2 

很好,出现新的问题:

问题三:

Processing frame 00001
Processing frame 00002
Processing frame 00003
Processing frame 00004
Traceback (most recent call last):
  File "deep_sort_app.py", line 327, in <module>
    args.max_cosine_distance, args.nn_budget, args.display)
  File "deep_sort_app.py", line 270, in run
    visualizer.run(frame_callback)
  File "/home/milk/deep_sort/application_util/visualization.py", line 100, in run
    self.viewer.run(lambda: self._update_fun(frame_callback))
  File "/home/milk/deep_sort/application_util/image_viewer.py", line 305, in run
    self._terminate = not self._user_fun()
  File "/home/milk/deep_sort/application_util/visualization.py", line 100, in <lambda>
    self.viewer.run(lambda: self._update_fun(frame_callback))
  File "/home/milk/deep_sort/application_util/visualization.py", line 105, in _update_fun
    frame_callback(self, self.frame_idx)
  File "deep_sort_app.py", line 242, in frame_callback
    tracker.update(detections)
  File "/home/milk/deep_sort/deep_sort/tracker.py", line 81, in update
    self._match(detections)
  File "/home/milk/deep_sort/deep_sort/tracker.py", line 127, in _match
    self.tracks, detections, confirmed_tracks)
  File "/home/milk/deep_sort/deep_sort/linear_assignment.py", line 132, in matching_cascade
    k for k in track_indices
  File "/home/milk/deep_sort/deep_sort/linear_assignment.py", line 133, in <listcomp>
    if tracks[k].time_since_update == 1 + level
NameError: name 'tracks' is not defined

博主疯狂了,他决定不再改了,就这样吧

### DeepSort 常见问题解决方法 #### 环境配置问题 新手在初次尝试运行DeepSort项目时可能会遇到环境配置方面的问题。由于这些项目通常依赖于特定版本的Python以及各种深度学习库,因此确保安装了正确的软件包至关重要[^3]。 对于基于PyTorch构建的应用程序来说,建议先创建一个新的虚拟环境来隔离不同项目的依赖关系。接着按照官方文档中的指示逐步安装所需的库文件。如果遇到了CUDA或cuDNN兼容性的错误提示,则需确认本地GPU驱动已更新至最新版,并且所选的PyTorch版本能够支持当前硬件架构。 ```bash conda create -n deepsort_env python=3.8 conda activate deepsort_env pip install torch torchvision torchaudio cudatoolkit=11.3 -c pytorch ``` #### 数据集加载失败 当试图读取自定义数据集用于训练模型或是执行推理操作时,有时会因为路径设置不当而导致无法正常访问图像资源。此时应仔细核对`dataset.py`或其他负责处理输入数据模块内的参数设定是否准确无误;另外还需注意检查图片格式是否符合预期标准(如JPEG/PNG),并保证所有样本均位于指定目录下以便被正确索引到。 针对某些特殊情况下可能存在的编码差异问题,可以在脚本开头加入如下语句以强制统一字符集: ```python import sys reload(sys) sys.setdefaultencoding('utf-8') ``` 不过需要注意的是,在Python 3.x系列中默认已经采用了UTF-8作为内部字符串表示方式,上述做法仅适用于遗留系统的迁移场景。 #### 跟踪效果不佳 即使成功部署好了整个系统框架之后,仍有可能发现实际应用过程中目标物体之间的关联匹配不够理想——即所谓的ID切换现象频繁发生。这主要是由两方面因素共同作用的结果:一方面可能是特征提取网络未能充分捕捉到个体间的细微差别从而影响到了相似度计算环节的表现;另一方面则是运动预测机制缺乏足够的鲁棒性难以应对复杂多变的实际路况条件。 为了改善这种情况,可以从以下几个角度入手优化现有算法性能: - **调整超参**:适当放宽IOU阈值范围允许更多候选框进入下一阶段评估流程; - **增强表征能力**:引入更加先进的预训练权重初始化方案提升卷积层的感受野大小进而获取更具区分力的人脸/车辆描述子向量; - **改进状态估计器**:采用卡尔曼滤波替代线性插值法完成轨迹平滑化处理过程减少因瞬态噪声干扰造成的漂移误差累积效应。 #### 多卡分布式训练同步障碍 随着实验规模逐渐扩大,单机单显模式下的运算效率往往成为制约进一步发展的瓶颈所在。为此不少研究者会选择借助集群平台开展大规模并行计算作业。然而在此期间难免会出现节点间通信延迟过高甚至完全断开连接的情况致使整体进度受阻。 对此类状况的有效预防措施包括但不限于提前规划好任务分配策略尽量均衡各成员的工作负载比例防止局部热点形成;定期备份重要成果资料以防意外丢失造成不可挽回损失;最后也是最重要的一点就是密切关注日志输出信息一旦察觉异常波动迹象立即采取相应补救手段加以遏制以免事态恶化蔓延开来。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值