어노테이션된 컴퓨터 비전 데이터를 위한 데이터 전처리 기법
소개
컴퓨터 비전 프로젝트 목표를 정의하고 데이터를 수집 및 어노테이션한 후, 다음 단계는 어노테이션된 데이터를 전처리하여 모델 학습을 위해 준비하는 것입니다. 깨끗하고 일관된 데이터는 성능이 좋은 모델을 만드는 데 매우 중요합니다.
참고: 데이터 전처리 및 증강을 사용하여 실제 시나리오에서 모델 정확도를 향상시키는 방법 🚀
전처리(preprocessing)는 이미지 크기 조정, 픽셀 값 정규화, 데이터 세트 증강, 데이터를 학습, 검증 및 테스트 세트로 분할하는 단계를 포함하는 컴퓨터 비전 프로젝트 워크플로우의 한 단계입니다. 데이터를 정리하기 위한 필수 기술 및 모범 사례를 살펴보겠습니다!
데이터 전처리의 중요성
저희는 이미 여러 사항을 염두에 두고 데이터를 신중하게 수집하고 어노테이션하고 있습니다. 그렇다면 데이터 전처리는 컴퓨터 비전 프로젝트에 왜 그렇게 중요할까요? 데이터 전처리는 계산 부하를 줄이고 모델 성능을 향상시키는 학습에 적합한 형식으로 데이터를 만드는 데 중요합니다. 다음은 전처리에서 다루는 원시 데이터의 몇 가지 일반적인 문제입니다.
- 노이즈(Noise): 데이터의 관련 없거나 임의적인 변동입니다.
- 불일치(Inconsistency): 이미지 크기, 형식 및 품질의 변동입니다.
- 불균형(Imbalance): 데이터 세트에서 클래스 또는 카테고리의 불균등한 분포입니다.
데이터 전처리 기술
데이터 전처리에서 가장 먼저 수행해야 할 단계 중 하나는 크기 조정입니다. 일부 모델은 다양한 입력 크기를 처리하도록 설계되었지만, 많은 모델은 일관된 입력 크기를 요구합니다. 이미지 크기를 조정하면 이미지가 균일해지고 계산 복잡성이 줄어듭니다.
이미지 크기 조정
다음 방법을 사용하여 이미지 크기를 조정할 수 있습니다.
- 양선형 보간(Bilinear Interpolation): 가장 가까운 4개 픽셀 값의 가중 평균을 취하여 픽셀 값을 부드럽게 합니다.
- 최근접 이웃(Nearest Neighbor): 평균 없이 가장 가까운 픽셀 값을 할당하여 블록 모양의 이미지가 되지만 계산 속도가 더 빠릅니다.
크기 조정 작업을 더 간단하게 하기 위해 다음 도구를 사용할 수 있습니다.
- OpenCV: 이미지 처리를 위한 광범위한 기능을 갖춘 널리 사용되는 컴퓨터 비전 라이브러리입니다.
- PIL (Pillow): 이미지 파일을 열고, 조작하고, 저장하기 위한 python 이미징 라이브러리입니다.
YOLO11과 관련하여 모델 학습 중 'imgsz' 파라미터를 사용하면 유연한 입력 크기를 사용할 수 있습니다. 640과 같은 특정 크기로 설정하면 모델은 입력 이미지의 가장 큰 차원이 640 픽셀이 되도록 크기를 조정하면서 원래 가로 세로 비율을 유지합니다.
모델과 데이터 세트의 특정 요구 사항을 평가하여 크기 조정이 필요한 전처리 단계인지, 아니면 모델이 다양한 크기의 이미지를 효율적으로 처리할 수 있는지 판단할 수 있습니다.
픽셀 값 정규화
또 다른 전처리 기술은 정규화입니다. 정규화는 픽셀 값을 표준 범위로 조정하여 학습 중 더 빠른 수렴을 돕고 모델 성능을 향상시킵니다. 일반적인 정규화 기술은 다음과 같습니다.
- Min-Max 스케일링: 픽셀 값을 0에서 1 사이의 범위로 조정합니다.
- Z-점수 정규화: 픽셀 값을 평균 및 표준 편차를 기준으로 조정합니다.
YOLO11의 경우, 정규화는 모델 학습 중 전처리 파이프라인의 일부로 원활하게 처리됩니다. YOLO11은 RGB로의 변환, 픽셀 값을 [0, 1] 범위로 조정, 미리 정의된 평균 및 표준 편차 값을 사용한 정규화를 포함한 여러 전처리 단계를 자동으로 수행합니다.
데이터 세트 분할
데이터를 정리했으면 데이터 세트를 분할할 준비가 된 것입니다. 데이터를 학습, 검증 및 테스트 세트로 분할하는 것은 모델이 보지 못한 데이터에 대해 평가되어 일반화 성능을 평가할 수 있도록 하기 위해 수행됩니다. 일반적인 분할은 학습에 70%, 검증에 20%, 테스트에 10%입니다. scikit-learn 또는 TensorFlow와 같이 데이터를 분할하는 데 사용할 수 있는 다양한 도구와 라이브러리가 있습니다.
데이터 세트를 분할할 때 다음 사항을 고려하십시오.
- 데이터 분포 유지: 클래스의 데이터 분포가 학습, 검증 및 테스트 세트에서 유지되도록 합니다.
- 데이터 누출 방지: 일반적으로 데이터 증강은 데이터 세트 분할 후에 수행됩니다. 데이터 증강 및 기타 모든 전처리 작업은 유효성 검사 또는 테스트 세트의 정보가 모델 학습에 영향을 미치지 않도록 학습 세트에만 적용해야 합니다.
- 클래스 균형 조정: 불균형 데이터세트의 경우, 학습 세트 내에서 소수 클래스를 오버샘플링하거나 다수 클래스를 언더샘플링하는 등의 기법을 고려하십시오.
데이터 증강이란 무엇입니까?
가장 흔하게 논의되는 데이터 전처리 단계는 데이터 증강입니다. 데이터 증강은 이미지의 수정된 버전을 생성하여 데이터 세트의 크기를 인위적으로 늘립니다. 데이터를 증강함으로써 과적합을 줄이고 모델 일반화 성능을 향상시킬 수 있습니다.
다음은 데이터 증강의 다른 이점입니다.
- 더 강력한 데이터 세트 생성: 데이터 증강은 모델이 입력 데이터의 변동 및 왜곡에 더 강력하게 대응할 수 있도록 합니다. 여기에는 조명, 방향 및 크기의 변화가 포함됩니다.
- 비용 효율적: 데이터 증강은 새로운 데이터를 수집하고 레이블링하지 않고도 학습 데이터의 양을 늘리는 비용 효율적인 방법입니다.
- 데이터 활용도 향상: 사용 가능한 모든 데이터 포인트를 최대한 활용하여 새로운 변형을 생성합니다.
데이터 증강 방법
일반적인 데이터 증강 기술로는 뒤집기, 회전, 크기 조정 및 색상 조정이 있습니다. Albumentations, Imgaug 및 TensorFlow의 ImageDataGenerator와 같은 여러 라이브러리가 이러한 증강을 생성할 수 있습니다.
YOLO11의 경우, .yaml 파일인 데이터 세트 구성 파일을 수정하여 사용자 정의 데이터 세트를 증강할 수 있습니다. 이 파일에서 데이터를 증강할 방법을 지정하는 매개변수가 있는 증강 섹션을 추가할 수 있습니다.
Ultralytics YOLO11 저장소는 광범위한 데이터 증강을 지원합니다. 다음과 같은 다양한 변환을 적용할 수 있습니다.
- 임의 자르기
- 뒤집기: 이미지를 가로 또는 세로로 뒤집을 수 있습니다.
- 회전: 이미지를 특정 각도로 회전할 수 있습니다.
- 왜곡
또한 특정 매개변수를 통해 이러한 증강 기술의 강도를 조정하여 더 다양한 데이터를 생성할 수 있습니다.
전처리 사례 연구
YOLO11을 사용하여 트래픽 이미지에서 다양한 유형의 차량을 감지하고 분류하는 모델을 개발하는 것을 목표로 하는 프로젝트를 고려해 보십시오. 트래픽 이미지를 수집하고 경계 상자 및 레이블로 주석을 달았습니다.
이 프로젝트에서 각 전처리 단계는 다음과 같습니다.
- 이미지 크기 조정: YOLO11은 유연한 입력 크기를 처리하고 크기 조정을 자동으로 수행하므로 수동 크기 조정이 필요하지 않습니다. 모델은 학습 중에 지정된 'imgsz' 매개변수에 따라 이미지 크기를 조정합니다.
- 픽셀 값 정규화: YOLO11은 전처리 중에 픽셀 값을 0에서 1 사이의 범위로 자동 정규화하므로 필요하지 않습니다.
- 데이터 세트 분할: scikit-learn과 같은 도구를 사용하여 데이터 세트를 학습(70%), 검증(20%) 및 테스트(10%) 세트로 나눕니다.
- 데이터 증강: 데이터 세트 구성 파일(.yaml)을 수정하여 임의 자르기, 수평 뒤집기, 밝기 조정과 같은 데이터 증강 기술을 포함합니다.
이러한 단계를 통해 잠재적인 문제 없이 데이터 세트가 준비되고 탐색적 데이터 분석(EDA)을 수행할 수 있습니다.
탐색적 데이터 분석 기술
데이터 세트를 전처리 및 증강한 후 다음 단계는 탐색적 데이터 분석을 통해 통찰력을 얻는 것입니다. EDA는 통계 기법과 시각화 도구를 사용하여 데이터의 패턴과 분포를 파악합니다. 클래스 불균형 또는 이상치와 같은 문제를 식별하고 추가 데이터 전처리 또는 모델 학습 조정에 대한 정보에 입각한 결정을 내릴 수 있습니다.
통계적 EDA 기술
통계 기법은 종종 평균, 중앙값, 표준 편차 및 범위와 같은 기본 메트릭을 계산하는 것으로 시작합니다. 이러한 메트릭은 픽셀 강도 분포와 같은 이미지 데이터 세트의 속성에 대한 빠른 개요를 제공합니다. 이러한 기본 통계를 이해하면 데이터의 전반적인 품질과 특성을 파악하는 데 도움이 되므로 초기에 불규칙성을 발견할 수 있습니다.
시각적 EDA 기술
시각화는 이미지 데이터 세트의 EDA에서 핵심입니다. 예를 들어, 클래스 불균형 분석은 EDA의 또 다른 중요한 측면입니다. 이는 특정 클래스가 데이터 세트에서 과소 대표되는지 여부를 판단하는 데 도움이 됩니다. 막대 차트를 사용하여 다양한 이미지 클래스 또는 범주의 분포를 시각화하면 불균형을 빠르게 확인할 수 있습니다. 마찬가지로, 이상값은 픽셀 강도 또는 특징 분포의 이상을 강조 표시하는 상자 그림과 같은 시각화 도구를 사용하여 식별할 수 있습니다. 이상값 감지는 비정상적인 데이터 포인트가 결과를 왜곡하는 것을 방지합니다.
시각화에 사용되는 일반적인 도구는 다음과 같습니다.
- 히스토그램 및 상자 그림: 픽셀 값의 분포를 이해하고 이상치를 식별하는 데 유용합니다.
- 산점도: 이미지 특징이나 어노테이션 간의 관계를 탐색하는 데 유용합니다.
- 히트맵: 이미지 내에서 픽셀 강도의 분포 또는 주석 처리된 특징의 공간적 분포를 시각화하는 데 효과적입니다.
EDA를 위한 Ultralytics Explorer 사용
커뮤니티 참고 ⚠️
다음 시점부터 ultralytics>=8.3.10
, Ultralytics Explorer 지원이 중단되었습니다. 하지만 걱정하지 마세요! 이제 다음을 통해 유사하고 향상된 기능에 액세스할 수 있습니다. Ultralytics HUB워크플로우를 간소화하도록 설계된 직관적인 노코드 플랫폼인 Ultralytics HUB를 사용해 보세요. Ultralytics HUB를 통해 단 한 줄의 코드도 작성하지 않고도 데이터를 손쉽게 탐색, 시각화 및 관리할 수 있습니다. 지금 바로 확인하고 강력한 기능을 활용해 보세요! 🚀
EDA에 대한 보다 고급 접근 방식을 위해 Ultralytics Explorer 도구를 사용할 수 있습니다. 이 도구는 컴퓨터 비전 데이터 세트를 탐색하기 위한 강력한 기능을 제공합니다. 시맨틱 검색, SQL 쿼리 및 벡터 유사성 검색을 지원하여 데이터를 쉽게 분석하고 이해할 수 있습니다. Ultralytics Explorer를 사용하면 데이터 세트에 대한 embeddings를 생성하여 유사한 이미지를 찾고, 자세한 분석을 위해 SQL 쿼리를 실행하고, 사용자 친화적인 그래픽 인터페이스를 통해 시맨틱 검색을 수행할 수 있습니다.
문의 및 연결
다른 컴퓨터 비전 애호가들과 프로젝트에 대해 토론하면 다양한 관점에서 새로운 아이디어를 얻을 수 있습니다. 다음은 배우고, 문제를 해결하고, 네트워크를 형성할 수 있는 좋은 방법입니다.
커뮤니티 연결 채널
- GitHub 이슈: YOLO11 GitHub 리포지토리를 방문하여 이슈 탭을 사용하여 질문을 제기하고, 버그를 보고하고, 기능을 제안하십시오. 커뮤니티와 유지 관리자가 직면한 모든 문제에 대해 도움을 드릴 것입니다.
- Ultralytics Discord 서버: Ultralytics Discord 서버에 가입하여 다른 사용자 및 개발자와 연결하고, 지원을 받고, 지식을 공유하고, 아이디어를 브레인스토밍하십시오.
공식 문서
- Ultralytics YOLO11 설명서: 다양한 컴퓨터 비전 작업 및 프로젝트에 대한 철저한 가이드와 귀중한 통찰력을 얻으려면 공식 YOLO11 설명서를 참조하십시오.
데이터 세트가 준비되었습니다!
적절하게 크기가 조정되고, 정규화되고, 증강된 데이터는 노이즈를 줄이고 일반화 성능을 향상시켜 모델 성능을 향상시킵니다. 이 가이드에 설명된 전처리 기술과 모범 사례를 따르면 견고한 데이터 세트를 만들 수 있습니다. 전처리된 데이터 세트가 준비되면 프로젝트의 다음 단계를 자신 있게 진행할 수 있습니다.
FAQ
컴퓨터 비전 프로젝트에서 데이터 전처리(data preprocessing)가 중요한 이유는 무엇입니까?
데이터 전처리는 데이터가 깨끗하고 일관성이 있으며 모델 학습에 최적화된 형식인지 확인하므로 컴퓨터 비전 프로젝트에서 필수적입니다. 원시 데이터의 노이즈, 불일치 및 불균형과 같은 문제를 해결함으로써 크기 조정, 정규화, 증강 및 데이터 세트 분할과 같은 전처리 단계는 계산 부하를 줄이고 모델 성능을 향상시키는 데 도움이 됩니다. 자세한 내용은 컴퓨터 비전 프로젝트 단계를 참조하십시오.
Ultralytics YOLO를 데이터 증강(data augmentation)에 어떻게 사용할 수 있습니까?
Ultralytics YOLO11을 사용한 데이터 증강의 경우 데이터 세트 구성 파일(.yaml)을 수정해야 합니다. 이 파일에서 임의 자르기, 수평 뒤집기, 밝기 조정과 같은 다양한 증강 기법을 지정할 수 있습니다. 이는 여기에 설명된 학습 구성을 사용하여 효과적으로 수행할 수 있습니다. 데이터 증강은 보다 강력한 데이터 세트를 만들고, 과적합을 줄이고, 모델 일반화 성능을 향상시키는 데 도움이 됩니다.
컴퓨터 비전 데이터를 위한 최적의 데이터 정규화 기법은 무엇입니까?
정규화는 학습 중 더 빠른 수렴과 향상된 성능을 위해 픽셀 값을 표준 범위로 조정합니다. 일반적인 기술은 다음과 같습니다.
- Min-Max 스케일링: 픽셀 값을 0에서 1 사이의 범위로 조정합니다.
- Z-점수 정규화: 픽셀 값을 평균 및 표준 편차를 기준으로 조정합니다.
YOLO11의 경우 RGB로의 변환 및 픽셀 값 스케일링을 포함하여 정규화가 자동으로 처리됩니다. 자세한 내용은 모델 학습 섹션에서 확인하십시오.
어떻게 어노테이션된 데이터 세트를 학습용으로 분할해야 합니까?
데이터 세트를 분할하기 위해 일반적으로 학습에 70%, 검증에 20%, 테스트에 10%를 할당합니다. 이러한 분할에서 클래스의 데이터 분포를 유지하고 학습 세트에서만 증강을 수행하여 데이터 누출을 방지하는 것이 중요합니다. 효율적인 데이터 세트 분할을 위해 scikit-learn 또는 TensorFlow와 같은 도구를 사용하십시오. 데이터 세트 준비에 대한 자세한 가이드를 참조하십시오.
수동 크기 조정 없이 YOLO11에서 다양한 이미지 크기를 처리할 수 있습니까?
예, Ultralytics YOLO11은 모델 학습 중에 'imgsz' 매개변수를 통해 다양한 이미지 크기를 처리할 수 있습니다. 이 매개변수는 이미지의 가로 세로 비율을 유지하면서 가장 큰 차원이 지정된 크기(예: 640픽셀)와 일치하도록 이미지 크기를 조정합니다. 보다 유연한 입력 처리 및 자동 조정을 보려면 모델 학습 섹션을 확인하십시오.