202 def preprocessing(self, sample):
203 """
204 모델의 입력을 위한 데이터 전처리 기능
205 스켈레톤의 히트맵을 생성하는게 메인 기능임, 데이터 증강(data augmentation) 포함됨
206 TODO: 데이터 증강은 학습 모드일 경우만 진행되도록 코드 변경 필요
207 args:
208 sample (dict): 모델의 입력을 생성하기 위한 데이터
209 return (dict): 모델의 입력이 포함된 데이터
210 """
211
212 sample = pose_sampling(sample, clip_len=self.clip_len_action)
213 sample = pose_shift(sample, shift_ratio=0.01)
214 sample = pose_compact(sample)
215 sample = pose_resize(sample, scale=(64, 64))
216 sample = pose_random_crop(sample, area_range=(0.56, 1.0), aspect_ratio_range=(3 / 4, 4 / 3))
217 sample = pose_resize(sample, scale=(56, 56))
218 sample = pose_flip(sample, flip_ratio=0.5)
219
220 sample_pose = copy.deepcopy(sample)
221
222
223 frames = sample_pose['keypoint'].shape[1]
224 start = (frames - self.clip_len_pose)//2
225 end = start+self.clip_len_pose
226 sample_pose['keypoint'] = sample_pose['keypoint'][:,start:end, :, : ]
227 sample_pose['keypoint_score'] = sample_pose['keypoint_score'][:,start:end, : ]
228
229
230 sample_pose = pose_compact(sample_pose)
231 sample_pose = pose_resize(sample_pose, scale=(56, 56))
232
233
234 sample = make_pose_heatmap(sample)
235 sample_pose = make_pose_heatmap(sample_pose)
236 sample['pose_heatmap_for_action'] = sample['pose_heatmap']
237 sample['pose_heatmap_for_pose'] = sample_pose['pose_heatmap']
238
239 return sample
240