Sự Nhất Quán Nhân Vật trong Video AI: Các Mô Hình Đang Học Cách Nhớ Khuôn Mặt
Một cuộc phân tích kỹ thuật sâu sắc về những đổi mới kiến trúc cho phép các mô hình video AI duy trì tính nhất quán của nhân vật giữa các cảnh, từ các cơ chế chú ý đến các phép nhúng bảo toàn danh tính.

Một trong những thách thức kéo dài nhất trong thế hệ video AI đã là duy trì tính nhất quán của nhân vật giữa các cảnh. Hãy hỏi bất kỳ nhà làm phim nào: một câu chuyện sẽ sụp đổ ngay khi khuôn mặt của nhân vật chính của bạn thay đổi tinh tế giữa các cảnh cắt. Vào năm 2025, chúng ta cuối cùng cũng thấy các mô hình giải quyết vấn đề này với những đổi mới kiến trúc vừa thanh lịch như một tuyến đường được lên kế hoạch tốt lên một đỉnh núi khó khăn. Hãy để tôi dẫn bạn khám phá cách các mô hình video hiện đại đang học cách nhớ khuôn mặt.
Thách Thức Của Sự Nhất Quán
Các mô hình khuếch tán truyền thống tạo ra từng khung hình với lấy mẫu xác suất. Điều này giới thiệu sự khác biệt—hữu ích cho sự đa dạng, nhưng gây vấn đề cho danh tính. Khi tạo video dài 10 giây ở tốc độ 24 khung hình/giây, mô hình đưa ra 240 quyết định tuần tự, mỗi quyết định có cơ hội trôi dạt.
# Vấn đề cốt lõi: mỗi bước khử nhiễu giới thiệu sự khác biệt
def denoise_step(x_t, model, t):
noise_pred = model(x_t, t)
# Việc lấy mẫu này giới thiệu tính ngẫu nhiên
x_t_minus_1 = scheduler.step(noise_pred, t, x_t).prev_sample
return x_t_minus_1 # Các biến thể nhỏ tích lũy qua các khung hìnhCác mô hình video sớm như Gen-1 và Pika 1.0 đã gặp khó khăn rõ ràng với điều này. Nhân vật sẽ thay đổi hình thái, tuổi tác tăng lên một chút giữa các cảnh, hoặc phát triển các tính năng không nhất quán—những gì các chuyên gia gọi là "trôi dạt danh tính". Bước đột phá đến từ việc coi sự nhất quán của nhân vật không phải là vấn đề xử lý sau, mà là vấn đề kiến trúc.
Phép Nhúng Bảo Toàn Danh Tính: Nền Tảng
Đổi mới lớn đầu tiên là giới thiệu các phép nhúng danh tính chuyên dụng vẫn tồn tại trong suốt quá trình tạo. Thay vì chỉ dựa vào việc điều chỉnh văn bản, các mô hình hiện nay duy trì các mã thông báo danh tính rõ ràng:
class IdentityEncoder(nn.Module):
def __init__(self, embed_dim=768):
super().__init__()
self.face_encoder = FaceRecognitionBackbone() # Mô hình khuôn mặt được đào tạo trước
self.projection = nn.Linear(512, embed_dim)
self.identity_bank = nn.Parameter(torch.randn(32, embed_dim))
def encode_identity(self, reference_frame):
# Trích xuất các tính năng danh tính từ tham chiếu
face_features = self.face_encoder(reference_frame)
identity_embed = self.projection(face_features)
# Chú ý chéo với các mã thông báo danh tính được học
identity_tokens = self.cross_attention(
query=self.identity_bank,
key=identity_embed,
value=identity_embed
)
return identity_tokensCác mã thông báo danh tính này sau đó được tiêm vào quá trình khuếch tán ở mỗi bước khử nhiễu, tạo ra những gì tôi thích gọi là "điểm neo"—như sự bảo vệ cố định trên tuyến đường leo núi mà bạn luôn có thể quay lại khi các điều kiện trở nên không chắc chắn.
Chú Ý Giữa Các Khung Hình: Học Danh Tính Thời Gian
Bước đột phá thứ hai là kiến trúc: các mô hình hiện nay rõ ràng chú ý đến các khung hình khi đưa ra quyết định về hình thái của nhân vật. Diffusion transformers tự nhiên hỗ trợ điều này thông qua xử lý các bản vá không gian thời gian, nhưng các mô hình tập trung vào tính nhất quán đi xa hơn.
Đổi Mới Chính: Các lớp chú ý danh tính chuyên dụng cụ thể chú ý đến các vùng khuôn mặt trên thứ nguyên thời gian:
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):
# Chú ý không gian tiêu chuẩn trong các khung hình
x = self.spatial_attn(x, x, x)[0] + x
# Chú ý thời gian giữa các khung hình
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)
# Chú ý cụ thể danh tính sử dụng các vùng khuôn mặt
face_tokens = x * face_masks.unsqueeze(-1)
x = self.identity_attn(
query=x,
key=identity_tokens,
value=identity_tokens
)[0] + x
return xCơ chế chú ý ba chiều này—không gian, thời gian, và cụ thể danh tính—cho phép mô hình đưa ra quyết định hình thái trong khi rõ ràng tham chiếu cả danh tính được thiết lập và các khung hình trước đó.
Các Cách Tiếp Cận Mô Hình Hiện Tại So Sánh
Các nền tảng tạo video lớn đã thực hiện tính nhất quán của nhân vật khác nhau:
| Mô Hình | Cách Tiếp Cận | Phương Pháp Nhất Quán | Hiệu Quả |
|---|---|---|---|
| Sora 2 | Bản vá không gian thời gian | Ngầm thông qua ngữ cảnh dài | Tốt cho các đoạn ngắn |
| Veo 3 | Tạo đa giai đoạn | Liên kết khung hình chính | Mạnh cho chuyển động con người |
| Gen-4.5 | Điều chỉnh tham chiếu | Tiêm danh tính rõ ràng | Tính nhất quán tốt nhất |
| Kling 1.6 | Chú ý nhận thức về khuôn mặt | Theo dõi khuôn mặt chuyên dụng | Mạnh cho ảnh chụp cận cảnh |
Runway's Gen-4.5 xứng đáng được nhắc đặc biệt ở đây. Cách tiếp cận của họ kết hợp điều chỉnh hình ảnh tham chiếu với những gì họ gọi là "khóa danh tính"—các mã thông báo được học mà mô hình được đào tạo để bảo tồn bất kể các quyết định tạo hình khác. Sự lựa chọn kiến trúc này có khả năng góp phần vào sự thống trị Đấu trường Video của họ.
Mô Hình Khung Hình Tham Chiếu
Một sự thay đổi đáng kể vào năm 2025 đã là sự chuyển dịch hướng tới tạo được điều chỉnh tham chiếu. Thay vì tạo nhân vật thuần túy từ mô tả văn bản, các mô hình hiện nay chấp nhận hình ảnh tham chiếu giúp thiết lập hình thái chính tắc:
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):
# Mã hóa danh tính từ hình ảnh tham chiếu
identity_embeds = []
for ref in reference_images:
identity_embeds.append(self.identity_encoder(ref))
# Gộp nhiều tham chiếu để có danh tính mạnh mẽ
identity_tokens = torch.stack(identity_embeds).mean(dim=0)
# Tạo với điều chỉnh danh tính
video = self.model.generate(
prompt=prompt,
num_frames=num_frames,
cross_attention_kwargs={
"identity_tokens": identity_tokens,
"identity_strength": 0.8 # Cân bằng tính nhất quán với sự sáng tạo
}
)
return videoTham số identity_strength đại diện cho một sự cân bằng quan trọng. Quá cao, và mô hình trở nên cứng nhắc, không thể thể hiện sự thay đổi biểu cảm tự nhiên. Quá thấp, và trôi dạt trở lại. Tìm thấy điểm ngọt—thường khoảng 0,7-0,85—là một phần nghệ thuật, một phần khoa học.
Các Hàm Mất Mát Để Bảo Toàn Danh Tính
Đào tạo các hệ thống này đòi hỏi các hàm mất mát chuyên biệt rõ ràng penalizing trôi dạt danh tính:
Mất Mát Bảo Toàn Danh Tính:
L_identity = ||f(G(z, c)) - f(x_ref)||² + λ_temporal * Σ_t ||f(v_t) - f(v_{t+1})||²Khi f là một bộ mã hóa nhận dạng khuôn mặt được đào tạo trước, G là bộ tạo, và v_t đại diện cho các khung hình được tạo. Thuật ngữ đầu tiên đảm bảo các khuôn mặt được tạo khớp với tham chiếu; thứ hai penalizes biến thể khung hình sang khung hình.
def identity_preservation_loss(generated_video, reference_faces, face_encoder):
# Khuôn hình theo khung hình khớp với tham chiếu
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()
# Tính nhất quán thời gian giữa các khung hình liền kề
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_lossCác Tình Huống Đa Nhân Vật: Vấn Đề Khó Hơn
Tính nhất quán của một nhân vật duy nhất phần lớn đã được giải quyết. Các tình huống đa nhân vật—nơi phải duy trì nhiều danh tính riêng biệt đồng thời—vẫn là một thách thức. Các cơ chế chú ý có thể nhầm lẫn danh tính, dẫn đến rò rỉ tính năng giữa các nhân vật.
Các cách tiếp cận hiện tại sử dụng các ngân hàng danh tính riêng biệt:
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)
# Thêm bộ phân tách để ngăn chặn nhầm lẫn
char_tokens = torch.cat([char_tokens, self.character_separator])
all_tokens.append(char_tokens)
return torch.cat(all_tokens, dim=0)Các mã thông báo bộ phân tách hoạt động giống như các điểm neo giữa những người leo núi—duy trì các danh tính riêng biệt ngay cả khi hoạt động trong sát gần.
Các Hàm Ý Thực Tế Cho Các Nhà Sáng Tạo
Đối với những người sử dụng các công cụ này thay vì xây dựng chúng, một số mẫu thực tế đã xuất hiện:
Chất Lượng Hình Ảnh Tham Chiếu Quan Trọng: Hình ảnh tham chiếu độ phân giải cao, được chiếu sáng tốt với các biểu cảm trung lập tạo ra kết quả nhất quán hơn. Mô hình học danh tính từ các điểm neo này, và nhiễu lan tỏa.
Nhiều Tham Chiếu Cải Thiện Độ Mạnh: Cung cấp 3-5 hình ảnh tham chiếu từ các góc độ khác nhau giúp mô hình xây dựng một biểu diễn danh tính hoàn chỉnh hơn. Hãy coi nó như việc tam giác hóa một vị trí từ nhiều điểm.
Kỹ Năng Nhắc Nhở Để Đạt Tính Nhất Quán: Mô tả danh tính rõ ràng trong các lời nhắc củng cố tính nhất quán trực quan. "Một phụ nữ 30 tuổi với mái tóc nâu ngắn và đôi mắt xanh lá cây" cung cấp các ràng buộc bổ sung mà mô hình có thể tận dụng.
Con Đường Phía Trước
Chúng tôi đang tiếp cận một ngưỡng nơi video tạo AI có thể duy trì tính nhất quán của nhân vật đủ để kể chuyện. Các thách thức còn lại—tính nhất quán biểu cảm tinh tế, tạo dài hạn vượt quá 60 giây, và tương tác đa nhân vật—đang được giải quyết tích cực.
Tại Bonega.ai, chúng tôi đặc biệt quan tâm đến cách những cải tiến tính nhất quán này được tích hợp với khả năng mở rộng video. Khả năng mở rộng cảnh quay hiện có trong khi duy trì tính nhất quán nhân vật hoàn hảo mở ra những khả năng sáng tạo đơn giản là không thể thi hành 12 tháng trước.
Sự tao nhã toán học của việc coi danh tính như một mối quan tâm kiến trúc hạng nhất, thay vì một sự sửa chữa sau thực tế, đánh dấu một sự trưởng thành trong cách chúng tôi suy nghĩ về tạo video. Giống như thiết lập một trại cao độ tốt trước một lần đẩy đỉnh, những cải tiến nền tảng này cho phép những hành trình sáng tạo dài hơn, phong phú hơn nằm trước mắt.
Tính nhất quán của nhân vật không chỉ là một số liệu kỹ thuật—nó là nền tảng của kể chuyện trực quan. Và vào năm 2025, nền tảng đó cuối cùng đã trở nên vững chắc đủ để xây dựng.
Bài viết này có hữu ích không?

Alexis
Kỹ sư AIKỹ sư AI đến từ Lausanne, kết hợp chiều sâu nghiên cứu với đổi mới thực tiễn. Chia thời gian giữa kiến trúc mô hình và những đỉnh núi Alps.
Bài viết liên quan
Tiếp tục khám phá với những bài viết liên quan

Diffusion Transformers: Kiến Trúc Cách Mạng Hóa Tạo Video Năm 2025
Khám phá sâu về cách sự hội tụ của các mô hình khuếch tán và transformer đã tạo ra một sự thay đổi mô hình trong tạo video AI, khám phá các đổi mới kỹ thuật đằng sau Sora, Veo 3 và các mô hình đột phá khác.

Pika 2.5: Đại chúng hóa Video AI thông qua Tốc độ, Giá cả và Công cụ Sáng tạo
Pika Labs phát hành phiên bản 2.5, kết hợp tốc độ tạo nhanh hơn, vật lý nâng cao và các công cụ sáng tạo như Pikaframes và Pikaffects để làm cho video AI có thể tiếp cận được với mọi người.

Hướng Dẫn Toàn Diện về Kỹ Thuật Viết Prompt cho Video AI năm 2025
Nắm vững nghệ thuật tạo prompt để sản xuất những video AI tuyệt đẹp. Tìm hiểu framework sáu tầng, thuật ngữ điện ảnh, và các kỹ thuật tối ưu cho từng nền tảng.