Yolo Darknet Tool’unda Kendi Veri Setini Oluşturma Aşamaları

meyraaslihan
Nov 25, 2020 · 4 min read
Image for post
Image for post
ImageLabel üzerinde kişi etiketleme

Proje öncesinde hazır eğitilmiş model dosyaları olan yolov3 ve tiny-yolo modellerini kullanarak test işlemleri gerçekleştirmiştik. Şimdi ise eklenen kişi bilgilerinin resim üzerinden tespit işlemi yapmamız gerekir. Örneğin verilen resimde Meyra ve Mümin kişileri yer alıyor ise o kişileri bounding box içerisine alıp “Person” etiketi altında değil de uygun şekilde “Meyra” ve “Mümin” olarak işaretlemeliyiz. Bu işlem için aşağıda yer alan yapacağımız hazırlıklara bakalım.

Veri Seti İçin Görsel Elde Edilmesi

Fotoğraf makinesinden çektiğimiz kişilerin görsellerini data klasörü altına kişi isimleri ile kopyalayalım. Örneğin data klasörü altında Meyra ve Mümin klasörleri bulunsun ve bu klasörlerin içlerinde sadece o kişilere ait görseller bulunmalı.

Train İşleminden Önce Görsellerin Etiketlenmesi

1.Imagelabel

Train işlemi için elde edilecek resimleri grafiksel olarak eklemek için kullanılan araca LabelImg denir. LabelImg, Python ile yazılmış ve grafik ara yüzü için Qt kullanır.

ImageNet tarafından kullanılan format PASCAL VOC formatında kullanılır ve her bir resim beraberinde XML dosyası olarak da kaydedilir. PASCAL VOC formatında kullanıldığı gibi YOLO formatını da destekler ve kullanılabilir.

Image for post
Image for post
ImageLabel üzerinde kişi etiketleme

Öncelikle etiketleme yapılacak olan resmi açalım. Kişi sayısına göre resimde bulunan yüzü kırpalım. Kırptığımız yüzü aşağıda görüldüğü gibi Meyra ismi ile etiketleyelim.

Image for post
Image for post
ImageLabel üzerinde kişilerin etiketlenmiş görüntüleri

Yapılan işlemleri resim de diğer bulunan insanlar içinde tekrar edelim. Örneğin Resimde Meyra için yapılan işlem Mümin için de gerçekleştirelim. Mümin adı ile yeni bir etiket oluşmuş oluyor. Böylelikle tek bir resim üzerinde birden fazla etiket yapmış olduk. Yaptığımız işlemler sonucunda resim ve yapılan etiketleri kaydedelim. Kaydedilen resim ImageNet tarafından kullanılan format PASCAL VOC formatında kullanalım ve her bir resim beraberinde XML dosyası olarak da kaydedilmiş olur.

Sonuç olarak bu kişi ve nesneler birden fazla resim için uygulayabiliriz. Farklı konumlarda, farklı kıyafetlerde, farklı ışıklarda, farklı şekillerde yüzlerce etiket yapabiliriz. Bunun sebebi kamera görüntüsünde eğittiğimiz fotoğraftaki halimiz olamayabilir. O yüzden elimizde birden çok resim ve etiket olmalı ki o an ki görüntünüzü veya resminizi algılayabilsin.

2. BBox Label Tool

YOLO ile nesne tespiti yapılabilmemiz için data klasörü resimler içerisindeki tanımak istediğimiz kişi ya da nesnenin çerçevesini (bounding box) belirlememiz gerekir. Bu işlemin yapılabilmesi için birçok açık kaynak yazılım bulunuyor. Bu işlem için “BBox Label Tool” aracını kullanabiliriz. Aracı Github reposundan, kullanılacak cihaza aşağıda yer alan komutu kullanarak indirebilirsiniz.

Image for post
Image for post
Github üzerinden BBox Label Tools paketinin indirilmesi

Kullanıma başlamadan önce main.py içerisinde 128.satırdaki dosya yolunu, BBox Label Tool’unu indirdiğimiz klasörün tam yolu olacak şekilde değiştirelim.

Bir başka düzeltilmesi gereken kısım da dosya uzantılarıdır. BBox Label Tool sadece “.jpg” uzantılı görseller ile birlikte kullanılabilir yani “.JPEG” uzantılı görseller .jpg olarak değiştirilmeliyiz bunun dışındaki PNG vb. uzantılı görseller başka araçlar ile jpg formatına çevirmeli veya silinmeliyiz.

BBox Label Tool klasörü altında 3 klasör yer alır. Bunlar Examples — Images — Labels klasörleridir. Altına rakamla “002” isminde yeni klasörler açalım ve son olarak Images klasörü altında oluşturduğumuz “002” klasörü içerisine önceden oluşturulan veri setlerinin resimlerini ekleyelim.

Image for post
Image for post
BBox-Label-Tool

Artık etiketleme işleminin yapılabilmesi için “BBox Label Tool” yazılımı çalıştırılmamız yeterlidir. Bunun için aşağıda yer alan komutu kullanabilirsiniz.

Image for post
Image for post
BBox Label Tool’un çalıştırılması

Image Dir alanına yeni oluşturduğumuz klasörün adı olan yani 002 şeklinde yazalım ve Load dediğimizde BBox-Label-Tool/Images/002 klasörü altındaki resimler yüklenmiş olacaktır.

Açılan penceredeki resim üzerinde nesne tanıma işlemi sırasında tespit edilmesi istenilen kişi veya nesneyi en küçük çerçeve içine alınacak şekilde işaretleyelim ve sonrasında Next buttonu ile sonraki resme geçelim ve bu işlemi tüm resimler için tekrarlayalım. Bir sonraki resme geçtiğimizde BBox-Label-Tool/Labels/002 klasörü altına önceki o resmin dosyasının adıyla .txt dosyası oluşturalım. Bu dosya içerisinde, resim üzerinde işaretlenen çerçevenin piksel koordinatlar yer alır.

1

423 213 633 473

Bu projede iki etiket yer aldığı için her bir etiket için ayrı klasörler oluştu eğer tek bir etiket yer alsaydı 002 adında tek bir klasör oluşurdu.

Oluşturulan TXT verilerinin YOLO’ya uygun hale dönüştürme

BBox Label Tool ile oluşturulan .txt dosyaları içerisinde yer alan koordinat bilgisini YOLO için uygun formatta değildir.

Bu .txt’ler içerisindeki değerler YOLO’ya uygun formata çevirmeliyiz ve piksel değeri yerine 0–1 arasında oran belirtilmeliyiz.

Image for post
Image for post
Yolo Uygun Format

Yolo için uygun format;

[kategori numarası] [nesnenin merkez noktasının X değeri] [nesnenin merkez noktasının Y değeri] [nesnenin genişliğinin X değeri] [nesnenin genişliğinin Y değeri]

0 0.340707070707 0.174505609524 0.326727272727 0.328236493376

Yolo için uygun formata Guanghan Ning’nin yazdığı scriptinden yararlanarak dönüştürelim. Böylelikle eklenen kişi bilgilerinin resim üzerinden tespit işlemini gerçekleştirmiş olduk.

Kodcular

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store