近期,短视频平台上“AI绘画”的概念爆火,ChatGPT这一词条也刷爆了科技圈,而这些概念同属于一个领域——AIGC。2022年12月,Science杂志发布的2022年度科学十大突破中,AIGC入选。
那么,被称之为是AI下一代风口的AIGC到底是什么?
AIGC全称为AI-Generated Content,即利用人工智能技术来自动生产内容。具体可基于生成对抗网络GAN、生成扩散模型和大型预训练模型等人工智能技术,通过已有数据寻找规律,并通过适当的泛化能力生成相关内容的技术。
AIGC已经成为继PGC(Professional Generated Content,专业生产内容)和UGC(User Generated Content,用户生产内容)之后新型的内容创作方式。
其实AIGC的概念并非今年才出现,在此前,类似于微软小冰等人工智能作诗、写作、创作歌曲的产品就属于AIGC的领域。但2022年以来,AIGC又集中爆发,国内外的科技巨头公司和投资公司纷纷入局,其原因可能在于以下几点:
文本-图像生成模型Stable Diffusion的正式开源,包括程序和训练好的模型。这给了后继创业者一些高起点的机会,有利于更广泛的C端用户普及。
深度学习算力、互联网数据规模扩张以及生成扩散模型和多模态预训练模型等技术的快速发展,使人工智能技术也随之迅速发展。从最初的文字生成逐渐发展为多模态和跨模态的内容生成。
如今各类社交和流媒体平台的普及,也驱动着内容生产方式的演变。
外部环境因素影响。在经济低迷时期,科技行业会选择相应收敛开支,并将重点放在像是人工智能商业化这类更务实的地方。
事实上,使用计算机生成内容的想法自上个世纪五十年代就已经出现,早期的尝试侧重于通过让计算机生成照片和音乐来模仿人类的创造力,生成的内容也无法达到高水平的真实感。结合人工智能的演进改革,AIGC的发展可以大致分为以下三个阶段:
早期萌芽阶段(1950s-1990s),受限于科技水平,AIGC仅限于小范围实验。1957年,莱杰伦·希勒(Lejaren Hiller)和伦纳德·艾萨克森(Leonard Isaacson)通过将计算机程序中的控制变量改为音符,完成了历史上第一部由计算机创作的音乐作品——弦乐四重奏《依利亚克组曲(Illiac Suite)》。1966年,约瑟夫·韦岑鲍姆(Joseph Weizenbaum)和肯尼斯·科尔比(Kenneth Colbv)共同开发了世界上第一个机器人“伊莉莎(Eliza)”,其通过关键字扫描和重组来完成交互式任务。80年代中期,IBM基于隐马尔可夫链模型创造了语音控制打字机“坦戈拉(Tangora)”,能够处理两万个单词。
沉积积累阶段(1990s-2010s),AIGC从实验性向实用性逐渐转变。深度学习算法、图形处理单元(GPU)、张量处理器(TPU)和训练数据规模等都取得了重大突破,受到算法瓶颈的限制,效果有待提升。2007 年,纽约大学人工智能研究员罗斯·古德温(Ross Goodwin)装配的人工智能系统通过对公路旅行中的所见所闻进行记录和感知,撰写出世界上第一部完全由人工智能创作的小说《1 The Road》。2012年,微软公开展示了一个全自动同声传译系统,通过深度神经网络(DNN)可以自动将英文演讲者的内容通过语音识别、语言翻译、语音合成等技术生成中文语音。
快速发展阶段(2010s-至今),深度学习模型不断迭代,AIGC取得突破性进展。尤其在2022年,算法获得井喷式发展,底层技术的突破也使得AIGC商业落地成为可能。下面列举了一些迄今为止具有代表性的算法模型,其中主要集中在AI绘画领域:
2014年6月,生成式对抗网络(Generative Adversarial Network,GAN)被提出。
2021年2月,openAI推出了CLIP(Contrastive Language-Image Pre-Training)多模态预训练模型。
2022年,扩散模型Diffusion Model逐渐替代GAN。
上述三个算法是当前AIGC的技术核心,下述算法模型大部分都是以此为基础。
2018年12月,NVIDIA推出StyIeGAN ,可以自动生成高分辨率图片。目前已升级到第四代模型。
2019年7月,DeepMind推出DVD-GAN ,可以生成连续视频。
2021年1月,OpenAI 推出DALL-E,是首个引起公众广泛关注的文本生成图像的模型之一。
2022年2月,开源AI绘画工具Disco Diffusion发布。
2022年3月,Meta推出Make-A-Scene这一AI图像生成工具。
2022年4月,OpenAI 推出了DALL-E-2,在图像分辨率、真实感和新功能上进行了升级。
2022年4月,AI绘画工具MidJourney发布。
2022年5月,Google推出Imagen,同样是文本生成图像的模型。
2022年6月,Google推出parti,与Imagen功能相同,但在模型算法、模型参数和图像效果等方面做了升级。
2022年7月,开源AI绘画工具Stable Diffusion发布。
2022年9月,Meta推出Make-A-Video,可以从文字生成视频。
2022年10月,Google提出Imagen video,同样是文字生成视频的模型。
2022年11月,Stable Diffusion 2.0发布,在模型算法、图像质量和内容过滤等方面做了升级。
2022年11月,openAI推出 AI 聊天机器人chatGPT。
关于上述算法模型的具体原理和分析,可以期待我们的下一篇文章哦~
AIGC在面向不同对象和不同场景时,具有强大的自适应创作能力,因此被应用在了多种场景。具体包括:
该领域目前发展势头最猛,且落地产品较多。根据使用场景,可分为图像编辑工具和端到端图像生成。图像编辑包括图像属性编辑(如去水印、风格迁移、图像修复等)和图像内容编辑(如修改面部特征、换脸等)。端到端图像生成包括基于图像生成(如基于草图生成完整图像,根据特定属性生成图像等)和多模态转换(如根据文字生成图像等)。
典型的产品或算法模型包括EditGAN、Deepfake、DALL-E、MidJourney、Stable Diffusion、文心·一格等。
视频生成与图像生成在原理上有一定相似性,可分为视频编辑(如画质修复、视频特效、视频换脸等)、视频自动剪辑和端到端视频生成(如文字生成视频等)。
典型的产品或算法模型包括Deepfake、videoGPT、Gliacloud、Make-A-Video、Imagen video等。
基于NLP技术的文本生成可以算是AIGC中发展最早的一部分技术,功能也较为多样。根据使用场景,可分为非交互式文本生成和交互式文本生成。非交互式文本生成包括内容续写、摘要/标题生成、文本风格迁移、整段文本生成、图像生成文字描述等功能。交互式文本生成包括聊天机器人、文本交互游戏等功能。
典型的产品或算法模型包括JasperAI、Copy.ai、彩云小梦、AI dungeon、ChatGPT等。
音频生成中的部分技术已经较为成熟,被应用于多种C端产品中。音频生成可分为TTS(Text-to-speech)场景和乐曲生成两类。其中TTS包括语音客服、有声读物制作、智能配音等功能。乐曲生成包括基于开头旋律、图片、文字描述、音乐类型、情绪类型等生成特定乐曲。
典型的产品或算法模型包括DeepMusic、WaveNet、Deep Voice、MusicAutoBot等。
游戏生成主要包括游戏元素生成和游戏策略生成,其中游戏元素生成包括游戏场景、游戏剧情、NPC角色等元素的生成。游戏策略生成主要指对战策略,一般基于深度强化学习的技术。
典型的产品或算法模型包括rct AI、超参数、腾讯AI Lab等。
代码生成主要包括代码辅助的功能,包括代码补全、自动注释、根据上下文生成代码、根据注释生成代码等功能。
典型的产品或算法模型包括Github Copilot、Replit、CodeGeeX、Mintlify等。
与图像生成和视频生成相比,目前3D内容生成还处于较为初级阶段。现有的3D生成基本为基于图像或文本生成3D模型。
典型的产品或算法模型包括Magic3D、DreamFusion、AVAR等。
AIGC图像生成能带来许多有趣甚至实用的图像,比如以自动驾驶为例,corner case一直是令感知工程师头疼的问题,缺乏corner case场景的数据集训练出来的算法,往往无法很好地应对corner case场景。
但是重建或挖掘corner case场景数据又是一件很困难的事情,不过现在通过AIGC的方式,我们能够通过算法生成corner case场景的图像,如下图所示,展示的就是算法生成的一系列白色大卡车侧翻的图像,虽然生成的图像真实度还有进步空间,但是也给我们打开了新的一扇大门,大规模的生成用于AI算法训练的数据集。
整数智能也将在后续的AIGC系列分享中,给大家分享如何在数据标注、模型训练等领域充分使用这些能力。
参考文献
Goodfellow I, Pouget-Abadie J, Mirza M, et al. Generative adversarial networks[J]. Communications of the ACM, 2020, 63(11): 139-144.
Radford A, Kim J W, Hallacy C, et al. Learning transferable visual modelsfromnatural language supervision [C]//International Conference on Machine Learning. PMLR, 2021: 8748-8763.
Yang L, Zhang Z, Song Y, et al. Diffusion models: A comprehensive survey of methods and applications[J]. arXiv preprint arXiv:2209.00796, 2022.
Ramesh A, Pavlov M, Goh G, et al. Zero-shot text-to-image generation[C]//International Conference on Machine Learning. PMLR, 2021: 8821-8831.
Saharia C, Chan W, Saxena S, et al. Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding[J]. arXiv preprint arXiv: 2205. 11487, 2022.
Rombach R, Blattmann A, Lorenz D, et al. High-resolution image synthesis with latent diffusion models[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2022: 10684-10695.
中国信通院《AIGC白皮书》
量子位《AIGC:AI生成内容产业展望报告》
甲子光年《AIGC爆火的背后,钱都被谁赚走了》
Leonis Capital《Generative AI: State of the Market, Trends and Startup Opportunities》
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返
它不等于主线程的binding,这个toplevel作用域是什么?此作用域与主线程中的binding有何不同?>ruby-e'putsTOPLEVEL_BINDING===binding'false 最佳答案 事实是,TOPLEVEL_BINDING始终引用Binding的预定义全局实例,而Kernel#binding创建的新实例>Binding每次封装当前执行上下文。在顶层,它们都包含相同的绑定(bind),但它们不是同一个对象,您无法使用==或===测试它们的绑定(bind)相等性。putsTOPLEVEL_BINDINGput
我可以得到Infinity和NaNn=9.0/0#=>Infinityn.class#=>Floatm=0/0.0#=>NaNm.class#=>Float但是当我想直接访问Infinity或NaN时:Infinity#=>uninitializedconstantInfinity(NameError)NaN#=>uninitializedconstantNaN(NameError)什么是Infinity和NaN?它们是对象、关键字还是其他东西? 最佳答案 您看到打印为Infinity和NaN的只是Float类的两个特殊实例的字符串
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?
我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or