HALCON’un Derin Öğrenme (Deep Learning) desteği de vardır. Ancak derin öğrenme çıkmadan önce ise zaten çeşitli öğrenme modülleri (svm, knn, mlp, cnn) ile makine öğrenmesi (machine learning) yapılıyordu ve bunları sıkça kullanıyorduk. Bu yazıda bir projeyi örnek olarak anlatacağım.
Türkiye’nin en büyük kavanoz üreticilerinden birinin, kavanoz üzerilerine yapıştırılan etiketlerinin kontrolü yapılmak istendi. Bu proje aslında tam Derin Öğrenme’nin kullanılacağı bir proje. Ancak üretim koşulları gereği bir üründen zaten 1000 – 10000 civarında yapılıyor ve başka ürüne geçiliyor. Yani üretim sayısı, zaten derin öğrenme için gereken OK ve RET numune sayısı kadar oluyor. Bu durumda daha az sayıda öğretim yapacağız. Derin öğrenme modülünün kullanım maliyetini de düşündüğümüzde, normal makine öğrenmesi yöntemleri ile yapmaya karar verdik.
Zorlukları:
- Etiketler önde ve/veya arkada gözükecek şekilde, 1 ya da 2 adet gelebilir. Dolayısıyla 2 adet kamera gerekiyor.
- Hareket halinde görüntü alınacak.
- Saniyede 4 adete kadar kamera önünden geçebilir. 2 kamera için toplam kontrol süresi maksimum 250 ms olması gerekmekte.
- Kavanozlar silindirik olduğu için aydınlatma çok önemli, kenarlar aydınlanmaz ise görmek zorlaşacaktır. Kavanozun büyüklüğüne ve şekline göre ışığı yansıtması da değişken olmaktadır.
- Kavanozların ebatları değişken, dolayısıyla etiketlerin yerleri de.
- Kavanozlar ve etiketler, düz-bombeli-yamuk şekilli-eğri olabilir.
- Etiketlerin eni boyu yüksekliği de değişken olabilir.
- Etiket ve kavanozun içindeki malzeme her renkte gelebilir.
- Etiket üzerinde yazı, barkod olabilir ya da içindeki malzemenin resimleri olabilir.
- Kavanozların içine karışık turşular (kornişon, lahana, havuç, biber, domates vs.), salça, zeytin, biber, patlıcan konulabiliyor. İçinde böyle karışık gelebilen malzemeler olduğu için, etiketin bulunması zorlaşabiliyor.
Aşağıda örnek bazı fotoğrafları görebilirsiniz.
Bütün bu zorluklara rağmen HALCON ile başarılı bir şekilde makine öğrenmesi sağlanmaktadır.
Kullanıcıdan etiketli olan kavanozları koyup döndürürken birkaç fotoğraf çektirip bunları OK ürün olarak, etiketi olmayan kavanozları koyup bunları da RET ürün olarak kaydediyoruz. Bu öğrenimi SVM (Support Vector Machines) yöntemi ile yaptık.
Gelen ürünlerin görüntülerini alıp, hızlıca işleyip etiketin varlık yokluğuna bakabiliyoruz.
Sonuç olarak; birçok farklı kavanoz ve etiket örneğinde, doğru ve hızlıca çalışan bir proje oldu.