【KAWAKO】deepface-在基于m1芯片的macbook上进行安装
目录
前言
deepface是一款“即插即用”的人脸识别库,其功能丰富,使用方便。
由于其依赖于tensorflow,而tensorflow似乎对m1芯片的macbook支持不是很好(我死活装不上),因此只依靠官方提供的流程无法顺利在m1芯片的macbok上进行安装。
本文提供一套基于miniforge的可以顺利安装的流程。
本机配置
2021款14英寸m1pro芯片macbookpro,Monterey12.3系统,16+512。
安装miniforge
在这里安装MacOS的miniforge安装包,然后进行安装
sh ./Miniforge3-MacOSX-arm64.sh

激活miniforge(后续的所有操作都在miniforge空间中进行)
source ~/miniforge3/bin/activate

tips
此时miniforge会“替换”anaconda,使用【conda env list】 会发现以前用anaconda创建的环境都不见了,不用紧张,使用如下命令即可将anaconda“替换”回来
source ~/opt/anaconda3/bin/activate

使用上述两个source命令可以在anaconda和miniforge中进行切换。(miniforge的命令好像和anaconda的命令相同,如【conda env list】、【conda create -n ...】、【conda activate ...】等命令在miniforge中都适用)
安装tensorflow
因为tensorflow对m1芯片的macbook支持得不好,所以苹果好像自己整了个tensorflow的库(不太确定)。
首先安装tensorflow依赖
conda install -c apple tensorflow-deps

然后安装tensorflow
python -m pip install tensorflow-macos
python -m pip install tensorflow-metal

安装deepface及相关库
直接进行三步走
pip install deepface --no-deps
pip install retina-face --no-deps
pip install pandas Flask gdown mtcnn Pillow

安装完之后可以运行如下代码,检查是否缺失相应库
from deepface import DeepFace as df
result = df.analyze("./img.jpg", actions=['gender'])

可能会提示缺失“fire”库,单独使用pip进行安装即可。(缺啥库就单独装啥库)
若提示缺少opencv,但环境中已经安装有opencv,可以按照这个issue里的方法进行尝试。(我没有出现这个问题就没有去验证该解决方法的可行性)
Reference
【KAWAKO】deepface-在基于m1芯片的macbook上进行安装的更多相关文章
- 在M1芯片的Mac系统上做.net core开发靠谱吗?
作为一个7年老.NET程序员,最近几年苹果慢慢接替微软,成为我心中最酷的科技公司. 为什么我会选择Mac os作为我的开发环境? 很多做.net的同学都使用Windows系统作为自己的开发环境,我其实 ...
- 关于MacBook Air/Pro 外接显示器时,显示器黑屏无反应的解决方法,顺便求助M1芯片的mac 外接显示器如何开启Hidpi
显示器黑屏,无反应,频繁闪烁的原因 先说结论,直接换type-c转DP的显示器连接线吧,如果显示器不支持dp接口,那自求多福吧. 事情是这样的,m1版本的macbook air 刚发布就马上入手了一台 ...
- 等了半年,m1芯片原生支持的.NET IDE出现了
m1芯片是苹果2020年发布的一款基于arm的桌面芯片,目前已经应用在MacBook Air .MacBook Pro.IMac.Ipad等设备上.可以说整个苹果生态圈都在去intel化. 今年年初跟 ...
- 苹果M1芯片各种不支持,但居然可以刷朋友圈!你会买单吗?
上个月和大家一起分享过,最新的苹果M1芯片上支持的各种开源软件.什么?还没读过?赶紧点这里:一文解读苹果 M1 芯片电脑上的开源软件. 现在已经过去了半个月,想必有不少的同学都已经入手了最新的苹果M1 ...
- 推荐一款M1芯片电脑快速搭建集群的虚拟机软件
虚拟机软件太多了,出名的莫过于VMware,VirutlaBox以及Parallels Desktop. 我们使用虚拟机软件一般有两种用途: 安装不同于宿主机系统的拥有用户界面的操作系统,比如Wind ...
- 别梦依稀咒逝川,Ruby二十八年前|M1芯片Mac os系统配置Ruby(3.0.0) on Rails(6.1.1)开发环境(2021最新攻略)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_188 在每个开发者心里,都会有一门"最好"的语言,在这个世界的某个深处,在一些矫矫不群的人们心中,这门语言的名 ...
- Servlet3.0学习总结——基于Servlet3.0的文件上传
Servlet3.0学习总结(三)——基于Servlet3.0的文件上传 在Servlet2.5中,我们要实现文件上传功能时,一般都需要借助第三方开源组件,例如Apache的commons-fileu ...
- Struts2文件上传(基于表单的文件上传)
•Commons-FileUpload组件 –Commons是Apache开放源代码组织的一个Java子项目,其中的FileUpload是用来处理HTTP文件上传的子项目 •Commons-Fil ...
- [原创]java WEB学习笔记49:文件上传基础,基于表单的文件上传,使用fileuoload 组件
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- 基于XMPP实现的Openfire的配置安装+Android客户端的实现
最近在整理一些这方面的资料,闲话少说,咱还是直奔主题吧 :) 一.基于xmpp实现的openfire的配置安装 1. 下载最新的openfire安装文件 官方下载站点: http://www.igni ...
随机推荐
- win 10玩魔兽争霸/黑边,不能全屏,闪退
1.win键+s键搜索注册表 打开 找到路径 计算机\HKEY_CURRENT_USER\SOFTWARE\Blizzard Entertainment\Warcraft III\Video 这里有两 ...
- springboot +mybatis (@autowried 注入mapper :爆红)
问题描述:Could not autowire. No beans of XXXXmapper' type found 问题相关页面: 解决方式一:@mapper 接口计入@Repository 解 ...
- Multipass,本地轻量级Linux体验!
Multipass介绍 Multipass 是由Ubuntu官方提供,在Linux,MacOS和Windows上快速生成 Ubuntu虚拟机 的工具.它提供了一个简单但功能强大的CLI,可让我们在本地 ...
- 解决windows installation failed! Error: 无法访问 Windows Installer 服务
这种错误,是因为没有开启winodws Installer这个服务导致的,在开始菜单搜索"服务",找到windows Installer 这个服务,右键--属性--把启动类型 选成 ...
- 【每日一题】【动态规划,递推式与公共子串的区别】2022年1月31日-NC92 最长公共子序列(二)
描述 给定两个字符串str1和str2,输出两个字符串的最长公共子序列.如果最长公共子序列为空,则返回"-1".目前给出的数据,仅仅会存在一个最长的公共子序列 方法1: impor ...
- intel Pin:动态二进制插桩的安装和使用,以及如何开发一个自己的Pintool
先贴几个你可能用得上的链接 intel Pin的官方介绍Pin: Pin 3.21 User Guide (intel.com) intel Pin的API文档Pin: API Reference ( ...
- <五>基于CAS操作的atomic原子类型
C++11多线程类库中提供了 include包含了很多原子类型 原子操作 若干汇编指令具有读-修改-写类型,也就是说它们访问存储器单元两次,第一次读原值,第二次写新值 假定运行在两个cpu上的两个内核 ...
- 周结之json补充、正则re模块、hashlib模块、logging模块
周结 目录 周结 json补充 正则表达式 re模块 第三方模块的下载 request模块 办公自动化openpyxl模块 hashlib加密模块 subprocess模块 logging日志模块 j ...
- Clickhouse表引擎探究-ReplacingMergeTree
作者:耿宏宇 1 表引擎简述 1.1 官方描述 MergeTree 系列的引擎被设计用于插入极大量的数据到一张表当中.数据可以以数据片段的形式一个接着一个的快速写入,数据片段在后台按照一定的规则进行合 ...
- vue后退页面刷新数据和缓存数据
我们在项目中经常使用this.$router.go(-1) 但是,有时我们需要把前一个页面的数据进行缓存,有时需要刷新数据,下面来记录一下怎么操作吧 首先:在vue项目中缓存页面我们能想到 keep ...