描述
从批处理中随机选取图像节点(类 RandomImageFromBatch)从图像或遮罩批处理中按选定索引范围选取帧序列。当 randomness = 0 时,选取帧在范围内均匀分布;当 randomness = 1 时,为不放回均匀随机;中间值则线性混合。输出始终按批处理索引排序。负索引从末尾开始计数(-1 表示最后一帧)。
此节点适用于从更大的批处理中生成可控、可复现的帧子集——例如,创建稀疏的跳帧序列,或选择具有最小或最大间隔的随机样本。
输入
| 名称 | 类型 | 默认值 | 最小值 | 最大值 | 工具提示/行为 |
|---|---|---|---|---|---|
input | MATCHTYPE | – | – | – | 待采样的图像或遮罩批处理。 |
start_index | INT | 0 | -4096 | 4096 | 采样范围的包含起始值。负值从末尾开始计数(例如,-1 表示最后一帧)。 |
end_index | INT | -1 | -4096 | 4096 | 采样范围的包含结束值。-1 表示最后一帧。 |
num_frames | INT | 1 | 1 | 4096 | 从范围内选取的帧数。必须 ≤ 范围内的帧数。 |
randomness | FLOAT | 1 | 0.0 | 1.0 | 在均匀分布(0)与不放回均匀随机(1)之间混合。中间值产生抖动均匀间距。 |
min_distance | INT | 0 | 0 | 4096 | 连续选取帧之间的最小间隔(帧数)。0 表示无最小限制。选取帧会被向前推动以满足此约束;后续选取可能被限制到范围的末尾。 |
max_distance | INT | 0 | 0 | 4096 | 连续选取帧之间的最大间隔(帧数)。0 表示无最大限制。选取帧会被向内拉以满足此约束,可能导致序列向起始端压缩。 |
seed | INT | 0 | 0 | 2^64-1 | 用于可复现采样的随机种子。当 randomness 为 0 时忽略。 |
输出
| 类型 | 描述 |
|---|---|
| MATCHTYPE | 按批处理索引排序的已选帧(与输入类型相同)。 |
使用说明
- 范围定义:
start_index和end_index定义一个包含范围。如果start_index>end_index,则范围为空且不会选择任何帧(输出为一个空批处理)。使用负索引可以方便地引用最后几帧(例如-1表示最后一帧)。 - 帧数:
num_frames不得超过范围内的帧数,否则行为未定义(节点可能会限制或报错;请参考运行时消息)。 - 随机性行为:
0.0→ 帧以等间隔(线性间距)在范围内选择。第一帧在起始处,最后一帧在结束处。1.0→ 每次选取为不放回均匀随机(洗牌)。在给定seed下结果可复现。0.5→ 帧放置于均匀间隔位置,然后每个帧按与间距成比例的随机偏移量抖动(混合)。
- 距离约束(
min_distance、max_distance):- 这些约束在初始选择(无论是随机还是均匀分布)之后应用。如果约束与
num_frames和范围长度冲突,节点会尽可能调整选取帧,并限制在范围边界内。 min_distance> 0 确保选取帧分散开。节点将后续帧向前推;最后一帧可能晚于原始end_index?实际上,描述中提到“选取帧会被向前推动以满足此约束;后续选取可能限制到范围末尾”——意味着选取不会超出范围。max_distance> 0 强制选取帧紧密靠近。节点将帧向起始端拉回;如果范围太短,间隔可能会进一步缩小。- 两者都设为
0(默认)则禁用距离约束。
- 这些约束在初始选择(无论是随机还是均匀分布)之后应用。如果约束与
- 种子:
seed仅在randomness > 0时使用。要在多次运行中获得确定性结果,请保持相同种子和随机性值。 - 输出排序:无论选取方式是随机还是顺序,返回的批处理始终按帧索引排序,因此后续节点接收到的帧按顺序排列。
示例用例
- 创建低帧率预览:设置
randomness=0,并根据范围长度适当设置num_frames,每 N 帧选取一帧。 - 为训练随机采样帧:设置
randomness=1,较大的num_frames,并可选择min_distance以避免选择过于相似的帧。 - 均匀分布加抖动:设置
randomness=0.3打破生硬的固定规律,同时保持大致一致的节奏。
评论
使用 GitHub 登录后即可参与讨论。