YOLOv8 ile PCB Bileşen Tespiti: Üretim Hattında Kamera Tabanlı Kalite Kontrol Sistemi
Merhaba Ben Betül. Selçuk Üniversitesi Bilgisayar Mühendisliği öğrencisiyim bu yazıda Elfatek AR-GE departmanında geçirdiğim staj süresinde geliştirdiğim ‘PCB (Baskılı Devre Kartı) Kalite Kontrol Sistemi’ projesini sizlerle paylaşmak istiyorum. Hem projenin teknik yolculuğunu hem de bu süreçte öğrendiklerimi mümkün olduğunca sade bir dille anlatmaya çalışacağım.
Problem ve Amaç
Üretim hattında montajı tamamlanan PCB kartlarının üzerindeki bileşenlerin (röle, kapasitör, konnektör, IC, sigorta yuvası, RF modülü vb.) eksiksiz ve doğru yönlü yerleştirildiğinin kontrolü genellikle manuel gözle muayeneyle yapılıyor. Bu yöntem hem zaman alıyor hem de insan hatasına açık. Projemin amacı, kamera ile alınan görüntü üzerinden bir kartın üzerindeki bileşenleri otomatik olarak tespit edip sayan, referans karta göre eksik/fazla parça olup olmadığını anlayan bir yapay zeka sistemi geliştirmekti.
Veri Seti ve Eğitim Süreci
Elimde 87 farklı PCB kart görüntüsünden oluşan bir veri seti vardı. Bu ham veri setim fabrikadaki gerçek koşulları (karanlık ortam, bulanık çekim, gürültülü görüntü, farklı kontrast) yansıtmıyordu. Bunu çözmek için veri setini farklı kombinasyonla (karanlık, aynalanmış, bulanık, gürültülü, kontrastlı vb.) çoğaltarak hem sınıf dengesini iyileştirdim hem de modeli “gerçek fabrika hayatına” hazırladım.
Model Mimarisi
3 aşamalı Sistemin uçtan uca çalışma mantığı şu şekildedir:

Sistem Nasıl Çalışıyor?
Geliştirdiğim sistem Streamlit tabanlı bir web uygulaması. Kullanıcı bir PCB fotoğrafı yüklüyor sistem saniyeler içinde bileşen tespiti, sayımı ve yönelim analizini tamamlayarak sonucu ekrana veriyor.
Sistem iki farklı modda çalışabiliyor:

1.Hızlı Tespit Modu
Elinizde sadece kartın kendisi var, herhangi bir referans fotoğrafı olmadan analiz yapmak istiyorsunuz. Bu modda kart herhangi bir açıda çekilmiş olsa bile sistem kartı otomatik olarak düzleştiriyor, arka planı temizliyor ve modele 1280×1280 çözünürlükte temiz bir görüntü sunuyor. Sonrasında YOLOv8 modeli kartın üzerindeki röleleri, kondansatörleri, konektörleri ve diğer bileşenleri tespit edip sayıyor.

2.Referanslı Analiz Modu
Elinizde referans karta kayıtlı olan kartınız varsa sistem, SIFT özellik eşleştirme ve RANSAC algoritmasıyla test kartını referansa geometrik olarak hizalıyor. Ardından yalnızca bileşen tespiti değil, IC (entegre devre) çiplerinin kutup noktası yönü ve elektrolitik kondansatörlerin polaritesi de kontrol ediliyor.




Teknik Açı: YOLOv8 Modeli
Sistemin beyni, 7 farklı PCB bileşenini tanıyacak şekilde eğitilmiş bir YOLOv8 Medium (YOLOv8m) modelidir:
- Relay (Röle)
- Electrolytic Capacitor (Elektrolitik Kondansatör)
- White Connector (Beyaz Konnektör)
- Green Connector (Yeşil Klemens)
- RF Module (Radyo Frekans Modülü)
- Fuse Holder (Sigorta Yuvası)
- IC (Entegre Devre)
Modeli ilk ham verilerin eğitiminden sonra doğrudan sıfırdan eğitmek yerine ilk eğitimden elde edilmiş ağırlıklar temel alınarak Transfer Learning (Aktarım Öğrenmesi) uygulandı. Bu sayede model PCB bileşenlerinin temel görsel özelliklerini daha önceki iterasyondan hatırlayarak yalnızca iyileştirmeye odaklandı, eğitim süresi ve veri ihtiyacı önemli ölçüde azaldı.
Son modelin genel performansı:
- Kesinlik (Precision): %95.5
- Duyarlılık (Recall): %93.3
- mAP50: %93.0
- Map50-95: %78.2

IC Kutup Noktası Tespiti
IC çiplerinin doğru yönde takılıp takılmadığını anlamak için özel eğitilmiş bir YOLO sınıflandırma modeli ve buna eşlik eden 6 adımlı OpenCV yedek sistemi geliştirildi. Yedek sistem IC’nin köşe bölgelerini dinamik eşikleme, sabit eşikleme ve morfolojik kapanım yöntemlerini sırasıyla deneyerek kutup noktasını buluyor ve yuvarlıklık (circularity) kriteri ile doğrulayarak yön kararını veriyor.
Kondansatör Polarisite Analizi
Elektrolitik kondansatörlerde artı/eksi yönünü bulmak için kondansatörün silindirik gövdesini ortasından iki iç içe daire maskesiyle analiz eden özgün bir algoritma yazdım. Halka bölgesini dört sektöre bölerek (Üst/Alt/Sol/Sağ) hangi tarafta işaret pikseli yoğunlaştığını sayıyor ve yönü tespit ediyor. Bu sistem de YOLO sınıflandırma modeliyle güçlendirildi; güven skoru düşük kaldığında OpenCV yöntemi devreye giriyor.
Bu problem bana sadece bir nesne tespit modeli eğitmeyi değil, bir problemi doğru parçalara ayırmayı öğretti. “Tek modelle her şeyi çöz” dürtüsüne kapılmak yerine, sorunu üç ayrı ve odaklı probleme bölmek hem daha doğru hem de daha anlaşılır bir sistem ortaya çıkardı.
Herkese kolaylıklar dilerim:)