물체 감지
데이터 수집
물체 감지 (픽 앤 플레이스) 를 위한 데이터 수집
딥러닝 알고리즘을 학습하기 위해서는 데이터 수집이 필수적입니다. 물체 감지 데이터의 경우에는, CAD(.stl) 파일이 필요합니다. 3D scanner 혹은 별도의 CAD 소프트웨어를 사용해 stl 파일을 준비하십시오.
- 로봇을 홈 포지션으로 이동하고, Data 탭을 선택하십시오. "Collect type"란을 "Object Detection"으로 설정합니다.
- 캐드 목록을 생성합니다.
- Clear 버튼을 클릭해 목록을 정리합니다.
- 준비된 CAD 파일을 USB memory에 저장해 Eye-support USB port에 장착합니다.(카메라는 잠시 분리합니다.)
- Add cad 버튼을 클릭합니다. 파일 브라우저 창을 통해 USB 메모리의 위치로 이동합니다. 일반적으로 "/meida/nvidia/<USB메모리이름>/"와 같은 경로에서 확인할 수 있습니다.
- CAD 파일을 선택하고 OK 버튼을 클릭하면 파일이 추가됩니다.
- 추가하려는 모든 CAD 파일에 대해 이 과정을 반복하십시오.
- Save list 버튼을 클릭해 CAD 목록을 저장합니다. 새 이름을 입력하거나 목록에서 기존의 파일을 선택하고 OK 버튼을 클릭합니다.
- CAD 모델을 목록에서 선택하고 On Floor 버튼을 클릭합니다. 선택된 CAD 모델이 작업 영역의 가운데에 그려집니다.
- 실제 물체를 작업 영역에 위치시킵니다. 화면상에 그려진 물체 모델과 실제 물체가 완전히 겹쳐지도록 주의하면서 위치시켜 주십시오.
- 시점 리스트를 생성합니다. 캘리브레이션 섹션에서와 동일한 방식으로 진행하되, 혼합 시점의 수는 100개 이상으로 합니다.
- 데이터셋의 이름과 폴더를 설정합니다.
- Set dataset 버튼을 클릭해 데이터셋의 기본 경로를 생성합니다. 새로운 이름을 입력하거나 기존의 폴더를 선택할 수 있습니다. 기본 경로에는 "train"과 "val" 두 가지 폴더가 자동 생성됩니다.
- Set folder 버튼을 클릭해 데이터가 저장될 폴더를 지정합니다. "train" 폴더를 열고, 새로운 폴더이름을 입력하거나 기존의 폴더를 클릭하고 OK 버튼을 클릭합니다. 이 폴더에는 시점 목록 1회분의 데이터 묶음이 저장됩니다.
- Auto collecting 버튼을 클릭해 데이터 수집을 시작합니다.
- 로봇이 자동으로 움직이며 작업물의 사진을 촬영하고 데이터를 저장합니다.
- 데이터를 추가하기 위해서는 Set folder 버튼을 클릭해 다음 번 데이터가 저장 될 폴더를 지정하고 Auto collecting 버튼을 클릭해 데이터 수집을 다시 시작합니다. 실제 작업에서 물체가 관측될 수 있는 모든 시점에서 데이터를 수집해주는 것이 좋습니다. 추가적으로, "val" 폴더 안에도 폴더를 추가해 데이터를 수집해주는 것이 validation 과정을 위해 바람직합니다.
분류 (검사) 를 위한 데이터 수집
- 로봇을 홈 포지션으로 이동하고 Data 탭을 선택합니다. "Collect type"란을 "Inspection"으로 설정합니다.
- Inspection Name 란에 물체의 이름 (검사점의 이름)을 입력합니다.
- 시점 목록을 생성합니다.(캘리브레이션에서와 동일)
- 카메라가 검사 지점을 향하게 하고 조금씩 회전시키며 기준 시점을 생성.
- 혼합 시점의 수는 100개 이상.
- 데이터셋의 이름과 폴더를 설정합니다.
- Set dataset 버튼을 클릭해 데이터셋의 기본 경로를 생성합니다. 새로운 이름을 입력하거나 기존의 폴더를 선택할 수 있습니다. 기본 경로에는 "train"과 "val" 두 가지 폴더가 자동 생성됩니다.
- Set folder 버튼을 클릭해 데이터가 저장될 폴더를 지정합니다. "train" 폴더를 열고, 새로운 폴더이름을 입력하거나 기존의 폴더를 클릭하고 OK 버튼을 클릭합니다. 이 폴더에는 시점 목록 1회분의 데이터 묶음이 저장됩니다.
- Auto collecting 버튼을 클릭해 데이터 수집을 시작합니다.
- 로봇이 자동으로 움직이며 작업물의 사진을 촬영하고 데이터를 저장합니다.
- 다른 물체 (검사 지점)의 데이터를 추가하기 위해서는, Inspection Name 란에 새로운 이름을 넣고 Set folder 버튼을 클릭해 새 폴더를 지정한 뒤, Auto collecting 버튼을 클릭해 데이터 수집을 다시 시작합니다. 충분한 데이터가 모일 때 까지 이를 반복합니다. 추가적으로, "val" 폴더 안에도 폴더를 추가해 데이터를 수집해주는 것이 validation 과정을 위해 바람직합니다.
딥러닝 알고리즘 사용
학습
- Data 탭의 하단에서, 학습할 네트워크를 선택합니다.
- MaskRCNN: MaskRCNN 네트워크로, 이미지에서 물체를 감지하고 픽셀 단위로 영역을 분리합니다.
- ResNet: 검사를 위한 분류 알고리즘입니다.
- Train 버튼을 클릭해 학습을 시작합니다.
- 열려진 파일 브라우저에서 학습하고자 하는 데이터셋을 선택하고 OK 버튼을 클릭합니다.
- Data 탭의 아래쪽에 학습 진행 상황이 표시됩니다. State 버튼을 클릭하면 현재 학습 서버의 상태가 메시지로 표시됩니다. 학습이 완료된 경우에는 'Done'이라는 메시지를 받을 수 있습니다.
- 학습을 도중에 멈추기 위해서는 Stop 버튼을 클릭하십시오.
학습된 모델의 다운로드
- Data 탭의 하단에서, 다운로드할 네트워크의 종류를 선택하고 GET 버튼을 클릭하십시오.
- 'Select Trained Config'라는 파일 브라우저 창이 표시됩니다. 학습한 데이터셋을 여십시오.
- 데이터셋 경로 안에서, 'Models' 폴더를 여십시오.
- 설정 파일을 선택하고 OK 버튼을 클릭합니다. (일반적으로 config.yml)
- 다음으로는 'Download Config To'라는 파일 브라우저 창이 표시됩니다. 모델 파일을 저장하기 위한 새 이름을 입력하거나 덮어쓸 기존의 파일을 선택하고 OK 버튼을 클릭합니다.
- 프로그램 시작 시 자동 로드되는 파일명은 'config.yml'입니다.
- 설정 파일과 함께 딥러닝 모델, CAD 파일이 자동으로 다운로드 됩니다.
- 덮어쓰기 되는 파일의 경우 기존 파일은 <old_name_bak> 형식의 이름으로 보존됩니다.
- 다운로드가 완료되고 로딩 아이콘이 사라지기를 기다려 주십시오.
물체 감지
감지 설정을 변경하기 위해서는, Detection 탭으로 이동합니다.
- Option 패널의 Load 버튼을 클릭합니다. 파일 브라우저에서 다운로드한 설정 파일을 선택하고 OK버튼을 클릭합니다. 딥러닝 모델의 초기화에는 시간이 소요됩니다. 초기화가 완료되고 로딩 아이콘이 사라지기를 기다려 주십시오.
- Detect 버튼을 눌러 감지를 테스트해보십시오. 기본 MaskRCNN 알고리즘의 경우 첫번째 감지에서 초기화에 시간이 소요됩니다. 감지 알고리즘의 수정을 위해서는, 아래의 Detect tab 섹션을 참고하십시오.
- MaskRCNN 알고리즘의 경우 SoyNet 솔루션을 이용해 3 배 가량 가속될 수 있습니다. Deep learning 옵션을 MaskRCNNSoyNet으로 변경하고 Save 버튼을 클릭하십시오. 새로운 이름을 입력하거나 덮어쓸 기존 파일을 선택하고 OK 버튼을 클릭하십시오.
- 모델 변환에는 시간이 소요됩니다. 변환이 완료되고 로딩 아이콘이 사라지기를 기다려 주십시오.
- SoyNet 가속기가 적용되었습니다. Detect 버튼을 눌러 감지를 테스트해보십시오.
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에서 선택된 물체를 감지.
- Deep learning : 딥러닝 알고리즘들.
- 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]일 경우 첫번째와 두번째 끼리, 세번재와 네번째 끼리 교차 검사) |