검토
리뷰(review)란 어노테이션의 품질이 충분한지, 아니면 개선이 필요한지를 판단하는 결정입니다. 효율적인 개선을 지원하기 위해, 결정을 내린 사람 또는 시스템은 잠재적인 오류나 실수를 상세히 설명하는 피드백 데이터를 제공할 수 있습니다. 리뷰와 피드백에 대해 자세히 알아보려면 사용자 문서를 참고하십시오. 해당 문서에는 플랫폼에서 이러한 개념이 사용되는 전체적인 가능성과 워크플로우가 설명되어 있으며, 이 통합 기능으로 제공되는 기능은 아래에서 설명하는 것처럼 현재 다소 제한적입니다.
리뷰 등록하기
현재 통합 기능으로는 전달된 어노테이션과, 리뷰 권한이 있는 단계의 예비 어노테이션에 대해서만 리뷰를 등록할 수 있습니다. 어노테이션은 다운로드한 어노테이션의 메타데이터(및 파일명)에서 확인할 수 있는 open label UUID로 식별됩니다.
리뷰를 등록할 때 API는 피드백 데이터와 함께, 품질이 충분한지 여부를 나타내는 불리언 값 accepted를 요구합니다. 또한 API는 개선이 어떤 방식으로 이루어져야 하는지를 상세히 지정하는 열거형 workflow도 요구합니다. 리뷰가 반려(rejected)되고 워크플로우가 'correct'인 경우, 후속 리뷰 작업 없이 단일 수정(correction) 작업이 생성됩니다. 완료된 수정 작업은 새로운 전달된 어노테이션(delivered Annotation)이 됩니다.
리뷰 등록이 성공하면 해당 리뷰를 식별하는 UUID가 반환되며, 이를 이용해 등록된 피드백 데이터를 조회할 수 있습니다. 이 과정에서 선택한 워크플로우에 따른 작업(task)도 생성됩니다. 프로젝트 설정에 따라 이 작업을 프로젝트 관리자와 조율해야 할 수도 있습니다.
다음은 kognic-io를 사용한 예제입니다.
def run(client: KognicIOClient, open_label_uuid: str, error_type_id: str) -> ReviewResponse:
review = ReviewRequest(
feedback_items=[
AddFeedbackItem(
sensor_id="<the id/name of the sensor>",
frame_id="<the id of the frame>", # in our OpenLabel file this is frame.frame_properties.external_id
object_id="<the id of the object>",
pin=AddFeedbackItemPin(x=0.0, y=0.0, z=0.0),
description="I post this via the Python client",
suggested_property=AddFeedbackItemSuggestedProperty(
property_name="propertyName", suggested_property_value="suggestedPropertyValue"
),
error_type_id=error_type_id,
metadata={"key": "value"},
)
],
workflow=ReviewWorkflowEnum.CORRECT,
accepted=False,
)
return client.review.create_review(open_label_uuid=open_label_uuid, body=review)
if __name__ == "__main__":
setup_logging(level="DEBUG")
client = KognicIOClient()
open_label_uuid = "<the uuid of the OpenLABEL>"
error_type_id = "<the id of the error type>"
annotation = run(client, open_label_uuid, error_type_id)부분 리뷰 등록하기
부분 리뷰(partial review)는 선택적인 피드백 데이터를 포함하는 미완성 리뷰로, 다음 중 하나 이상의 목적을 달성하는 데 사용될 수 있습니다.
- 수동 또는 기계적으로 생성된 피드백이 포함된 리뷰 작업 준비
- 리뷰할 대상 선택
부분 리뷰가 등록되면 해당 어노테이션에 대한 리뷰 작업이 생성됩니다. 이 리뷰 작업에는 부분 리뷰 등록 시 제공된 피드백이 포함됩니다. 리뷰어는 이후 동의하지 않는 피드백을 삭제하거나 무효화할 수 있고, 자신의 피드백을 추가할 수도 있습니다. 현재 부분 리뷰의 워크플로우를 재정의하는 것은 불가능하며, 기본 워크플로우는 리뷰 루프(review loop)입니다. 이 경우 반려된 리뷰 작업의 수정본은 새로운 리뷰 작업으로 이어집니다. 리뷰어가 리뷰를 승인하면 어노테이션은 리뷰어가 수행했을 수 있는 잠재적인 변경 사항을 반영하여 다시 전달됩니다.
피드백
피드백 항목은 어노테이션에서 주목할 만한 사항을 상세히 설명합니다. 이를 위해 다음과 같은 정보를 추가할 수 있으며, 이 정보는 어노테이터가 어노테이션을 개선할 때 확인할 수 있습니다.
- 오류 유형 ID(Error type ID) - 사용 가능한 오류 유형 목록에서 선택한 UUID (KognicIOClient().review.get_error_types()를 사용해 조회 가능)
- 설명(Description) - 개선이 필요한 내용을 설명하는 문자열
- 센서 ID(Sensor ID) - 오류가 나타나는 센서의 식별자
- 프레임 ID(Frame ID) - 오류가 나타나는 프레임의 식별자. OpenLabel 파일에서는 frame.frame_properties.external_id에 해당합니다.
- 객체 ID(Object ID) - 해당 피드백의 대상이 되는 특정 객체의 식별자
- 핀(Pin) - 관심 있는 특정 영역을 가리키는 포인터로, 누락된 객체를 표시하는 데 사용할 수 있습니다(핀은 필수인 x, y 좌표와 선택적인 z 좌표를 포함하며, 이미지에서의 좌표 단위는 픽셀이고 3D 데이터에서는 센서에 따라 달라집니다).
- 제안 속성(Suggested properties) - 부적절한 속성 값이 발견되었을 때, 더 적절한 값을 제시하기 위해 사용할 수 있는 필드
- 메타데이터(Metadata) - 어떤 데이터든 포함할 수 있는 필드로, 피드백을 생성한 시스템의 버전을 식별하는 데 사용할 수 있습니다.