산업 생산에서 "지능형 제조"를 지원하기 위해 우리는 전체 범위의 YOLOv8 모델[n/s/m/l/x]을 기반으로 직물 생산 시나리오에서 천 결함 감지 및 식별 시스템을 개발하고 구축합니다.

순수 산업 제조에는 장기적인 개발 프로세스가 있을 수 없습니다. 제조를 전체 프로세스 및 전체 시나리오 지능형 제조로 전환하는 것이 미래의 가장 경쟁력 있는 생산 시나리오입니다. 이전 개발 관행에서 우리는 이미 많은 산업 분야에 참여해 왔습니다. 생산 시나리오 PCB 회로 기판 결함 감지, 용접 결함 감지, 너트 및 나사 결함 감지 등과 같은 현장 프로젝트 개발 이 문서의 주요 목적은 섬유 생산 시나리오에서 천 결함 감지 및 식별을 개발하고 구성하는 것입니다. 최신 v8 시리즈 모델 시스템을 기반으로 합니다.

천 결함 감지는 이전 기사에서 실행되었으며 관심이 있으시면 직접 읽어보실 수 있습니다.

"YOLO 기반의 실용적인 천 결함 검출"

"천 결함 감지 사례의 전체 모음, yolov5 모델의 전체 범위[n/s/m/l/x]를 기반으로 천 결함 감지 모델을 개발 및 구성하고 각 모델의 성능 차이를 비교 및 ​​분석합니다." " 통합 주의 메커니즘은 YOLOv5를 기반으로 개발 및 구축되어 천 결함 시스템을 감지하고 식별합니다."

 이 기사에서는 탐지 모델을 개발하고 구현하기 위해 주로 최신 YOLOv8을 선택합니다. 전반적인 비교 분석을 위해 매개 변수 크기가 다른 5가지 모델을 개발했습니다. 먼저 예제 결과를 살펴보겠습니다.

예시 데이터를 간단히 살펴보겠습니다.

교육 데이터 구성 파일은 다음과 같습니다.

# Dataset
path: ./dataset
train:
  - /data/dataset/images/train
val:
  - /data/dataset/images/test
test:
  - /data/dataset/images/test
 
 
# Classes
names:
  0: chongzhan
  1: cuohua
  2: fengtou
  3: fengtouyin
  4: huamao
  5: laban
  6: louyin
  7: podong
  8: qita
  9: secha
  10: shuiyin
  11: wangzhe
  12: zhanwu
  13: zhezi
  14: zhici

YOLOv8 개발 및 자체 표적 탐지 프로젝트 구축에 대해 질문이 있는 경우 아래와 같이 다음 문서를 읽을 수 있습니다.

"YOLOv8을 기반으로 한 타겟 감지 모델 개발 및 구축에 대한 매우 자세한 튜토리얼 [용접 품질 검사 데이터 시나리오를 예로 들어]"

매우 상세한 실제 개발 튜토리얼입니다. YOLOv8부터 설치 패키지가 되었고, v5와 v7의 전반적인 사용법 차이가 여전히 상대적으로 크기 때문에 이 기사는 여기에서 확장되지 않습니다.

YOLOv8의 핵심 기능 및 변경 사항은 다음과 같습니다.
1. P5 640 및 P6 1280 해상도 대상 탐지 네트워크와 YOLACT 기반 인스턴스 분할 모델을 포함하는 새로운 SOTA 모델(최첨단 모델)을 제공합니다. YOLOv5와 마찬가지로 N/S/M/L/X 스케일의 다양한 크기 모델도 다양한 시나리오의 요구 사항을 충족하기 위해 스케일링 요소를 기반으로 제공됩니다.
2. 백본 네트워크 및 넥 부분은 YOLOv7 ELAN 설계 아이디어를 참조할 수 있습니다. YOLOv5의 C3 구조는 더 풍부한 그래디언트 흐름을 갖춘 C2f 구조로 대체되었으며 다양한 규모 모델에 대해 다양한 채널 번호가 조정되었습니다. 이는 모델 구조를 신중하게 미세 조정한 것입니다. 더 이상 매개변수 세트를 적용하지 않습니다. 모든 모델은 모델 성능을 크게 향상시켰습니다.
3. YOLOv5에 비해 Head 부분이 크게 변경되어 분류 헤드와 감지 헤드가 분리된 현재 주류의 디커플링 헤드 구조로 대체되었으며 Anchor-Based에서 Anchor-Free로 변경되었습니다
. TaskAlignedAssigner 샘플 분포 전략 및 Distribution Focal Loss 도입
5. 훈련의 데이터 향상 부분에서는 마지막 10 에포크 동안 YOLOX에서 Mosiac 향상을 끄는 작업을 도입하여 정확도를 효과적으로 향상시킬 수 있습니다.

공식 프로젝트 주소는 아래와 같습니다.

현재 1.7w 이상의 별이 수확되었습니다. 공식적으로 제공되는 사전 학습 모델은 다음과 같습니다.

모델 크기
(픽셀)
맵발
50-95
속도
CPU ONNX
(ms)
속도
A100 TensorRT
(ms)
매개변수
(M)
플롭
(B)
YOLOv8n 640 37.3 80.4 0.99 3.2 8.7
YOLOv8 640 44.9 128.4 1.20 11.2 28.6
YOLOv8m 640 50.2 234.7 1.83 25.9 78.9
YOLOv8l 640 52.9 375.2 2.39 43.7 165.2
YOLOv8x 640 53.9 479.1 3.53 68.2 257.8

또 다른 사전 훈련된 모델 세트는 다음과 같습니다.

모델 크기
(픽셀)
맵발
50-95
속도
CPU ONNX
(ms)
속도
A100 TensorRT
(ms)
매개변수
(M)
플롭
(B)
YOLOv8n 640 18.4 142.4 1.21 3.5 10.5
YOLOv8 640 27.7 183.1 1.40 11.4 29.7
YOLOv8m 640 33.6 408.5 2.26 26.2 80.6
YOLOv8l 640 34.9 596.9 2.43 44.1 167.4
YOLOv8x 640 36.3 860.6 3.56 68.7 260.6

Open Image V7 데이터 세트를 기반으로 구축되었으며 필요에 따라 선택하여 사용할 수 있습니다.

YOLOv8의 포지셔닝은 단순한 표적 탐지가 아니라 강력하고 포괄적인 도구 라이브러리이므로 태도 추정, 탐지, 분류, 분할 및 추적 등 다양한 유형의 작업을 지원합니다. 필요에 따라 선택하여 사용할 수 있습니다. .. 여기서는 더 자세히 설명하지 않겠습니다.

간단한 구현 예는 다음과 같습니다.

from ultralytics import YOLO
 
# yolov8n
model = YOLO('yolov8n.yaml').load('yolov8n.pt')  # build from YAML and transfer weights
model.train(data='data/self.yaml', epochs=100, imgsz=640)
 
 
# yolov8s
model = YOLO('yolov8s.yaml').load('yolov8s.pt')  # build from YAML and transfer weights
model.train(data='data/self.yaml', epochs=100, imgsz=640)
 
 
# yolov8m
model = YOLO('yolov8m.yaml').load('yolov8m.pt')  # build from YAML and transfer weights
model.train(data='data/self.yaml', epochs=100, imgsz=640)
 
 
# yolov8l
model = YOLO('yolov8l.yaml').load('yolov8l.pt')  # build from YAML and transfer weights
model.train(data='data/self.yaml', epochs=100, imgsz=640)
 
 
# yolov8x
model = YOLO('yolov8x.yaml').load('yolov8x.pt')  # build from YAML and transfer weights
model.train(data='data/self.yaml', epochs=100, imgsz=640)

여기서는 개발을 위해 서로 다른 매개변수 크기를 갖는 n, s, m, l 및 x의 5개 모델을 선택합니다.

yolov8의 모델 파일은 다음과 같습니다.

# Parameters
nc: 15 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov8n.yaml' will call yolov8.yaml with scale 'n'
  # [depth, width, max_channels]
  n: [0.33, 0.25, 1024]  # YOLOv8n summary: 225 layers,  3157200 parameters,  3157184 gradients,   8.9 GFLOPs
  s: [0.33, 0.50, 1024]  # YOLOv8s summary: 225 layers, 11166560 parameters, 11166544 gradients,  28.8 GFLOPs
  m: [0.67, 0.75, 768]   # YOLOv8m summary: 295 layers, 25902640 parameters, 25902624 gradients,  79.3 GFLOPs
  l: [1.00, 1.00, 512]   # YOLOv8l summary: 365 layers, 43691520 parameters, 43691504 gradients, 165.7 GFLOPs
  x: [1.00, 1.25, 512]   # YOLOv8x summary: 365 layers, 68229648 parameters, 68229632 gradients, 258.5 GFLOPs
 
# YOLOv8.0n backbone
backbone:
  # [from, repeats, module, args]
  - [-1, 1, Conv, [64, 3, 2]]  # 0-P1/2
  - [-1, 1, Conv, [128, 3, 2]]  # 1-P2/4
  - [-1, 3, C2f, [128, True]]
  - [-1, 1, Conv, [256, 3, 2]]  # 3-P3/8
  - [-1, 6, C2f, [256, True]]
  - [-1, 1, Conv, [512, 3, 2]]  # 5-P4/16
  - [-1, 6, C2f, [512, True]]
  - [-1, 1, Conv, [1024, 3, 2]]  # 7-P5/32
  - [-1, 3, C2f, [1024, True]]
  - [-1, 1, SPPF, [1024, 5]]  # 9
 
# YOLOv8.0n head
head:
  - [-1, 1, nn.Upsample, [None, 2, 'nearest']]
  - [[-1, 6], 1, Concat, [1]]  # cat backbone P4
  - [-1, 3, C2f, [512]]  # 12
 
  - [-1, 1, nn.Upsample, [None, 2, 'nearest']]
  - [[-1, 4], 1, Concat, [1]]  # cat backbone P3
  - [-1, 3, C2f, [256]]  # 15 (P3/8-small)
 
  - [-1, 1, Conv, [256, 3, 2]]
  - [[-1, 12], 1, Concat, [1]]  # cat head P4
  - [-1, 3, C2f, [512]]  # 18 (P4/16-medium)
 
  - [-1, 1, Conv, [512, 3, 2]]
  - [[-1, 9], 1, Concat, [1]]  # cat head P5
  - [-1, 3, C2f, [1024]]  # 21 (P5/32-large)
 
  - [[15, 18, 21], 1, Detect, [nc]]  # Detect(P3, P4, P5)

여기에는 매개변수 크기가 서로 다른 5개의 모델이 포함됩니다. 훈련 정산 시에도 동일한 매개변수 설정을 유지하며, 훈련이 완료된 후 수평적 비교 및 ​​시각화를 수행하여 전반적인 비교 및 ​​분석을 진행합니다.

[정밀도 곡선]
정밀도-재현율 곡선은 다양한 임계값에서 이진 분류 모델의 정밀도 성능을 평가하는 데 사용되는 시각적 도구입니다. 다양한 임계값에서 정밀도와 재현율 간의 관계를 표시하여 모델이 다양한 임계값에서 어떻게 작동하는지 이해하는 데 도움이 됩니다.
정밀도는 긍정적인 사례로 정확하게 예측된 샘플 수와 긍정적인 사례로 예측된 ​​샘플 수의 비율을 나타냅니다. 재현율은 실제로 긍정적인 사례인 샘플 수에 대한 긍정적인 사례로 올바르게 예측된 샘플 수의 비율을 나타냅니다.
정밀도 곡선을 그리는 단계는 다음과 같습니다.
다양한 임계값을 사용하여 예측 확률을 이진 클래스 레이블로 변환합니다. 일반적으로 예측 확률이 임계값보다 크면 해당 샘플은 긍정적인 예로 분류되고, 그렇지 않은 경우에는 부정적인 사례로 분류됩니다.
각 임계값에 대해 해당 정밀도와 재현율이 계산됩니다.
동일한 그래프의 각 임계값에서 정밀도와 재현율을 플롯하여 정밀도 곡선을 형성합니다.
정확도 곡선의 모양과 변화 추세에 따라 적절한 임계값을 선택하여 필요한 성능 요구 사항을 달성할 수 있습니다.
정밀도 곡선을 관찰하면 필요에 따라 정밀도와 재현율의 균형을 맞추는 최상의 임계값을 결정할 수 있습니다. 정밀도가 높을수록 위양성(false positive)이 적고, 재현율이 높을수록 위음성(false negative)이 적다는 의미입니다. 특정 비즈니스 요구 사항과 비용 균형에 따라 곡선에서 적절한 운영 지점이나 임계값을 선택할 수 있습니다.
정밀 곡선은 분류기 성능에 대한 보다 포괄적인 분석을 제공하고 다양한 모델의 성능을 평가 및 비교하는 데 도움이 되도록 재현율 곡선과 함께 사용되는 경우가 많습니다.

[리콜 곡선]
리콜 곡선은 다양한 임계값에서 이진 분류 모델의 리콜 성능을 평가하는 데 사용되는 시각화 도구입니다. 다양한 임계값에서의 재현율과 해당 정밀도 비율 사이의 관계를 표시하여 다양한 임계값에서 모델 성능을 이해하는 데 도움이 됩니다.
재현율은 실제로 긍정적인 사례인 샘플 수에 대한 긍정적인 사례로 올바르게 예측된 샘플 수의 비율을 나타냅니다. 재현율은 민감도(Sensitivity) 또는 참양성률(True Positive Rate)이라고도 합니다.
재현율 곡선을 그리는 단계는 다음과 같습니다.
다양한 임계값을 사용하여 예측 확률을 이진 클래스 레이블로 변환합니다. 일반적으로 예측 확률이 임계값보다 크면 표본은 긍정적인 예로 분류되고, 그렇지 않으면 부정적인 예로 분류됩니다.
각 임계값에 대해 해당 재현율과 해당 정밀도 비율이 계산됩니다.
동일한 그래프에 각 임계값의 재현율과 정밀도를 플롯하여 재현율 곡선을 형성합니다.
재현 곡선의 모양과 변화 추세에 따라 필요한 성능 요구 사항을 달성하기 위해 적절한 임계값을 선택할 수 있습니다.
재현율 곡선을 관찰함으로써 재현율과 정밀도의 균형을 유지하기 위한 요구 사항에 따라 최상의 임계값을 결정할 수 있습니다. 재현율이 높을수록 위음성(false negative)이 적고, 정밀도가 높을수록 위양성(false positive)이 적음을 의미합니다. 특정 비즈니스 요구 사항과 비용 균형에 따라 곡선에서 적절한 운영 지점이나 임계값을 선택할 수 있습니다.
재현율 곡선은 분류기 성능에 대한 보다 포괄적인 분석을 제공하고 다양한 모델의 성능을 평가 및 비교하는 데 도움이 되도록 정밀 곡선과 함께 사용되는 경우가 많습니다.

[F1 값 곡선]
F1 값 곡선은 다양한 임계값에서 이진 분류 모델의 성능을 평가하는 데 사용되는 시각화 도구입니다. 다양한 임계값에서 정밀도, 재현율 및 F1 점수 간의 관계를 플롯하여 모델의 전반적인 성능을 이해하는 데 도움이 됩니다.
F1 점수는 두 성능 지표를 모두 고려한 정밀도와 재현율의 조화 평균입니다. F1 값 곡선은 최상의 임계값을 선택하기 위해 다양한 정밀도와 재현율 사이의 균형점을 결정하는 데 도움이 될 수 있습니다.
F1 값 곡선을 그리는 단계는 다음과 같습니다.
다양한 임계값을 사용하여 예측 확률을 이진 클래스 레이블로 변환합니다. 일반적으로 예측 확률이 임계값보다 크면 표본은 긍정적인 예로 분류되고, 그렇지 않으면 부정적인 예로 분류됩니다.
각 임계값에 대해 해당 정밀도, 재현율 및 F1 점수가 계산됩니다.
동일한 그래프의 각 임계값에서 정밀도, 재현율 및 F1 점수를 플롯하여 F1 값 곡선을 형성합니다.
F1 값 곡선의 모양과 변화 추세에 따라 적절한 임계값을 선택하여 필요한 성능 요구 사항을 달성할 수 있습니다.
F1 값 곡선은 종종 ROC 곡선(수신기 작동 특성 곡선)과 함께 사용되어 다양한 모델의 성능을 평가하고 비교하는 데 도움이 됩니다. 분류기 성능에 대한 보다 포괄적인 분석을 제공하여 특정 애플리케이션 시나리오에 따라 적절한 모델 및 임계값 설정을 선택할 수 있습니다.

종합비교: 매개변수 수준이 다른 모델들 사이에 성능에는 뚜렷한 차이가 없습니다. 비교해 보면 n 시리즈 모델이 효과가 가장 낮고 m 시리즈 모델이 더 우수합니다. 결국 우리는 m 시리즈를 선택했습니다. 모델을 우리 모델로 사용 온라인 추론 모델.

다음으로 m-시리즈 모델의 결과를 자세히 살펴보겠습니다.

【배치 예】

【훈련 시각화】

관심이 있으시면 직접 시도해 볼 수 있습니다!

추천

출처blog.csdn.net/Together_CZ/article/details/135382432