Code Former安装及使用
Code Former是南洋理工大学和商汤科技联合研究中心联合开发一款AI人脸修复算法,通过该算法,可以对已经模糊的图片进行人脸修复,找回斑驳的记忆
由于网上对于Code Former的封装,全都是要花钱,或者需要其他什么曲折的方式,才能勉强使用到,所以为了能愉快的修复照片,决定自己整理一下开源项目的搭建使用方法,方便更多需要修复照片的小伙伴
1.整体流程介绍
Code Former项目已经在Github开源了,直接访问github项目地址,即可看到Readme文件中,对项目构建、使用的简介。
Code Former整体流程大概可分为
- 安装Python
- 安装Git
- 安装PyTorch
- clone源码
- 安装源码所需依赖库
- 编译源码
- 安装人脸修复AI模型
- 使用
下面对这几个具体流程进行详细说明
2.安装Python
Python安装有两个选择
- 去官网下载Python
- 下载Anaconda
2.1官网下载Python
直接百度搜索Python官网,进入官网点击下载即可,不过需要注意,不要下载最新版,Code Former要求Python3.8的版本高版本或低版本可能会出现一些依赖问题,建议直接下载Python3.8版本,官网链接。
2.2下载Anaconda(单独安装Python的,可以跳过此步骤)
Anaconda是Python的一个发行版,相比Python,Anaconda多了conda、numpy等的一大堆便于使用的工具包,且可以创建不同版本Python的环境,相对来说更好使用,官网链接。
下面介绍Anaconda安装步骤
2.2.1安装
Anaconda安装,就根据安装程序提示,一直下一步就好了
2.2.2创建python环境
Anaconda安装好后,打开客户端,点击environments
,点击底部的create
按钮,创建一个环境,环境名称自定义,推荐codeformer
,环境的python版本,需要注意一下,要选3.8.x
的版本,否则后面安装依赖的时候会报错。
环境创建完成后,先放旁边,等一会使用。
3.安装Git
Git是一个版本管理工具,用于clone项目源码,直接到git官网下载一个git安装即可,官网链接。
如果没有git,可以直接在github下载源码压缩包,也是可以使用的,具体使用下面会介绍。
4.安装PyTorch
pytorch是一个开源的Python机器学习库,可以用于支持code former进行机器学习,安装方法如下
4.1进入Pytorch官网
访问:https://pytorch.org/ 网站,并点击Get Started
4.2选择合适的版本类型
在START LOCALLY
根据自己电脑配置及安装的软件,选择合适信息即可,这里Computer Platform
要看自己电脑显卡适不适合,如果电脑显卡是NVIDIA的,且支持CUDA,则选择对应版本的CUDA即可,如果不是NVIDIA显卡,则选择CPU,我的电脑没有显卡,所以我选择CPU
如果不确定自己的显卡支不支持CUDA,可以直接选择CPU,一般修复照片用不了太大的硬件需求,CPU完全够了
选择完毕之后,将Run this Command
的命令行复制一下,到刚刚安装好的Anaconda的codeformer
环境中执行一下,等待安装完成即可
5.下载Code Former源码
上面Pytorch安装完成后,就需要进入github下载源码了。下载源码有两种方式
- git clone
- 直接下载zip压缩包(适用于没有安装git的情况)
5.1git clone方式
进入github项目地址,点击Code
按钮,点击Local
,再选择Https
,复制下方的https链接
然后回到自己电脑,找一个文件夹,用于存放项目源码。在这个文件夹中鼠标右键点击一下,选择Git Bash Here
打开git命令行窗口。
在命令行窗口中输入以下命令并执行,等待项目下载完成即可。
git clone https://github.com/sczhou/CodeFormer.git
5.2直接下载zip压缩包
访问git项目地址,点击Code
按钮,再点击Download ZIP
,等待源码下载完成即可,下载完成后,将zip压缩包找一个地方解压出来就行。
6.安装其他相关依赖
以上环境及源码都准备完成后,就需要为项目安装其他相关依赖了,分别为:
- 安装项目所需依赖库
- 编译codeformer
- 下载学习模型
6.1安装项目所需依赖库
在源码文件夹下,打开anaconda的codeformer环境cmd窗口,执行以下命令,安装项目所需依赖库(如果是单独安装了python的话,直接在源码文件夹打开cmd窗口即可)
pip3 install -r requirements.txt
如果命令执行过程中报错,可以打开requirements.txt
文件,使用pip3 install 具体依赖库
的方式,手动安装所需的依赖库
例如,requirements.txt文件第一行是addict
依赖,则执行pip3 install addict
即可手动安装好addict依赖库
6.2编译codeformer
上一步执行成功后,再执行以下命令,编译codeformer
python basicsr/setup.py develop
6.3下载学习模型
编译步骤成功后,还需要下载两个模型,才可以使用codeformer的人像修复功能,执行以下三个命令,分别下载几个模型
注意:这三条命令需要一条一条执行,不要一起执行
python scripts/download_pretrained_models.py facelib
python scripts/download_pretrained_models.py dlib
python scripts/download_pretrained_models.py CodeFormer
7.使用
经过以上繁琐流程之后,code former就算正式搭建完成了,下面就可以愉快使用了。不过codeformer自己没有gui交互页面,所以目前只能通过命令行的形式来进行使用,如果对codeformer图形化交互有兴趣的同学,可以自己研究一下。
7.1单独图片人脸修复
执行一下命令,即可对只有一个人脸的图片进行修复
python inserface_codeformer.py -w 0.2 --has_aligned --input_path [image folder]|[image path]
命令说明:
- -w参数:-w是一个权重参数,取值范围为[0,1],取值越小,则图像修复的质量更高,即人脸修复效果最好,取值越大,则会产生保真度更高的图片,就是人脸修复不那么好,但是图片整体效果会好点(实测,建议将w的参数值写成0,这样人脸修复效果最好,参数值写大了,修复结果反倒并不理想)
- –input_path参数:这个就是要修复的图片路径了,可以选单独图片路径,也可以选一个有图片的文件夹,它会将文件夹中,所有的图片都进行修复
修复效果大概就像下图这样↓(实测,修复效果真的很棒)
7.2一张图片多张人脸修复
如果一个照片里面有多个人像,则可以执行以下命令进行修复
python inference_codeformer.py -w 0.7 --input_path [image folder]|[image path]
这个命令中的参数与7.1中的参数含义一致,可以按照自己需求进行设置
以上就是code former从搭建到使用的步骤了,除了修复图片,codeformer还可以修复视频,更多的使用方法,等待小伙伴们自己探索,有问题欢迎私信交流哇。
8.Anaconda和pip下载依赖慢解决方法
8.1Anaconda依赖下载慢解决方法
Anaconda下载依赖的时候,会去连接国外的镜像源,网络不好的话,会导致下载速度极慢,可以将Anaconda镜像源切换到清华大学的镜像源,执行以下三条命令,即可将镜像源换成清华大学的
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
8.2pip下载依赖慢解决方法
pip进行依赖下载的时候,也会遇到速度很慢的问题,可以执行以下命令,将pip镜像源换成清华或者阿里的镜像源
镜像源选择一个使用就行,如果pip在下载过程中报错,提示没有相关依赖的话,可以再切换一下镜像源,比如清华镜像源没有某个依赖,那么就切换到阿里云镜像源,一般这两个镜像源都比较全,如果还没有,建议百度摘一下其他的pip镜像源再做替换尝试下载
# 清华镜像源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/
# 阿里云镜像源
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
相关文章:

Code Former安装及使用
Code Former是南洋理工大学和商汤科技联合研究中心联合开发一款AI人脸修复算法,通过该算法,可以对已经模糊的图片进行人脸修复,找回斑驳的记忆 由于网上对于Code Former的封装,全都是要花钱,或者需要其他什么曲折的方式…...
SpringMVC--@RequestMapping注解
RequestMapping注解 RequestMapping注解的功能RequestMapping注解的位置RequestMapping注解的属性1、value属性2、method属性3、params属性(了解) 补充RequestParamRequestHeaderRequestBody RequestBody获取json格式的请求参数 ResponseBodyRestControl…...

ARM寄存器及功能介绍/R0-R15寄存器
1、ARM 寄存器组介绍 ARM 处理器一般共有 37 个寄存器,其中包括: (1) 31 个通用寄存器,包括 PC(程序计数器)在内,都是 32 位的寄存器。 (2) 6 个状态寄存器…...

js删除json数据中指定元素
delete 删除数组方法: function removeJSONRows() {var tab {"dataRows": [{"id": 1,"name": "使用部门"},{"id": 2,"name": "车辆走行路线"},{"id": 3,"name": &quo…...

广州华锐互动:VR刑侦现场执法实训助力警察全面提升警务能力
随着科技的不断发展,虚拟现实(VR)技术在多个领域开始得到广泛应用,其中包括公安执法培训。VR刑侦现场执法实训系统是一种采用虚拟现实技术,为公安执法人员提供模拟真实环境的培训工具。通过这种平台,公安人…...
多线程 浏览器渲染引擎 图形用户界面(GUI,Graphical User Interface)应用程序
目录 多线程浏览器渲染引擎图形用户界面(GUI,Graphical User Interface)应用程序 👍 点赞,你的认可是我创作的动力! ⭐️ 收藏,你的青睐是我努力的方向! ✏️ 评论,你的…...

echarts饼图label显示不全原因?
echarts饼图label显示不全原因? 标签数量过多:当饼图的扇形数量较多时,为了保证图形的清晰性,ECharts 可能不会显示所有的标签,而是选择显示部分标签或者不显示标签。标签过长:如果标签的文字过长…...

暖手宝上架亚马逊美国站UL499报告测试标准要求
暖手宝是运用物理及化学原理研制的自动取暖保健用品。该产品以其自动生热,有趣,实用等新颖独特的优势,深受欢迎——暖手宝具有自动取暖,理疗保健等多种功能。只要插上电源等上10分钟左右就能发热,最后一种是通过锂电池…...

2023数据结构期中测验-2023秋-计算机+未来网络专业
这里写目录标题 选择题函数题6-1 求链式表的表长6-2 逆序数据建立链表6-3 删除单链表偶数节点6-4 求二叉树高度6-5 先序输出叶结点 选择题 2-1 下述程序段的时间复杂度为( ) for(i0; i<n-1; i)for(j0; j<n-1-i…...
解锁内存之谜:从C到Python、Java和Go的内存管理对比
前言 在编程世界中,内存是宝贵的资源,而管理它却是一个复杂的挑战。不同的编程语言以其独特的方式处理内存分配和释放。从C语言的显式malloc和free到Python、Java和Go的自动内存管理,每种语言都有其独特之处。本文将深入探讨各种编程语言中的…...
Redirect:301和302不同场景选择问题
redirect场景,一般来说,会有大量用户在收藏夹里放着你的官网主页。但是用户收藏的url未必会跟着官网url的变动一起自动更新 这个官网主页因为一些其他的原因,需要迁服务器或者换ip等等。所以在换之前要搞一个redirect,把访问引流…...

ChromeDriver谷歌浏览器驱动下载安装与使用最新版118/119/120
ChromeDriver谷歌浏览器驱动下载安装与使用最新版118/119/120 1. 确定Chrome版本 我们首先确定自己的Chrome版本 Chrome设置->关于Chrome 可以看到,当前chrome是最新版本:119.0.6045.124(正式版本) (64 位&#…...

研究生做实验找不到数据集咋办?
做实验找不到数据集咋办?这是很多研究者和开发者都会遇到的问题。数据集是实验的基础,没有合适的数据集,就无法验证模型的性能和效果。那么,有没有什么方法可以快速地找到我们需要的数据集呢?本文将介绍4个常用的数据集搜索平台,希望能够帮助大家解决这个难题。下面以室内…...

说说React diff的原理是什么?
一、是什么 跟Vue一致,React通过引入Virtual DOM的概念,极大地避免无效的Dom操作,使我们的页面的构建效率提到了极大的提升 而diff算法就是更高效地通过对比新旧Virtual DOM来找出真正的Dom变化之处 传统diff算法通过循环递归对节点进行依次对比,效率低下,算法复杂度达…...
链路追踪详解(一):什么是链路追踪?
目录 引言 什么是链路追踪? 链路追踪的重要性 链路追踪在分布式系统中的应用 链路追踪的基本术语 小结 引言 随着云计算、大数据和人工智能等新技术的快速发展,传统的单体式架构已经无法满足快速迭代的需求,因此,微服务架构…...

2024怎么自学软件测试?自动化测试?测试老鸟总结,少走弯路...
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、自学软件测试怎…...
AI搞钱——工具篇之视频、音频转文字
AI搞钱 工具篇之视频、音频转文字Memo AI :本地的语音转文字工具WhisperpyvideotransnottaAccurate AI万兴优转 视频转换 压缩工具v14.1.19.20 工具篇之视频、音频转文字 哈喽各位小伙伴们!今天我要给大家推荐几款视频、音频转文字的好用工具。 Memo A…...

基于Qt 多线程(继承自QThread篇)
# 简介 我们写的一个应用程序,应用程序跑起来后一般情况下只有一个线程,但是可能也有特殊情况。比如我们前面章节写的例程都跑起来后只有一个线程,就是程序的主线程。线程内的操作都是顺序执行的。恩,顺序执行?试着想一下,我们的程序顺序执行,假设我们的用户界面点击有某…...

oled显示器程序(IIC)从stm32f103移植到stm32f429出现bug不显示-解决移植失败问题
出现问题处: 刚开始更换了这两行代码,然后更换位置后,oled正常显示,如下为正确顺序 I2C_Configuration();//配置CPU的硬件I2COLED_Init();//OLED初始化 在这段代码中,I2C_Configuration() 函数用于配置CPU的硬件 I2C…...

【论文阅读】FreeMatch: Self-adaptive Thresholding for Semi-supervised Learning
论文下载 GitHub bib: INPROCEEDINGS{wang2023freematch,title {FreeMatch: Self-adaptive Thresholding for Semi-supervised Learning},author {Wang, Yidong and Chen, Hao and Heng, Qiang and Hou, Wenxin and Fan, Yue and and Wu, Zhen and Wang, Jindong and Savv…...

C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...

如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...