Ultralytics YOLO를 사용한 모델 유효성 검사
소개
유효성 검사는 훈련된 모델의 품질을 평가할 수 있도록 하는 머신 러닝 파이프라인의 중요한 단계입니다. Ultralytics YOLO11의 Val 모드는 객체 감지 모델의 성능을 평가하기 위한 강력한 도구 및 메트릭 모음을 제공합니다. 이 가이드는 Val 모드를 효과적으로 사용하여 모델이 정확하고 안정적인지 확인하는 방법을 이해하기 위한 완벽한 리소스 역할을 합니다.
참고: Ultralytics 모드 튜토리얼: 유효성 검사
Ultralytics YOLO로 유효성을 검사해야 하는 이유는 무엇입니까?
YOLO11의 Val 모드를 사용하는 것이 유리한 이유는 다음과 같습니다.
- 정밀도: mAP50, mAP75 및 mAP50-95와 같은 정확한 메트릭을 통해 모델을 포괄적으로 평가합니다.
- 편의성: 훈련 설정을 기억하는 내장 기능을 활용하여 유효성 검사 프로세스를 간소화합니다.
- 유연성: 동일하거나 다른 데이터 세트 및 이미지 크기로 모델의 유효성을 검사합니다.
- 하이퍼파라미터 튜닝: 유효성 검사 지표를 사용하여 모델을 미세 조정하여 성능을 향상시킵니다.
Val 모드의 주요 기능
다음은 YOLO11의 Val 모드에서 제공하는 주요 기능입니다.
- 자동 설정: 모델은 간단한 유효성 검사를 위해 학습 구성을 기억합니다.
- 다중 메트릭 지원: 다양한 정확도 지표를 기반으로 모델을 평가합니다.
- CLI 및 python API: 유효성 검사 기본 설정에 따라 명령줄 인터페이스 또는 python API 중에서 선택합니다.
- 데이터 호환성: 학습 단계에서 사용된 데이터 세트뿐만 아니라 사용자 지정 데이터 세트와도 원활하게 작동합니다.
팁
- YOLO11 모델은 학습 설정을 자동으로 기억하므로 다음 명령만으로 동일한 이미지 크기와 원래 데이터 세트에서 모델의 유효성을 쉽게 검사할 수 있습니다.
yolo val model=yolo11n.pt
또는model('yolo11n.pt').val()
사용 예시
훈련된 YOLO11n 모델 검증 정확도 COCO8 데이터 세트에서. 가중치가 훈련을 유지하므로 인수가 필요하지 않습니다. model
훈련을 유지 data
및 인수를 모델 속성으로 사용합니다. 전체 유효성 검사 인수 목록은 아래 인수 섹션을 참조하십시오.
예시
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val() # no arguments needed, dataset and settings remembered
metrics.box.map # map50-95
metrics.box.map50 # map50
metrics.box.map75 # map75
metrics.box.maps # a list contains map50-95 of each category
yolo detect val model=yolo11n.pt # val official model
yolo detect val model=path/to/best.pt # val custom model
YOLO 모델 유효성 검사 인수
YOLO 모델의 유효성을 검사할 때 평가 프로세스를 최적화하기 위해 여러 인수를 미세 조정할 수 있습니다. 이러한 인수는 입력 이미지 크기, 일괄 처리 및 성능 임계값과 같은 측면을 제어합니다. 다음은 유효성 검사 설정을 효과적으로 사용자 지정하는 데 도움이 되도록 각 인수에 대한 자세한 분석입니다.
인수 | 유형 | 기본값 | 설명 |
---|---|---|---|
data |
str |
None |
데이터 세트 구성 파일의 경로를 지정합니다(예: coco8.yaml ). 이 파일에는 다음 경로가 포함됩니다. 유효성 검사 데이터, 클래스 이름 및 클래스 수가 포함됩니다. |
imgsz |
int |
640 |
입력 이미지의 크기를 정의합니다. 모든 이미지는 처리 전에 이 크기로 조정됩니다. 크기가 클수록 작은 객체의 정확도가 향상될 수 있지만 계산 시간이 늘어납니다. |
batch |
int |
16 |
배치당 이미지 수를 설정합니다. 값이 높을수록 GPU 메모리를 더 효율적으로 사용하지만 더 많은 VRAM이 필요합니다. 사용 가능한 하드웨어 리소스를 기준으로 조정합니다. |
save_json |
bool |
False |
만약 True , 추가 분석, 다른 도구와의 통합 또는 COCO와 같은 평가 서버에 제출하기 위해 결과를 JSON 파일에 저장합니다. |
conf |
float |
0.001 |
감지에 대한 최소 신뢰도 임계값을 설정합니다. 값이 낮을수록 재현율은 증가하지만 오탐지가 더 많이 발생할 수 있습니다. 정밀도-재현율 곡선을 계산하기 위해 유효성 검사 중에 사용됩니다. |
iou |
float |
0.7 |
Non-Maximum Suppression을 위한 Intersection Over Union 임계값을 설정합니다. 중복 감지 제거를 제어합니다. |
max_det |
int |
300 |
이미지당 최대 감지 수를 제한합니다. 과도한 감지를 방지하고 계산 리소스를 관리하기 위해 밀집된 장면에서 유용합니다. |
half |
bool |
True |
Half-precision (FP16) 연산을 활성화하여 메모리 사용량을 줄이고 정확도에 미치는 영향을 최소화하면서 속도를 향상시킬 수 있습니다. |
device |
str |
None |
유효성 검사를 위한 장치를 지정합니다(cpu , cuda:0 , 등)입니다. 다음의 경우 None , 사용 가능한 최상의 장치를 자동으로 선택합니다. 쉼표로 구분하여 여러 CUDA 장치를 지정할 수 있습니다. |
dnn |
bool |
False |
만약 True , 다음을 사용합니다. OpenCV ONNX 모델 추론을 위해 DNN 모듈을 사용하여 다음의 대안을 제공합니다. PyTorch 추론 방법입니다. |
plots |
bool |
False |
다음으로 설정하면 True , 모델 성능의 시각적 평가를 위해 예측 대 실제값, 혼동 행렬 및 PR 곡선의 플롯을 생성하고 저장합니다. |
classes |
list[int] |
None |
학습할 클래스 ID 목록을 지정합니다. 평가 중에 특정 클래스만 필터링하고 집중하는 데 유용합니다. |
rect |
bool |
True |
만약 True 은(는) 일괄 처리를 위해 직사각형 추론을 사용하여 패딩을 줄이고 원본 가로 세로 비율로 이미지를 처리하여 속도와 효율성을 잠재적으로 향상시킵니다. |
split |
str |
'val' |
유효성 검사에 사용할 데이터 세트 분할을 결정합니다(val , test 또는 train '). 성능 평가를 위해 데이터 세그먼트를 선택하는 데 유연성을 제공합니다. |
project |
str |
None |
유효성 검사 출력이 저장되는 프로젝트 디렉터리의 이름입니다. 다양한 실험 또는 모델의 결과를 정리하는 데 도움이 됩니다. |
name |
str |
None |
유효성 검사 실행 이름입니다. 유효성 검사 로그 및 출력이 저장되는 프로젝트 폴더 내에 하위 디렉토리를 만드는 데 사용됩니다. |
verbose |
bool |
False |
만약 True , 클래스별 메트릭, 배치 진행률 및 추가 디버깅 정보를 포함하여 유효성 검사 프로세스 중에 자세한 정보를 표시합니다. |
save_txt |
bool |
False |
만약 True , 이미지당 하나의 파일로 탐지 결과를 텍스트 파일에 저장합니다. 추가 분석, 사용자 정의 후처리 또는 다른 시스템과의 통합에 유용합니다. |
save_conf |
bool |
False |
만약 True , 다음의 경우 저장된 텍스트 파일에 신뢰도 값을 포함합니다. save_txt 활성화되어 분석 및 필터링을 위해 더 자세한 출력을 제공합니다. |
workers |
int |
8 |
데이터 로딩을 위한 작업자 스레드 수입니다. 값이 높을수록 데이터 전처리 속도를 높일 수 있지만 CPU 사용량이 증가할 수 있습니다. 0으로 설정하면 메인 스레드를 사용하며, 이는 일부 환경에서 더 안정적일 수 있습니다. |
augment |
bool |
False |
유효성 검사 중 테스트 시간 증강(TTA)을 활성화하여 입력의 변환된 버전에 대한 추론을 실행하여 추론 속도를 희생시키면서 탐지 정확도를 잠재적으로 향상시킵니다. |
agnostic_nms |
bool |
False |
클래스에 구애받지 않는 Non-Maximum Suppression을 활성화하여 예측된 클래스와 상관없이 겹치는 박스를 병합합니다. 인스턴스 중심 애플리케이션에 유용합니다. |
single_cls |
bool |
False |
유효성 검사 중에 모든 클래스를 단일 클래스로 취급합니다. 이진 감지 작업이나 클래스 구분이 중요하지 않은 경우 모델 성능을 평가하는 데 유용합니다. |
visualize |
bool |
False |
각 이미지에 대한 ground truth, true positive, false positive 및 false negative를 시각화합니다. 디버깅 및 모델 해석에 유용합니다. |
이러한 각 설정은 유효성 검사 프로세스에서 중요한 역할을 하며 YOLO 모델을 사용자 정의 가능하고 효율적으로 평가할 수 있도록 합니다. 특정 요구 사항 및 리소스에 따라 이러한 파라미터를 조정하면 정확도와 성능 간의 최상의 균형을 얻을 수 있습니다.
인수를 사용한 유효성 검사 예
참고: 모델 유효성 검사 결과를 CSV, JSON, SQL, Polars DataFrame 등으로 내보내는 방법
아래 예제는 python 및 CLI에서 사용자 지정 인수를 사용한 YOLO 모델 유효성 검사를 보여줍니다.
예시
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Customize validation settings
metrics = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.6, device="0")
yolo val model=yolo11n.pt data=coco8.yaml imgsz=640 batch=16 conf=0.25 iou=0.6 device=0
ConfusionMatrix 내보내기
제공된 코드를 사용하여 ConfusionMatrix 결과를 다양한 형식으로 저장할 수도 있습니다.
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
results = model.val(data="coco8.yaml", plots=True)
print(results.confusion_matrix.to_df())
메서드 | 반환 유형 | 설명 |
---|---|---|
summary() |
List[Dict[str, Any]] |
유효성 검사 결과를 요약된 사전으로 변환합니다. |
to_df() |
DataFrame |
유효성 검사 결과를 구조화된 Polars 데이터 프레임으로 반환합니다. |
to_csv() |
str |
유효성 검사 결과를 CSV 형식으로 내보내고 CSV 문자열을 반환합니다. |
to_json() |
str |
유효성 검사 결과를 JSON 형식으로 내보내고 JSON 문자열을 반환합니다. |
자세한 내용은 다음을 참조하십시오. DataExportMixin
클래스 문서.
FAQ
Ultralytics를 사용하여 YOLO11 모델의 유효성을 어떻게 검사합니까?
YOLO11 모델의 유효성을 검사하려면 Ultralytics에서 제공하는 Val 모드를 사용할 수 있습니다. 예를 들어 python API를 사용하여 모델을 로드하고 다음을 사용하여 유효성 검사를 실행할 수 있습니다.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Validate the model
metrics = model.val()
print(metrics.box.map) # map50-95
또는 명령줄 인터페이스(CLI)를 사용할 수 있습니다.
yolo val model=yolo11n.pt
추가 사용자 정의를 위해 다음과 같은 다양한 인수를 조정할 수 있습니다. imgsz
, batch
및 conf
python 및 CLI 모드 모두에서 가능합니다. 전체 파라미터 목록은 YOLO 모델 유효성 검사 인수 섹션을 확인하십시오.
YOLO11 모델 유효성 검사에서 어떤 메트릭을 얻을 수 있습니까?
YOLO11 모델 유효성 검사는 모델 성능을 평가하기 위한 몇 가지 주요 지표를 제공합니다. 여기에는 다음이 포함됩니다.
- mAP50(IoU 임계값 0.5에서 평균 정밀도)
- mAP75(IoU 임계값 0.75에서 평균 정밀도)
- mAP50-95(0.5에서 0.95까지의 여러 IoU 임계값에서 평균 정밀도)
python API를 사용하여 이러한 지표에 다음과 같이 액세스할 수 있습니다.
metrics = model.val() # assumes `model` has been loaded
print(metrics.box.map) # mAP50-95
print(metrics.box.map50) # mAP50
print(metrics.box.map75) # mAP75
print(metrics.box.maps) # list of mAP50-95 for each category
완전한 성능 평가를 위해서는 이러한 모든 지표를 검토하는 것이 중요합니다. 자세한 내용은 Val 모드의 주요 기능을 참조하십시오.
유효성 검사를 위해 Ultralytics YOLO를 사용하면 어떤 이점이 있습니까?
Ultralytics YOLO를 사용하여 유효성을 검사하면 다음과 같은 여러 가지 이점이 있습니다.
- 정밀도: YOLO11은 mAP50, mAP75 및 mAP50-95를 포함한 정확한 성능 지표를 제공합니다.
- 편의성: 모델은 학습 설정을 기억하므로 유효성 검사가 간단합니다.
- 유연성: 동일하거나 다른 데이터 세트 및 이미지 크기에 대해 검증할 수 있습니다.
- 하이퍼파라미터 튜닝: 검증 지표는 더 나은 성능을 위해 모델을 미세 조정하는 데 도움이 됩니다.
이러한 이점은 모델이 철저하게 평가되고 우수한 결과를 위해 최적화될 수 있도록 보장합니다. 이러한 장점에 대한 자세한 내용은 Ultralytics YOLO를 사용한 검증 이유 섹션에서 확인하세요.
사용자 정의 데이터 세트를 사용하여 YOLO11 모델의 유효성을 검사할 수 있습니까?
예, 다음을 사용하여 YOLO11 모델을 검증할 수 있습니다. 사용자 정의 데이터 세트. 다음을 지정하세요. data
인수를 사용하여 데이터 세트 구성 파일의 경로를 지정합니다. 이 파일에는 다음 경로가 포함되어야 합니다. 유효성 검사 데이터, 클래스 이름 및 기타 관련 세부 정보.
Python 예제:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Validate with a custom dataset
metrics = model.val(data="path/to/your/custom_dataset.yaml")
print(metrics.box.map) # map50-95
CLI를 사용한 예제:
yolo val model=yolo11n.pt data=path/to/your/custom_dataset.yaml
검증 중 더 사용자 정의 가능한 옵션은 인수를 사용한 예제 검증 섹션을 참조하세요.
YOLO11에서 유효성 검사 결과를 JSON 파일에 어떻게 저장합니까?
검증 결과를 JSON 파일에 저장하려면 다음을 설정하면 됩니다. save_json
인수를 True
검증을 실행할 때. 이는 Python API와 CLI 모두에서 수행할 수 있습니다.
Python 예제:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Save validation results to JSON
metrics = model.val(save_json=True)
CLI를 사용한 예제:
yolo val model=yolo11n.pt save_json=True
이 기능은 추가 분석 또는 다른 도구와의 통합에 특히 유용합니다. 자세한 내용은 YOLO 모델 검증 인수를 확인하세요.