핵심 개념
이 페이지를 꼭 읽어야 하나요?
Quickstart 페이지를 이미 읽으셨다면 일반적으로 이 페이지를 읽지 않으셔도 됩니다. 이 페이지는 더 자세한 배경 정보를 다룹니다.
프로젝트 (Project)
프로젝트(Project)는 Kognic 플랫폼과 연동할 때 가장 상위에 있는 개념입니다. 여러 프로젝트를 동시에 진행할 수 있으며, 프로젝트는 다른 Kognic 리소스를 담는 컨테이너 역할을 합니다. 프로젝트 설정은 일반적으로 신규 고객과의 계약 진행 시 Guideline Agreement Process(GAP) 단계에서 Kognic Professional Services 팀이 수행합니다.
Kognic API 내에서 프로젝트는 외부 식별자(external identifier)로 식별됩니다.

배치 (Batch)
입력 배치(Batch)는 프로젝트 내에서 입력 데이터를 더 작은 배치로 그룹화할 수 있게 해줍니다. 기본적으로 모든 프로젝트에는 최소 하나의 입력 배치가 있습니다.
진행 중인 프로젝트는 다음 두 가지 방식으로 여러 배치를 활용하면 이점을 얻을 수 있습니다.
- 특정 시간 구간 동안 수집된 입력 데이터를 그룹화
- 소급 변경 없이 가이드라인 또는 작업 정의(task definition) 변경 수행
배치 상태
Status | Description |
|---|---|
pending | 배치가 생성되었지만 Kognic 측에서 아직 완전히 설정하지 않은 상태입니다. 프로젝트 설정 중이거나 변경 요청이 진행 중인 경우입니다. |
open | 배치가 새로운 입력을 받을 수 있도록 열려 있는 상태입니다. |
ready | 배치가 게시되어 더 이상 새로운 입력을 받지 않는 상태입니다. |
in-progress | Kognic이 배치 내 입력에 대한 어노테이션 작업을 시작한 상태입니다. |
completed | 어노테이션이 완료된 상태입니다. |
요청 (Request)
GAP 과정에서 프로젝트는 최종 목표로 여러 어노테이션 유형을 가질 수 있습니다. 예를 들어 이미지로 구성된 프로젝트는 차선 검출과 객체 어노테이션 모두에 할당될 수 있습니다. Kognic 내에서 요청(Request)은 주어진 입력에 대한 특정 어노테이션 목표를 나타냅니다. 크고 복잡한 프로젝트는 여러 개의 독립적인 어노테이션 요청으로 나눕니다. 이를 통해 다음이 가능해집니다.
- 어노테이터의 인지 부담 감소
- 여러 어노테이터가 동일한 데이터를 동시에 병렬로 작업 가능
- 사용자 인터페이스 단순화
이러한 요소들은 어노테이션 생산에 필요한 총 소요 시간을 줄이는 동시에 높은 수준의 품질에 기여합니다.
가이드라인 (Guideline)
어노테이션을 제작하려면 무엇을, 어떻게 어노테이션해야 하는지 알아야 합니다. 이러한 정보는 가이드라인(Guideline)에서 확인할 수 있습니다. 가이드라인은 표시해야 할 특정 객체(예: 차량, 보행자)와 그 방법(예: 바운딩 박스)을 정의합니다. 가이드라인에는 또한 데이터를 어떻게 해석해야 하는지에 대한 상세 정보, 예를 들어 차량이 "심하게 가려짐(heavily occluded)"이 무엇을 의미하는지도 포함됩니다.
작업 정의(Task Definition) 및 어노테이션 지침(Annotation Instructions)
작업 정의(Task Definition)는 무엇이 어노테이션되어야 하는지/될 수 있는지를 설명합니다. 객체 유형은 몇 개인지? 각 객체 유형에 대해 바운딩 박스, 시맨틱 세그멘테이션, 또는 라인/스플라인 중 무엇을 사용할지? 각 객체 유형의 속성은 무엇인지? 작업 정의는 Kognic Professional Services 팀이 가이드라인으로부터 생성하는 JSON 파일입니다. 이후 작업 정의는 Kognic 앱이 적절한 드로잉 도구를 구성하는 데 사용됩니다. 다시 말해, 작업 정의는 가이드라인을 기계가 읽을 수 있는 형태로 표현한 것으로 이해할 수 있습니다.
당사는 플랫폼을 통해 작업 정의를 보다 직관적으로 정의하는 방법으로 어노테이션 지침(Annotation Instructions)을 도입하고 있으며, 이 개념도 함께 언급되는 것을 보게 될 수 있습니다. 플랫폼 외부의 관점에서 보면, 어노테이션 지침과 작업 정의는 결국 같은 것을 의미합니다. 즉 어노테이션 도구 설정과 그에 따른 완성된 레이블의 내용입니다.
씬 (Scene)
어떤 어노테이션 작업을 설정하기 전에, 원본 데이터가 Kognic 플랫폼에 올바르게 업로드되어야 합니다. 씬(Scene)은 서로 다른 소스의 데이터가 어떻게 결합되는지를 지정합니다. 리소스에는 이미지와 포인트 클라우드는 물론, 메타데이터와 캘리브레이션(센서 속성을 정의)이 포함됩니다. 당사는 다음과 같은 다양한 유형의 설정을 지원합니다.
- (여러 대의) 카메라로부터의 이미지
- 라이다 포인트 클라우드와 결합된 카메라 이미지
씬과 관련된 또 다른 개념으로 프레임(frame)이 있습니다. 프레임은 씬에서 특정 시점의 하나의 순간을 나타냅니다. 씬은 *단일 프레임(single frame)*이거나 시퀀스(sequence)(다중 프레임)일 수 있습니다. 어노테이션 제작에 있어 시간 정보가 중요한 경우에는 시퀀스를 사용해야 합니다.
씬 유형
Type | Description |
|---|---|
1~9개 카메라의 이미지로 구성된 단일 프레임 | |
1 | |
각 프레임이 1~9개 카메라의 이미지로 구성된 프레임의 시퀀스 | |
각 프레임이 1 | |
각 프레임이 1 |
사전 어노테이션 (Pre-Annotations)
프리레이블(pre-label)이라고도 합니다. 어노테이션이 Kognic 플랫폼에서 나오는 레이블이라면, 사전 어노테이션은 플랫폼에 들어가는 레이블입니다. 이는 OpenLabel JSON 형태로, 씬이 생성된 이후 해당 씬에 업로드되며, 바운딩 박스 추정치나 재검토가 필요한 이전에 수작업으로 레이블링된 데이터 등 씬에 대한 초기 레이블링을 담을 수 있습니다.
하나의 씬에는 0개 이상의 사전 어노테이션이 있을 수 있으며, 씬으로부터 입력(input)이 생성될 때 그중 하나의 사전 어노테이션이 해당 입력에 연결될 수 있습니다. 자세한 방법은 사전 어노테이션 문서를 참고하십시오.
사전 어노테이션 데이터는 유효한 OpenLabel(JSON) 문서여야 합니다. Kognic은 또한 이것이 대체로 '타당한지', 예를 들어 씬과 동일한 센서 이름을 사용하는지, 올바른 수의 프레임을 가지고 있는지도 검증합니다.
사전 어노테이션이 입력에 추가되면, 이것이 작업 정의(Task Definition)와 호환되는지도 추가로 검증합니다. 사전 어노테이션이 유효한 OpenLabel 문서이더라도 특정 요청에서 사용하기에 유효하지 않을 수 있습니다.
캘리브레이션 (Calibrations)
캘리브레이션은 정확한 다중 센서 어노테이션에 필수적입니다. 캘리브레이션은 자율주행차(ego vehicle)에 부착된 각 센서의 외부(extrinsic) 속성(위치)과 특정 센서의 내부(intrinsic) 속성(예: 카메라의 화각, 해상도)을 포함합니다. 캘리브레이션을 통해 씬 내의 서로 다른 3D 및 2D 좌표계 사이에서 위치를 변환할 수 있습니다. 기술적인 세부 사항은 좌표계를 참고하십시오.
입력 (Input)
씬이 Kognic 플랫폼에 업로드되고 나면, 각 입력이 하나의 요청(request)과 연결되는 입력(input)으로 어노테이션 작업을 생성할 수 있습니다. 입력과 씬을 구분함으로써 업로드된 데이터를 효율적으로 재사용할 수 있습니다. 예를 들어, 동일한 씬으로부터 여러 개의 입력을 생성하여 서로 다른 종류의 어노테이션 설정을 가능하게 할 수 있습니다.
씬을 생성할 때 연결할 프로젝트/배치를 함께 지정함으로써 씬 생성과 동시에 입력을 생성할 수도 있습니다. 예제는 씬과 입력 다루기를 참고하십시오.
어노테이션 (Annotation)
어노테이션(annotation)은 요청(request) 내에서 입력이 성공적으로 어노테이션되었을 때 생성됩니다. 어노테이션은 kognic-io API를 통해 OpenLABEL 포맷의 json 객체로 제공됩니다. 이러한 어노테이션을 다운로드하는 방법과 다루는 방법에 대한 몇 가지 예제는 Download Annotations 장에서 확인할 수 있습니다.
kognic-io API 외에도, Kognic은 OpenLABEL json 객체를 손쉽게 파싱하고 다룰 수 있도록 kognic-openlabel이라는 라이브러리도 제공합니다.