建具備物理規(guī)律外推能力的視頻世界模型:從對象中心表示到工程實踐)
在計算機(jī)視覺領(lǐng)域構(gòu)建能夠理解和預(yù)測物理世界的模型一直是核心挑戰(zhàn)之一。我們常常遇到這樣的困境一個在訓(xùn)練集上表現(xiàn)優(yōu)異的視頻預(yù)測模型一旦遇到訓(xùn)練時未曾見過的物體、場景或運(yùn)動模式其預(yù)測結(jié)果就可能變得荒謬比如物體穿墻而過、液體違反重力規(guī)律。這背后的根本原因在于模型可能只是記住了數(shù)據(jù)中的統(tǒng)計模式而非真正學(xué)會了支配世界的物理規(guī)律。本文將深入解讀一篇探討“讓模型真的學(xué)會物理規(guī)律”的前沿AI論文該研究旨在構(gòu)建一個能夠外推到未見unseen場景的視頻世界模型。我們將從核心概念、模型架構(gòu)、代碼實現(xiàn)思路到工程實踐意義進(jìn)行系統(tǒng)拆解無論你是計算機(jī)視覺的研究者還是希望將物理先驗融入AI應(yīng)用的工程師都能從中獲得啟發(fā)和可直接參考的實戰(zhàn)方案。1. 背景與核心概念為什么需要“學(xué)會物理”的模型1.1 視頻預(yù)測模型的現(xiàn)狀與局限視頻預(yù)測即給定若干幀歷史圖像預(yù)測未來若干幀的內(nèi)容是視頻理解、自動駕駛、機(jī)器人規(guī)劃等任務(wù)的基礎(chǔ)。傳統(tǒng)方法如ConvLSTM、PredNet以及近年流行的基于GAN或擴(kuò)散模型的視頻生成器在標(biāo)準(zhǔn)數(shù)據(jù)集如KTH, UCF-101上取得了令人印象深刻的視覺效果。然而這些模型存在一個共性缺陷泛化能力弱尤其是對分布外Out-of-Distribution, OOD數(shù)據(jù)的泛化。例如一個用臺球碰撞視頻訓(xùn)練出的模型可能無法正確預(yù)測兩個形狀、質(zhì)量完全不同的新物體的碰撞結(jié)果。模型學(xué)到的往往是像素層面的紋理關(guān)聯(lián)和短期運(yùn)動模式而非物體屬性質(zhì)量、彈性和物理定律動量守恒、能量守恒。1.2 物理規(guī)律與外推Extrapolation能力物理規(guī)律如牛頓力學(xué)、光學(xué)原理是普適的、可解釋的。一個真正理解了物理的AI模型應(yīng)該具備外推能力即將其學(xué)到的規(guī)律應(yīng)用到訓(xùn)練數(shù)據(jù)分布之外的、全新的場景和物體上。內(nèi)插Interpolation在訓(xùn)練數(shù)據(jù)覆蓋的范圍內(nèi)進(jìn)行預(yù)測。例如預(yù)測一個已知物體在已知場景中以未見過的中間速度運(yùn)動。外推Extrapolation對訓(xùn)練數(shù)據(jù)范圍之外的情況進(jìn)行預(yù)測。例如預(yù)測一個全新形狀的物體與環(huán)境的交互或者物體數(shù)量、物理屬性如彈性系數(shù)遠(yuǎn)超訓(xùn)練集范圍時的動態(tài)。當(dāng)前大多數(shù)模型擅長內(nèi)插但外推能力嚴(yán)重不足。本文解讀的研究其核心目標(biāo)就是提升模型的外推能力使其預(yù)測行為更符合物理常識。1.3 世界模型World Model與歸納偏置世界模型的概念來源于控制論和認(rèn)知科學(xué)指智能體對其所處環(huán)境內(nèi)部運(yùn)行機(jī)制的一種內(nèi)部表示。在深度學(xué)習(xí)中世界模型通常是一個能夠模擬環(huán)境動態(tài)的生成模型。通過在世界模型中“想象”未來智能體可以進(jìn)行規(guī)劃而不必在真實世界中試錯。要讓世界模型學(xué)會物理關(guān)鍵在于為其注入正確的歸納偏置。歸納偏置是學(xué)習(xí)算法中內(nèi)置的、用于引導(dǎo)模型優(yōu)先學(xué)習(xí)某種假設(shè)的偏好。例如卷積神經(jīng)網(wǎng)絡(luò)CNN的偏置是“平移不變性”。對于物理世界我們需要引入如物體中心性、持續(xù)性、能量守恒等偏置。這篇論文的核心貢獻(xiàn)之一就是通過巧妙的模型設(shè)計將這類物理歸納偏置自然地嵌入到學(xué)習(xí)過程中。2. 核心方法拆解模型如何學(xué)習(xí)并外推物理規(guī)律論文提出的模型架構(gòu)通常是一個基于對象中心Object-Centric表示的生成模型。下面我們分解其關(guān)鍵組件和設(shè)計原理。2.1 對象中心表示學(xué)習(xí)像素空間過于底層且冗余不利于學(xué)習(xí)高級概念如物體和物理。因此第一步是將視頻幀編碼為一組對象槽。# 偽代碼示意對象槽編碼器 import torch import torch.nn as nn import torch.nn.functional as F class SlotAttentionEncoder(nn.Module): 將圖像編碼為K個對象槽slot的模塊。 每個槽可以理解為對圖像中一個潛在物體或背景一部分的抽象表示。 def __init__(self, num_slots, slot_dim, encoder_hidden_dim): super().__init__() self.num_slots num_slots self.slot_dim slot_dim # 一個CNN主干用于提取圖像特征圖 self.cnn_backbone SimpleCNN() # 將特征圖投影為鍵Key和值Value self.proj_k nn.Linear(encoder_hidden_dim, slot_dim) self.proj_v nn.Linear(encoder_hidden_dim, slot_dim) # 可學(xué)習(xí)的初始槽向量 self.slots_mu nn.Parameter(torch.randn(1, num_slots, slot_dim)) self.slots_log_sigma nn.Parameter(torch.zeros(1, num_slots, slot_dim)) nn.init.xavier_uniform_(self.slots_mu) nn.init.xavier_uniform_(self.slots_log_sigma) def forward(self, images): # images: [B, C, H, W] batch_size images.shape[0] # 1. 提取特征 feat_map self.cnn_backbone(images) # [B, H*W, hidden_dim] # 2. 計算Keys和Values keys self.proj_k(feat_map) # [B, N, slot_dim] values self.proj_v(feat_map) # [B, N, slot_dim] # 3. 初始化槽Slot Attention迭代過程此處簡化為從可學(xué)習(xí)參數(shù)初始化 slots self.slots_mu torch.exp(self.slots_log_sigma) * torch.randn_like(self.slots_mu) slots slots.repeat(batch_size, 1, 1) # [B, num_slots, slot_dim] # 4. 迭代優(yōu)化槽表示簡化版省略多輪Attention迭代 # 核心槽作為Query與圖像的Key做Attention加權(quán)聚合Value來更新自己。 attn_logits torch.einsum(bnd,bmd-bnm, slots, keys) # [B, num_slots, N] attn F.softmax(attn_logits, dim-1) # 每個槽關(guān)注圖像的不同區(qū)域 updates torch.einsum(bnm,bmd-bnd, attn, values) slots slots updates # 通常這里會進(jìn)行歸一化并迭代多次 return slots # [B, num_slots, slot_dim]為什么有效對象槽將場景分解為獨(dú)立的實體這與我們對物理世界的認(rèn)知世界由相互作用的物體構(gòu)成相符。這種表示天然支持組合性新場景可以被看作是已知物體的新組合從而為外推提供了基礎(chǔ)。2.2 物理動力學(xué)模型在獲得每一幀的對象槽表示后模型需要學(xué)習(xí)一個動力學(xué)函數(shù)用于根據(jù)當(dāng)前時刻的槽狀態(tài)預(yù)測下一時刻的槽狀態(tài)。class PhysicalDynamicsModel(nn.Module): 物理動力學(xué)模型。在對象槽的潛在空間中模擬物理交互。 def __init__(self, slot_dim, hidden_dim): super().__init__() # 一個圖神經(jīng)網(wǎng)絡(luò)GNN是自然的選擇因為物體間存在交互。 # 這里用一個簡化的MLP來模擬物體自身和交互的動態(tài)。 self.dynamics_net nn.Sequential( nn.Linear(slot_dim * 2, hidden_dim), # 輸入當(dāng)前槽狀態(tài) 交互上下文 nn.ReLU(), nn.Linear(hidden_dim, slot_dim) # 輸出槽狀態(tài)的變化量 delta ) def forward(self, current_slots): current_slots: [B, num_slots, slot_dim] 返回下一時刻的槽狀態(tài)預(yù)測 [B, num_slots, slot_dim] batch_size, num_slots, slot_dim current_slots.shape next_slots [] for i in range(num_slots): # 對于第i個槽計算它與其他所有槽的交互 slot_i current_slots[:, i, :] # [B, slot_dim] # 簡單聚合其他槽的信息作為上下文實踐中可用更復(fù)雜的Attention context current_slots.mean(dim1) # [B, slot_dim] 全局平均池化作為簡化交互 # 將自身狀態(tài)和交互上下文拼接 combined torch.cat([slot_i, context], dim-1) # [B, slot_dim*2] # 預(yù)測狀態(tài)變化 delta self.dynamics_net(combined) # [B, slot_dim] next_slot_i slot_i delta # 歐拉積分簡化 next_slots.append(next_slot_i) next_slots torch.stack(next_slots, dim1) # [B, num_slots, slot_dim] return next_slots關(guān)鍵設(shè)計動力學(xué)模型通常在潛在空間對象槽空間而非像素空間運(yùn)作。這迫使模型學(xué)習(xí)物體狀態(tài)的抽象演變規(guī)律如位置、速度的更新這些規(guī)律更有可能對應(yīng)真實的物理量從而更容易泛化。模型結(jié)構(gòu)如GNN本身也嵌入了“物體間相互作用”的歸納偏置。2.3 解碼器與訓(xùn)練目標(biāo)動力學(xué)模型預(yù)測出未來時刻的對象槽后需要一個解碼器將這些槽轉(zhuǎn)換回像素空間生成可視化的未來幀。class SlotDecoder(nn.Module): 將對象槽解碼為圖像。 每個槽獨(dú)立生成一個圖像掩膜和特征然后通過alpha合成得到最終圖像。 def __init__(self, slot_dim, output_res): super().__init__() self.slot_to_feature nn.Linear(slot_dim, 256) self.slot_to_mask nn.Sequential( nn.Linear(slot_dim, 64), nn.ReLU(), nn.Linear(64, output_res[0]*output_res[1]) # 生成與圖像空間位置對應(yīng)的logits ) # 一個小的CNN用于將特征上采樣為圖像patch self.feature_to_rgb SimpleUpsampleCNN() def forward(self, slots): # slots: [B, num_slots, slot_dim] batch_size, num_slots, _ slots.shape H, W output_res # 每個槽生成特征和空間注意力掩膜alpha mask features self.slot_to_feature(slots) # [B, num_slots, 256] mask_logits self.slot_to_mask(slots) # [B, num_slots, H*W] masks F.softmax(mask_logits, dim1) # 沿slot維度歸一化使得所有槽的mask和為1 masks masks.view(batch_size, num_slots, H, W) # 每個槽的特征生成RGB圖像 slot_images [] for s in range(num_slots): feat features[:, s, :].unsqueeze(1).unsqueeze(1) # [B, 1, 1, 256] rgb self.feature_to_rgb(feat) # [B, 3, H, W] slot_images.append(rgb) slot_images torch.stack(slot_images, dim1) # [B, num_slots, 3, H, W] # Alpha合成加權(quán)求和 recon_images (slot_images * masks.unsqueeze(2)).sum(dim1) # [B, 3, H, W] return recon_images, masks訓(xùn)練目標(biāo)通常是多任務(wù)組合重建損失對于輸入的歷史幀編碼-解碼后的重建圖像應(yīng)與原圖盡可能接近如MSE或感知損失。預(yù)測損失對于未來的真實幀由模型預(yù)測的槽經(jīng)過解碼生成的圖像應(yīng)與真實未來幀接近。物理約束損失可選但關(guān)鍵在槽的潛在空間或解碼過程中引入額外的正則化損失鼓勵模型遵守物理規(guī)律。例如持續(xù)性損失相鄰幀中同一對象的槽表示應(yīng)保持相似。對象不變性損失物體的外觀顏色、紋理在短時間內(nèi)不應(yīng)突變。物理屬性一致性損失如果槽的某些維度被解釋為物理屬性如速度則可以約束其變化符合簡單運(yùn)動學(xué)。3. 實現(xiàn)流程與實戰(zhàn)要點3.1 環(huán)境準(zhǔn)備與依賴假設(shè)我們使用PyTorch進(jìn)行實現(xiàn)。# 建議的依賴環(huán)境 python3.8 torch1.9.0 torchvision numpy matplotlib # 用于可視化 # 可選用于更復(fù)雜的GNN動力學(xué)模型 # pip install torch-geometric# requirements.txt 示例 torch1.13.1 torchvision0.14.1 numpy1.21.5 Pillow9.3.0 tqdm4.64.1 tensorboard2.11.03.2 數(shù)據(jù)準(zhǔn)備與預(yù)處理模型需要視頻序列數(shù)據(jù)進(jìn)行訓(xùn)練。以合成物理數(shù)據(jù)集如Physion,CLEVRER為例這些數(shù)據(jù)集提供了可控的物理場景和精確的標(biāo)注。import torch from torch.utils.data import Dataset, DataLoader from torchvision import transforms class PhysicsVideoDataset(Dataset): def __init__(self, data_path, seq_len10, image_size(64, 64)): data_path: 包含視頻片段如.npy文件或圖像序列的路徑 seq_len: 每個樣本的幀數(shù)歷史幀未來幀 self.data_path data_path self.seq_len seq_len self.transform transforms.Compose([ transforms.Resize(image_size), transforms.ToTensor(), # 根據(jù)數(shù)據(jù)情況決定是否歸一化 # transforms.Normalize(mean[0.5], std[0.5]) ]) # 這里需要實現(xiàn)加載數(shù)據(jù)列表的邏輯 self.video_clips self._load_clips() def _load_clips(self): # 實現(xiàn)遍歷data_path將長視頻分割成固定長度的片段 # 返回片段起始索引列表 clips [] # 偽代碼 # for video in all_videos: # for start in range(0, len(video)-seq_len, stride): # clips.append((video_id, start)) return clips def __len__(self): return len(self.video_clips) def __getitem__(self, idx): video_id, start_frame self.video_clips[idx] # 加載從start_frame開始的seq_len幀圖像 frames [] for i in range(self.seq_len): # 假設(shè)load_image函數(shù)能根據(jù)video_id和幀索引加載PIL圖像 img load_image(video_id, start_frame i) img self.transform(img) frames.append(img) frames torch.stack(frames, dim0) # [seq_len, C, H, W] # 前T幀作為歷史后seq_len-T幀作為未來目標(biāo) T self.seq_len // 2 # 示例前5幀歷史預(yù)測后5幀 history frames[:T] future frames[T:] return history, future # [T, C, H, W], [seq_len-T, C, H, W]3.3 模型訓(xùn)練循環(huán)核心代碼下面展示訓(xùn)練循環(huán)的關(guān)鍵部分整合了前述組件。def train_one_epoch(model, dataloader, optimizer, device, epoch): model.train() total_loss 0 for batch_idx, (history, future_gt) in enumerate(dataloader): history, future_gt history.to(device), future_gt.to(device) B, T_history, C, H, W history.shape T_future future_gt.shape[1] optimizer.zero_grad() # 1. 編碼歷史幀得到初始槽 init_slots None for t in range(T_history): frame_slots model.encoder(history[:, t]) # [B, num_slots, slot_dim] if init_slots is None: init_slots frame_slots else: # 可以對歷史幀的槽進(jìn)行聚合如平均作為初始狀態(tài) init_slots (init_slots frame_slots) / 2 current_slots init_slots pred_frames [] # 2. 自回歸預(yù)測未來幀 for t in range(T_future): # 動力學(xué)模型預(yù)測下一時刻槽 next_slots model.dynamics(current_slots) # 解碼器根據(jù)槽生成圖像 pred_frame, _ model.decoder(next_slots) pred_frames.append(pred_frame) # 為下一步預(yù)測更新當(dāng)前槽或使用預(yù)測的槽或使用真實槽的編碼后者是Teacher Forcing # 這里使用預(yù)測的槽是自回歸推理模式 current_slots next_slots pred_frames torch.stack(pred_frames, dim1) # [B, T_future, C, H, W] # 3. 計算損失 # 重建損失對歷史幀 recon_loss 0 for t in range(T_history): recon_frame, _ model.decoder(model.encoder(history[:, t])) recon_loss F.mse_loss(recon_frame, history[:, t]) recon_loss / T_history # 預(yù)測損失 pred_loss F.mse_loss(pred_frames, future_gt) # 物理正則化損失示例槽的平滑性約束 # 假設(shè)我們有一個函數(shù)計算物理正則項 phys_reg_loss model.compute_physics_regularization(init_slots, next_slots) # 總損失 loss recon_loss pred_loss 0.1 * phys_reg_loss # 加權(quán)求和 loss.backward() optimizer.step() total_loss loss.item() if batch_idx % 100 0: print(fEpoch {epoch}, Batch {batch_idx}, Loss: {loss.item():.4f}) avg_loss total_loss / len(dataloader) return avg_loss3.4 外推能力評估訓(xùn)練完成后評估是關(guān)鍵。需要在專門的外推測試集上進(jìn)行例如新物體訓(xùn)練集只有圓形和方形物體測試集引入三角形物體。新屬性訓(xùn)練集物體彈性系數(shù)在[0.5, 0.8]之間測試集使用[0.9, 1.0]完全彈性碰撞。新場景訓(xùn)練集是空曠平面測試集加入障礙物或斜坡。更長時序訓(xùn)練時預(yù)測未來5幀測試時要求預(yù)測未來20幀。評估指標(biāo)不應(yīng)僅僅是像素級的MSE或SSIM這些指標(biāo)在外推場景下不可靠而應(yīng)包含物理合理性指標(biāo)通過一個預(yù)訓(xùn)練的物理規(guī)則檢查器或簡單的啟發(fā)式規(guī)則來判斷預(yù)測視頻是否違反物理定律如物體質(zhì)量守恒、非穿透性。下游任務(wù)性能用預(yù)測的視頻幀去驅(qū)動一個下游任務(wù)如機(jī)器人抓取規(guī)劃看其成功率是否與使用真實視頻接近。4. 常見問題與排查思路在實現(xiàn)和訓(xùn)練此類模型時會遇到一些典型問題。問題現(xiàn)象可能原因排查與解決思路預(yù)測結(jié)果模糊解碼器過于簡單損失函數(shù)過度依賴像素MSE導(dǎo)致模型輸出所有可能未來的平均。1. 強(qiáng)化解碼器能力使用更深的網(wǎng)絡(luò)或引入對抗損失GAN鼓勵清晰度。2. 使用感知損失如VGG特征距離替代純像素MSE。3. 引入隨機(jī)潛變量來建模未來不確定性如VAE或擴(kuò)散模型。物體分解失敗槽表示混亂Slot Attention訓(xùn)練不穩(wěn)定場景過于復(fù)雜槽數(shù)量不足。1. 調(diào)整Slot Attention的迭代次數(shù)、學(xué)習(xí)率。2. 增加槽的數(shù)量。3. 在損失中加入鼓勵槽之間稀疏性的正則項使每個槽專注于一個物體。動力學(xué)模型無法學(xué)習(xí)長期依賴自回歸預(yù)測誤差累積動力學(xué)模型容量不足。1. 在訓(xùn)練時使用Teacher Forcing將真實歷史槽而非預(yù)測槽輸入動力學(xué)模型在推理時切換為自回歸。2. 使用更強(qiáng)大的序列模型如Transformer或更深的GNN作為動力學(xué)模型。3. 嘗試在潛在空間進(jìn)行多步預(yù)測然后一次性解碼減少迭代誤差。外推性能提升不明顯模型仍然過擬合到訓(xùn)練數(shù)據(jù)的表面統(tǒng)計特征物理正則化太弱。1. 增強(qiáng)數(shù)據(jù)增強(qiáng)模擬更廣泛的物理參數(shù)變化。2. 設(shè)計更強(qiáng)的、可微的物理約束損失直接作用于槽表示如約束預(yù)測的位置變化與速度相符。3. 采用課程學(xué)習(xí)先從簡單物理場景開始逐步增加復(fù)雜度。訓(xùn)練速度慢內(nèi)存占用高視頻數(shù)據(jù)分辨率高序列長度長模型參數(shù)量大。1. 使用更小的圖像分辨率如64x64進(jìn)行訓(xùn)練。2. 在槽的潛在空間進(jìn)行動力學(xué)模擬而非像素空間。3. 使用梯度檢查點技術(shù)。4. 采用混合精度訓(xùn)練AMP。5. 最佳實踐與工程建議將物理世界模型應(yīng)用于實際項目需要考慮以下工程細(xì)節(jié)5.1 數(shù)據(jù)策略合成與真實數(shù)據(jù)的結(jié)合從合成數(shù)據(jù)開始像CLEVRER、Physion、NVIDIA的Isaac Gym環(huán)境能生成精確可控的物理場景數(shù)據(jù)是研究和驗證模型物理理解能力的理想起點。它們提供完美的標(biāo)注和無限的數(shù)據(jù)變體。向真實數(shù)據(jù)遷移真實世界視頻噪聲大、物體分割模糊。可以使用在合成數(shù)據(jù)上預(yù)訓(xùn)練的模型作為初始化。在真實數(shù)據(jù)上微調(diào)時采用更強(qiáng)大的視覺編碼器如ResNet預(yù)訓(xùn)練權(quán)重。引入自監(jiān)督學(xué)習(xí)目標(biāo)如時序一致性、顏色恒常性等作為輔助任務(wù)來適應(yīng)真實數(shù)據(jù)分布。5.2 模型設(shè)計平衡表達(dá)力與泛化性歸納偏置的注入明確地將物理知識設(shè)計進(jìn)模型結(jié)構(gòu)。例如將對象槽的某些維度顯式地定義為位置、速度、質(zhì)量并在動力學(xué)模型中應(yīng)用近似的牛頓運(yùn)動方程作為初始化或軟約束。模塊化與可解釋性保持編碼器、動力學(xué)模型、解碼器的模塊化。這便于調(diào)試和分析。例如可以可視化每個槽對應(yīng)的圖像掩膜檢查物體分解是否成功可以分析槽向量的某些維度在時間上的變化看其是否對應(yīng)有意義的物理量。不確定性建模物理世界本質(zhì)是不確定的。考慮在動力學(xué)預(yù)測中輸出分布如高斯分布而非確定值或者使用擴(kuò)散模型來生成多樣的未來可能。5.3 訓(xùn)練技巧課程學(xué)習(xí)先訓(xùn)練模型在簡單、確定性的場景如單個物體勻速運(yùn)動中預(yù)測穩(wěn)定后再逐步增加物體數(shù)量、交互復(fù)雜度和隨機(jī)性。多任務(wù)學(xué)習(xí)聯(lián)合訓(xùn)練視頻預(yù)測與相關(guān)的代理任務(wù)如物體分割、深度估計、光流預(yù)測。這些任務(wù)提供的監(jiān)督信號有助于學(xué)習(xí)更通用的場景表示。正則化是關(guān)鍵除了重建損失持續(xù)性損失、對象恒常性損失、物理約束損失對于學(xué)習(xí)可外推的表示至關(guān)重要。需要仔細(xì)調(diào)整這些正則化項的權(quán)重。5.4 評估與部署建立嚴(yán)謹(jǐn)?shù)耐馔茰y試集這是衡量工作價值的核心。測試集必須與訓(xùn)練集在物體、屬性、場景、動態(tài)規(guī)則上有本質(zhì)不同。定性分析與定量指標(biāo)并重除了數(shù)字指標(biāo)一定要人工檢查預(yù)測視頻。模型是否產(chǎn)生了“魔法般”的物體運(yùn)動物體的相互作用是否符合直覺在閉環(huán)系統(tǒng)中測試最終目標(biāo)是服務(wù)于決策。將訓(xùn)練好的世界模型接入一個規(guī)劃器如模型預(yù)測控制MPC在模擬器甚至真實機(jī)器人中測試看基于模型“想象”的規(guī)劃是否有效。這是最有力的證明。構(gòu)建一個真正學(xué)會物理規(guī)律并能外推的視頻世界模型是通向通用視覺智能的重要一步。本文剖析的方法從對象中心表示出發(fā)通過精心設(shè)計的架構(gòu)和損失函數(shù)將物理歸納偏置嵌入學(xué)習(xí)過程。實現(xiàn)這樣的系統(tǒng)需要綜合計算機(jī)視覺、深度學(xué)習(xí)、物理建模乃至強(qiáng)化學(xué)習(xí)等多方面的知識。盡管完全解決這一問題仍任重道遠(yuǎn)但當(dāng)前的研究已經(jīng)為我們提供了清晰的路徑和強(qiáng)大的工具。建議讀者從復(fù)現(xiàn)一個簡單的合成數(shù)據(jù)集如拋物線運(yùn)動上的模型開始逐步增加復(fù)雜度在實踐中深入理解每一部分設(shè)計的作用。最終將這種對物理規(guī)律的學(xué)習(xí)能力與大規(guī)模真實數(shù)據(jù)結(jié)合有望催生出更可靠、更智能的視覺系統(tǒng)。