2 天:我用文字 AI-ChatGPT 写了绘画 AI-Stable Diffusion 跨平台绘画应用

news2024/11/22 1:28:36

文本 AI - ChatGPT 和绘画 AI - Stable Diffusion,平地惊雷,突然进入寻常百姓家。

如果时间可以快进,未来的人们对于我们这段时光的历史评价,大概会说:

当时的人们在短时间连续经历了这几种情感。从不信,去试试看;到远超预期,后怕;到释然钦佩感慨,进步来得太快。人们原以为 AI 是远方的灯塔,转眼,才发现在后面的是人类。再望向 AI,惊觉已望尘莫及。

作为一名开发者,我在想如果让 AI 代替我工作,是个什么感受呢?本文我想和你分享我在过去两天的探索。

前情回顾

倘若你十分幸运,暂时还没有体验这波 AI,以下是简短回顾。

比如下面这张截图,一个人在和一个另一个似乎全知全能的生物对话,这便是隶属于机器学习 NLP 自然语言处理分支的 ChatGPT。这个文本聊天 AI 是一个基于 RLHF,也就是带人工反馈的强化学习技术的超大语言模型。

这里面有两个关键点:RLHF,人工干预带奖励机制的训练过程,使它能向人类一样判断;超大语言模型,是将人类文明以文字的方式全盘托出,来赋予它智慧。

如果你最近在朋友圈看到雨后春笋般地艺术作品,或玩过各类文字画图小程序。这些极大可能是另一个 AI,即用来将文本转为图片,隶属于机器学习 CV 计算机视觉分支的 Stable Diffusion,在后台为你默默工作。

比如下面这张图,就是在向 Stable Diffusion 描述「一种会发光的外星菌菇」这段文字后,AI 生成的作品。

脑洞来源

刚巧最近 Apple 在 iOS 16.2 和 macOS 13.1 中对 Apple 芯片在 Core ML 大模型的表现作出更新,发论文如下,首次加入了对于 Stable Diffusion 的优化。现如今芯片技术,和手机电脑中神经网络引擎,终于在当下能支持此类推演。

我就在想,能不能写个 iOS 程序,这个程序能用上 Stable Diffusion,让我在 iPad 和电脑上,随时随地画个画。这样就能随时把脑洞转成图片了,也不需要看广告或者付月费,仰仗各种第三方提供方。

出于本能的懒惰,对于未来的好奇,以及回答 AI 能否替代人类这个问题。我想先抛个砖,让 ChatGPT 为我写这个程序。我的想法是,这个程序能够有个文本框,让我输入信息;有个倒计时,能够看到生成的进度;有个表格,能够让我看到不同设备生成图片需要的时间;有个按钮,能够让我导出和分享图片。

如果可以继续幻想,这个应用能有一些动画,画好的后图片能随意切换风格就好了。这里的切换风格,不是简单的加上滤镜,而是模仿我想要的诸如轮廓线画风,某个笔触风格等等。要在 Mac 上也能用,我就想要这么个随时能用的工具。

抱着以上幻想,我和 ChatGPT 就开工了,来写这么个 Stable Diffusion 绘画应用。

开工和感受

下图,就是我和 ChatGPT,在 2 天写好的绘画应用,实现了上面说的所有想法。你可以看到,在本应用中,我在文本框里敲了行描述了一只毛绒生物的句子,便收获了画好的图(恰如我制作这个应用的过程,对 AI 进行描述,便收获了这个应用)。

赘述技术细节意义不大,来说说看这 2 天的时间安排,AI 在里面扮演了什么角色。要开工,首先需要 Stable Diffusion 的机器学习模型。下载这一步本来应该很简单,但因为 GitHub 被标注成了诈骗网站,过程繁琐了不少。

在解决下载这一步里,遇到了诸如 M 芯片安装 HomeBrew 困难,Git lfs Clone 存在大坑等问题。原本我是通过搜索引擎来解决问题的,但很快便发现,这些可能偏小众的问题搜索引擎或者问答网站给出的答案时常是答非所问。在此步骤中,ChatGPT 对于我遇到的每个困难,都给出了针对性,可直接实操的解决方案。

让我惊讶的地方在于,对于你的提问,遇到任何困难或者 ChatGPT 提出的方法无效的时候,你都可以继续追问。在和 GPT 持续问答的帮助下,搞定了下图的模型下载。

有了模型后,接下来我需要一些说明文字。对于不同设备,列出表格,比如下面左图。与此同时,我还需要下图右侧的一些横向排列的 UI 元素,比如绘画按钮,切换风格按钮,分享按钮等等。

虽然可以自己用 SwiftUI 写,但本着能让 ChatGPT 干活的地方我不动手的基本原则,UI 的部分我都交给了它来写。而我做的,就是尽可能的把我想要的图景描述给 ChatGPT 听,比如下图代码的绘画按钮。

我是这样用英文给 ChatGPT 描述的,大概是「想要个能够带动画的按钮,支持两个函数,一个开始动画,另一个结束。动画需要缩放,名字你自己起就好」。而后我就收到了如下完整的 SwiftUI 代码,我负责把这些代码复制到 Xcode 里,选了个合适的图标,UI 就基本完成了。

至此,我已经被 ChatGPT 的工作能力震撼到。以上这些代码我也能写,但最少需要十分钟,而对于 ChatGPT 生成完整代码,只需要几秒,感觉自己的生命被大大节约。更重要的是,它生成的代码,基本都是对的,而且命名非常规范。

如果 UI 和动画这些内容,ChatGPT 可以胜任,那逻辑部分是否也可行?抱着这样试一试的心态,我把较为复杂的 On Demand Resource,即根据需求加载的代码,并且在资源下载完后储存到磁盘的逻辑,也一并描述给了 ChatGPT。

在这个过程中,我主要负责用 Xcode 来调试,并且把不同的模块衔接,从工作量上来说,我和 ChatGPT 几乎达到了一人一半的分工。

花了 2 天时间完整制作好的应用如下,看下方动图 5 秒,你会看到文字生成图片,绘画过程中的画笔动画,风格迁移和导出全过程。

其中:图片生成过程中的倒计时(ChatGPT 写的),模型存储逻辑(GPT 写的),机器学习风格切换(我训练的机器学习模型),分享和保存(我写的,因为用到了 2022 的知识 ChatGPT 暂时还没有)。

进度到了这里,就差起个名加个图标了。我一直很想要个头脑风暴的应用,把脑洞具像化,于是就叫 IdeaStorm,也就是想法风暴。既然这个应用,是和 ChatGPT 合作,最后做了绘画 AI Stable Diffusion 这样一款应用,本着复杂的问题交给 AI 的原则,我让这款应用自身,给自己画了个图标。

以下是最左侧,是 IdeaStorm,这款用 AI 写 AI 的尝试应用,给自己画的图标。

总结

AI 能为我们工作吗?或者说,AI 能够替代我们工作吗?本次实践中,我并未因为 IdeaStorm 是和 AI 的合作,而妥协任何原计划。2 天时间,从探索落地的尝试中,答案是肯定的。

曾有人说现在的硬件性能过剩,这次的体会中,过剩的性能很快就被需求所替代了。比如我在用 ChatGPT 工作,用 M2 开发 M1 测试,本应不错的电脑和设备,性能瓶颈是我意料之外的常驻感受。我时常在等设备来运行,来机器学习,来做模型推衍,来做项目编译。

原来不是硬件变慢了,而是在 AI 的加持下,我变快了。原本需要几十分钟才能推进的节点,现在只在一瞬间,就快进到了下一条。的确是生产力得到解放的感受。

(奥润橘用 IdeaStorm 的创作)

正如文章开头所说:

人们原以为 AI 是远方的灯塔,重点是远方,很远。转眼,才发现已经在后面的,原来才是人类。再望向 AI,惊觉已是望尘莫及。

亲自尝试之后,这便是我的感受。在这 2 天的开发过程中,遇事不决 ChatGPT,是我能对它给出的最高评价。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/473918.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java多线程BlockingDeque的三种线程安全正确退出方法

本文介绍两种BlockingDeque在多线程任务处理时正确结束的方法 一般最开始简单的多线程处理任务过程 把总任务放入BlockingDeque创建多个线程,每个线程内逻辑时,判断BlockingDeque任务是否处理完,处理完退出,还有任务就BlockingDe…

对顶堆模板!!【DS对顶堆】ABC281 E - Least Elements

我想的思路和正解是差不多的 就是滑动窗口,每过去一个用DS维护一下前k个元素和sum 本来想的是用优先队列维护前k个 然后想着multiset维护前k个,但是具体不知道怎么操作 这里用的是multiset维护对顶堆 关于对顶堆,我在寒假的时候总结过 …

【Java笔试强训】(1)

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🦾🦾🦾 目录 一、选择题 二、编程题 🔥组队竞…

Github创建一个新仓库,关联本地数据并上传文件的图文步骤

工作中,我们经常会使用github来承享别人的代码果实,同时我们也会把自己的成果分享给别人,互相帮助。 今天的这篇图文教程非常重要,目标是使用Github来创建一个远程仓库,并和本地仓库对接,同时要做上传新内容…

初始Vue3【Vue3】

1.Vue3简介 2020年9月18日,Vue.js发布3.0版本,代号:One Piece(海贼王)耗时2年多、2600次提交、30个RFC、600次PR、99位贡献者github上的tags地址:https://github.com/vuejs/vue-next/releases/tag/v3.0.0 …

使用docker容器化部署mysql8.0.27,并更改其默认端口3306为3306全流程记录。

使用docker容器化部署mysql8.0.27,并更改其默认端口3306为3306全流程记录。 1.创建镜像 #查看镜像 docker images|grep mysql #搜索镜像 docker search mysql #拉取镜像 docker pull mysql:latest #运行镜像,--name 后的参数自己命名,我的数…

js逆向之rpc远程调用(你强任你强,我无视一切)

一、找到加密函数位置 二、在其下面注入ws服务 (1)注入准备 资源>>替换>>随便选一个空文件夹 (2)进行注入 进行(1)操作后可直接编辑js代码了,做以下修改 (function() {var ws new WebSocket(…

ChatGPT实现代码生成

代码生成 就代码生成而言,ChatGPT 是一款卓越的工具,它为开发者提供强大的功能。ChatGPT 可以运用其出色的自然语言处理技术,深入理解和解释开发者的需求,快速生成适合的代码片段。对于那些繁琐的任务或者重复的代码,…

肝一肝设计模式【三】-- 原型模式

系列文章目录 肝一肝设计模式【一】-- 单例模式 传送门 肝一肝设计模式【二】-- 工厂模式 传送门 文章目录 系列文章目录前言一、什么是原型模式二、浅克隆三、深克隆写在最后 前言 前文中我们知道设计模式可以分为三大类:创建型模式、结构型模式、行为型模式。创…

Baumer工业相机堡盟相机如何使用偏振功能(偏振相机优点和行业应用)(C#)

项目场景: Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外&#xff0…

tp6.1 bingher/ueditor(百度编辑器)(七牛、阿里OSS第三方云)详情图文教程(2023年第二版)

之前做过一版:tp6 bingher/ueditor(百度编辑器)(七牛、阿里OSS第三方云)详情图文教程_我是高手高手高高手的博客-CSDN博客 登录权限是Session,现在系统是Cookie加jwt的Token方式验证 一、修改验证登录权限 修改文件: vendor\bingher\uedito…

react native ios 添加启动页 xcode14 react-native-splash-screen

最近更新xcode,有些配置有些不同,网上查的方法都是过时的,导致配了一段时间卡在这里,最后访问官网才弄好了,所以以后解决问题的办法先看官网再查其他各路神仙的办法。 官网的步骤:https://github.com/crazy…

ChatGPT原理剖析

文章目录 ChatGPT常见误解1. 罐头回应2. 网络搜寻重组 ChatGPT真正做的事——文字接龙ChatGPT背后的关键技术——预训练(Pre-train)一般机器是怎样学习的? ChatGPT带来的研究问题1. 如何精准提出需求2. 如何更改错误3. 侦测AI生成的物件4. 不…

众人围剿,GPT-5招惹了谁

目录 千人呼吁暂停AI训练代表人物分析反对原因分析信息安全人身安全失业利益 总结 GPT-4 火爆全球,引发了人工智能大浪潮。过去的一个月,OpenAI、微软、谷歌加上百度不断释放王炸,所有人都相信,AI 的就是未来的生产力。俗话说&…

如何在本地搭建Maven环境并整合进IDEA中以及创建web工程?【2023最新版】

编译软件:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 Maven版本:apache-maven-3.6.3 目录 一. 为什么要使用Maven?1.1 获取jar包1.2 添加jar包1.3 使用Maven便于解决jar包冲突及依赖问题 二. 什么是Maven?三. 如何…

Elasticsearch查询文档--常见API篇(附详细代码和案例图文)

前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章将介绍Elasticsearch在Java中的几种API的使用,这块内容不作为面试中的重点。 如果文章有什么需要改进的地方还请大佬不吝赐教👏&#x1f4…

Linux Ansible任务控制(循环判断、处理程序、失败任务)

目录 Ansible的Loop循环 简单的Loop循环 数组列表方式的Loop循环 字典方式的Loop循环 基于外部变量的Loop循环 Ansible的When判断 通过魔法变量、事实变量作为条件 通过剧本执行结果的变量来作为条件 Ansible处理程序 Ansible处理失败任务 处理失败任务ignore_error…

语义分割学习笔记(二)转置卷积

目录 1.转置卷积Transposed Convolution概念 2.转置卷积操作步骤 3.转置卷积参数 4.实战案例 推荐课程:转置卷积(transposed convolution)_哔哩哔哩_bilibili 感谢霹雳吧啦Wz,真乃神人也。 1.转置卷积Transposed Convolutio…

分类预测 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络数据分类预测

分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测 目录 分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现WOA-CNN多特征分类预测,多特…

SimpleCG库安装使用

SimpleCG库是一个简单的Windows图形库,对GDI及窗口和消息机制进行了简单封装,从而达到类似Turbo C图形库的调用方法,目的是为了初学C语言的同学能快速上手图形界面编程。使用对象包括所有初学C语言的同学,尤其是中学生&#xff0c…