Custom Yolo Modeli Nasıl Hazırlanır?

Kaan Koska
3 min readMay 8, 2021

Modelinizi hazırlarken ilk olarak tanımlamak istediğiniz nesneyi belirleyip o nesneye ait birçok farklı açıda ve renkte fotoğraflar bulmalısınız. Ben eğitimimi googlecolabrotry kullanarak yaptım. Böylece cloud üzerinden Linux bilgisayarına bağlanarak ücretsiz gpu gücüne sahip olup yüksek gpu ile eğitiminizi çok daha hızlı yapabilirsiniz. Gerekli fotoğrafları google üzerinden ya da videolar ile ekran görüntüsü alarak bulabilirsiniz. İyi bir eğitim için fotoğraf çözünürlükleri ve boyutları çok önemlidir. Benim oluşturduğum modelde ideal boyutun 416x416 olduğunu düşünüyorum. Aynı zamanda fotoğraflarda netlik ve açı farklılıkları, eğitiminizin seyrini yüksek oranda değiştirebiliyor. Ben kendi modelim için 1000 adet silah fotoğrafı bulup eğitimimi yaptım. İlerleyen zamanlarda daha iyi bir eğitim için daha fazla resimle, daha iyi bir eğitim yapmayı ve final projemde kullanmayı düşünüyorum. Gerekli fotoğrafları bulduktan sonra ilk yapmanız gereken şey fotoğrafların içindeki yakalamak istediğiniz nesneyi belirleyip kareler içine almak olacak. Ben bunun için https://www.makesense.ai/ sitesini kullandım. Böylece bilgisayarınıza bir uygulama indirmeden etiketleme işlemini yapabilirsiniz. etiketlemeye örnek olması için birkaç fotoğraf paylaşacağım:

Bu işleme label seçimi de denebilir. Tüm label seçme işlemi bittikten sonra bu site bize YOLO eğitimimiz için fotoğraf sayısı kadar txt dosyası verecek. Bu txt dosyasında o nesneye ait boy genişlik ve koordinatlar yazıyor olacak. Bu bilgileri algoritmamıza verip ona bulmak istediğimiz nesneyi tanımlatıyoruz. Algoritmamız ise bu bilgilerden ve kendi bulduğu matris sonuçlarından yararlanarak bize bir weights dosyası veriyor. Bizde bu weights dosyamızı algoritmamızda kullanarak eğitimini yaptığımız nesneyi tanımlayabiliyoruz. Labellarımızı aldıktan sonra sahip olduğumuz fotoğraf ve txt dosyalarını test ve training olarak ikiye ayırıyoruz. %80 training %20 test olarak iki farklı klasöre atıyoruz.

Daha sonra yukarıda gördüğünüz üzere “yolov4.conv.137” dosyamız var. bu dosyayı github’dan indirdiğimiz Darknet Kütüphanesi’nden alıyoruz. Bu dosyanın amacı Darknet Kütüphanesi’nin bize sunduğu çapraz öğrenme algoritmasıdır. Bu 137 dosyası aracılığıyla daha önceden çözümlenmiş fotoğrafların sonuçlarından alınan koordinat, boy ve genişlik sayesinde çapraz öğrenme ile eğitimi hızlandırır. Bu dosyayı eğitimde kullanmak eğitim kalitesini yükseltir. Aynı zamanda eğitim süresini de kısaltır. Onun haricinde cfg dosyamız var. Bu dosyamızda daha önce de söylediğim gibi eğitimin seviyesini, filtre sayısını, aynı zamanda eğitimimizdeki class sayısını belirtiriz. Ve eğitimimiz bu dosyadaki bilgilere göre şekillenir. Diğer bir txt dosyamız ise names dosyası. Bu dosyada sahip olduğumuz class adlarını yazmamız gerekir. Bu classlar eğitimde tanımlamak istediğimiz nesne sayısıdır. Son dosyamız ise data dosyamız ki bu en önemli dosyamızdır.

Bu dosyamızda diğer tüm dosyalarımızın adresleri yazıyor. Kısaca eğitim algoritmamıza bu dosyayı veriyoruz. Bu dosyadaki adresler sayesinde gerekli dosya adreslerini algoritmaya vermiş oluyoruz. Daha sonra yapmamız gerekenler ise names dosyasındaki backup dosyasını değiştirmek. Kendi yeni oluşturacağımız backup dosyamıza weights bilgilerinin atılmasını sağlıyoruz. Tüm bu işlemler bittikten sonra, bu data klasörümüzü darknet klasörümüzün içine atıp darknet klasörümüzü zip yapıp drive atıyoruz. Drive’a atmamızın sebebi drive’ı bir çeşit usb olarak kullanıyor olmamız. Google colabrotrye bağlandıktan sonra drive’a bağlanıp gerekli Linux kodlarımızı yazıyoruz ve cloud üzerinden Linux bilgisayarımıza bağlandıktan sonra darknet dosyamızı unzip yapıyoruz. Darknetegooglecolabratry ile bağlandıktan sonra da gerekli Linux kodlarımızı yazıp eğitimimizi başlatıyoruz. data büyüklüğüne göre eğitim 4 saat ile 24 saat arasında değişiyor. Eğitim sonunda backup dosyamızda, drive üzerinde backup olarak kayıt edilmişweights dosyamızı indirip algoritmamıza ekleyip kullanıyoruz. Burada bize hazır sunduğu cfg ve makfile dosyaları ile yardımcı olan Darknet Kütüphanesi; açık kaynaklı, yapay sinir ağı öğrenme kütüphanesidir

--

--

Kaan Koska

Computer programming student, currently working on computer vision, opencv, Yolo, Python