YOLOv5 ile nesne tanımaya hazırlık

YOLOv5 ile nesne tanımaya hazırlık

Merhabalar;

Kendime ve size not.

Bu yazımızda yolov5'in, bir windows 10 makine üzerine kurulumunu ve ardından bize sunduğu kendi nesne algılama modelini nasıl deneyeceğimizi tartışacağız.

Yapacağımız adımları maddelere dökecek olursak;

  • Anaconda'yi bilgisayara kur ve yolov5 ortamı oluştur.
  • Github adresinden yolov5 reposunu indir.
  • Pytorch sürümünü destekleyen nvidia cuda, cudnn kurulumunu yap.
  • yolov5 ortamında gereksinimleri hazırla
  • yolov5s modelini dene

Yolov5 önceki sürümlerinden farklı olarak Pytorch makine öğrenim kütüphanesini kullanır. Bu yüzden bütün işimiz Python'la. Yolov1'den Yolov4'e kadar Darknet açık kaynak sinir ağı kütüphanesi kullanılmıştı.

Bu noktada ufak bir hatırlatma yapmak istiyorum. Webte bazı kaynaklarda Yolo'yu bir şekilde Tensorflow gibi makine öğrenimi için yazılım kütüphaneleri ile karıştıranlar, karşılaştıranlar var. Tensorflow nesne algılama problemine kendisi içinde bazı algoritmalar ile tabi ki çözümler sunuyor ama biri makine öğrenimi için çok farklı algoritmalar barındıran bir kütüphane, diğeri tek soruna odaklanmış bir algoritma. Bu noktada son cümlemizi şu şekilde kurarak diss 'imizi atıyoruz :); Yolo bir algoritma ve nesne algılama problemine kendine özgü bir yaklaşımla çözüm getirip farklılaşıyor. İlla bir karşılaştırma yapacaksanız gene aynı alanda çözüm geliştiren farklı algoritmaları - ssd gibi - karşılaştırın

Şimdi yolov5 için ortamımızı hazırlamaya başlayalım.

Muhtemelen biliyorsunuzdur ama sizlere öncelikle Anaconda'dan bahsetmek istiyorum. Kendisi R ve Python dillerinde paket yönetimini inanılmaz şekilde kolaylaştıran bir veri bilimi aracı yada dağıtımı diyebiliriz. Şöyle ki local olarak çalışan tek bir işletim sistemi üzerinde farklı python sürümleri ve paketlerini birbirlerini etkilemeden dilediğimiz şekilde kurmamızı sağlıyor ki, bunun değerini pythonla uğraşanlar bilir.

İlk adımımız Anaconda'yı bilgisayara indirip kurmak olacak. Tabi ücretsiz olan kişisel sürüm hemen şurdan :). Sonrası next next.

Bu kurulumu detaylandırmayacağım ama işletim sisteminizin önceki hikayesine göre olası bazı durumlar ( hata alırsanız!) için kendinizi hem anaconda kurulumu hem de windows makineler üzerinde ortam değişkenlerini ayarlama konusunda web'de ufak bir aramaya hazırlamalısınız. Aramaya İnanın :)

Anaconda'yı indirdik ve kurduk. Canım anaconda. Denk gelsek bütün gün anaconda över kafa açarım :)

Sırada anaconda'nın bize sunduğu en önemli özellik var. Ortam yada çevirisiz haliyle environment oluşturma var.

Windows ortamımızda cmd komut istemcisini açarak aşağıdaki kodu yazıyoruz. ve yolov5 adında ( !! başka bir isim verilebilir ortam adı ile yolov5 algoritmasını karıştırmayın) aynı zamanda kurulacak python sürümünü belirterek ortamımızı hazırlıyoruz. Burada python sürümüne karar verirken yolov5'in github adresinde belirttiği python gereksinimini göz önünde alıyoruz ki bu yazının yazıldığı tarih itibari ile bunu python 3.6 ve üstü olarak belirtmişler. Ben burada 3.7'yi tercih ediyorum. Sonuçta gereksinimi karşılıyor.

conda create -n yolov5 python=3.7

cmd'de conda yazdığımızda anaconda istemcisinin çalışmasını sağlayan durum windows ortam değişkenleri ile alakalı bir durumdur.

ortam değişkenleri.png

conda create komutundan sonra artık sırada oluşturduğumuz yolov5 ortamını conda da aktif hale getirmek.

conda activate yolov5

dediğimizde cmd ekranında aşağıdaki görüntü oluşacak. Bu bize artık bilgisayarımızdaki diğer python sürümlerinden etkilenmeyen temiz bir python3.7 ortamı sağlamış oluyor. Ortamı aktiv etmeyi tamamladık daha sonra buna döneceğiz.

image.png

Şimdi sıra github'tan yolov5 reposunu klonlamaya geldi. Github'tan bir depoyu klonlarken git işlemleri için açık kaynak kodlu versiyon kontrol sisteminden yararlanabilirsiniz. Kurulduğunda kendisini path'e (ortam değişkenleri) ekleyeceği için komut istemcisinden çağırabiliriz.

Ben cmd ile d: sürücüsüne geçip yolov5 deposunu indiriyorum. Dilerseniz farklı bir dizinde bunu yapabilirsiniz.

git clone https://github.com/ultralytics/yolov5.git

image.png

Depo indirildiğinde öncelikle requirements.txt dosyasından gereksinimlerden torch versiyonuna göz atmamız gerek. Bunu yapmamızın nedeni de eğer bilgisayarınızda nvidia ekran kartı varsa, grafik kartını kullanmamızı sağlayan ve sinir ağı hesaplamalarında kullanılan cuda ve cudnn kütüphanlerini kurmamız gerekiyor aynı zamanda grafik kartınını driverınında en güncel versiyonda olması iyi olur.

image.png

Şu an itibari ile Pytorch CUDA Toolkit v11.2 ve CuDNN 8.1.0 kütüphanelerini destekliyor. bunların kurulumları ile ilgili herhangi bir detaya girmeyeceğim zira yazı fazlasıyla uzayacaktır.

Bu kurulumları da yaptıktan sonra artık sıra ortamımızı yolov5 gereksinimleri ile doldurmaya geldi. Bunun için aşağıdaki kodu girerek txt dosyasındaki her bir gereksinimin kurulmasını sağlıyoruz. Böylelikle tek tek kurmaktan kurtulmuş oluyoruz.

cmd komut istemcisini çağırdıktan sonra sıra ile

d:
cd yolov5
conda activate yolov5
pip install -r requirements.txt

komutlarını giriyoruz. pip'in pythonda kütüphaneleri kurmamızı sağlayan paket yöneticisi olduğunu unutmayın. Ortam oluştururken python kurulumunda varsayılan olarak gelir. -r veya --requirements girerekte gereksinimlerin olduğu dosyayı göstermiş oluyoruz.

image.png

Kurulum bittikten sonra artık ortamımız yolov5'i denemeye istersek kendi nesne algılama modelimizi eğitmeye hazır. Bu yazı daha fazla uzamasın diye sadece coco dataseti üzerinde eğitilmiş ve yolov5 modellerinden en hafifi olan yolov5s modelini denemeye geçelim. Aynı yolu izleyerek isterseniz diğer modelleri de deneyebilirsiniz.

Öncelikle github yolov5 deposunda yayınlanmış modellerin listesine gidelim.

https://github.com/ultralytics/yolov5/releases adresine gidiyoruz ve assets başlığı altındaki listeden güncel yolov5s.pt modelini indiriyoruz. Kullanım kolaylığı ve düzen açısından d:/yolov5/weights yoluna kaydediyoruz. ( weights klasörünü kendiniz oluşturacaksınız)

image.png

İndirdiğimiz yolov5s.pt dosyası aslında coco dataseti üzerinde eğitilmiş ve ilgili sınıfların ağırlıklarını barından bir model. Yani hazır bir model kullanıma hazır. Bizde kendi modelimizi eğittiğimizde böyle bir dosya elde edeceğiz ve istersek onnx formatında dahi dışarı aktarabileceğiz.

Dosyayı indirdikten sonra aşağıda ki komut ile conda yolov5 ortamımız aktifken ilk denememizi yapabiliriz artık.

  • !! conda activate yolov5

  • (yolov5) D:\yolov5> :)

 python detect.py --weights weights/yolov5s.pt --source 0

Burada d:/yolov5 dizininde bulunan detect.py çağırılıp

  • --weights ile ağırlık yani hazır model yolumuzu gösteriyoruz.

  • --source 0 ile kameradan görüntü alsın istiyoruz. Bunun bir video yada resim yada resimler klasörü olmasını istiyorsanız --sources /resimler yada --sources video.mp4 demeniz gerekir.

Gibi argümanlar verilebilir. Tabi argümanlar bu kadar değil daha fazlası için detect.py dosyasını açın. Argümanlar ve açıklamaları çok net şekilde verilmiş durumda

Hangi sources (kaynağı) çalıştırırsanız çalıştırın aksini belirtmediğiniz sürece runs/detect/exp? altında sonuçları kaydeder.

image.png

Evet sonraki yazımız artık kendi nesne modelimizi geliştirmek üzerine olacak.

Bu arada canım Anaconda :)

Görüşmek üzere :)