訓練之前,會先提取2種特征,
一種是每張圖片的image encoding, 它的size是(64,64),代表每個像素處的特征向量。這個向量用于特征匹配(選中的目標和每個像素的相似度)。
一種是SAM提取的所有mask(用于計算mask所在目標的特征向量)。
extract_features.py提取的是SAM模型predictor.set_image的image encoding (1,256,64,64)
extract_segment_anything提取的是SAM的generate產生的自動mask
這里保存每張圖片所有mask, float形式,resize到(200,200), 原圖是(1024,1024).
SAM用法:
predictor.predict預測的是含有prompt的mask, 而generate是自動產生所有mask.
訓練3DGS的語義特征在traiin_contrastive_feature.py
3DGS模型的每個點增加語義特征
feature_dim=32
只不過Scene里面有一個gaussians還有一個feature_gaussians, 剛開始都是load scene_point_cloud.ply(3DGS),后面只用feature_gaussians,gaussians會刪除。
feature_gaussians里面的get_point_features(807321,32), 這應該是每個點的語義特征.
get_features(807321,16,3) 這個是顏色特征,包括了feature_dc(SH顏色) 和feature_rest
語義feature初始化為隨機數: