野火鲁班猫(arrch64架构debian)从零实现用MobileFaceNet算法进行实时人脸识别(一)conda环境搭建

先安装miniconda

bash 复制代码
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh
chmod +x Miniconda3-latest-Linux-aarch64.sh
bash Miniconda3-latest-Linux-aarch64.sh
source ~/.bashrc
conda --version

按照MobileFaceNet的github官方指南,需要先配置以下依赖项:

  • tensorflow >= r1.5
  • opencv-python 3.x
  • python 3.x
  • scipy
  • sklearn
  • numpy
  • mxnet
  • pickle

先使用miniconda根据上面的需求搭建一个环境

bash 复制代码
conda create -n MobileFaceNet_env python=3.8
conda activate MobileFaceNet_env
conda install -c conda-forge opencv
conda install scipy
conda install scikit-learn
conda install numpy
pip install tensorflow
pip install mxnet

然后使用下面的代码来验证上面的依赖项是否都安装成功

bash 复制代码
python -c "
import tensorflow as tf; print('TensorFlow:', tf.__version__)
import cv2; print('OpenCV:', cv2.__version__)
import scipy; print('SciPy:', scipy.__version__)
import sklearn; print('scikit-learn:', sklearn.__version__)
import numpy; print('NumPy:', numpy.__version__)
import mxnet; print('MXNet:', mxnet.__version__)
import pickle; print('pickle is available')
"

安装tensorflow时遇到错误:

bash 复制代码
ERROR: Failed building wheel for h5py
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (h5py)

tensorflow中的h5py需要HDF5库来编译 通过安装libhdf5-dev解决

bash 复制代码
sudo apt-get install libhdf5-dev

然后检验依赖项是否都安装成功时,到mxnet时遇到错误:

bash 复制代码
OSError: libarmpl_lp64_mp.so: cannot open shared object file: No such file or directory

通过安装libopenblas-base libopenblas-dev解决问题:

bash 复制代码
sudo apt install libopenblas-base libopenblas-dev

又遇到问题:

bash 复制代码
AttributeError: module 'numpy' has no attribute 'bool'.
`np.bool` was a deprecated alias for the builtin `bool`. To avoid this error in existing code, use `bool` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.bool_` here.

通过降低numpy版本解决问题:

bash 复制代码
pip install numpy==1.23.5

又遇到问题:

bash 复制代码
OSError: /home/cat/miniconda3/envs/mobileFaceNet_env/lib/python3.8/site-packages/mxnet/libgfortran.so.5: version `GFORTRAN_10' not found (required by /home/cat/miniconda3/envs/mobileFaceNet_env/bin/../lib/libarmpl_lp64_mp.so)

这个问题主要是mxnet内置了一个简易的libgfortran.so.5库,但是不支持GFORTRAN_10,需要另安装一个完整 的libgfortran5库,默认总是会优先使用mxnet内置的,所以还需要屏蔽掉mxnet内置的libgfortran.so.5,解决方法:

bash 复制代码
conda install -c conda-forge libgfortran5
cd $CONDA_PREFIX/lib/python3.8/site-packages/mxnet
mv libgfortran.so.5 libgfortran.so.5.bak

又遇到问题:

bash 复制代码
free(): invalid pointer
已放弃

这个问题是因为在同一个 Conda 环境中同时加载 TensorFlow、OpenCV、SciPy、scikit-learn、NumPy 和 MXNet 后,Python 进程退出时多次调用了不同版本运行时(glibc、 Fortran 运行时、ARMPL、CUDA 等)的 free(),因而触发了"free(): invalid pointer"的崩溃。根本在于内存分配器/运行时库版本不一致。解决方法是安装Google-perftools 提供的 tcmalloc会接管全局的 malloc()/free(),保证整个进程内使用同一分配器。解决方法:

bash 复制代码
sudo apt-get install libtcmalloc-minimal4
export LD_PRELOAD="/usr/lib/aarch64-linux-gnu/libtcmalloc_minimal.so.4"

到此所有依赖检验通过,下一步clone mobileFaceNet库

bash 复制代码
git clone https://github.com/sirius-ai/MobileFaceNet_TF.git

运行MobileFaceNet中的程序时,遇到错误:

bash 复制代码
AttributeError: module 'tensorflow' has no attribute 'Session'

原因是安装了tensorflow v2,但mobileFaceNet使用的是tensorflow v1

解决方法是降级tensorflow的版本,但是在安装1.15版本的tensorflow时报错:

bash 复制代码
ERROR: Could not find a version that satisfies the requirement tensorflow==1.15 (from versions: 2.10.0rc0, 2.10.0rc1, 2.10.0rc2, 2.10.0rc3, 2.10.0, 2.10.1, 2.11.0rc0, 2.11.0rc1, 2.11.0rc2, 2.11.0, 2.11.1, 2.12.0rc0, 2.12.0rc1, 2.12.0, 2.12.1, 2.13.0rc0, 2.13.0rc1, 2.13.0rc2, 2.13.0, 2.13.1)
ERROR: No matching distribution found for tensorflow==1.15

大概意思就是没有同时支持python3.8环境和aarch64架构的tensorflow 1.x版本,除非将python降到3.7,但是又懒得重新搭一遍conda环境了,最后使用tensorflow v2的兼容模式来解决这个问题

python 复制代码
import tensorflow as tf

#将上面代码改成下面的

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

最后成功运行MobileFaceNet

相关推荐
zhaoshuzhaoshu12 小时前
人工智能(AI)发展史:详细里程碑
人工智能·职场和发展
Luke~12 小时前
阿里云计算巢已上架!3分钟部署 Loki AI 事故分析引擎,SRE 复盘时间直接砍掉 80%
人工智能·阿里云·云计算·loki·devops·aiops·sre
weixin_1562415757612 小时前
基于YOLOv8深度学习花卉识别系统摄像头实时图片文件夹多图片等另有其他的识别系统可二开
大数据·人工智能·python·深度学习·yolo
AI_Claude_code12 小时前
ZLibrary访问困境方案三:Web代理与轻量级转发服务的搭建与优化
爬虫·python·web安全·搜索引擎·网络安全·web3·httpx
QQ6765800812 小时前
AI赋能轨道交通智能巡检 轨道交通故障检测 轨道缺陷断裂检测 轨道裂纹识别 鱼尾板故障识别 轨道巡检缺陷数据集深度学习yolo第10303期
人工智能·深度学习·yolo·智能巡检·轨道交通故障检测·鱼尾板故障识别·轨道缺陷断裂检测
小陈工12 小时前
2026年4月7日技术资讯洞察:下一代数据库融合、AI基础设施竞赛与异步编程实战
开发语言·前端·数据库·人工智能·python
tq108612 小时前
组织的本质:从科层制到伴星系统的决断理论
人工智能
科技与数码12 小时前
互联网保险迎来新篇章,元保方锐分享行业发展前沿洞察
大数据·人工智能
时空无限12 小时前
ansible 由于不同主机 python 版本不同执行报错
python·ansible
ZhengEnCi12 小时前
P2E-Python字典操作完全指南-从增删改查到遍历嵌套的Python编程利器
python