Jetson Nano构建带人脸检测的MediaPipe自定义whl执行构建命令报错
Jetson Nano 自定义构建MediaPipe whl包报错处理
操作背景
- 参照开源的aarch64架构MediaPipe Python打包指南开展构建工作,此前在树莓派4上按相同流程已成功生成可正常安装的whl包
- 开源仓库提供的预编译MediaPipe whl包未启用所需的人脸检测模块,无法满足使用需求,因此触发自定义编译流程
- 执行的构建命令为:
python3 setup.py gen_protos && python3 setup.py bdist_wheel - 构建过程出现编译报错,当前运行环境基础配置为Python 3.6.9,已安装的依赖清单如下:
- absl-py==0.10.0
- apt-clone==0.2.1
- apturl==0.5.2
- asn1crypto==0.24.0
- astunparse==1.6.3
- attrs==20.3.0
- beautifulsoup4==4.6.0
- blinker==1.4
- Brlapi==0.6.6
- cachetools==4.2.1
- certifi==2018.1.18
- chardet==3.0.4
- cryptography==2.1.4
- cupshelpers==1.0
- cycler==0.10.0
- Cython==0.29.23
- dataclasses==0.8
- decorator==4.1.2
- defer==1.0.6
- distro-info===0.18ubuntu0.18.04.1
- feedparser==5.2.1
- future==0.18.2
- futures==3.1.1
- gast==0.3.3
- google-auth==1.29.0
- google-auth-oauthlib==0.4.4
- google-pasta==0.2.0
- graphsurgeon==0.4.5
- grpcio==1.37.0
- h5py==2.10.0
- html5lib==0.999999999
- httplib2==0.9.2
- idna==2.6
- importlib-metadata==4.0.0
- Jetson.GPIO==2.0.16
- Keras-Applications==1.0.8
- Keras-Preprocessing==1.1.1
- keyring==10.6.0
- keyrings.alt==3.0
- kiwisolver==1.3.1
- language-selector==0.1
- launchpadlib==1.10.6
- lazr.restfulclient==0.13.5
- lazr.uri==1.0.3
- louis==3.5.0
- lxml==4.2.1
- macaroonbakery==1.1.3
- Mako==1.0.7
- Markdown==3.3.4
- MarkupSafe==1.0
- matplotlib==3.2.2
- mock==3.0.5
- numpy==1.16.1
- oauth==1.0.1
- oauthlib==3.1.0
- onboard==1.4.1
- opt-einsum==3.3.0
- PAM==0.4.2
- pandas==0.22.0
- pbr==5.5.1
- protobuf==3.16.0rc1
- pyasn1==0.4.8
- pyasn1-modules==0.2.8
- pybind11==2.6.2
- pycairo==1.16.2
- pycrypto==2.6.1
- pycups==1.9.73
- pygobject==3.26.1
- PyICU==1.9.8
- PyJWT==1.5.3
- pymacaroons==0.13.0
- PyNaCl==1.1.2
- pyparsing==2.4.7
- pyRFC3339==1.0
- python-apt==1.6.5+ubuntu0.3
- python-dateutil==2.6.1
- python-debian==0.1.32
- pytz==2018.3
- pyxattr==0.6.0
- pyxdg==0.25
- PyYAML==3.12
- requests==2.25.1
- requests-oauthlib==1.3.0
- requests-unixsocket==0.1.5
- rsa==4.7.2
- scipy==0.19.1
- SecretStorage==2.3.1
- simplejson==3.13.2
- six==1.15.0
- ssh-import-id==5.7
- system-service==0.3
- systemd-python==234
- tensorboard==2.5.0
- tensorboard-data-server==0.6.0
- tensorboard-plugin-wit==1.8.0
- tensorflow==2.3.1+nv20.12
- tensorflow-estimator==2.3.0
- tensorrt==7.1.3.0
- termcolor==1.1.0
- testresources==2.0.1
- typing-extensions==3.7.4.3
- ubuntu-drivers-common==0.0.0
- uff==0.6.9
- unity-scope-calculator==0.1
- unity-scope-chromiumbookmarks==0.1
- unity-scope-colourlovers==0.1
- unity-scope-devhelp==0.1
- unity-scope-firefoxbookmarks==0.1
- unity-scope-manpages==0.1
- unity-scope-openclipart==0.1
- unity-scope-texdoc==0.1
- unity-scope-tomboy==0.1
- unity-scope-virtualbox==0.1
- unity-scope-yelp==0.1
- unity-scope-zotero==0.1
- urllib3==1.22
- urwid==2.0.1
- wadllib==1.3.2
- webencodings==0.5
- Werkzeug==2.0.0rc4
- wrapt==1.12.1
- xkit==0.0.0
- youtube-dl==2018.3.14
- zipp==3.4.1
- zope.interface==4.3.2
常见报错根因与解决方式
- protobuf版本不兼容
当前环境安装的protobuf==3.16.0rc1为预发布候选版本,与MediaPipe构建脚本绑定的proto编译规则存在适配问题,是gen_protos阶段最常见的报错诱因。可替换为稳定版3.13.0后重试构建,对应执行命令:pip3 install protobuf==3.13.0 - numpy版本适配缺失
当前环境的numpy==1.16.1版本过旧,无法满足MediaPipe Python接口绑定的C++扩展编译要求,会在链接阶段触发符号未定义类报错。可升级到适配Python3.6的numpy 1.19.5版本,该版本可兼容Jetson预装的TensorFlow 2.3.1依赖链,对应执行命令:pip3 install numpy==1.19.5 - 编译内存不足
Jetson Nano默认硬件配置下执行MediaPipe全量编译,极易因内存耗尽触发进程被系统终止的无明确提示报错。需要提前配置至少8G的swap交换分区,同时将编译并行线程数限制为1,避免多线程并行编译瞬间占满内存资源 - 模块配置遗漏
自定义构建前需要确认打包配置中已开启人脸检测模块的编译开关,否则即使编译流程顺利完成,生成的whl包依然不会包含对应模块的调用接口
内容的提问来源于stack exchange,提问作者wyatt
相关产品推荐
相关产品推荐

