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…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
