Superb AI Suite CLI 가이드 따라하기
목차
- 준비물
- 참고
- 설치
- account (teamname)의 API Key 얻기
- suite-cli에 내 기본계정 설정하기
- account의 프로젝트 목록 보기
- 이미지만 올리기
- 라벨 json만 올리기 ( + result key 오류 해결하기 )
- 이미지와 라벨 json 같이 올리기
- 로그보기
준비물
- python
- pip
참고자료
- python
- pip
참고자료
슈퍼브에이아이 가이드 내용을 그대로 따라했다.
이 CLI 프로그램은 깃허브에도 올라가있다.
설치
pip install spb-cli
account (teamname)의 API Key 얻기
로그인 - Settings - Advanced - Copy
로 API Key 를 복사할 수 있다.
아직 Key를 만들지 않았다면, 마찬가지로 이 페이지에서 생성할 수 있다.
suite-cli에 내 기본계정 설정하기
spb configure
를 입력한 뒤, account (teamname)과 API Key를 입력하면 계정 설정을 저장할 수 있다.
이후 spb configure --list를 하면 입력해둔 계정 정보를 볼 수 있다.
실행하면 아래와 같은 결과가 된다.
wonjinyi@wonjinYi:~$ spb configure
Suite Account Name: wonjin
Access Key: abcdabcdabcdabcad123456abcd
Profile default is counfigured with account name 'wonjin'.
wonjinyi@wonjinYi:~$ spb configure --list
[default]
account_name = wonjin
access_key = abcdabcdabcdabcad123456abcd
account의 프로젝트 목록 보기
spb describe projects
위 커맨드를 입력하면 프로젝트 이름, 라벨 수, 섭밋비율을 확인할 수 있다.
결과는 아래와 같다.
wonjinyi@wonjinYi:~$ spb describe projects
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃ NAME ┃ LABELS ┃ PROGRESS ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ Serperbuy-2_GinPixel_Test │ 6 │ 0% │
│ cropTest │ 200 │ 10% │
│ goyangyi_lagacyProject │ 12 │ 8% │
│ goyangyi │ 212 │ 5% │
│ cani │ 4 │ 75% │
│ Sample project │ 21 │ 47% │
└──────────────────┴────────┴────────┘
이미지만 올리기
spb upload dataset
위 커맨드를 입력하면 rawdata(이 포스트의 경우는 이미지)를 업로드할 수 있다.
아래 사진처럼 업로드할 이미지가 있는 디렉토리에서 커맨드를 실행해야 한다.
특이사항은 아래와 같다.
- 입력하도록 되어있는 account name은 대소문자를 가리지 않는다. (실제 Suite에 있는 프로젝트 이름이 WONJIN이라도, CLI에서는 wonjin으로 같은 프로젝트를 가리킬 수 있다.)
- 업로드시 입력한 dataset이름이 Suite상에 존재하지 않았다면, 새로운 dataset을 만들고 이 안에 rawdata들을 업로드한다.
실행한 결과는 아래와 같다.
wonjinyi@wonjinYi:~/Desktop/catcat/onlyUploadImages$ spb upload dataset
Project Name: learn-suite-cli
Dataset Name: cli-test
Uploading 5 data and 0 labels to dataset 'cli-test' under project 'Learn-Suite-CLi'. Proceed? [y/N]: y
Uploading data:
100%|█████████████████████████████| 5/5 [00:02<00:00, 2.29it/s]
** Result Summary **
Successful upload of 5 out of 5 data. (100%) - 0 ERRORS
라벨 json만 올리기 (+result key 오류 해결하기)
spb upload labels
Suite상에 이미지가 이미 올라가있다면 라벨(어떤 rawdata에 대한 annotation들의 정보)만 업로드하여 덮어씌울 수 있다.
라벨의 구조는 위 사진처럼 Export된 Zip파일을 다운받고, 압축을 풀어 [labels]폴더 안을 보면 알 수 있다.
아래 사진에 보이는 [labels]안의 json파일들이 실제로 Suite에서 사용하는 어노테이션 데이터이다. 자세한 구조는 여기에서 볼 수 있다.
[labels]안쪽 파일들의 이름은 rawdata의 이름이 아닌 label-id이다. 어떤 rawdata가 label-id와 매칭되는지는 [meta]폴더 안의 내용들을 통해 알 수 있다. (rawdata이름별 meta json파일을 까보면, 라벨id가 나와있다.)
본인의 경우는 아래 사진처럼 Suite에 이미 아래의 두 이미지가 업로드 되어있다.
- cat.1.jpg
- cat.2.jpg
이 상태에서 아래의 라벨정보를 담은 두 개의 json을 업로드 하여 Suite의 라벨상에 덮어씌울것이다. (라벨정보 json의 이름은 Suite에 올라간 라벨의 Datakey와 같아야 한다.)
- cat.1.jpg.json
- cat.2.jpg.json
그런데 이상하게 실행결과가 아래와 같다. 잘 쓴것같은데 'result' 키를 못찾겠다면서 에러를 뱉는다.
이게 슈퍼브에이아이 가이드에 설명되지 못한 함정이다.
wonjinyi@wonjinYi:~/Desktop/catcat/onlyLabels$ spb upload labels
Project Name: learn-suite-cli
Dataset Name: catcat
Uploading 2 labels to project 'Learn-Suite-CLi'. Proceed? [y/N]: y
100%|████████████████████| 2/2 [00:01<00:00, 1.15it/s]
** Result Summary **
Successful upload of 0 out of 2 labels. (0.0%) - 2 ERRORS
** Error Table **
┏━━━━━━━━━━━┳━━━━━┓
┃ FILE NAME ┃ LABEL UPLOAD ┃
┡━━━━━━━━━━━╇━━━━━━┩
│ cat.2.jpg │ 'result' │
│ cat.1.jpg │ 'result' │
└───────────┴────┘
[21:42:59] Check the log file for more details label_data.py:212
- /home/wonjinyi/anaconda3/lib/python3.7/site-packages/spb/logs/… label_data.py:213
- /home/wonjinyi/anaconda3/lib/python3.7/site-packages/spb/logs/… label_data.py:214
문제를 해결하려면 label json파일을 까서 "result"라는 키로 한 번 감싸줘야한다. 여기를 보면 이 형식은 현재 최신버전의 Image프로젝트가 아닌 레거시 Image프로젝트(deprecated)의 Annotation Json 파일 형식이라고 설명되어있다.
최신버전 Image프로젝트에 업로드 하려고 하는데도, 레거시 Image프로젝트(deprecated)의 형식을 따라야 한다는 것이다.
"result"키를 추가한 다음 업로드를 재시도하면, 위 내용처럼 정상적으로 업로드가 되는 것을 확인할 수 있다.
wonjinyi@wonjinYi:~/Desktop/catcat/onlyLabels$ spb upload labels
Project Name: learn-suite-cli
Dataset Name: catcat
Uploading 2 labels to project 'Learn-Suite-CLi'. Proceed? [y/N]: y
100%|████████████████████████| 2/2 [00:02<00:00, 1.22s/it]
** Result Summary **
Successful upload of 2 out of 2 labels. (100.0%) - 0 ERRORS
참고로 업로드 이후 json파일을 살펴보면, spb-cli가 Suite상에 이미 올라가있던 라벨의 정보를 자동으로 내려받아 json파일에 붙여버린 것을 알 수 있다.
Suite에서 확인해보아도 정상적으로 어노테이션 정보가 덮어씌워져있다.
이미지와 라벨 json 같이 올리기
spb upload dataset --include-lable
이미지와 라벨정보 json을 동시에 올릴 수도 있다.
이 때에도 위의 '라벨 json만 올리기' 부분과 마찬가지로 각 label json들을 "result" key로 한 겹 감싸주어야 정상적으로 동작한다.
아래 사진의 상태에서 upload 커맨드를 실행하면 관련 내용이 출력되며 정상적으로 업로드 된다.
wonjinyi@wonjinYi:~/Desktop/catcat/imageWithLabel$ spb upload dataset --include-label
Project Name: learn-suite-cli
Dataset Name: cli-test-imagewithlabel
Uploading 3 data and 3 labels to dataset 'cli-test-imagewithlabel' under project 'Learn-Suite-CLi'. Proceed? [y/N]: y
Uploading data:
100%|██████████████████████| 3/3 [00:00<00:00, 3.60it/s]
Uploading labels:
100%|██████████████████████| 3/3 [00:01<00:00, 2.83it/s]
** Result Summary **
Successful upload of 3 out of 3 data. (100%) - 0 ERRORS
Successful upload of 3 out of 3 labels. (100%) - 0 ERRORS
Suite에서 살펴보아도 정상적으로 이미지와 라벨json이 업로드 된 것을 확인할 수 있다.
로그 보기
/home/wonjinyi/anaconda3/lib/python3.7/site-packages/spb/logs
위와같은 형태의 spb - logs 디렉토리로 들어가면 확인할 수 있다.
Author And Source
이 문제에 관하여(Superb AI Suite CLI 가이드 따라하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yiwonjin/Superb-AI-Suite-CLI-가이드-따라하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)