在 Jetson TX2 上升级 Protobuf TensorFlow

upgrading protobuf tensorflow on jetson tx2

本文关键字:Protobuf TensorFlow Jetson TX2      更新时间:2023-10-16

提供尽可能多的背景 -

我有一个使用 keras 训练的机器学习模型,我正在尝试嵌入到 nvidia jetson tx2 上。

我已经在那里设置了张量流(本身有点痛苦),但是当我运行脚本时,我遇到了 protobuf 的错误。

使用 TensorFlow 后端。 [libprotobuf fatal google/protobuf/stubs/common.cc:61]此程序需要协议缓冲区运行时库的版本 3.1.0,但安装的版本是 2.6.1。请更新您的图书馆。如果您自己编译了程序,请确保您的标头与链接时库来自同一版本的协议缓冲区。(在"external/protobuf/src/google/protobuf/any.pb.cc"中版本验证失败。 在抛出"google::p rotobuf::FatalException"实例后终止调用 what():此程序需要协议缓冲区运行时库的 3.1.0 版本,但安装的版本是 2.6.1。请更新您的图书馆。如果您自己编译了程序,请确保您的标头与链接时库来自同一版本的协议缓冲区。(在"external/protobuf/src/google/protobuf/any.pb.cc"中版本验证失败。 已中止(核心已转储)

所以 - 我一开始使用 pip 升级了 protobuf,但我认为冲突是因为 C++ 版本优先,Linux 中的版本仍然显示 2.6.1,但是在用 C++ 构建后,版本现在显示为 3.1.0,但我仍然收到同样的错误。

从 nvidia 开发论坛中,我收到了一些反馈

"/usr/lib/aarch64-linux-gnu/libprotobuf.so.9.0.1

这意味着 C/C++ 代码将找到版本 2.6。

pip install protobuf-3.1.0-py2.py3-none-any.whl

这意味着 Python 代码将找到 3.1 版。

您需要升级C++(系统)库以匹配版本 3.1。

我不认为 Ubuntu 上有默认软件包可以做到这一点,所以你要么通过构建自己的软件包并将其安装在系统软件包之上来破解它,要么你必须找到一个具有较新版本的 deb 软件包,该软件包仍将安装在您当前的系统上。

我真的一直在为此苦苦挣扎,因为我找不到升级系统文件的方法。任何帮助将不胜感激

谢谢

编辑:我也想知道这会不会与GTK发生冲突(我也在这里使用OpenCV,所以值得一提!

请检查您的libprotobuf-dev版本。

请尝试使用以下命令卸载PC上的现有版本:

apt-get remove --purge libprotobuf-dev

然后,构建新版本的libprotobuf-dev

apt-get install autoconf automake libtool curl make g++ unzip
wget https://github.com/google/protobuf/releases/download/v3.5.0/protobuf-cpp-3.5.0.tar.gz
tar -xvf protobuf-cpp-3.5.0.tar.gz
cd protobuf-3.5.0
./autogen.sh
./configure
make
make check
sudo make install
sudo ldconfig

祝你好运。

引用:

  • https://github.com/BVLC/caffe/issues/5711
  • https://github.com/google/protobuf/issues/2979

步骤 1: 首先,使用清除程序卸载 sudo apt-get remove --purge libprotobuf

第 2 步: 开始一个新的

$ wget https://raw.githubusercontent.com/jkjungavt/jetson_nano/master/install_protobuf-3.6.1.sh

sudo chmod +x install_protobuf-3.6.1.sh./install_protobuf-3.6.1.sh#this时间在我的板上需要 30 分钟。