rerun_realtime_mapping.py

About_work·2024년 8월 10일
0

global mapper

목록 보기
33/37

1. 개요

  • 위 코드는 "Grounded SAM" 감지 결과를 3D로 모델링하고,
  • SLAM(동시 위치 추정 및 지도 작성) 파이프라인에 통합하는 작업을 수행
  • 이 스크립트는 주로 3D 객체 감지, 추적 및 맵핑 작업을 수행

1. 주요 역할과 기능:

  1. 환경 설정 및 초기화:

    • hydra.main 데코레이터를 사용하여 설정 파일(rerun_realtime_mapping.yaml)을 불러오고, 다양한 파라미터를 설정
      • 데이터셋, 경로, 카메라 파라미터 등을 초기화하고,
      • SLAM 파이프라인에 필요한 객체들을 초기화
  2. 데이터 로드 및 전처리:

    • 데이터셋에서 컬러 이미지, 깊이 이미지, 그리고 카메라 내장행렬(K)을 불러옵니다.
    • 이미지를 Numpy 및 PyTorch 텐서로 변환하여 후속 작업에 사용할 수 있도록 준비
  3. Grounded SAM 감지 및 YOLO 객체 감지:

    • YOLO 모델을 사용하여 각 프레임에서 객체를 감지
    • 감지된 객체들에 대해 SAM(Segment Anything Model)을 사용하여 마스크를 생성
    • 감지된 객체의 위치, 클래스, 마스크 정보를 바탕으로
      • CLIP 모델을 사용해 텍스트 및 이미지 특징을 계산
    • 이 감지 결과는 sv.Detections 객체로 저장되며, 후속 처리에 사용
  4. 객체의 매칭 및 병합:

    • 감지된 객체들을 기존의 객체들과 비교하여 얼마나 유사한지(공간적 및 시각적 유사도)를 계산
    • 유사도 계산 결과를 바탕으로 새로운 감지된 객체들을 기존의 객체에 매칭하거나, 새로운 객체로 추가
    • 주기적으로 객체들을 병합하거나, 노이즈를 제거하는 후처리 작업을 수행
  5. 맵핑 및 SLAM:

    • 감지된 객체들을 SLAM 파이프라인에 통합하여, 각 객체의 위치와 상태를 추적
    • 객체 간의 관계(예: 경계, 인접성)도 추적하여 맵핑 작업을 강화
    • 최종적으로, 객체들의 위치와 속성을 포함한 3D 맵을 생성
  6. 시각화 및 결과 저장:

    • 필요에 따라 객체의 3D 모델을 시각화하고, 이를 비디오 파일로 저장
    • 모든 프레임의 객체 정보 및 감지 결과를 파일로 저장하며,
      • 최종적인 3D 맵 데이터를 PCD(Point Cloud Data) 파일로 저장
    • 추가적으로, 객체 정보와 관계 데이터를 JSON 형식으로 저장할 수 있음
  7. 후처리 및 로그 관리:

    • 객체의 설명(captions)을 통합하고, 객체 정보를 파일로 저장하는 등 후처리 작업을 수행
    • 모든 작업 과정에서 WandB를 사용해 실험 결과를 기록하고 관리할 수 있음

1.1.1. 주요 함수 설명:

  • main: 전체 파이프라인을 제어하는 메인 함수로,
    • 데이터 로드, 객체 감지, 매칭, 병합, 후처리, 시각화 및 결과 저장을 수행
  • detections_to_obj_pcd_and_bbox:
    • 감지된 객체 정보를 3D 포인트 클라우드 및 경계 상자(Bounding Box)로 변환
  • compute_spatial_similarities, compute_visual_similarities, aggregate_similarities:
    • 객체 간의 공간적 및 시각적 유사도를 계산하고, 이를 합산하여 객체를 매칭
  • match_detections_to_objects:
    • 감지된 객체들을 기존의 객체와 매칭
  • merge_obj_matches:
    • 매칭된 객체를 병합하여 최종 객체 리스트를 갱신
  • save_pointcloud:
    • 최종적으로 생성된 3D 포인트 클라우드를 파일로 저장

profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글