微信扫码
添加专属顾问
我要投稿
GPT-4o引领AI图像生成新纪元,企业如何把握先机? 核心内容: 1. GPT-4o图像生成功能的革命性突破 2. AI对广告和电商行业的降维打击 3. 模型即产品趋势及企业应对策略
你敢相信吗,以上内容,是AI做的,来自不久前发布的GPT4o!
3月26日,OpenAI正式推出GPT-4o原生图像生成功能,并默认其成为ChatGPT和Sora平台的默认图像引擎。
相比市面上的大部分AI生图软件,GPT-4o在画面一致性有了质的突破,此外还支持多轮对话来增删画面元素、调整图片的比例、大小、透明度,或者将2D图片改成3D效果等专业操作。
然后一夜之间,马斯克与扎克伯格的约架照,特朗普与普京的接吻照,吉卜力风格的大头照,AI漫画,一夜之间全球满天飞。
这对很多企业,尤其是广告行业、电商行业来说,是一场精准的降维打击。过去需要一个设计、一个动效师花费一天才能完成的事情,AI只要五分钟就能搞定,而且还能批量产出不同风格的内容。
但4o的影响仅止于此吗?深度体验几天之后,我们发现,这或许是第一次,AI有能力取代人类设计师的时刻;
从官方发布的应用商店GPTs到主打直接生成深度内容的DeepResearch,从对话式生图的GPT-4o到对话式生成视频的Sora……
越来越多的现象正表明,模型即产品正成为大趋势。
更通俗直白来说,大部分基于公域数据,做大模型套壳的产品,都将批量被淘汰。
而私域数据+通用大模型,或许会是大部分企业在大模型时代生存的最优解。
当前,基于对话交互生图的功能,字节的SeedEdit、Google的Gemini 2.0都曾做过展示,但是真正做到低门槛、高度一致性,且有良好审美的,GPT-4o仅此一家。
所谓低门槛:只要有一个GPT账号,就能拥有免费体验额度,出图只需要对着AI说一句话。
所谓高一致性:大模型不但可以单张出图,还能基于已有图片进行微调修改,画面人物、元素保持高度一致。另外,GPT-4o 能处理多达 10-20 个不同物体的复杂指令,效率之高,让人啧舌。
关于如何做到以上进步,OpenAI只在其安全治理文档中,一笔带过的提出:「不同于基于扩散模型的 DALL・E,4o 图像生成是一个嵌入在 ChatGPT 中的自回归模型。」
这里我们对扩散模型和自回归模型做一个简单的科普:
过去业内最流行的AI生图模型Stable Diffusion 就是典型的扩散模型,其原理大致是先将图像逐渐添加噪声使其模糊,再通过去噪过程逐步恢复图像。而自回归模型则是按照一定的顺序(如从左到右、从上到下)逐像素或逐token地生成图像。
两者的图像质量暂无明显的高下之分,但前者经常需要我们给出非常精准、冗长的提示词;而后者,我们只需给出一句,我想要梵高风格的XX,我想要他毕加索风格的XX就能直接给出结果,门槛低到识字就能做(比如本文头图就是这么生成的)。
相应的,层出不穷的提示词教程,也要变得不再必要。
在这个背景下,一个讨论出现了,AI原生是否存在?
一个肯定的结论是,基于公开数据给大模型套壳,然后做提示词、工作流封装的产品,都会在短暂的解决用户需求之后,被模型本身的迭代所取代。
而那些真正存活的产品,将会是那些+AI的产业。更直白来说,就是有私有数据,然后数据结合AI做产品的。
那么怎么样才是将私有数据,与4o结合的最佳姿势?接下来,我们以向量数据库Milvus来展示具体的部署过程:
背景:
有一天,我灵机一动,想把我家边牧可乐的历史罪行全都画成漫画,但问题是,我要怎么从几万张工作截图、外出旅行、美食打卡的照片中,找到罪魁祸首的照片呢?
于是,我选择把所有照片导入Milvus,以图搜图,精准找出它的犯罪记录。
以下是操作的全过程:
部署资源参考:
(1)依赖和环境
pip install pymilvus --upgradepip install torch numpy scikit-learn pillow
(2)准备数据
把历史的三万张照片作为数据集
如果你没有合适的数据集,可以从Milvus上下载数据集,并解压
!wget https://github.com/milvus-io/pymilvus-assets/releases/download/imagedata/reverse_image_search.zip!unzip -q -o reverse_image_search.zip
(3)定义特征提取器
接下来,我们需要定义一个特征提取器,该模块将使用timm库的ResNet-50模型从图像中提取嵌入向量。
import torchfrom PIL import Imageimport timmfrom sklearn.preprocessing import normalizefrom timm.data import resolve_data_configfrom timm.data.transforms_factory import create_transformclass FeatureExtractor: def __init__(self, modelname): # Load the pre-trained model self.model = timm.create_model( modelname, pretrained=True, num_classes=0, global_pool="avg" ) self.model.eval() # Get the input size required by the model self.input_size = self.model.default_cfg["input_size"] config = resolve_data_config({}, model=modelname) # Get the preprocessing function provided by TIMM for the model self.preprocess = create_transform(**config) def __call__(self, imagepath): # Preprocess the input image input_image = Image.open(imagepath).convert("RGB") # Convert to RGB if needed input_image = self.preprocess(input_image) # Convert the image to a PyTorch tensor and add a batch dimension input_tensor = input_image.unsqueeze(0) # Perform inference with torch.no_grad(): output = self.model(input_tensor) # Extract the feature vector feature_vector = output.squeeze().numpy() return normalize(feature_vector.reshape(1, -1), norm="l2").flatten()
(4) 创建一个Milvus集合
接下来我们需要创建一个Milvus的集合来存储这些图片的embedding向量
from pymilvus import MilvusClientclient = MilvusClient(uri="example.db")if client.has_collection(collection_name="image_embeddings"): client.drop_collection(collection_name="image_embeddings")client.create_collection( collection_name="image_embeddings", vector_field_name="vector", dimension=2048, auto_id=True, enable_dynamic_field=True, metric_type="COSINE",)关于MilvusClient的参数设置:
将URI设置为本地文件(例如./milvus.db)是最便捷的方法,因为它会自动使用Milvus Lite将所有数据存储在该文件中。
如果你有大规模数据,可以在Docker或Kubernetes上搭建性能更强的Milvus服务器。在这种情况下,请使用服务器的URI(例如http://localhost:19530)作为你的URI。
如果你想使用Zilliz Cloud(Milvus的全托管云服务),请调整URI和令牌,它们分别对应Zilliz Cloud中的公共端点(Public Endpoint)和API密钥(Api key)。
(5) 将这些图片的embedding插入Milvus
我们将使用ResNet50模型提取每个图像的embedding,并将训练集中的图像插入到Milvus中。
import osextractor = FeatureExtractor("resnet50")root = "./train" #数据集地址insert = Trueif insert is True: for dirpath, foldername, filenames in os.walk(root): for filename in filenames: if filename.endswith(".jpeg"): filepath = dirpath + "/" + filename image_embedding = extractor(filepath) client.insert( "image_embeddings", {"vector": image_embedding, "filename": filepath}, )(6) 现在我们可以开始“以图搜图”,比如我用的就是我家边牧的照片,然后检索出相册里更多它的照片,
from IPython.display import displayquery_image = "./search-image.jpeg" #要检索的图片results = client.search( "image_embeddings", data=[extractor(query_image)], output_fields=["filename"], search_params={"metric_type": "COSINE"}, limit=5,#设置top k )images = []for result in results: for hit in result[:10]: filename = hit["entity"]["filename"] img = Image.open(filename) img = img.resize((150, 150)) images.append(img)width = 150 * 5height = 150 * 2concatenated_image = Image.new("RGB", (width, height))for idx, img in enumerate(images): x = idx % 5 y = idx // 5 concatenated_image.paste(img, (x * 150, y * 150))display("query")display(Image.open(query_image).resize((150, 150)))display("results")display(concatenated_image)召回的图
提示词:帮我生成一个四格彩色的搞笑漫画,还原一只边牧啃坏鼠标,被女主人发现,很尴尬的作案现场
提示词:请画一个漫画,内容是这只边牧穿上洛丽塔衣服
请以这只狗为原型,画这只狗去上哈利波特魔法学院的漫画图
当然,整个过程中还是翻了好几次的,这是我的一些使用小心得:
不同于扩散模型,使用4o生成图片,我们只需要给出简短且明确的prompt。
尽量避免让4o直接生成中文内容,虽然通过大量标注AI结合人类反馈强化学习(RLHF),4o已经最大限度避免了人物六根手指,或者画面油腻的问题,但汉字内容还是错漏不少。我们可以让AI直接生成英文内容,然后通过微信、飞书等工具的图片翻译功能转成中文即可。
结合Sora生成视频方面,目前还是不要报太高期望,AI生成复杂动作,连贯剧情的能力,还是稍有欠缺。
以AI绘图为出发点,我们对OpenAI的近半年的重磅发布做一个梳理,可以发现,无论是主打应用商店功能的GPTs还是直接生成报告的DeepResearch,或是文生图的4o、视频生成的Sora,大模型已经越来越从幕后走到台前,从一个未成熟的技术,变成半成熟的产品。
而伴随着4o为代表的扩散模型出图逐渐被更多人接受,多数基于Stable Diffusion 搭建的工作流、智能体就进入了淘汰倒计时。
但大模型始终无法替代的,是私有数据的价值与人类洞察。比如AI不会彻底替代广告公司,但是通过Milvus向量数据库结合GPT系列,广告公司可以快速结合历史爆款素材生成新的创意,电商平台可以根据购物推荐结果为用户生成定制化的服装与设计,学术平台可以检索历史成果一键生成科研配图……
模型即产品的时代这次真的来了,而数据金矿的挖掘竞赛,才刚刚开启。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-08-13
2024-06-13
2024-08-21
2024-09-23
2024-07-31
2024-05-28
2024-08-04
2024-04-26
2024-07-09
2024-09-17
2025-04-01
2025-04-01
2025-04-01
2025-03-30
2025-03-30
2025-03-28
2025-03-27
2025-03-27