Кансістэнцыя персанажаў у AI відэа: як мадэлі навучаюцца памятаць лічы
Тэхнічны аналіз архітэктурных інавацый, якія дазваляюць AI мадэлям генерацыі відэа захоўваць ідэнтычнасць персанажаў у розных планах, ад механізмаў уваги да эмбедынгаў, што захоўваюць ідэнтычнасць.

Адна з найстойкіх праблем у генерацыі AI відэа — гэта захаванне кансістэнцыі персанажа пасля планаў. Спытайце любога кінэматаграфіста: сцэнарый развальваецца ў момант, калі лік вашага гаву непрыкметна змяняецца ў разрэзах. У 2025 годзе мы, нарэшце, бачым, як мадэлі вырашаюць гэтую праблему архітэктурнымі інавацыямі, якія выглядаюць дакладна так жа элегантна, як добра спланаваны маршрут на цяжкімі скалах. Дайце мне пакажаць вам, як сучасныя мадэлі відэа нацяло навучаюцца памятаць лічы.
Вызванне кансістэнцыі
Традыцыйныя мадэлі дыфузіі генерыруюць кожны кадр вяроватнасным ўзорыванням. Гэта ўводзіць варыяцыю — карысна для рознастайнасці, праблематычна для ідэнтычнасці. Пры генерацыі 10-секунднага відэа з частатой 24 кадры ў секунду мадэль прымае 240 паслядоўных рашэнняў, кожнае з якіх дае магчымасць пабіцца.
# Базавая праблема: кожны крок шумаусцы вводзіць варыяцыю
def denoise_step(x_t, model, t):
noise_pred = model(x_t, t)
# Гэтае ўзоранне вводзіць стохастычнасць
x_t_minus_1 = scheduler.step(noise_pred, t, x_t).prev_sample
return x_t_minus_1 # Невялічкія варыяцыі накапляюцца пасля кадраўРанейшыя мадэлі відэа, як Gen-1 і Pika 1.0, палючы боліліся з гэтым. Персанажы змяняліся ў знешнасці, нязначна старэлі ў плланах ці мелі неўстойныя рысы — што практыкуючыя называлі «дрэйфам ідэнтычнасці». Прарыў прыйшоў з разумення кансістэнцыі персанажа не як праблемы апрацоўкі, а як архітэктурнай.
Эмбедынгі, якія захоўваюць ідэнтычнасць: фундамент
Першая вялічыня інавацыя была ўвядзенне дэдыкаваных эмбедынгаў ідэнтычнасці, якія трываюць у працэсе генерацыі. Замест таго, каб палагацца толькі на кандыцыянаванне тэкстам, мадэлі цяпер захоўваюць выразныя токены ідэнтычнасці:
class IdentityEncoder(nn.Module):
def __init__(self, embed_dim=768):
super().__init__()
self.face_encoder = FaceRecognitionBackbone() # Прадтрэніраная мадэль твару
self.projection = nn.Linear(512, embed_dim)
self.identity_bank = nn.Parameter(torch.randn(32, embed_dim))
def encode_identity(self, reference_frame):
# Вычленае рысы ідэнтычнасці з рэферэнсу
face_features = self.face_encoder(reference_frame)
identity_embed = self.projection(face_features)
# Крыжак-увага з вучонымі токенамі ідэнтычнасці
identity_tokens = self.cross_attention(
query=self.identity_bank,
key=identity_embed,
value=identity_embed
)
return identity_tokensГэтыя токены ідэнтычнасці затым уводзяцца ў працэс дыфузіі на кожным этапе шумаусцы, ствараючы тое, што я люблю думаць як «якорныя пункты» — як фіксаваная абарона на маршруце скаланіцтва, да якой вы можаце заўсёды вяртацца, калі ўмовы стаюцца нейпэўнымі.
Крыжак-увага ў разрэзах: навучанне часавай ідэнтычнасці
Другі прарыў быў архітэктурны: мадэлі цяпер выразна абяспечваюць увагу да твары пры прыняцці рашэнняў аб вынешнасці персанажа. Трансфармеры дыфузіі прыродна гэта падтрымліваюць праз іх апрацоўку пространства-часу, але мадэлі, сфакусаваныя на кансістэнцыі, йдуць яшчэ далей.
Ключавая інавацыя: Дэдыкаваныя слаі ўвагі ідэнтычнасці, якія спецыяльна запатрабуюцца да вобластяў твара пасля часавага вымяра:
class IdentityAwareAttention(nn.Module):
def __init__(self, dim, num_heads=8):
super().__init__()
self.spatial_attn = nn.MultiheadAttention(dim, num_heads)
self.temporal_attn = nn.MultiheadAttention(dim, num_heads)
self.identity_attn = nn.MultiheadAttention(dim, num_heads)
def forward(self, x, identity_tokens, face_masks):
# Стандартная пространственная увага ў рамках кадраў
x = self.spatial_attn(x, x, x)[0] + x
# Часавая увага пасля кадраў
x = rearrange(x, '(b t) n d -> (b n) t d', t=num_frames)
x = self.temporal_attn(x, x, x)[0] + x
x = rearrange(x, '(b n) t d -> (b t) n d', n=num_patches)
# Увага, спецыфічная для ідэнтычнасці, выкарыстоўваючы вобласці твара
face_tokens = x * face_masks.unsqueeze(-1)
x = self.identity_attn(
query=x,
key=identity_tokens,
value=identity_tokens
)[0] + x
return xГэты трохслойны механізм ўвагі — пространственны, часавы і спецыфічны для ідэнтычнасці — дазваляе мадэлі прымаць рашэнні аб вынешнасці, адначасова апелюючы як да ўстаноўленай ідэнтычнасці, так і да папярэдніх кадраў.
Параўнанне сучасных мадэльных падыходаў
Вялічы платформы генерацыі відэа рэалізавалі кансістэнцыю персанажа па-рознаму:
| Мадэль | Падыход | Метад кансістэнцыі | Эфектыўнасць |
|---|---|---|---|
| Sora 2 | Пласты простора-часу | Імпліцытна праз доўгі кантэкст | Добра для кароткіх кліпаў |
| Veo 3 | Генерацыя ў асяроддзях | Якорны пункт ключавога кадра | Моцна для руху чалавека |
| Gen-4.5 | Кандыцыянаванне рэферэнсамі | Выразнае ўвядзенне ідэнтычнасці | Лепшая ў класе кансістэнцыя |
| Kling 1.6 | Увага, свядомая твару | Дэдыкаваны отримання твара | Моцна для крупнаплана |
Gen-4.5 кампаніі Runway заслугоўвае спецыяльнай адзнакі тут. Іх падыход спалучае кандыцыянаванне зображаннем рэферэнса з тым, што яны называюць «замкамі ідэнтычнасці» — вучонымі токенамі, якія мадэль трэніруецца захоўваць незалежна ад іншых адпаведных рашэнняў. Гэты выбар архітэктуры верагодна прычыніўся да іх дамінавання ў Video Arena.
Парадыгма рэферэнсавага кадра
Значны зрух у 2025 годзе быў рух да кандыцыянаванай генерацыі рэферэнсам. Замест генерацыі персанажаў чыста ў адпаведнасці з тэкставымі апісаннямі, мадэлі цяпер прымаюць рэферэнсныя выявы, якія ўстанавліваюць кананічную вынешнасць:
class ReferenceConditionedGenerator:
def __init__(self, base_model, identity_encoder):
self.model = base_model
self.identity_encoder = identity_encoder
def generate(self, prompt, reference_images, num_frames=120):
# Кадуй ідэнтычнасць з рэферэнсных выяваў
identity_embeds = []
for ref in reference_images:
identity_embeds.append(self.identity_encoder(ref))
# Аб'єднай множныя рэферэнсы для моцнай ідэнтычнасці
identity_tokens = torch.stack(identity_embeds).mean(dim=0)
# Генеруй з кандыцыяваннем ідэнтычнасцю
video = self.model.generate(
prompt=prompt,
num_frames=num_frames,
cross_attention_kwargs={
"identity_tokens": identity_tokens,
"identity_strength": 0.8 # Балансуе кансістэнцыю і крэатыўнасць
}
)
return videoПараметр identity_strength прадстаўляе важны кампраміс. Калі занадта вышокі, мадэль становіцца жорсткай, неспособнай паказаць натуральную варыяцыю выразаў. Калі занадта нізкі, дрэйф вяртаецца. Знаходжанне оптымальнай кропкі — звычайна каля 0,7-0,85 — гэта частка мастацтва, частка навукі.
Функцыі страт для захавання ідэнтычнасці
Тэставанне гэтых сістэм требуе спецыялізаваных функцый страты, якія выразна штрафуюць дрэйф ідэнтычнасці:
Страта захавання ідэнтычнасці:
L_identity = ||f(G(z, c)) - f(x_ref)||² + λ_temporal * Σ_t ||f(v_t) - f(v_{t+1})||²Дзе f — гэта прадтрэніраваны кодзьёр распазнавання твара, G — генератар, а v_t прадстаўляе генеруемыя кадры. Першы чалан усёё праверыць, чы генеруемыя твары адпавядаюць рэферэнсам; другі штрафуе варыяцыю ад кадра да кадра.
def identity_preservation_loss(generated_video, reference_faces, face_encoder):
# Падабранне ідэнтычнасці кожнага кадра да рэферэнса
frame_losses = []
for frame in generated_video:
face_embed = face_encoder(frame)
ref_embed = face_encoder(reference_faces).mean(dim=0)
frame_losses.append(F.mse_loss(face_embed, ref_embed))
reference_loss = torch.stack(frame_losses).mean()
# Часавая кансістэнцыя паміж суседнімі кадрамі
temporal_losses = []
for i in range(len(generated_video) - 1):
curr_embed = face_encoder(generated_video[i])
next_embed = face_encoder(generated_video[i + 1])
temporal_losses.append(F.mse_loss(curr_embed, next_embed))
temporal_loss = torch.stack(temporal_losses).mean()
return reference_loss + 0.5 * temporal_lossСцэнарыі з некалькімі персанажамі: цяжейшая праблема
Кансістэнцыя адзінага персанажа ў значнай мере вырашана. Сцэнарыі з некалькімі персанажамі — дзе множнамі розныя ідэнтычнасці павінны трываць адначасова — у-прежнему складаныя. Механізмы ўвагі могуць паблытаць ідэнтычнасці, што прыводзіць да ціканога кровапуска рыс паміж персанажамі.
Сучасныя падыходы выкарыстоўваюць асобныя банкі ідэнтычнасцей:
class MultiCharacterIdentityBank:
def __init__(self, max_characters=8, embed_dim=768):
self.banks = nn.ModuleList([
IdentityBank(embed_dim) for _ in range(max_characters)
])
self.character_separator = nn.Parameter(torch.randn(1, embed_dim))
def encode_multiple(self, character_references):
all_tokens = []
for idx, refs in enumerate(character_references):
char_tokens = self.banks[idx].encode(refs)
# Дадай сепаратар, каб прадухіліць пабліцы
char_tokens = torch.cat([char_tokens, self.character_separator])
all_tokens.append(char_tokens)
return torch.cat(all_tokens, dim=0)Токены-сепаратары дзейнічаюць як якарныя кропкі паміж альпіністамі — захоўваючы разнныя ідэнтычнасці нават пры рабоце ў тесным суседстве.
Практычныя выслеадкі для творцаў
Для тых, хто выкарыстоўвае гэтыя інструменты, а не будуе іх, паўінулася некалькі практычных моцаў:
Якасць рэферэнснага выявы важная: Вышокарашчотныя, добра асвеціленыя рэферэнсныя выявы з нейтральнымі выразамі даюць найбольш кансістэнтныя вынікі. Мадэль вучыцца ідэнтычнасці з гэтых якарныхаў, а шум распрацоўваецца.
Множныя рэферэнсы паляпшаюць стойкасць: Прадстаўленне 3-5 рэферэнсных выяваў з розных вуглаў дапамагае мадэлі пабудаваць больш поўнае представленне ідэнтычнасці. Думайце аб гэтым як пра трыянгуляцыю пазіцыі ад некалькіх пунктаў.
Інжынерыя запыту для кансістэнцыі: Выразныя апісанні ідэнтычнасці ў запытах усілююць візуальную кансістэнцыю. «Жанчына 30 гадоў з кароткімі карычневымі валасамі і зеленымі вачамі» прадстаўляе дадатковыя ўстаўкі, якія мадэль можа выкарыстаць.
Дарога наперад
Мы наблізаемся да пасіцы, дзе AI-генеруемае відэа можа захаваць кансістэнцыю персанажа, дастаточную для наратыўнага разказу. Пакідаючыяся вызванні — тонка выраженая кансістэнцыя, генерацыя ў доўгаформаце, але чым больш за 60 секунд, і вяртанне персанажаў — актыўна адрэшаюцца.
У Bonega.ai мы асобліва зацікаўлены ў тым, як гэтыя паляпшэнні кансістэнцыі інтэгруюцца з магчымасцямі пашырэння відэа. Магчымасць пашырыць існуючае нарэзаў видфільм, захоўваючы ідэальную кансістэнцыю персанажа, адкрывае творчыя магчымасці, якія проста не былі магчымыя 12 месяцаў таму.
Матэматычная элегантнасць разгледу ідэнтычнасці як першачергавай архітэктурнай задачы, а не як паштраў carriage, азначае дазрэванне ў тым, як мы думаем аб генерацыі відэа. Як ўстаноўкі добра ўпакаванага высокагарнага лагера перад напісам на вяршыню, гэтыя фундаментальныя паляпшэнні даюць магчымасць для длытэлей, больш амбіцыёзных творчых праціаў, якія ляжаць надалей.
Кансістэнцыя персанажа — гэта не толькі тэхнічны метрык — гэта фундамент візуальнага разказу. І ў 2025 годзе гэты фундамент нарэшце стаў сцвёрдлі дастаткова, каб будаваць на ім.
Гэты артыкул быў карысны?

Alexis
Інжынер ШІІнжынер ШІ з Лазаны, які спалучае глыбіню даследаванняў з практычнымі інавацыямі. Дзеліць час паміж архітэктурамі мадэляў і альпійскімі вяршынямі.
Звязаныя артыкулы
Працягвайце даследаванне з гэтымі звязанымі допісамі

MiniMax Hailuo 02: Бюджэтная ШІ-мадэль Кітая кідае вызаў гігантам
Hailuo 02 паказвае канкурэнтную якасцю відэа па доступнай цане: 10 відэа за цану адзінаго ролика Veo 3. Адкрыйце, чаму гэты кітайскі канкурэнт варты ўвагі.

Kandinsky 5.0: адказ Расіі з адкрытым зыходным кодам на генерацыю відэа з дапамогай AI
Kandinsky 5.0 прыносіць генерацыю 10-секундных відэа на спажывецкія GPU з ліцэнзіяй Apache 2.0. Мы даследуем, як NABLA attention і flow matching робяць гэта магчымым.

Snapchat Animate It: генерацыя AI відэа прыходзіць у сацыяльныя сеткі
Snapchat запусціў Animate It, першы адкрыты інструмент для генерацыі AI відэа, убудаваны ў вялікую сацыяльную платформу. 400 мільёнаў карыстальнікаў штодня, AI відэа больш не толькі для крыейтараў.