주석이 달린 컴퓨터 비전 데이터를 위한 데이터 전처리 기술
소개
컴퓨터 비전 프로젝트의 목표를 정의하고 데이터를 수집 및 주석 처리한 후, 다음 단계는 주석이 달린 데이터를 전처리하여 모델 학습을 준비하는 것입니다. 깨끗하고 일관된 데이터는 우수한 성능의 모델을 만드는 데 필수적입니다.
Watch: How to Use Data Preprocessing and Augmentation to Improve Model Accuracy in Real-World Scenarios 🚀
전처리는 이미지 크기 조정, 픽셀 값 정규화, 데이터셋 증강, 데이터를 학습/검증/테스트 세트로 분할하는 과정을 포함하는 컴퓨터 비전 프로젝트 워크플로의 한 단계입니다. 데이터를 정리하기 위한 필수 기술과 모범 사례를 살펴보겠습니다!
데이터 전처리의 중요성
우리는 이미 여러 고려 사항을 염두에 두고 데이터를 신중하게 수집하고 주석을 달고 있습니다. 그렇다면 컴퓨터 비전 프로젝트에서 데이터 전처리가 왜 그렇게 중요할까요? 데이터 전처리는 계산 부하를 줄이고 모델 성능을 향상시키는 학습에 적합한 형식으로 데이터를 만드는 작업입니다. 전처리를 통해 해결할 수 있는 원시 데이터의 몇 가지 일반적인 문제는 다음과 같습니다:
- 노이즈: 데이터의 관련 없거나 무작위적인 변형.
- 불일치: 이미지 크기, 형식 및 품질의 차이.
- 불균형: 데이터셋 내 클래스나 카테고리의 불균등한 분포.
데이터 전처리 기술
데이터 전처리의 첫 번째이자 가장 중요한 단계 중 하나는 크기 조정입니다. 일부 모델은 가변적인 입력 크기를 처리하도록 설계되었지만, 많은 모델은 일관된 입력 크기를 요구합니다. 이미지 크기를 조정하면 이미지가 균일해지고 계산 복잡성이 줄어듭니다.
이미지 크기 조정
다음 방법을 사용하여 이미지 크기를 조정할 수 있습니다:
- 이중 선형 보간(Bilinear Interpolation): 가장 가까운 네 픽셀 값의 가중 평균을 구하여 픽셀 값을 부드럽게 합니다.
- 최근접 이웃(Nearest Neighbor): 평균을 내지 않고 가장 가까운 픽셀 값을 할당하여, 이미지가 블록처럼 보이지만 계산 속도가 더 빠릅니다.
크기 조정을 더 간단하게 만들려면 다음 도구를 사용할 수 있습니다:
- OpenCV: 이미지 처리를 위한 광범위한 기능을 갖춘 인기 있는 컴퓨터 비전 라이브러리.
- PIL (Pillow): 이미지 파일을 열고, 조작하고, 저장하기 위한 Python Imaging Library.
YOLO26의 경우, 모델 학습 중 'imgsz' 매개변수를 통해 유연한 입력 크기를 사용할 수 있습니다. 640과 같은 특정 크기로 설정하면, 모델은 원본 종횡비를 유지하면서 가장 긴 차원이 640픽셀이 되도록 입력 이미지의 크기를 조정합니다.
모델과 데이터셋의 특정 요구 사항을 평가함으로써 크기 조정이 필요한 전처리 단계인지, 아니면 모델이 다양한 크기의 이미지를 효율적으로 처리할 수 있는지 판단할 수 있습니다.
픽셀 값 정규화
또 다른 전처리 기술은 정규화입니다. 정규화는 픽셀 값을 표준 범위로 조정하며, 이는 학습 중 더 빠른 수렴을 돕고 모델 성능을 향상시킵니다. 몇 가지 일반적인 정규화 기술은 다음과 같습니다:
- 최소-최대 스케일링(Min-Max Scaling): 픽셀 값을 0에서 1 사이의 범위로 조정합니다.
- Z-점수 정규화(Z-Score Normalization): 평균과 표준 편차를 기반으로 픽셀 값을 조정합니다.
YOLO26의 경우, 정규화는 모델 학습 중 전처리 파이프라인의 일부로 원활하게 처리됩니다. YOLO26은 RGB로 변환, 픽셀 값을 [0, 1] 범위로 스케일링, 사전 정의된 평균 및 표준 편차 값을 사용한 정규화를 포함한 여러 전처리 단계를 자동으로 수행합니다.
데이터셋 분할
데이터를 정리한 후에는 데이터셋을 분할할 준비가 된 것입니다. 데이터를 학습, 검증, 테스트 세트로 분할하는 이유는 모델이 학습되지 않은 데이터에 대해 평가될 수 있도록 하여 일반화 성능을 확인하기 위함입니다. 일반적인 분할 비율은 학습 70%, 검증 20%, 테스트 10%입니다. scikit-learn이나 TensorFlow와 같이 데이터를 분할하는 데 사용할 수 있는 다양한 도구와 라이브러리가 있습니다.
데이터셋을 분할할 때 다음 사항을 고려하십시오:
- 데이터 분포 유지: 학습, 검증 및 테스트 세트 전반에서 클래스 데이터 분포가 유지되는지 확인하십시오.
- 데이터 누출 방지: 일반적으로 데이터 증강은 데이터셋을 분할한 후에 수행됩니다. 데이터 증강 및 기타 모든 전처리는 검증 또는 테스트 세트의 정보가 모델 학습에 영향을 미치지 않도록 학습 세트에만 적용되어야 합니다.
- 클래스 균형 조정: 불균형한 데이터셋의 경우, 학습 세트 내에서 소수 클래스를 오버샘플링하거나 다수 클래스를 언더샘플링하는 기술을 고려하십시오.
데이터 증강이란 무엇인가?
가장 흔히 논의되는 데이터 전처리 단계는 데이터 증강입니다. 데이터 증강은 수정된 버전의 이미지를 생성하여 데이터셋의 크기를 인위적으로 늘립니다. 데이터를 증강함으로써 과적합(overfitting)을 줄이고 모델 일반화를 개선할 수 있습니다.
데이터 증강의 다른 이점은 다음과 같습니다:
- 더 강력한 데이터셋 생성: 데이터 증강은 입력 데이터의 변형과 왜곡에 대해 모델을 더 강력하게 만들 수 있습니다. 여기에는 조명, 방향 및 크기의 변화가 포함됩니다.
- 비용 효율성: 데이터 증강은 새로운 데이터를 수집하고 라벨링하지 않고도 학습 데이터의 양을 늘리는 비용 효율적인 방법입니다.
- 데이터의 더 나은 활용: 새로운 변형을 만들어 가용한 모든 데이터 포인트를 최대 잠재력까지 활용합니다.
데이터 증강 방법
일반적인 증강 기술에는 뒤집기(flipping), 회전(rotation), 스케일링(scaling) 및 색상 조정이 포함됩니다. Albumentations, Imgaug 및 TensorFlow의 ImageDataGenerator와 같은 여러 라이브러리가 이러한 증강을 생성할 수 있습니다.
YOLO26의 경우, 데이터셋 구성 파일(.yaml 파일)을 수정하여 사용자 정의 데이터셋을 증강할 수 있습니다. 이 파일에 데이터를 증강하는 방법을 지정하는 매개변수가 포함된 증강 섹션을 추가할 수 있습니다.
Ultralytics YOLO26 저장소는 광범위한 데이터 증강을 지원합니다. 다음과 같은 다양한 변환을 적용할 수 있습니다:
- 무작위 자르기(Random Crops)
- 뒤집기(Flipping): 이미지를 가로 또는 세로로 뒤집을 수 있습니다.
- 회전(Rotation): 이미지를 특정 각도로 회전할 수 있습니다.
- 왜곡(Distortion)
또한, 더 많은 데이터 다양성을 생성하기 위해 특정 매개변수를 통해 이러한 증강 기술의 강도를 조정할 수 있습니다.
전처리 사례 연구
YOLO26을 사용하여 교통 이미지에서 다양한 유형의 차량을 감지하고 분류하는 모델을 개발하는 프로젝트를 생각해 보십시오. 우리는 교통 이미지를 수집하고 바운딩 박스와 라벨로 주석을 달았습니다.
이 프로젝트의 각 전처리 단계는 다음과 같습니다:
- 이미지 크기 조정: YOLO26은 유연한 입력 크기를 처리하고 자동으로 크기 조정을 수행하므로 수동 크기 조정은 필요하지 않습니다. 모델은 학습 중 지정된 'imgsz' 매개변수에 따라 이미지 크기를 조정합니다.
- 픽셀 값 정규화: YOLO26은 전처리 중에 픽셀 값을 자동으로 0에서 1 범위로 정규화하므로 별도의 작업이 필요하지 않습니다.
- 데이터셋 분할: scikit-learn과 같은 도구를 사용하여 데이터셋을 학습(70%), 검증(20%), 테스트(10%) 세트로 나눕니다.
- 데이터 증강: 데이터셋 구성 파일(.yaml)을 수정하여 무작위 자르기, 가로 뒤집기 및 밝기 조정과 같은 데이터 증강 기술을 포함합니다.
이러한 단계를 통해 데이터셋이 잠재적인 문제 없이 준비되고 탐색적 데이터 분석(EDA)을 수행할 준비가 되었는지 확인합니다.
탐색적 데이터 분석 기술
데이터셋을 전처리하고 증강한 후, 다음 단계는 탐색적 데이터 분석(EDA)을 통해 통찰력을 얻는 것입니다. EDA는 통계 기술과 시각화 도구를 사용하여 데이터의 패턴과 분포를 이해합니다. 클래스 불균형이나 이상치와 같은 문제를 식별하고 추가 데이터 전처리 또는 모델 학습 조정에 대한 정보에 입각한 결정을 내릴 수 있습니다.
통계적 EDA 기술
통계적 기술은 종종 평균, 중앙값, 표준 편차 및 범위와 같은 기본 지표를 계산하는 것으로 시작합니다. 이러한 지표는 이미지 데이터셋의 픽셀 강도 분포와 같은 속성에 대한 빠른 개요를 제공합니다. 이러한 기본 통계를 이해하면 데이터의 전반적인 품질과 특성을 파악하여 이상을 조기에 발견할 수 있습니다.
시각적 EDA 기술
시각화는 이미지 데이터셋의 EDA에서 핵심입니다. 예를 들어, 클래스 불균형 분석은 EDA의 또 다른 필수적인 측면입니다. 이는 특정 클래스가 데이터셋에서 과소 대표되는지 결정하는 데 도움이 됩니다. 막대 차트를 사용하여 서로 다른 이미지 클래스나 카테고리의 분포를 시각화하면 불균형을 빠르게 파악할 수 있습니다. 마찬가지로, 이상치는 픽셀 강도나 특성 분포의 이상 현상을 강조하는 박스 플롯과 같은 시각화 도구를 사용하여 식별할 수 있습니다. 이상치 탐지는 비정상적인 데이터 포인트가 결과를 왜곡하는 것을 방지합니다.
시각화를 위한 일반적인 도구는 다음과 같습니다:
- 히스토그램 및 박스 플롯: 픽셀 값의 분포를 이해하고 이상치를 식별하는 데 유용합니다.
- 산점도(Scatter Plots): 이미지 특성 또는 주석 간의 관계를 탐색하는 데 도움이 됩니다.
- 히트맵(Heatmaps): 픽셀 강도의 분포나 이미지 내 주석이 달린 특성의 공간적 분포를 시각화하는 데 효과적입니다.
EDA를 위한 Ultralytics Platform 활용
코드 없는(no-code) EDA 접근 방식을 위해서는 데이터셋을 Ultralytics Platform에 업로드하십시오. 데이터셋의 Charts 탭은 위에서 설명한 시각화(분할 분포, 상위 클래스 개수, 이미지 너비/높이 히스토그램, 주석 위치와 이미지 차원의 2D 히트맵)를 자동으로 생성합니다. Images 탭을 사용하면 그리드, 컴팩트 또는 테이블 보기에서 주석 오버레이와 함께 데이터를 탐색할 수 있으므로, 코드를 한 줄도 작성하지 않고도 잘못 라벨링된 예제나 불균형한 클래스를 쉽게 발견할 수 있습니다.
연락 및 소통
다른 컴퓨터 비전 애호가들과 프로젝트에 대해 토론하면 다양한 관점에서 새로운 아이디어를 얻을 수 있습니다. 학습, 문제 해결 및 네트워킹을 위한 좋은 방법은 다음과 같습니다:
커뮤니티와 소통하기 위한 채널
- GitHub 이슈: YOLO26 GitHub 저장소를 방문하여 Issues 탭을 사용하여 질문을 제기하고, 버그를 보고하고, 기능을 제안하십시오. 커뮤니티와 관리자가 직면한 모든 문제를 해결하도록 도울 것입니다.
- Ultralytics Discord 서버: Ultralytics Discord 서버에 가입하여 다른 사용자 및 개발자와 소통하고, 지원을 받으며, 지식을 공유하고 아이디어를 브레인스토밍하십시오.
공식 문서
- Ultralytics YOLO26 문서: 수많은 컴퓨터 비전 작업 및 프로젝트에 대한 철저한 가이드와 귀중한 통찰력을 얻으려면 공식 YOLO26 문서를 참조하십시오.
데이터셋 준비 완료!
적절하게 크기가 조정되고 정규화되며 증강된 데이터는 노이즈를 줄이고 일반화를 개선하여 모델 성능을 향상시킵니다. 이 가이드에 설명된 전처리 기술과 모범 사례를 따르면 탄탄한 데이터셋을 만들 수 있습니다. 전처리된 데이터셋이 준비되었으므로, 프로젝트의 다음 단계로 자신 있게 진행할 수 있습니다.
FAQ
컴퓨터 비전 프로젝트에서 데이터 전처리의 중요성은 무엇입니까?
데이터 전처리는 데이터가 깨끗하고 일관되며 모델 학습에 최적화된 형식임을 보장하기 때문에 컴퓨터 비전 프로젝트에서 필수적입니다. 원시 데이터의 노이즈, 불일치, 불균형과 같은 문제를 해결함으로써 크기 조정, 정규화, 증강, 데이터셋 분할과 같은 전처리 단계는 계산 부하를 줄이고 모델 성능을 향상시킵니다. 자세한 내용은 컴퓨터 비전 프로젝트 단계를 참조하십시오.
Ultralytics YOLO를 데이터 증강에 어떻게 사용할 수 있습니까?
Ultralytics YOLO26으로 데이터 증강을 하려면 데이터셋 구성 파일(.yaml)을 수정해야 합니다. 이 파일에서 무작위 자르기, 가로 뒤집기, 밝기 조정과 같은 다양한 증강 기술을 지정할 수 있습니다. 이는 여기에 설명된 학습 구성을 사용하여 효과적으로 수행할 수 있습니다. 데이터 증강은 더 강력한 데이터셋을 만들고, 과적합(overfitting)을 줄이며, 모델 일반화를 개선하는 데 도움이 됩니다.
컴퓨터 비전 데이터를 위한 최상의 데이터 정규화 기술은 무엇입니까?
정규화는 학습 중 더 빠른 수렴과 성능 향상을 위해 픽셀 값을 표준 범위로 스케일링합니다. 일반적인 기술은 다음과 같습니다:
- 최소-최대 스케일링(Min-Max Scaling): 픽셀 값을 0에서 1 사이의 범위로 조정합니다.
- Z-점수 정규화(Z-Score Normalization): 평균과 표준 편차를 기반으로 픽셀 값을 조정합니다.
YOLO26의 경우, RGB 변환 및 픽셀 값 스케일링을 포함한 정규화가 자동으로 처리됩니다. 자세한 내용은 모델 학습 섹션에서 확인하십시오.
학습을 위해 주석이 달린 데이터셋을 어떻게 분할해야 합니까?
데이터셋을 분할하는 일반적인 관례는 학습 70%, 검증 20%, 테스트 10%로 나누는 것입니다. 이러한 분할 전반에 걸쳐 클래스 데이터 분포를 유지하고, 학습 세트에만 증강을 수행하여 데이터 누출을 방지하는 것이 중요합니다. 효율적인 데이터셋 분할을 위해 scikit-learn 또는 TensorFlow와 같은 도구를 사용하십시오. 데이터셋 준비에 대한 자세한 가이드를 참조하십시오.
수동 크기 조정 없이 YOLO26에서 다양한 이미지 크기를 처리할 수 있습니까?
네, Ultralytics YOLO26은 모델 학습 중 'imgsz' 매개변수를 통해 다양한 이미지 크기를 처리할 수 있습니다. 이 매개변수는 종횡비를 유지하면서 가장 긴 차원이 지정된 크기(예: 640픽셀)와 일치하도록 이미지 크기가 조정되도록 합니다. 더 유연한 입력 처리 및 자동 조정을 위해 모델 학습 섹션을 확인하십시오.