在 Jetson TX2 上升级 Protobuf TensorFlow
upgrading protobuf tensorflow on jetson tx2
提供尽可能多的背景 -
我有一个使用 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 分钟。
- 基于树莓pi的tensorflow lite量化ssd目标检测
- 在使用GPU支持编译Tensorflow时,会遇到CUDA_TOOLKIT_PATH未绑定变量
- 带有Protobuf序列化的C++Hazelcast:字符串不是UTF-8格式的
- Google protobuf 时间戳未声明标识符,在 Windows 上具有C++
- 如何阻止TensorFlow的多线程
- Tensorflow c++ api undefined reference to 'tflite::D efaultErrorReporter()'
- Tensorflow对象检测在Python和C++(OpenCV)之间有不同的结果
- 如何继承 Protobuf 生成的C++类
- 在 c++ 中使用 Tensorflow Lite 在边缘 TPU 上运行"mobilenet_ssd_v2_coco_quant_postprocess_edgetpu.tflite"时出现问题
- Tensorflow Hub in C++
- cmsis_compiler.h:在为 Arduino Due 编译 Arduino Tensorflow lite 库
- 分段错误(核心转储) - 使用 SavedModel 的 Tensorflow C++ API 进行推断
- 构建 TensorFlow r1.14 C++文件时缺少文件"tensorflow/core/framework/types.pb.h"
- FlatBuffers/Protobuf 中是否有支持任意 24 位有符号整数定义的可移植二进制序列化架构?
- 将 TensorFlow 链接到C++.Protobuf (/usr/local/include/google/prot
- 在 Jetson TX2 上升级 Protobuf TensorFlow
- 用第三方框架编译时Tensorflow Protobuf冲突
- 使用Opencv和Tensorflow c++时发生Protobuf版本冲突
- TensorFlow protobuf 版本不匹配
- 编译Tensorflow时出现Protobuf错误