코딩 및 기타

YNet train코드

정지홍 2025. 10. 29. 14:59

1.trackId , 2.x min , 3.y min , 4. x max , 5. y max , 6. frame , lost , occluded , generated , label

  • frame은 annotation이 해당하는 프레임번호
  • lost에서 1이라면 화면 바깥( 시야 밖 )
  • occluded가 1이라면 부분 가림 상태
  • generated가 1이라면 수동 표기가 아니라 보간으로 자동 생성 
  • x_min과 y_min은 좌상단 좌표
  • x_max와 y_max는 우하단 좌표 

 


df_train

 

  • x_min + x_max / 2
  • y_min + y_max / 2
  •  

 

 


dataloader.py파일
훈련시키는 파일에서 데이터를 불러오는 부분.

utils.Dataloader에 존재하는 ScenceDataset클래스

  • resize_factor는 0.25로 설정...( image와 좌표에 동일하게 적용해야하는 스케일..... image를 원본대비 25%크기로 축소하고, 트랙좌표도 0.25배 줄여서 같은 픽셀에 위치하게 함 )
  • total_len = obs_len + pred_len 이다.
  • line 22 : 장면(scene ID)별로 trajectory window를 만들고, 리스트에 누적
  • line 27 :  datagroupby를 사용해서, sceneId끼리 묶는다. ( sceneId를 기준으로 groupby를 하니까,. 이거는 scene_id로 들어가고 나머지는 meta_df로 들어감 )
    • line 28 : meta_df의 x,y를 뽑아서 float으로 변경
    • line 30 : total_len으로 나눠서 나머지 값들을 버림. ( 만약 1002개이며 total_len=20이라면 2개가 버려짐 )
  •  

 

scene_collate 함수

  • 이 함수는 DataLoader에서 배치를 어떻게 묶을지 결정하는 함수.
    • 즉, SceneDataset에서 꺼낸 ' 하나의 ( trajectory , meta , scene_name)'를 DataLoader가 넘겨줄때, 원하는 모양의 텐서 + 메타데이터로 정리해주는 함수.
  • line 93 , 94 , 95 : 나중에 batch안의 요소들을 쌓아서 반환하기 위한 임시 리스트들.
  • torch.Tensor는 pyTorch에서 쓰는 N차원 배열 타입이다. 
  • squeeze(n)에서 n번째 축이 size=1이면 해당 축을 없애는 것. size!=1이라면 아무것도 안함.

 

  • 해당 DataLoader는 pyTorch의 DataLoader로 만드는 것
  • 만약 batch_size=4라면... train_dataset에서 데이터를 뽑으면서, 한번에 4개를 묶어서 뽑는것이다. 

 

 

 

 

  • line 4