Skip to content

물체 감지

데이터 수집

물체 감지 (픽 앤 플레이스) 를 위한 데이터 수집

딥러닝 알고리즘을 학습하기 위해서는 데이터 수집이 필수적입니다. 물체 감지 데이터의 경우에는, CAD(.stl) 파일이 필요합니다. 3D scanner 혹은 별도의 CAD 소프트웨어를 사용해 stl 파일을 준비하십시오.


데이터 수집 화면

  1. 로봇을 홈 포지션으로 이동하고, Data 탭을 선택하십시오. "Collect type"란을 "Object Detection"으로 설정합니다.
  2. 캐드 목록을 생성합니다.
    • Clear 버튼을 클릭해 목록을 정리합니다.
    • 준비된 CAD 파일을 USB memory에 저장해 Eye-support USB port에 장착합니다.(카메라는 잠시 분리합니다.)
    • Add cad 버튼을 클릭합니다. 파일 브라우저 창을 통해 USB 메모리의 위치로 이동합니다. 일반적으로 "/meida/nvidia/<USB메모리이름>/"와 같은 경로에서 확인할 수 있습니다.
    • CAD 파일을 선택하고 OK 버튼을 클릭하면 파일이 추가됩니다.
    • 추가하려는 모든 CAD 파일에 대해 이 과정을 반복하십시오.
  3. Save list 버튼을 클릭해 CAD 목록을 저장합니다. 새 이름을 입력하거나 목록에서 기존의 파일을 선택하고 OK 버튼을 클릭합니다.
  4. CAD 모델을 목록에서 선택하고 On Floor 버튼을 클릭합니다. 선택된 CAD 모델이 작업 영역의 가운데에 그려집니다.
  5. 실제 물체를 작업 영역에 위치시킵니다. 화면상에 그려진 물체 모델과 실제 물체가 완전히 겹쳐지도록 주의하면서 위치시켜 주십시오.
    • On-screen location 패널에서 그려진 물체의 위치를 조절할 수 있습니다.
    • 왼쪽 열은 위치를, 오른쪽 열은 방향을 나타냅니다.
    • Set Object 버튼을 클릭하면 변경 사항이 적용됩니다.
    • Save Orientation 버튼을 클릭하면 변경된 물체의 방향을 영구적으로 파일에 저장합니다.
    • Clear Object 버튼을 클릭하면 화면의 물체를 지웁니다.


      On-screen location 패널

  6. 시점 리스트를 생성합니다. 캘리브레이션 섹션에서와 동일한 방식으로 진행하되, 혼합 시점의 수는 100개 이상으로 합니다.
  7. 데이터셋의 이름과 폴더를 설정합니다.
    • Set dataset 버튼을 클릭해 데이터셋의 기본 경로를 생성합니다. 새로운 이름을 입력하거나 기존의 폴더를 선택할 수 있습니다. 기본 경로에는 "train"과 "val" 두 가지 폴더가 자동 생성됩니다.
    • Set folder 버튼을 클릭해 데이터가 저장될 폴더를 지정합니다. "train" 폴더를 열고, 새로운 폴더이름을 입력하거나 기존의 폴더를 클릭하고 OK 버튼을 클릭합니다. 이 폴더에는 시점 목록 1회분의 데이터 묶음이 저장됩니다.
  8. Auto collecting 버튼을 클릭해 데이터 수집을 시작합니다.
    • 로봇이 자동으로 움직이며 작업물의 사진을 촬영하고 데이터를 저장합니다.
  9. 데이터를 추가하기 위해서는 Set folder 버튼을 클릭해 다음 번 데이터가 저장 될 폴더를 지정하고 Auto collecting 버튼을 클릭해 데이터 수집을 다시 시작합니다. 실제 작업에서 물체가 관측될 수 있는 모든 시점에서 데이터를 수집해주는 것이 좋습니다. 추가적으로, "val" 폴더 안에도 폴더를 추가해 데이터를 수집해주는 것이 validation 과정을 위해 바람직합니다.

분류 (검사) 를 위한 데이터 수집

  1. 로봇을 홈 포지션으로 이동하고 Data 탭을 선택합니다. "Collect type"란을 "Inspection"으로 설정합니다.
  2. Inspection Name 란에 물체의 이름 (검사점의 이름)을 입력합니다.
  3. 시점 목록을 생성합니다.(캘리브레이션에서와 동일)
    • 카메라가 검사 지점을 향하게 하고 조금씩 회전시키며 기준 시점을 생성.
    • 혼합 시점의 수는 100개 이상.
  4. 데이터셋의 이름과 폴더를 설정합니다.
    • Set dataset 버튼을 클릭해 데이터셋의 기본 경로를 생성합니다. 새로운 이름을 입력하거나 기존의 폴더를 선택할 수 있습니다. 기본 경로에는 "train"과 "val" 두 가지 폴더가 자동 생성됩니다.
    • Set folder 버튼을 클릭해 데이터가 저장될 폴더를 지정합니다. "train" 폴더를 열고, 새로운 폴더이름을 입력하거나 기존의 폴더를 클릭하고 OK 버튼을 클릭합니다. 이 폴더에는 시점 목록 1회분의 데이터 묶음이 저장됩니다.
  5. Auto collecting 버튼을 클릭해 데이터 수집을 시작합니다.
    • 로봇이 자동으로 움직이며 작업물의 사진을 촬영하고 데이터를 저장합니다.
  6. 다른 물체 (검사 지점)의 데이터를 추가하기 위해서는, Inspection Name 란에 새로운 이름을 넣고 Set folder 버튼을 클릭해 새 폴더를 지정한 뒤, Auto collecting 버튼을 클릭해 데이터 수집을 다시 시작합니다. 충분한 데이터가 모일 때 까지 이를 반복합니다. 추가적으로, "val" 폴더 안에도 폴더를 추가해 데이터를 수집해주는 것이 validation 과정을 위해 바람직합니다.

딥러닝 알고리즘 사용

학습

  1. Data 탭의 하단에서, 학습할 네트워크를 선택합니다.
    • MaskRCNN: MaskRCNN 네트워크로, 이미지에서 물체를 감지하고 픽셀 단위로 영역을 분리합니다.
    • ResNet: 검사를 위한 분류 알고리즘입니다.
  2. Train 버튼을 클릭해 학습을 시작합니다.
    • 열려진 파일 브라우저에서 학습하고자 하는 데이터셋을 선택하고 OK 버튼을 클릭합니다.
  3. Data 탭의 아래쪽에 학습 진행 상황이 표시됩니다. State 버튼을 클릭하면 현재 학습 서버의 상태가 메시지로 표시됩니다. 학습이 완료된 경우에는 'Done'이라는 메시지를 받을 수 있습니다.
    • 학습을 도중에 멈추기 위해서는 Stop 버튼을 클릭하십시오.

학습된 모델의 다운로드

  1. Data 탭의 하단에서, 다운로드할 네트워크의 종류를 선택하고 GET 버튼을 클릭하십시오.
  2. 'Select Trained Config'라는 파일 브라우저 창이 표시됩니다. 학습한 데이터셋을 여십시오.
  3. 데이터셋 경로 안에서, 'Models' 폴더를 여십시오.
  4. 설정 파일을 선택하고 OK 버튼을 클릭합니다. (일반적으로 config.yml)
  5. 다음으로는 'Download Config To'라는 파일 브라우저 창이 표시됩니다. 모델 파일을 저장하기 위한 새 이름을 입력하거나 덮어쓸 기존의 파일을 선택하고 OK 버튼을 클릭합니다.
    • 프로그램 시작 시 자동 로드되는 파일명은 'config.yml'입니다.
  6. 설정 파일과 함께 딥러닝 모델, CAD 파일이 자동으로 다운로드 됩니다.
    • 덮어쓰기 되는 파일의 경우 기존 파일은 <old_name_bak> 형식의 이름으로 보존됩니다.
    • 다운로드가 완료되고 로딩 아이콘이 사라지기를 기다려 주십시오.

물체 감지

감지 설정을 변경하기 위해서는, Detection 탭으로 이동합니다.

  1. Option 패널의 Load 버튼을 클릭합니다. 파일 브라우저에서 다운로드한 설정 파일을 선택하고 OK버튼을 클릭합니다. 딥러닝 모델의 초기화에는 시간이 소요됩니다. 초기화가 완료되고 로딩 아이콘이 사라지기를 기다려 주십시오.
  2. Detect 버튼을 눌러 감지를 테스트해보십시오. 기본 MaskRCNN 알고리즘의 경우 첫번째 감지에서 초기화에 시간이 소요됩니다. 감지 알고리즘의 수정을 위해서는, 아래의 Detect tab 섹션을 참고하십시오.
  3. MaskRCNN 알고리즘의 경우 SoyNet 솔루션을 이용해 3 배 가량 가속될 수 있습니다. Deep learning 옵션을 MaskRCNNSoyNet으로 변경하고 Save 버튼을 클릭하십시오. 새로운 이름을 입력하거나 덮어쓸 기존 파일을 선택하고 OK 버튼을 클릭하십시오.
    • 모델 변환에는 시간이 소요됩니다. 변환이 완료되고 로딩 아이콘이 사라지기를 기다려 주십시오.
  4. SoyNet 가속기가 적용되었습니다. Detect 버튼을 눌러 감지를 테스트해보십시오.

Detection 탭


Detection 탭 구성 요소

  • Object list : 감지 가능한 물체 목록. Data 탭의 CAD 목록과 동일.
  • Algorithms : 사용가능한 알고리즘의 목록.
    • Deep learning : 딥러닝 알고리즘들.
      • MaskRCNN: MaskRCNN 물체 감지.
      • MaskRCNNSoyNet: MaskRCNN에 SoyNet가속기를 적용. SoyNet 라이센스가 필요.
      • ResNet: 검사를 위한 ResNet 분류 알고리즘.
    • Pose refinement : 물체 자세 보정을 위한 선택 가능한 알고리즘들.
      • SilhouetteSimple: 분리된 물체를 회전시키며 실루엣을 비교, 가장 일치하는 자세를 선택.
      • Workspace: 물체 위치를 작업 공간 원점에 위치시킴. 테스트 목적.
    • Post process : 선택 가능한 후처리 알고리즘들.
      • Crosscheck: 물체 종류 간의 교차 검사. 실루엣이 가장 일치하는 물체로 변경함.
    • Detect button: Object list에서 선택된 물체를 감지.
  • Options : 감지 설정을 확인하고 변경.
    • Get: 선택된 변수를 조회.
    • Set: 선택된 변수를 위 박스의 값으로 수정.
    • Add: 위 박스에 입력된 이름의 새로운 변수를 추가.
    • Delete: 선택된 변수를 삭제.
    • Save: 감지 설정 저장.
    • Load: 감지 설정 불러오기.
    • 예시: 물체 감지의 영역 제한하기
      • 'check_workspace'를 입력, Add를 클릭해 변수 추가
      • 1을 입력, Set을 클릭해 변수 설정
      • Save 클릭해 설정 저장.
      • 이후 감지부터는 작업 영역 안쪽의 물체만 감지.
옵션 사용 알고리즘 설명
'mrcnn_conf_cut' MaskRCNN 0~1 MaskRCNN의 감지 민감도
'rot_range' SilhouetteSimple 0~360 회전 검사할 각도의 범위
'track_iter' SilhouetteSimple int 회전 검사시 각도의 분해 횟수 (예: 8일 경우 8개로 나누어 검사)
'track_scales' SilhouetteSimple int 회전 검사를 반복 수행할 횟수 (범위를 좁혀가며 반복 수행)
'iou_cut' SilhouetteSimple,Crosscheck 0~1 감지로 처리할 실루엣 일치율의 하한선
'class_group' Crosscheck int array 물체 개수만큼의 int 어레이로, 같은 숫자로 설정된 물체끼리만 교차 검사를 시행함. (예: [0, 0, 1, 1]일 경우 첫번째와 두번째 끼리, 세번재와 네번째 끼리 교차 검사)