训练之前,会先提取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_po