分类
深度学习

简单理解 Stable Diffusion 和 代码实现

Stable Diffusion 的论文我粗看了一下,并没有完整的去看所有的数学推导,知道大概的过程后,随手找了几个科普性质的文章,最后又找了几段代码,Stable Diffusion 是好几个技术拼在一起,包括 openai 的 CLIP,U-NET等。

我的学习目标

我学习这些的目标可以拆解如下。

  1. 会用,利用开源的模型,可以自己运行起来。
  2. 明白其原理,大致的搞明白其原理,但是不会去纠小细节。
  3. 了解其各个参数的作用和用法。
  4. 找其原理实现的代码,把代码跑起来。
  5. 怎么样把模型服务化,做到高可用。

怎么用 stable diffusion 的文章一大把,讲其原理的视频和文章相对少一些,但是也是有的,推荐 beginners-guide-to-diffusion-models 这个文章解决的比较清楚,并且作者是还画了图,看完后你大概知道什么是 step,什么是 CFG,什么是调度器之类的了。

代码实现发现 fast.ai 有一个课程,讲解了基本的原理,并且实现了相应的代码,Stable Diffusion Deep Dive,他的整个代码也都可以看一看diffusion-nbs

视频推荐

20221219BziuVD
这个是 fat.ia 相关的视频,在 Stable Diffusion 方面介绍的较详细 https://www.youtube.com/@howardjeremyp/videos

Stable Diffusion 视频推荐

https://www.youtube.com/watch?v=1CIpzeNxIhU&t=242s&ab_channel=Computerphile

分类
Stable Diffusion

openai CLIP 库实现图片搜索

在看 stable diffusion 代码的时候,发现基本上都会用一个库 CLIP,是 openai 开源出来的, openai/CLIP: Contrastive Language-Image Pretraining 可以把图像和文本转换到一个向量空间,最简单的应用是可以用文本搜索图片,像 stable diffusion 这种生成模型,其实就是好几种技术拼接在一起,才会有这样的效果。

openia

图片搜索

Search photos on Unsplash using natural language 实现了文字到图片的搜索,原理非常简单,把要搜索的图片都转换面向量,把要搜索的文字也转换成向量,直接到这些向量就相似度就可以。

讓AI幫你穿搭!用CLIP實作一個時尚穿搭資料庫 (aif.tw)

openai CLIP
分类
建筑

勒·柯布西耶谈住宅

最近在读勒·柯布西耶走向新建筑,在谈到住宅时,有下面的一些描述,并且写了一个住宅指南,我也很喜欢这种风格,他有很多代表作,Villa Savoye 在住宅方面非常有代表性。Le Corbusier 作品集欣赏

萨伏伊别墅:走向新建筑 对 Savoye 有具体的介绍。

20221217ODTZp4

上图是用 stable diffusion 生成的, prompt 为 ‘villa by Le Corbusier ‘

住宅指南

  1. 需要一间向南的浴室,家里最大的房间之一,像旧式的沙龙。一面墙全是玻璃窗,如果可能,通向一个日光浴阳台;有瓷便器、浴缸、淋浴、体育锻炼用具。
  2. 相邻房间:化妆室,你在那儿穿脱衣服。不要在卧室里脱衣服,这既不卫生又会搞得乱糟糟。化妆室里要有柜子放内衣和外套,不高于1.50米,有抽屉、挂衣处,等等。
  3. 要有一间大厅代替所有的沙龙。
  4. 在卧室里、大厅里和餐厅里要有空白墙面。用壁橱代替昂贵的、占据许多地方的、需要维修的家具。
  5. 去掉仿石的抹灰和菱形拼花门,它们意味着虚假的风格。
  6. 如果可能,把厨房放在顶楼里,以避免油烟气味。
  7. 向房东提出,为补偿仿石抹灰和糊纸墙,他要给你装上隐蔽的或散光的电灯。
  8. 要真空吸尘器。
  9. 要买实用的家具,绝不可买装饰性家具。请你到古老的府邸里去看大贵人们的低级趣味。
  10. 在墙上只挂少量的画,只挂好画。没有画,就买画的复制品。
  11. 把你的收藏品放在抽屉里或柜子里。要深深地尊重真正的艺术品。
  12. 留声机和钢琴使你正确地理解巴赫的赋格曲,并使你避开音乐厅、感冒、演员们的狂热。
  13. 每个房间的窗子都要有换气扇。
  14. 告诉你的孩子,只有光线充足、地板和墙面都干干净净的房子才能居住。为保持地板干净,你不要用独立的家具和东方地毯。
  15. 向房东要一间汽车房,也可存放自行车和摩托车。
  16. 楼上要有家务室,不要把家务室放在顶楼里。

基本公理:

椅子是做来给人坐的。

有教堂里用的只值5法郎的草编椅子,有值1000法郎的马伯尔式扶手椅,也有莫理斯式的椅子,椅背可以分级放倒,有活动的木板可以放书、放咖啡杯,可以拉长开来搁伸直的脚,可以用摇柄把椅背放到午睡或工作的最合适的位置,有利于健康,舒服,恰到好处。你的安乐椅,你的路易十六式的椭圆形双人沙发,用锦缎垫子垫得松松软软的,它们是用来坐人的机器吗?说句知心话,你还是在你的俱乐部里、你的银行里或者你的办公室里更舒服一些。

电力提供光明

有隐蔽的灯,也有散光的和聚光的灯。我们可以像在白昼一样看东西,我们眼睛再也不出毛病。一只100支光的灯泡重50克,但你的有铜质或木质大圆盘的吊灯有100公斤重,如此之大,竟至于塞满了房间,由于苍蝇在上面拉屎,它的清洁工作极其困难。到了晚上,它们很伤眼睛。

窗子的用处是透光,向外观望

卧车车厢的窗子可以密闭,可以自由开启;现代化的咖啡馆的窗子很大,可以密闭,也可以用摇柄把它降到地下去,完全敞开;餐车的窗子有软百叶,可以开开来通一点风,通许多风或者完全不通风;大块平板玻璃代替了瓶子底式的玻璃和镶嵌玻璃;有一种可以转动的百叶窗,它的叶片可以一点一点地放下来,用它们间距的变化控制光线的进入。但建筑师还是采用凡尔赛式的,贡比埃尼式的,路易第十、第X、第Y式的关不严的窗子,它们装着小块玻璃,开关困难,百叶窗在外面,如果晚上下雨,为了去拉它们,人们就要挨淋。

绘画是画出来给人欣赏的

拉斐尔、安格尔和毕加索是为了给人欣赏才画画的。如果嫌拉斐尔、安格尔和毕加索的画过于昂贵,照片复制品却很便宜。为了在一张画前欣赏它,应该把它挂在好地方,气氛安静。古典绘画的真正收藏家把画放在柜子里,想看哪一幅才把那幅挂在墙上,但你的墙却像集邮册,尽是些不值钱的邮票。

住宅是造起来住人的

老实说,现代男士在家里烦闷得要死,他到俱乐部去。现代女士在她的小客厅之外觉得烦闷,她们去赴下午茶会。现代男士女士在家里烦闷,就出去跳舞。但低微的人们没有俱乐部,晚上聚在吊灯下,不敢在他们的家具形成的迷宫里走动,这些家具占了所有的地方,它们是他们的全部财产和他们的骄傲。
老实说,现代男士在家里烦闷得要死,他到俱乐部去。现代女士在她的小客厅之外觉得烦闷,她们去赴下午茶会。现代男士女士在家里烦闷,就出去跳舞。但低微的人们没有俱乐部,晚上聚在吊灯下,不敢在他们的家具形成的迷宫里走动,这些家具占了所有的地方,它们是他们的全部财产和他们的骄傲。

反酗酒协会,人口增殖协会,应该向建筑师们发出呼吁;他们应该印刷《住宅指南》,把它分发给家庭主妇们,并敦促巴黎美术学院的教授们辞职。

分类
有意思的项目

图片删除文字

把文字从图片上删除,原理是非常简单的,就是先 OCR,找到文字的坐标,然后再生成一个 mask,把文字罩住就可以,今天看到一个开源项目,叫做 GitHub – iuliaturc/detextify: Remove text from AI-generated images ,他的做法是用 Stable Diffusion 这样的模型去生成图,然后用这个图去罩住那块文字。

效果

复制前
移除文字

问题

对中文的图片支持不好,要调用第三方 OCR 来处理中文,最多能删除 5 个 textbox(字块)。

想法

基于这种思路,把各个 AI 的能力整合到一起,就可以实现一些复杂的能力,如可以实现图片到图片的翻译。

分类
深度学习

Stable Diffusion Anything

Linaqruf/anything-v3.0 · Hugging Face 是一个动漫风格的模型,可以 txt-to-image ,也支持 image-to-image。

Anything Taylor Swift
原图

注意事项

image to image

  • 图片的比重一定要占到 45% 以上,才会让生成的图片和原图相似。
  • 如果图片的比重超过 80% ,生成的图片和原图基本上不太相似,可能差别非常大。
  • 原图不能太大,分辨率太高,1024×1024 以上,计算非常慢,在生成之前,最好对原图进行调整。
分类
Stable Diffusion

什么是 Latent Space

最近在看 Stable Diffussion 的相关原理性的知识,遇到一个 Laten Space 的概念,发现有人写一个文章,非常形像的解释的了什么叫做 Latent Space ,他有什么用?还有代码怎么样去实现之类的思路,非常值得推荐一读。

也让我形像的理解了 Autoencoders 的思路,Understanding Latent Space in Machine Learning | by Ekin Tiu | Towards Data Science

Latent Space

什么是Latent Space?

如果我必须用一句话来描述Latent Space,数据压缩的表示方法

举例

下面这个例子非常形像化的去理解 Latent Space,就是对这些对象提取重要的特征,相似对象的特征应该更加接近,比如下图中的几个椅子的特征和桌子的特征肯定不一样,几个椅子的特征更加相似,因此可以去掉一些椅子多余的特征,如颜色,只保留重要的一些特征。

如果我们看这副图像,四张椅子和一张桌子,我们很容易说这四张椅子图像最相似,而桌子与任何一张椅子图像的差异最大。

202212146uQ4Kq

但是,是什么让这两张椅子的图像“更相似”?椅子具有明显的特征(即靠背、无抽屉、腿之间的连接)。通过学习边缘、角度等方面的模式,我们的模型都可以“理解”这些。

因此,随着维数的减少,每个图像(即椅子颜色)不同的“无关”信息从我们的潜空间(Latent Space)表示中“移除”,因为只有每个图像最重要的特征存储在潜在空间表示中。

结果,当我们降低维度时,两把椅子的表示

变得不那么明显而更相似。如果我们想象它们在空间中,它们会“更靠近”在一起。

怎么样对 Latent Space 进行可视化

Latent space visualization — Deep Learning bits #2 | HackerNoon 做了一个 Latent Space 的可视化,非常方便理解生成的逻辑。

分类
有意思的项目

用 InvokeAI 来搭建 Stable Diffusion 服务

Stable Diffusion

对于这种生成图片的项目,需要有一种高效的方法来查看生成的结果,找来找去,发现 invoke-ai 这个项目能满足我的需求,有如下几个优点。

  • 安装非常方便。
  • 界面交互做的非常好。
  • 可以很方便的集成 stable diffusion 各种模型。
20221207HSS2Vp
湘ICP备2020020034号-1