>백엔드 개발 >파이썬 튜토리얼 >Python의 인공지능을 활용한 타이어 홈 분석!

Python의 인공지능을 활용한 타이어 홈 분석!

Barbara Streisand
Barbara Streisand원래의
2024-11-03 07:30:30457검색

타이어 트레드 분석은 특히 장거리를 이동하는 차량의 마모를 식별하고 안전을 보장하는 데 중요한 작업입니다. 인공지능(AI)과 Python을 사용하면 이 프로세스를 빠르고 정확하게 자동화할 수 있습니다. 여기서는 VGG16 아키텍처를 기반으로 하는 CNN(컨벌루션 신경망) 모델이 타이어를 "새 제품" 또는 "중고"로 분류하는 방법을 보여주고, OpenCV는 이미지를 분석하여 트레드 깊이를 측정하는 데 도움을 줍니다.

사용된 기술

  • 파이썬:
    AI 및 기계 학습, 특히 고급 라이브러리에 널리 사용되는 프로그래밍 언어입니다.

  • OpenCV:
    이미지 처리, 윤곽 감지, 타이어 트레드 면적 측정에 사용됩니다.

  • TensorFlow 및 Keras:
    딥러닝 라이브러리. 우리는 Keras를 사용하여 이미지 인식을 위해 사전 훈련된 CNN인 VGG16 모델로 작업합니다.

  • 매트플롯립:
    데이터 시각화 및 그래프 생성을 위한 라이브러리로 분류 결과를 더욱 쉽게 해석할 수 있습니다.

코드:

1. 이미지 로드 및 전처리:
타이어 이미지는 모델 입력에 필요한 표준 형식(150x150픽셀)으로 업로드되고 크기가 조정됩니다. 이러한 크기 조정은 종횡비를 유지하고 픽셀 값을 0과 1 사이로 정규화하여 모델 처리를 더 쉽게 만듭니다.

import cv2
import numpy as np
from tensorflow.keras.applications.vgg16 import preprocess_input

def process_image(image_path, target_size=(150, 150)):
    image = cv2.imread(image_path)
    if image is None:
        print(f"Erro ao carregar a imagem: {image_path}. Verifique o caminho e a integridade do arquivo.")
        return None, None

    image_resized = cv2.resize(image, target_size, interpolation=cv2.INTER_AREA)
    image_array = np.array(image_resized) / 255.0  
    image_array = np.expand_dims(image_array, axis=0)
    image_preprocessed = preprocess_input(image_array)

    return image_resized, image_preprocessed

2. 훈련된 모델을 사용한 분류:
우리는 타이어를 "새 제품" 또는 "중고"로 분류하도록 미세 조정된 사전 훈련된 컨벌루션 신경망 모델을 로드했습니다. 이 모델은 타이어가 새 것일 확률을 나타내는 신뢰도 점수를 제공합니다.

from tensorflow.keras.models import load_model

model = load_model('pneu_classificador.keras')
prediction = model.predict(image_preprocessed)

3. 홈 깊이에 대한 윤곽 분석:
그루브 깊이 감지는 컴퓨터 비전 기술을 사용하여 수행됩니다. 그레이스케일 이미지는 홈 윤곽을 식별하는 데 도움이 되는 흐림 필터와 Canny 가장자리 감지를 거칩니다. 그런 다음 윤곽의 전체 면적을 계산하여 마모를 추정할 수 있습니다.

def detect_tread_depth(image):
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    blurred = cv2.GaussianBlur(gray, (5, 5), 0)
    edges = cv2.Canny(blurred, 30, 100)
    contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    total_area = sum(cv2.contourArea(c) for c in contours if cv2.contourArea(c) > 100)
    return total_area

4. 결과 시각화 및 분석:
각 타이어를 분류하고 분석한 후 결과를 Matplotlib로 표시합니다. 각 이미지에서 검출된 분류 신뢰도 점수와 그루브 영역을 비교했습니다.

import matplotlib.pyplot as plt

confidence_scores = []
total_area_green_values = []
predicted_classes = []

for image_file in os.listdir(ver_dir):
    image_path = os.path.join(ver_dir, image_file)
    image_resized, image_preprocessed = process_image(image_path)
    if image_preprocessed is not None:
        prediction = model.predict(image_preprocessed)
        confidence_score = prediction[0][0]
        total_area_green = detect_tread_depth(image_resized)

        predicted_class = "novo" if total_area_green > 500 else "usado"
        confidence_scores.append(confidence_score)
        total_area_green_values.append(total_area_green)
        predicted_classes.append(predicted_class)

        plt.imshow(cv2.cvtColor(image_resized, cv2.COLOR_BGR2RGB))
        plt.title(f"Pneu {predicted_class} (Área: {total_area_green:.2f}, Confiança: {confidence_score:.2f})")
        plt.axis('off')
        plt.show()

fig, axs = plt.subplots(2, 1, figsize=(10, 10))

axs[0].bar(os.listdir(ver_dir), confidence_scores, color='skyblue')
axs[0].set_title('Confiança na Classificação')
axs[0].set_ylim(0, 1)
axs[0].tick_params(axis='x', rotation=45)

axs[1].bar(os.listdir(ver_dir), total_area_green_values, color='lightgreen')
axs[1].set_title('Área Verde Detectada')
axs[1].tick_params(axis='x', rotation=45)

plt.tight_layout()
plt.show()

Análise de Sulco de Pneus com Inteligência Artificial em Python!

Análise de Sulco de Pneus com Inteligência Artificial em Python!

Análise de Sulco de Pneus com Inteligência Artificial em Python!

이 프로젝트는 AI와 컴퓨터 비전을 사용하여 타이어 마모 분석을 자동화하여 정확하고 빠른 분류를 수행하는 방법을 보여줍니다. VGG16 아키텍처와 OpenCV의 사용은 신경망 모델 정확도와 시각적 시스템 분석을 결합하는 데 핵심입니다. 이 시스템은 전체 차량에 대한 지속적인 모니터링을 위해 확장될 수 있어 사고를 줄이고 타이어 관리를 최적화하는 데 도움이 됩니다.

위 내용은 Python의 인공지능을 활용한 타이어 홈 분석!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.