Yapay Zeka

Computer Vision ile Kalite Kontrol Otomasyonu

Fatih Algül
12.03.2026 216 görüntülenme

Computer Vision ile Kalite Kontrol: Neden Otomasyon?

Üretim hatlarında kalite kontrol, geleneksel olarak insan gözüne ve deneyimine dayanan bir süreçtir. Ancak insan kaynaklı denetimler; yorgunluk, dikkat dağınıklığı ve subjektif değerlendirme gibi faktörlerden dolayı hata oranını artırabilir. Computer Vision (Bilgisayarlı Görü) teknolojileri, bu süreci otomatikleştirerek hem hız hem de doğruluk açısından büyük avantajlar sağlar. Günümüzde bir kamera ve uygun bir yazılım ile saniyede yüzlerce ürünü denetlemek mümkündür.

Temel Mimari ve Bileşenler

Bir kalite kontrol otomasyon sistemi tipik olarak şu bileşenlerden oluşur:

  • Kamera ve Aydınlatma: Endüstriyel kameralar (GigE Vision, USB3 Vision) ve uygun aydınlatma düzeneği görüntü kalitesinin temelidir.
  • Görüntü İşleme Katmanı: OpenCV, scikit-image gibi kütüphanelerle ön işleme (filtreleme, eşikleme, kenar tespiti) yapılır.
  • Derin Öğrenme Modeli: CNN tabanlı sınıflandırma veya nesne tespit modelleri (YOLOv8, EfficientNet, ResNet) kusurları tespit eder.
  • Karar ve Aksiyon Mekanizması: PLC veya GPIO üzerinden hatalı ürünleri hattan ayıran mekanik sistemler tetiklenir.
  • Dashboard ve Loglama: Üretim istatistikleri, hata oranları ve model performansı gerçek zamanlı olarak izlenir.

Görüntü Ön İşleme Adımları

Ham kamera görüntüsünün modele verilmeden önce bir dizi ön işlemden geçirilmesi gerekir. Bu adımlar modelin doğruluğunu doğrudan etkiler:

  1. Gürültü Azaltma: Gaussian veya Median Blur filtreleri ile sensör gürültüsü temizlenir.
  2. Kontrast İyileştirme: CLAHE (Contrast Limited Adaptive Histogram Equalization) yöntemiyle düşük kontrastlı görüntüler iyileştirilir.
  3. ROI (Region of Interest) Çıkarma: Yalnızca ilgili bölge kırpılarak gereksiz arka plan bilgisi elenir.
  4. Normalizasyon: Piksel değerleri 0-1 aralığına ölçeklendirilerek model girdisi standartlaştırılır.

Aşağıda OpenCV ile temel ön işleme örneğini görebilirsiniz:

import cv2
import numpy as np

def preprocess(image_path):
    img = cv2.imread(image_path)
    # Gri tonlamaya çevir
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # Gürültü azaltma
    blurred = cv2.GaussianBlur(gray, (5, 5), 0)
    # CLAHE ile kontrast iyileştirme
    clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
    enhanced = clahe.apply(blurred)
    # Normalizasyon
    normalized = enhanced.astype(np.float32) / 255.0
    return normalized

Kusur Tespit Modeli Eğitimi

Kalite kontrol senaryolarında en yaygın yaklaşım, ikili sınıflandırma (sağlam / hatalı) veya çok sınıflı sınıflandırma (çizik, çatlak, leke, deformasyon vb.) modellerinin eğitilmesidir. Transfer learning kullanarak önceden eğitilmiş bir model üzerinde fine-tuning yapmak, az veriyle bile yüksek doğruluk elde etmenin en etkili yoludur.

import torch
import torch.nn as nn
from torchvision import models, transforms
from torch.utils.data import DataLoader, ImageFolder

# Veri dönüşümleri
transform = transforms.Compose([
    transforms.Resize((224, 224)),
    transforms.RandomHorizontalFlip(),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406],
                         std=[0.229, 0.224, 0.225])
])

# Veri seti yükleme
dataset = ImageFolder(root="data/quality_dataset", transform=transform)
train_loader = DataLoader(dataset, batch_size=32, shuffle=True)

# Transfer learning ile model
model = models.resnet18(pretrained=True)
model.fc = nn.Linear(model.fc.in_features, 2)  # 2 sınıf: sağlam, hatalı

criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=1e-4)

# Eğitim döngüsü
for epoch in range(20):
    model.train()
    running_loss = 0.0
    for images, labels in train_loader:
        optimizer.zero_grad()
        outputs = model(images)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()
        running_loss += loss.item()
    print(f"Epoch {epoch+1}, Loss: {running_loss/len(train_loader):.4f}")

torch.save(model.state_dict(), "quality_model.pth")

Veri Seti Hazırlama İpuçları

  • Hatalı ürün görüntüleri genellikle az olduğu için veri artırma (data augmentation) teknikleri kritik önem taşır: döndürme, aynalama, parlaklık değişimi ve elastic deformasyon uygulayın.
  • Sınıf dengesizliğiyle başa çıkmak için weighted sampling veya focal loss kullanmayı değerlendirin.
  • Gerçek üretim ortamından alınan görüntülerle eğitim yapın; laboratuvar koşullarında çekilen fotoğraflar sahada farklı sonuçlar verebilir.
  • Her kusur tipi için en az 200-500 etiketli görüntü hedefleyin. Az veri durumunda few-shot learning veya anomaly detection yaklaşımlarını araştırın.

Gerçek Zamanlı Çıkarım (Inference) Pipeline

Eğitilen modelin üretim hattında kullanılması için düşük gecikmeli bir çıkarım hattı kurulmalıdır. Aşağıda bir kamera akışından gerçek zamanlı kusur tespit örneği verilmiştir:

import cv2
import torch
from torchvision import transforms

model = models.resnet18()
model.fc = nn.Linear(model.fc.in_features, 2)
model.load_state_dict(torch.load("quality_model.pth"))
model.eval()

transform = transforms.Compose([
    transforms.ToPILImage(),
    transforms.Resize((224, 224)),
    transforms.ToTensor(),
    transforms.Normalize([0.485, 0.456, 0.406],
                         [0.229, 0.224, 0.225])
])

labels = ["Saglam", "Hatali"]
cap = cv2.VideoCapture(0)  # Endüstriyel kamera

while True:
    ret, frame = cap.read()
    if not ret:
        break

    input_tensor = transform(frame).unsqueeze(0)
    with torch.no_grad():
        output = model(input_tensor)
        pred = torch.argmax(output, dim=1).item()

    color = (0, 255, 0) if pred == 0 else (0, 0, 255)
    cv2.putText(frame, labels[pred], (10, 40),
                cv2.FONT_HERSHEY_SIMPLEX, 1.2, color, 2)
    cv2.imshow("Kalite Kontrol", frame)

    if pred == 1:
        # Hatalı ürün tespit edildi — reject sinyali gönder
        trigger_reject_mechanism()

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

Performans Optimizasyonu

Gerçek zamanlı sistemlerde gecikme kritik bir faktördür. Aşağıdaki stratejilerle çıkarım süresini minimize edebilirsiniz:

  • Model Küçültme: MobileNetV3 veya EfficientNet-Lite gibi hafif modeller kullanarak CPU üzerinde bile hızlı çıkarım elde edin.
  • ONNX Runtime: PyTorch modelinizi ONNX formatına dönüştürerek platform bağımsız ve optimize edilmiş çıkarım yapın.
  • TensorRT: NVIDIA GPU'larda TensorRT ile modeli derleyerek 5-10x hızlanma sağlayın.
  • Batch İşleme: Birden fazla görüntüyü tek seferde işleyerek GPU kullanım oranını artırın.
  • INT8 Quantization: Model ağırlıklarını 32-bit float yerine 8-bit integer'a dönüştürerek hem bellek hem de hız kazanın.

Anomali Tespiti Yaklaşımı

Her kusur tipini önceden etiketlemek her zaman mümkün olmayabilir. Bu durumda anomali tespiti yaklaşımı tercih edilir: model yalnızca sağlam ürünlerin görüntüleriyle eğitilir ve normdan sapan her şeyi "anormal" olarak işaretler. Autoencoder tabanlı yöntemler bu alanda oldukça etkilidir. Model, sağlam ürün görüntüsünü yeniden oluşturmayı öğrenir; hatalı bir ürün geldiğinde yeniden oluşturma hatası (reconstruction error) yükselir ve bu eşik değer aşımı kusur olarak yorumlanır.

Endüstriyel Uygulama Senaryoları

  • Elektronik Kart (PCB) Denetimi: Lehim hataları, eksik bileşenler ve yanlış yerleşim tespiti.
  • Tekstil: Kumaş üzerinde yırtık, leke, renk farklılığı ve doku bozukluğu kontrolü.
  • Otomotiv: Boya yüzey kalitesi, kaynak dikişi kontrolü ve montaj doğrulama.
  • Gıda: Ambalaj bütünlüğü, etiket doğrulama ve ürün boyut/renk standardı kontrolü.
  • İlaç: Tablet renk ve şekil kontrolü, blister ambalaj bütünlüğü ve barkod doğrulama.

Sonuç ve Öneriler

Computer Vision tabanlı kalite kontrol otomasyonu, doğru şekilde kurgulandığında insan denetçilere kıyasla %99+ doğruluk oranı ile çalışabilir ve 7/24 kesintisiz üretim denetimi sağlar. Başarılı bir proje için şu adımları izlemenizi öneririm:

  1. Problemi net tanımlayın: hangi kusur tiplerini tespit etmek istiyorsunuz?
  2. Kaliteli ve temsili bir veri seti oluşturun; aydınlatma ve kamera açısını standardize edin.
  3. Basit bir modelle başlayın, metriklerinizi ölçün (precision, recall, F1-score) ve iteratif olarak iyileştirin.
  4. Edge deployment için modeli optimize edin (ONNX, TensorRT, quantization).
  5. Sahada sürekli izleme ve model güncellemesi için bir MLOps pipeline'ı kurun; üretim verileriyle modeli periyodik olarak yeniden eğitin.

Bu sistemler ilk yatırım maliyetine rağmen, azalan fire oranları, artan üretim hızı ve tutarlı kalite standardı sayesinde kısa sürede kendini amorti eder. Özellikle yüksek hacimli üretim yapan tesislerde ROI (Return on Investment) oldukça hızlı geri dönüş sağlar.

Yazar Hakkında
Fatih Algül
TechSoft Solutions
Proje mi var?

Yazılım, IoT veya otomasyon konularında destek almak ister misiniz?

İletişime Geç