ai批量成片中有这样一个算法难题,就是要尽可能把所有素材都使用一遍,而且要尽可能保证不同视频之间的素材要不重复。
背景信息:
视频所需素材需要从素材库中选取,每个素材都有时长、宽高比、品牌车型车系(如有)、标签(每个素材身上都可以有多个标签,例如:外观、黑色车身、室外)。
每个视频脚本中都会有多个分镜,内容示例:“
动态:描述动态的脚本文案。
内饰:描述内饰的脚本文案。
路跑:描绘路跑的脚本文案。
促销:描述促销的脚本文案。”
ai成片产品会从该脚本根据品牌车系车型、宽高比等条件中先把可用的素材筛选出来,按照标签把素材聚合分类;然后进行脚本语音合成,获取时长;这个时候视频的各个分镜需要的时长就确定了。
假设有一批视频生成任务,每个视频脚本的生成数量可以是1到5,会有多个视频脚本(不同视频脚本对应的标签也不一样,标签对应的可用素材数量也不一样),单次视频生成任务最多生产50条视频,那么合成出来的视频重复率和对应数量大概是怎样的呢,有什么算法或者类似场景能描述或解决这个问题么?
AI批量成片的素材选用问题,算法强人看过来~
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
4条回答 默认 最新
阿里嘎多学长 2025-02-24 16:38关注阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
问题解答
你遇到的问题是 AI 批量成片中如何选择素材,使得所有素材都被使用一遍,同时不同视频之间的素材不重复。这个问题可以被转化为一个 combinatorial optimization 问题。
一个可能的解决方案是使用图论中的 clique detection 算法。首先,构建一个图,其中每个节点表示一个素材,每条边表示两个素材之间的相似性(可以根据时长、宽高比、品牌车型车系等特征计算)。然后,使用 clique detection 算法找到图中的最大 clique,这个 clique 中的素材可以被同时使用。
具体实现可以使用 Python 中的 NetworkX 库和 SciPy 库。首先,使用 NetworkX 库构建图,然后使用 SciPy 库中的 clique detection 算法找到最大 clique。
以下是一个简单的示例代码:
import networkx as nx import scipy.optimize as optimize # 构建图 G = nx.Graph() for material in materials: G.add_node(material) for material1 in materials: for material2 in materials: if material1 != material2: G.add_edge(material1, material2, weight=similarity(material1, material2)) # 找到最大 clique cliques = list(nx.find_cliques(G)) max_clique = max(cliques, key=len) # 使用最大 clique 中的素材 used_materials = [] for material in max_clique: used_materials.append(material)这个代码只是一个简单的示例,实际实现中可能需要更多的处理和优化。
解决 无用评论 打赏 举报