Insightface换脸——安装到实现全过程
复导项目记录
备注:搬了一篇古早博客。当时还没有AI,出bug全靠CSDN和博客园。因此这篇博客大部分篇幅是配环境和调bug,主要作用是个人记录。
为什么还要两周就要考NOIP了有人还在摸鱼写两周前的复导代码啊
github项目
insightface官网
一、安装依赖库
这段是整个过程中耗时最长问题最多的,前前后后用半天时间,也翻了几百个网页才最终安装成功。
1.安装cv2
参考这篇博客
打开cmd,先升级pip:
python -m pip install --upgrade pip
再安装cv2:
pip install opencv-python
然而,这个命令过后实在是太慢了 而且容易出现ERROR
于是我翻到了cv2的镜像源:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
安装成功!
2.安装……insightface?
是的我本来以为安装库两步就结束了。但是,“这不过是个开场”。
参考这篇博客和这篇文章(这篇文章昨天还可以免费看,今天好像就要会员了),我发现要装很多依赖库。
3.安装numpy
这个我之前装过了,没有出太大问题
pip install numpy
当然也可以升级一下
pip install --upgrade numpy
4.安装mxnet
参考这篇博客
pip install mxnet
然后……
没有轮子……那怎么办呢?
我看到了这篇博客
于是到达了这个网站手动下载。
并同时安装了mxnet、numpy和torch的whl文件,安装了两个小时左右。
最后直接在cmd里面pip install whl文件,然后……numpy和torch的都安装失败了,不过mxnet的安装成功了。
最后照例使用镜像源安装:
pip install -i https://pypi.doubanio.com/simple/ mxnet-cu100
5.安装insightface
断断续续弄了小半天之后终于切入正题!
pip install insightface
这里没有用镜像源,直接装速度不算慢
但是还是因为网络问题报错了好几次,重复输入几遍就好了
然后……
“failed building wheel for insightface”
又是whl文件出了问题。
于是经过一番搜索与辗转之后,我找到了github和stackoverflow上的解决方法——
点击这个网站下载vs
安装时勾选Windows SDK和C++ x64/x86 build tools
然后顺利解决啦~撒花✿✿ヽ(°▽°)ノ✿
二、程序运行
1.代码部分
贴一下我跑的代码~由复旦大学钱振兴教授提供,在此表示衷心感谢!
import numpy as np
import os
import cv2
import insightface
from insightface.app import FaceAnalysis
def get_max_face(app,img):
faces=app.get(img)
if len(faces)<1:
return False
areas=[]
for face in faces:
bbox=face['bbox']
area=abs((bbox[0]-bbox[2])*(bbox[1]-bbox[3]))
areas.append(area)
index=np.argmax(areas)
return faces[index]
base_path=os.getcwd()
if __name__=='__main__':
app=FaceAnalysis(name='buffalo_l',root=base_path)
app.prepare(ctx_id=0,det_size=(640,640))
name=os.path.join(base_path,'models',"inswapper_128.onnx")
swapper=insightface.model_zoo.get_model(name,root=base_path)
img_src=cv2.imread("zty.jpg")
face_src=get_max_face(app,img_src)
img_tgt=cv2.imread("hxt.jpg")
face_tgt=get_max_face(app,img_tgt)
if face_tgt is None or face_src is None:
print("-------no face-------")
else:
res=img_tgt.copy()
res=swapper.get(res,face_tgt,face_src,paste_back=True)
cv2.imwrite("out.jpg",res)
cv2.imshow("out",res)
cv2.waitKev(0)
2.buffalo_l模型安装
调了一些bug之后程序跑起来了,然后……
看起来因为没有仔细阅读官方文档,忘记装buffalo_l模型了,于是程序开始自动帮我下载。推测一大串报错可能是因为下载网络错误导致的。因此我决定沿着前两行的下载地址进行手动下载。
自动跳转到了这个网页开始下载。下载了两三个小时后终于下下来了。(然后突然想到其实可以找国内资源的,哭qaq)
3.inswapper128模型安装
再跑了一遍程序,然后……
还忘记装inswapper128模型了。参考这篇博客,这是他的官方网站。
但是我不想再挂一个梯子龟速下载了。于是我找到了这个。快速又高效!
4.结果展示
备注:这一部分涉及个人隐私。原文为私密发表,本文中删去。
三、结语
本项目是复导officehour的一个教学程序。在此再次感谢fdu与shs提供的资源!
项目的构建大部分参考了网络资源,实际上看过的博客文章远比本篇博客中的多,上文列举了大部分有帮助的博客。
最后,
DISCUSSION
Comments
Sign in with GitHub to join the conversation.