AI stable diffusion和 facechain
20230916讨论.md
project_facechain/1.讨论 at main · hit-perfect/project_facechain (github.com)
1 目前计划实现的内容
导入拍摄好的图片,通过AI处理提取人脸、身形等关键信息
- 为人物更换服饰、妆容、表情、发型等,还可以导入已有的服饰,打造私人衣柜。
- 为照片更换背景、风格,扩展背景旋转视角,去除路人等背景操作。
- 让修好的图片动起来。
可能的实现方法如下
- 动态方式一:抓住可移动元素如头发、裙子、光效、路人、雨雪,让它们循环规律移动。
- 动态方式二:运镜式移动,改变观察视角,呈现立体效果.
- 自动将修好的动图按合适的顺序拼接,形成动态相册。
2 现有条件
3 目前需要学习的内容
3.1 Python、PyTorch、(TensorFlow)
括号内为可能需要学习的内容(之后同理) 主要原因在于Python、PyTorch是业界常用的AI模型开发的语言和框架;TensorFlow是FaceChain中用到的框架,如果要使用FaceChain的话,应该需要学习这个框架。 其中Python应该是最需要细致学习的。PyTorch和TensorFlow不需要学得特别深,会用即可,原因是这两个本身只是AI开发的框架,对其内核不需要太多理解即可上手使用,其次这两个学习成本应该不低,会比较麻烦。
3.2 AI领域相关术语和理论
看过FaceChain之后发现,其中涉及到很多AI领域的专业术语和理论,需要研究一段时间。 这对未来寻找更好用的模型等很有帮助(对于计算机专业的话应该是必须的吧)
3.3 Git
作为团队共同开发的项目,开发时需要引用Git作为版本管理工具,同时需要用GitHub(或者Gitee、Gitlab等)来作为代码托管平台从而实现多人协作。 不过Git常用的命令就那几个上传一类的add,commit,push,同步下载一类的fetch,pull,clone等,所以没必要学得太深,了解几个命令的用途和用法,以及Git的相关定义即可。在实操过程中,很可能就主要使VS Code对Git做的相关UI了。
3.4 Docker,Linux
大模型不可能挂到本地运行,只能把它部署在服务器上,部署过程中需要用到Linux和Docker等知识
3.5 Markdown,LaTeX
Markdown在日后进行交流讨论的时候不可避免的会用到,不过Markdown比较简单,最多一个小时就能上手操作了 LaTeX是论文排版工具,想要拿国家级奖项需要有专利和论文的加持,学习LaTex也是必要的
4 等待解决的问题
4.1 资源选择
是否要用FaceChain,还有没有其他的简单的,功能丰富的模型; 老师、学长还能够提供其他的模型;
4.2 恐怖谷效应如何解决
L2D容易出现恐怖谷效应,真人运动和二次元的运动的感觉不太一样,运动起来可能会显得比较突兀,产生恐怖效应, 目前能简单想到的几个办法是
- 虚化人物边缘,看起来不太突兀
- 将人物背景虚化处理;可以参考小米12s Ultra的人像模式。是否有模型可以实现背景模糊。
- 将人物稍微动漫化。是否有模型可以动漫化人物。
4.3 雨雪光效
1.不能采用3D建模的方式完成雨雪和光效的处理 2.要采用图层从视频表面划过的雨雪光效,还是有深度的模型,参考苹果手机空间照片。
5 可能的解决办法
5.1 stable diffusion的controlnet——deepth,预处理出一张深度解析图片
头发和裙子等的运动
想法一:全图使用果冻、水波特效; 想法二:提取头发部分,对头发使用果冻水波特效; 想法三:AE有一个骨骼功能,给头发写一个专门的波动特效,类似于骨骼那种运动;
2023.09.17讨论
- 2023.09.17讨论
- 讨论内容
- FaceChain与Stable Diffusion的运行
- 如何在现有条件下完成动态壁纸的生成
- Another Thought
- 由LoRA社区引发的新想法
- 问题
- 讨论内容
1 讨论内容
本次讨论主要围绕两方面展开:
首先是对于FaceChain以及Stable Diffusion的运行有了初步的了解。 其次是对于最重要呈现的结果,也就是通过一张照片生成动态壁纸的这一功能的实现过程进行了一定的设想。
1.1 FaceChain与Stable Diffusion的运行
FaceChain的运行逻辑在09.16的讨论中有所涉猎,其实际的过程就是将用户上传的照片中的人脸信息转化为LoRA模型,再结合本地做好的LoRA,共同交付给Stable Diffusion模型进行图像绘制,最终的结果会是既保留用户上传的人脸信息,又保留本地模型中提供的衣服背景动作等信息的图片。
其中提到的LoRA,可以理解成SD的插件,这个插件可以操控SD,使其生成具有相应特征的图片。LoRA可以通过SD完成注入,因此可以实现一个LoRA和SD的闭环,利用LoRA作为风格化文件来生成对应风格的内容。
1.2 如何在现有条件下完成动态壁纸的生成
1.2.1 可能方案一:真人出演
用FaceChain把得到的图片,通过其它(可能存在的)模型进行拆分,对人物的毛发,面部,衣物等图层叠加波动扭曲等效果对被遮挡的背景进行补充,使人物能够动起来。 弊端:这样动起来的人或多或少会有些奇怪,容易引起恐怖谷效应。
1.2.2 可能方案二:视频渲视频
用视频生成视频,SD中精细调参,尽可能减少画面闪烁,得到相应画风的视频。 弊端:不满足我们对单张照片成视频的要求,而且仅通过SD就能手动完成,缺少创新性。
1.2.3 可能方案三:二次元微积分
魔改FaceChain,使其输出的图片动漫化,再完成拆分以及背景的补充,添加效果,使人物能够动起来。 弊端:这段过程中需要经过多次AI处理,稳定性和可用性不能保证,且运算时间可能会过长,若市面上存在可靠稳定的模型,此方案相对来讲最为简单。
1.2.4 可能方案四:直出二次元
魔改FaceChain,使其输出的图片动漫化,且分层输出,跳过引用其它模型对图像进行处理的过程,对每一层分别添加效果,使视频动起来。 弊端:这一方案如果能做到,那将是极好的,但是其中需要对FaceChain进行大量的魔改,学习成本巨大,不能保证在短时间内能完成学习与研发。
1.3 Another Thought
在讨论中提到了LoRA社区,用户可以上传自己做的衣服,背景LoRA,供其他用户使用。
1.3.1 由LoRA社区引发的新想法
在AI相机的基础上制作一个电商平台,卖家可以将自己的衣服LoRA以及淘宝京东链接上传到LoRA社区,买家可以下载LoRA(或者不用下载,在服务端完成),实现虚拟试穿。
1.3.1.1 电商平台操作方法
卖家:
- 拍摄多角度的衣服照片多张,上传到社区,同时附带淘宝京东等平台链接。
- 服务端,接受到多张衣服照片,照片经过stablediffusion处理生成服装LoRA。
- 买家自行实验LoRA是否满意,若满意可以上传社区。
买家:
- 在社区中选择想要试穿的衣服。(先上传多张自己的照片,已经生成了人物的LoRA)
- 服务端,stablediffusion实现人脸和服饰LoRA的结合。
- 可以保存图片,如果对试穿结果满意,可以进入淘宝京东等电商链接,进一步查询。
1.3.1.2 相较于单纯的动态相册的优点
单纯的动态相册仅仅在虚拟层面提供虚拟服务,应用性较差。电商平台实现了虚拟世界服务真实世界,应用性较强。
1.3.2 问题
目前得物有虚拟换装功能,但是实际体现效果并不好。 如果可以做出虚拟换装的话,只能实现服饰外观测试,不能实现服饰尺寸测试。
2023.09.19小议
- 2023.09.19小议
1 如何做出和妙鸭相机不同的创新点
参考APP,AI智能协助
在这个APP中,AI被分成了不同的类别。 由AI智能协助引发的想法 将LoRA分为多个大类,如:
- 真实写真
- 虚拟换装(可植入广告)
- 二次元风
- 游戏世界
- 虚拟旅游。
2 目前任务
服务器还是显卡
在AI画图领域的新发现 - Stable Diffusion(SD)
1 SD的运行原理
Stable Diffusion(SD)是一个用于生成图像的深度学习模型。其运行原理如下:
- 加噪声模糊处理:首先,SD将一张图像进行加噪声模糊处理,这个过程使图像变得模糊且包含噪声。
- 特征提取:SD通过深度学习从原始图像中提取特征信息,这些特征包括图像的结构、纹理、颜色等。
- 扩散过程:SD通过对大量图像进行类似的操作逐渐开始理解这个扩散的过程。这意味着它学会了如何从噪声和模糊的图像中提取有用的信息。
- 生成图像:最后,SD执行模糊化的“逆过程”,从而生成具有特定内容的图像。这一步是将特征信息还原到图像中的过程,生成清晰的图像。
2 术语学习
在SD的真实绘制过程中,涉及到许多术语和概念。为了更好地理解和使用SD,建议查找相关文献进行学习和深入研究。
3 采样器
SD使用多种采样器来生成图像。以下是SD 1.6版本中的一些采样器:
- 老派采样器:
- LMS
- LMS Karras
- Heun
- Eular
- Eular a
- DDIM
- PLMS
- DPM采样器:
- DPM fast
- DPM adaptive
- DPM++SDE
- DPM++SDE Karras
- DPM++2S a
- DPM++2S a Karras
- DPM++2M
- DPM++2M Karras
- DPM++2M SDE
- DPM++2M SDE Heun
- DPM++2M SDE Heun Karras
- DPM++2M SDE Heun Exponential
- DPM++2M SDE Exponential
- DPM++2M SDE Karras
- DPM++3M SDE
- DPM++3M SDE Karras
- DPM++3M SDE Exponential
- DPM2
- DPM2a
- DPM2 Karras
- DPM2 a Karras
- 新派采样器:
- UniPC
- Restart
在以上30种采样器中,DPM系列最为复杂,有两个版本,以DPM、DPM++开头的都是改良版,DPM2开头的是第二代。SDE表示“随机微分方程”算法,这个算法效果更好,但计算时间较长。其它采样器直接参考视频
最终,根据速度和效果优先的原则,可以选择以下几个可用的采样器:
- 老派:Eular、Eular a
- DPM:++2M K、++SDE K、++2 SDE K、++2M SDE Ex、++3M SDE K、++3M SDE Ex
- 新派:UniPC、Restart
针对讨论的简单总结
1 想要实现的内容
一个Web程序,主要用于实现这些功能之一:
动态相册:接收用户上传的照片,并用此照片渲染出可用作动态壁纸的视频
虚拟旅游:接收用户上传的照片,通过替换背景和人物面部的高光与阴影,生成以其他地点为背景的照片
虚拟换装:接收用户上传的照片,提取人物骨骼,衣物等,实现对人物衣物的替换
2 可以用来改造微调的大模型
2.1 Stable Diffusion
通过扩散算法(Diffusion)实现对特定需求的图进行生成的模型,市面上有很多Stable Diffusion的微调版以及插件等。 其中LoRA、Control Net等最为出名,后文提到的FaceChain也有对LoRA的应用。
2.2 FaceChain
用到了Stable Diffusion的部分功能,主要用于对同一个人的人脸的二次创作,比如换装,换表情等。 相较于Stable Diffusion,FaceChaing的生成过程其实更注重生成图的人脸是用户上传的人脸。
猜想:可以理解为Stable Diffusion的特殊调校版吗?