Colab升级TensorFlow后YOLOv4+DeepSORT仅追踪初始帧求助
解决YOLOv4-DeepSORT在Colab的TF版本兼容与追踪异常问题
一、TensorFlow 2.3.0安装失败的解决办法
Colab官方源已移除TF2.3.0的包,可尝试两种路径:
- 旧版运行时尝试(若可用):点击Colab顶部「代码执行程序」→「更改运行时类型」,尝试选择Python 3.7环境,之后执行
!pip install tensorflow==2.3.0,部分旧版运行时仍支持该版本安装。 - 源码编译安装:步骤如下(耗时较长,需预留足够资源):
- 安装编译依赖:
!apt-get install gcc-7 g++-7 !update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70 --slave /usr/bin/g++ g++ /usr/bin/g++-7 - 克隆TF2.3.0源码并编译安装:
!git clone -b v2.3.0 https://github.com/tensorflow/tensorflow.git !cd tensorflow && ./configure !cd tensorflow && bazel build //tensorflow/tools/pip_package:build_pip_package !cd tensorflow && ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg !pip install /tmp/tensorflow_pkg/tensorflow-2.3.0*.whl
- 安装编译依赖:
二、高版本TF下仅首帧追踪的修复
升级到TF2.5+后出现的追踪断档,是因为原仓库代码适配旧版TF API,可做以下修改:
- 修改模型保存逻辑:打开
save_model.py,把tf.keras.models.save_model(model, output_model_path, save_format='h5')改成model.save(output_model_path, save_format='tf'),高版本TF对H5格式模型加载存在兼容问题。 - 适配TF2.x会话逻辑:在
object_tracker.py和deep_sort模块中,将所有tf.compat.v1.Session()相关代码替换为TF2.x的Eager Execution模式,或用tf.function装饰器包裹原会话内的计算逻辑。 - 检查张量维度与类型:确认特征提取部分的输入张量数据类型(如
tf.float32)、维度是否符合高版本TF要求,若类型不匹配,添加tf.cast(tensor, tf.float32)做转换。 - 重新导出模型:修改完
save_model.py后重新运行,导出适配高版本TF的模型,再执行object_tracker.py。
三、快速替代方案
若不想手动修改代码,可直接查看仓库Issues区,找其他用户分享的TF2.x兼容补丁,或切换到仓库中专门适配高版本TF的分支(若存在),拉取代码后直接运行。
内容的提问来源于stack exchange,提问作者tpootai
相关产品推荐
相关产品推荐

