【成功运行】CenterTrack代码复现及问题汇总

项目场景:

CenterTrack代码地址: CenterTrack

在 Tracking Objects as Points 上的拓展论文,模型将当前帧、前一帧以及从之前的跟踪结果中渲染的热图作为输入,并预测当前检测热图及其到前一帧中心的偏移量。主要用于跟踪层面,可以轻松拓展3D tracking、multi-category tracking、pose tracking 。

基础环境

win10 + RTX3060 + cuda11.0 + pytorch 1.7.1
其他模型所需包可以通过 cd 到项目文件夹中 运行指令 来下载:

pip install -r requirements.txt

官方安装步骤安装步骤
建议先安装好pytorch,将git clone下来的 DCNv2 代码放到 CenterTrack\src\lib\model\networks 下,成功编译后在进行其他包的安装,即步骤5。具体 DCNv2 安装可以看这篇 DCNv2踩坑记录


问题描述

RuntimeError: CUDA error: no kernel image is available for execution on the device

RuntimeError: CUDA error: no kernel image is available for execution on the device:

在这里插入图片描述


原因分析及解决方案:

还是cuda版本问题,由于30系显卡算力太高不匹配导致,有可能你的DCNv2已经顺利编译仍会出现这个问题,比较坑,可以尝试下载高版本cuda,或者切换一个torch版本(要匹配你的cuda)。


问题描述:

import DCN failed
这个比较容易解决没截图

原因分析及解决方案:

检查你的DCNv2是否缺东西,有时候从github上扒代码有的新更新的子模块下载不全,建议使用命令来克隆代码,或者手动下载。

git clone --recursive

如果你的 DCNv2 成功运行后出现这个问题, 检查 DCNv2 代码文件是否放在了正确的位置: CenterTrack\src\lib\model\networks,如果你是按照我 DCNv2踩坑记录 这篇文章下载的 新版的DCNv2,记得将 dcn_v2.py 从 DCN 文件夹中移出来,放到DCNv2文件夹下


问题描述

cv2.error: OpenCV(4.5.2) :-1: error: (-5:Bad argument) in function 'line '

Overload resolution failed:

  • Can’t parse ‘pt1’. Sequence item with index 0 has a wrong type
  • Can’t parse ‘pt1’. Sequence item with index 0 has a wrong type

原因分析及解决方案

这是由于安装了错误版本的 OpenCV。
我解决了pip install opencv-python==3.3.1.11(从 conda 环境中执行此操作)
可以参考这个连接 :link1


问题描述

在采用 --save_video 之后发现 result 文件夹下没有保存已生成的视频,并且报错

OpenCV: FFMPEG: tag 0x44495658/'XVID' is not supported with codec id 13 and format 'mp4 / MP4 (MPEG-4 Part 14)'在这里插入图片描述

原因分析

参考这个博主的文章参考文章 发现这是因为pip安装的opencv不支持H264格式的视频输出版权问题)。

解决方案

尝试使用输入视频的高度和宽度指定 --video_h 和 --video_w 参数,以模型下自带视频为例,输入命令即可。

python demo.py tracking,ddd --load_model ../models/nuScenes_3Dtracking.pth --dataset nuscenes --pre_hm --track_thresh 0.1 --demo ../videos/nuscenes_mini.mp4 --test_focal_length 633 --save_video --video_h 450 --video_w 800 

最后

附上代码讨论区链接: 问题讨论区。如果你碰到了其他问题,可以去问题讨论区碰碰运气看看有没有和你相似的问题并且有人解答了。
祝大家好运,一次成功,码运新隆!!!
惯例贴个图,运行demo.
在这里插入图片描述

补充:

预训练权重放到网盘里了,有需要的小伙伴自己去取吧!
百度网盘链接
提取码:h0uc

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
以下是禁忌搜索算法求解CVRP问题的Python代码实现。其中,CVRP问题是指车辆路径问题,即一组配送员需要在有限的时间内将货物从仓库送到多个客户处,并且每个客户有不同的需求量和时间窗口。算法的目标是在满足所有客户需求的前提下,最小化车辆的行驶路程。 ```python import numpy as np import random class CVRP: def __init__(self, n_customers, max_demand, max_distance, capacity, coordinates): self.n_customers = n_customers self.max_demand = max_demand self.max_distance = max_distance self.capacity = capacity self.coordinates = coordinates def distance(self, i, j): return np.linalg.norm(self.coordinates[i] - self.coordinates[j]) def demand(self): return np.random.randint(1, self.max_demand+1, self.n_customers) def solve(self, n_vehicles, max_iter, tabu_size): # Initialize variables best_solution = None best_cost = np.inf current_solution = [] current_cost = np.inf tabu_list = [] # Generate initial solution for i in range(n_vehicles): route = [0] capacity = self.capacity demand = self.demand() for j in range(1, self.n_customers+1): if capacity < demand[j-1]: route.append(0) route.append(j) capacity = self.capacity - demand[j-1] else: route.append(j) capacity -= demand[j-1] route.append(0) current_solution.append(route) # Main loop for i in range(max_iter): # Find the best move best_move = None best_delta = np.inf for k in range(n_vehicles): for i in range(1, len(current_solution[k])-1): for j in range(i+1, len(current_solution[k])-1): delta = self.distance(current_solution[k][i-1], current_solution[k][j]) + \ self.distance(current_solution[k][i], current_solution[k][j+1]) - \ self.distance(current_solution[k][i-1], current_solution[k][i]) - \ self.distance(current_solution[k][j], current_solution[k][j+1]) if delta < best_delta and (k, i, j) not in tabu_list: best_move = (k, i, j) best_delta = delta # Apply the best move if best_move is not None: k, i, j = best_move current_solution[k][i:j+1] = current_solution[k][i:j+1][::-1] current_cost += best_delta tabu_list.append(best_move) if len(tabu_list) > tabu_size: tabu_list.pop(0) # Update the best solution if current_cost < best_cost: best_solution = current_solution.copy() best_cost = current_cost # Print progress print(f"Iteration {i}: Best cost = {best_cost}") return best_solution, best_cost ``` 代码中的`CVRP`类包含了以下方法: - `__init__`: 初始化方法,接受以下参数: - `n_customers`: 客户数量。 - `max_demand`: 每个客户的最大需求量。 - `max_distance`: 车辆的最大行驶距离。 - `capacity`: 车辆的最大容量。 - `coordinates`: 每个客户的坐标。 - `distance`: 计算两个客户之间的距离。 - `demand`: 随机生成每个客户的需求量。 - `solve`: 求解CVRP问题的方法,接受以下参数: - `n_vehicles`: 车辆数量。 - `max_iter`: 最大迭代次数。 - `tabu_size`: 禁忌表的大小。 在`solve`方法中,我们首先生成了一个初始解,其中每个车辆依次访问每个客户,直到车辆的容量不足以满足下一个客户的需求为止。然后,我们开始迭代,每次迭代都尝试对当前解进行改进,直到达到最大迭代次数为止。在每次迭代中,我们尝试找到一个最佳移动,即将一个客户从一辆车移到另一辆车,或者将一个客户从一辆车移到同一辆车的不同位置。我们计算每个移动的成本,并选择成本最小的移动。如果找到了一个移动,则应用该移动,并将其添加到禁忌表中,以避免在接下来的几个迭代中再次尝试相同的移动。最后,我们更新最佳解和最佳成本,并打印出当前的进展情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值