W&B와 Segments.ai로 데이터 중심 ML 파이프라인 구축하기
통합 데이터 라벨링이 포함된 버전 관리 파이프라인을 구축해 데이터셋을 반복적으로 개선하기
이 글은 AI 번역본입니다. 오역이 의심되면 댓글로 알려주세요.
Created on September 15|Last edited on September 15
Comment
대부분의 머신러닝 연구자는 모델을 개선하고 새로운 유형의 모델을 만드는 데 집중합니다. 그러나 실제 환경에서 사용할 ML 시스템을 구축할 때는 모델의 세부 사항 자체보다 그 모델을 학습시키는 데 사용하는 데이터가 더 중요한 경우가 많습니다. 이런 이유로 최근 ML 커뮤니티에서는 새로운 패러다임이 등장했습니다. 바로 데이터 중심 AI.

데이터 중심 접근법이란 최고의 성능을 내는 ML 시스템을 얻기 위해 데이터셋을 반복적으로 개선하는 것을 의미합니다. 이는 일부 엣지 케이스를 해결하기 위해 데이터를 더 수집하거나, 기존 어노테이션의 일관성을 높이는 것을 포함할 수 있습니다. 이 과정을 더 효율적이고 반복 가능하게 만들려면 자동화되고 버전 관리되는 파이프라인을 구축해야 합니다.
이 데모에서는 통합 데이터 라벨링이 포함된 버전 관리 ML 파이프라인을 만들겠습니다. 우리는 사용할 것입니다 W&B Artifacts 우리의 데이터셋을 추적하고 버전 관리하기 위해, 그리고 Segments.ai 우리의 데이터를 라벨링하기 위해.
W&B Artifacts는 무엇인가요?
수천 개의 ML 팀이 Weights & Biases를 사용해 모델 학습 과정을 관리하고 추적합니다. 팀들이 더 데이터 중심의 접근으로 전환하면서, 어떤 데이터셋이 모델 생성에 사용되었는지도 함께 추적할 필요가 있습니다. 그래서 W&B는 Artifacts를 만들었습니다.
W&B artifact는 데이터셋, 모델, 또는 추적하고자 하는 다른 모든 것을 저장할 수 있는 버전 관리된 디렉터리입니다. Artifacts는 데이터셋 버저닝, 모델 버저닝, 그리고 머신러닝 파이프라인 전반에 걸친 의존성과 결과 추적에 사용할 수 있습니다.

무엇인가요? Segments.ai?
데이터셋을 지속적으로 개선하려면 새로 수집한 데이터를 꾸준히 라벨링하고, 필요에 따라 기존 라벨도 조정해야 합니다. Segments.ai 데이터셋을 반복적으로 개선할 수 있도록 설계된 데이터 라벨링 플랫폼입니다이미지, 비디오, 포인트 클라우드 데이터에 대한 직관적인 라벨링 인터페이스를 제공하며, 초대형 데이터셋과 다수의 데이터 라벨러를 관리하는 데 사용할 수 있습니다.

1단계: 초기 데이터 수집 및 업로드
이 데모에서는 다음의 이미지 일부를 사용할 예정입니다 A2D2 데이터셋자율주행에서는 매우 드물게 발생하는 다양한 엣지 케이스가 ‘롱테일’ 형태로 존재하므로 데이터 중심 접근이 필수적입니다. 처음부터 모든 엣지 케이스를 데이터셋에 담아내기는 거의 불가능하므로, 반복적인 방식으로 지속적으로 보완해 나가는 접근이 가장 효과적입니다.

먼저 초기 원시 데이터를 W&B 아티팩트에 업로드하겠습니다. 이렇게 하면 데이터셋에 가한 변경 사항을 추적할 수 있습니다.
def upload_data_to_wandb(dirs, project_name, dataset_name):with wandb.init(project=project_name, job_type='load-data') as run:dataset_artifact = wandb.Artifact(dataset_name, type='raw_dataset')for dir in dirs:dataset_artifact.add_dir(dir)run.log_artifact(dataset_artifact)
이제 W&B 아티팩트를 우리의 라벨링 플랫폼인 Segments.ai의 데이터셋으로 변환하겠습니다. 이는 간단한 Segments.ai를 사용하면 프로그램적으로 손쉽게 수행할 수 있습니다. Python SDK.
def artifact_to_segments(artifact_name, dataset_identifier, run, segments_client):dataset_artifact = run.use_artifact(artifact_name + ':latest')dataset_dir = dataset_artifact.download()# Here we define the taxonomy, i.e. which objects we want to label.task_attributes = {"format_version": "0.1","categories": [{"name": "car","id": 1}]}try:segments_dataset = segments_client.get_dataset(dataset_identifier)except NotFoundError:# Create the dataset if it doesn't exist yetsegments_dataset = segments_client.add_dataset(artifact_name, task_attributes=task_attributes, category='street_scenery')for filename in os.listdir(dataset_dir):with open(os.path.join(dataset_dir, filename), 'rb') as f:image_asset = segments_client.upload_asset(f, filename)attributes = {"image": {"url": image_asset.url},}segments_client.add_sample(dataset_identifier, filename, attributes)
2단계: Segments.ai에서 초기 데이터 라벨링하기
이제 데이터를 라벨링할 준비가 되었습니다. 이것이 파이프라인에서 유일한 수동 단계이지만, Segments.ai의 슈퍼픽셀 기술 덕분에 오래 걸리지 않습니다. Colab에서 함께 따라 하지 않는 경우에도 라벨링을 시도해 볼 수 있습니다 이 프레임 당신 자신

Segments.ai의 슈퍼픽셀 도구로 이미지를 라벨링합니다. 스크롤로 슈퍼픽셀 크기를 조절하고 드래그하여 선택하세요.
def release_to_labeled_artifact(dataset_name, dataset_identifier, release_name, run, segments_client):dataset_artifact = run.use_artifact(dataset_name + ':latest')release = segments_client.get_release(dataset_identifier, release_name)dataset = SegmentsDataset(release, labelset='ground-truth', filter_by=['labeled'])file_name, image_dir = export_dataset(dataset, export_folder='export', export_format='coco-instance')labeled_dataset_artifact = wandb.Artifact(f'{dataset_name}_labeled', type='labeled_data')labeled_dataset_artifact.add_dir('export')labeled_dataset_artifact.add_dir(image_dir)run.log_artifact(labeled_dataset_artifact, aliases=[f'release_{release_name}'])

그 labeled_data 이제 이 artifact는 머신러닝 모델을 학습하는 데 사용할 준비가 되었습니다. 이 데모에서는 모델을 학습하지 않지만, 다음을 참고하시면 됩니다 이 보고서 아티팩트를 사용해 모델을 학습하는 방법이 궁금하시다면.
3단계: 추가 데이터를 사용해 반복하기
머신러닝 모델을 처음 학습시키고 나면, 모델이 제대로 처리하지 못하는 엣지 케이스가 발견되는 일이 흔합니다. 이러한 결함을 보완하기 위해 추가 데이터를 수집해 라벨링을 진행하겠습니다. 그동안 W&B Artifacts가 모든 변경 사항을 추적하므로, 팀원 모두가 어떤 데이터 버전으로 어떤 모델을 학습했는지 정확히 확인할 수 있습니다.
데모를 위해 데이터셋에 이미지를 하나만 추가하겠습니다.

두 번째 버전의 raw_dataset 아티팩트에 추가된 새 이미지
그다음 Segments.ai에서 이미지를 라벨링할 수 있습니다. 이후 확장된 라벨링 데이터를 사용해 새로운 모델을 학습할 수 있습니다.

결론
이 데모에서는 데이터셋을 반복적으로 개선하기 위한 데이터 중심 파이프라인을 구축했습니다. 우리는 파이프라인을 추적하고 버저닝하기 위해 사용했습니다 W&B Artifacts 실험의 가시성과 재현성을 높이기 위해서입니다. 또한 우리는 통합했습니다 Segments.ai 새로운 데이터를 지속적으로 라벨링할 수 있도록 하기 위해서입니다.
이 글이 여러분이 ML 프로젝트를 더 데이터 중심적으로 추진하는 데 영감을 주었길 바랍니다! 질문이 있다면 tobias@segments.ai 로 이메일을 보내주세요.
Add a comment
Love it Tobias. Very clearly articulated
Reply