@@ -156,19 +156,15 @@ class AffordQ(Dataset):
156
156
157
157
self .cls2idx = {cls .lower():np.array(i).astype(np.int64) for i, cls in enumerate (classes)}
158
158
self .aff2idx = {cls :np.array(i).astype(np.int64) for i, cls in enumerate (afford_cl)}
159
-
159
+ # 加载标注数据
160
160
with open (os.path.join(data_root, f ' anno_ { split} .pkl ' ), ' rb' ) as f:
161
161
self .anno = pickle.load(f)
162
-
162
+ # 加载点云数据
163
163
with open (os.path.join(data_root, f ' objects_ { split} .pkl ' ), ' rb' ) as f:
164
164
self .objects = pickle.load(f)
165
165
166
- # Load the CSV file, and use lower case
166
+ # 加载58种物体-功能组合的标注数据
167
167
self .question_df = pd.read_csv(os.path.join(data_root, ' Affordance-Question.csv' ))
168
-
169
- self .len = len (self .anno)
170
-
171
- print (f " load { split} set successfully, lenth { len (self .anno)} " )
172
168
173
169
# sort anno by object class and affordance type
174
170
self .sort_anno = {}
@@ -180,34 +176,15 @@ class AffordQ(Dataset):
180
176
self .sort_anno[key] = [value]
181
177
else :
182
178
self .sort_anno[key].append(value)
179
+ ```
180
+ 加载的标注数据中每个样本的组织形式如下:
181
+ - shape_id :点云ID
182
+ - class :物体类别(如bed)
183
+ - affordance :功能类别(如lay)
184
+ - mask :功能区域掩码(点级别标注)
183
185
186
+ ![ 标注数据组织形式] ( LASO/2.png )
184
187
185
- def find_rephrase (self , df , object_name , affordance ):
186
- qid = str (np.random.randint(1 , 15 )) if self .split == ' train' else ' 0'
187
- qid = ' Question' + qid
188
- result = df.loc[(df[' Object' ] == object_name) & (df[' Affordance' ] == affordance), [qid]]
189
- if not result.empty:
190
- # return result.index[0], result.iloc[0]['Rephrase']
191
- return result.iloc[0 ][qid]
192
- else :
193
- raise NotImplementedError
194
-
195
-
196
- def __getitem__ (self , index ):
197
- data = self .anno[index]
198
- shape_id = data[' shape_id' ]
199
- cls = data[' class' ]
200
- affordance = data[' affordance' ]
201
- gt_mask = data[' mask' ]
202
- point_set = self .objects[str (shape_id)]
203
- point_set,_,_ = pc_normalize(point_set)
204
- point_set = point_set.transpose()
205
-
206
- question = self .find_rephrase(self .question_df, cls , affordance)
207
- affordance = self .aff2idx[affordance]
208
-
209
- return point_set, self .cls2idx[cls ], gt_mask, question, affordance
210
- ```
211
188
212
189
### 8. 总结
213
190
0 commit comments