AIGC图像困局
算法技术的历史,是"用小资源干大事"的心酸历。
在写深度学习优化器算法巧思速览之前其实本来计划是先写现在这篇的,只是那个时候手上热乎的思路还是优化器相关,所以这篇博文就延后到今天才写。
这个标题起得很大,真写起来,篇幅真的太长了,所以只能想到哪写到哪。
2012年,Alex Krizhevsky的AlexNet在ImageNet上达到的精度震惊了世界,而那个时候也只做了一件事就是在224x224的分辨率下识别一千类物体。
而十年后的今天,真的变化太大了,现在AI的发展真的是日新月异,但我们仍在为如何让模型输出高质量的1024×1024图片视频而绞尽脑汁。
这不是技术进步太慢,而是这其中的涉及到的技术难处比想象中更甚。
引言
刚入行时候,博主第一个图像任务是语义分割,也就是俗话说的抠图。
这个在博主其他文章也可能看到相关信息。
从那个时候起,就有一个毒瘤或者是技术顽疾让人深恶痛绝。
它就是分辨率,由于技术的局限性,也因为算力的局限性,我们只能在小分辨率的图像里进行训练,而当你想要适配高分辨率的时候,对不起,重训或者外挂传统算法去打补丁。
如果在抠图领域,最经典的问题就是抠发丝,因为如果分辨率过低,你是看不见头发的,更别谈抠发丝是一种苦哈哈的细活。
但是如果采用高分辨率,是看见发丝了,计算量却暴涨了。对于很多场景需要的“实时”抠图,只能跪了,因为单是训练的算力就不能接受了,更别提最终使用。
但是仍然存在一些所谓传统算法,可以为我们铺路,例如利用导向滤波进行后处理。因为既然我们有大分辨率的图片信息,那直接利用起来就好了,细节我们从大分辨率图片里找回来就是了。也可以作为一种先验辅助训练。
那个时期 resnet, unet 百家争鸣。
后来gan的出现,迎来了图像生成的大爆发。
而图像生成这个事,跟抠图,抠发丝是不一样的,因为它是完全生成新的图片,或者生成局部再贴回原图,几乎没有任何原始信息可以合理地补充,毕竟生成的那个区域已经面目全非了。
而gan带来两层挑战,它需要几乎同时或者交替训练两个模型,一个负责生成,一个负责鉴别。这里的计算量就已经不小了,如果还要支持更大的分辨率,显存就岌岌可危了,当然gan在早期提出的时候本身训练也是不稳定的,后来为了稳定训练才提出来很多正则化惩罚以及归一化的思路。
那个时期,你不gan不行。
而当年最重要的事情就是transformer的提出。
[1706.03762] Attention Is All You Need
一直到了2022年Stable Diffusion彻底引暴了图像生成。
也就是新冠三年疫情的最后一年末。
所以一切便从Stable Diffusion开始说起。
关于Stable Diffusion的技术原理补充,可移步大话AI绘画技术原理与算法优化 一览。
分辨率是AIGC的阵痛
1.1 算力的三次方诅咒
分辨率对计算资源的吞噬是非线性的:
- 像素维度:分辨率×2 → 像素数×4
- Attention维度:序列长度×4 → 计算量×16(O(N²))
- 内存维度:激活值×4 → 显存占用×4(中间状态爆炸)
综合效应:分辨率×2 → 总成本×64。
这意味着512×512到1024×1024不是"两倍工作量",而是64倍。
1.2 数据的沙漠
LAION-5B的统计真相:
<ul>短边 |