Opencv Haar Cascade Sınıflandırıcısı Eğitimi

talhakoc 14 Mart 2015OpenCv

Opencv haarcascade yöntemi kullanarak yüz, araç, el gibi istediğiniz türden farklı nesneleri sınıflandırıcıya tanıtıp farklı ortamlardaki resimlerde taratarak buldurabilirsiniz. Bu sınıflandırıcının eğitimi için pozitif ve negatif resimlere ihtiyacımız olduğunu önceki makalede belirtmiştim. Sınıflandırıcınızı ne kadar çok örnek ile eğitirseniz o kadar iyi sonuç elde edebilirsiniz. İyi bir sınıflandırıcı oluşturabilmek için sınıflandırıcının mantığıyla beraber kullanılan parametrelerin neler olduğunu anlamamız gerekmektedir. Sınıflandırıcının çalışma mantığına Opencv Ders 21(Haar cascade Sınıflandırıcısı Nedir?) dersinden ulaşabilirsiniz.

Pozitif resimler, içerisinde bulmak istediğiniz nesnelerin bulunduğu örneklerdir. Bu örnekler farklı parlaklıkta ve farklı açılarla olursa daha efektif bir sınıflandırıcı oluşturulabilir. İyi bir sınıflandırıcı için binlerce örnek ile eğitilmesi gerekmektedir ancak daha az örnekle de sınıflandırıcı oluşturulabilir. Şimdi adım adım sınıflandırıcıyı nasıl eğitildiğinden bahsedelim;

1-Öncelikle C:/ dizininde bir klasör oluşturunuz ve içerisine “img” ve “Cascade” isimli klasörler ile “negatif.txt” ve “pozitif.txt” isimli text dosyaları oluşturunuz.

opencv-haarcascade-egitimi

Img klasörünün içine girerek “negatif” ve “pozitif” isimli klasörler oluşturun.

opencv-haarcascade-egitimi1

 

2-İçerisinde seçmek istediğiniz nesnenin bulunduğu örnek resimleri “Pozitif” isimli klasörün içerisine atın. Resimler, jpg, png veya bmp uzantılarında olabilir. Ancak bütün uzantıların desteklenmediğini unutmayınız.  Yüklediğiniz resimlerin yakın boyutlarda olduğuna dikkat edin. Bu aşamadan sonra ana dizinde “pozitif.txt” isimli dosyanın içerisine pozitif örnek resimlerinizin isimlerini dosya yoluyla beraber yapıştırın. Örneğin yukarıda resimde gösterilen “Pozitif” klasörünüzdeki ornek.jpg isimli resim dosyası için txt dosyasına C:\OpencvCascadeEgitim\Img\Pozitif\ornek.jpg bağlantısını kopyalayın. Fotoğraf editörleriyle ya da başka bir şekilde fotoğraftan seçilmesini istediğiniz nesneyi dikdörtgen içerisine alın ve sol üst köşenin x ve y koordinantları ile genişlik ve yüksekliğini başında “1” sayısı ile beraber birer boşluk bırakarak kopyaladığınız bağlantının yanına yapıştırın. Örneğin resminizdeki nesnenin sol üst köşesi x=250 ve y=350 koordinantlarında olan ve genişliği 100, yüksekliği 200 piksel olan bir örnekte “pozitif.txt” dosyasına  C:\OpencvCascadeEgitim\Img\Pozitif\ornek.jpg 250 350 100 200 yazın. Eğer resminizde birden fazla seçmek istediğiniz nesne varsa başına “2” yazarak onun da koordinant değerlerini yazmalısınız.

opencv-haarcascade-egitimi2

 

Yukarıdaki text dosyasında C:\train\img\pozitif\ klasöründeki resimler listelenmiş ve yanlarında içinde bulunan nesnelerin bulunduğu koordinantlar yazılmıştır. kırmızı ile işaretli “2” ile başlayan kısım resimde ikinci bir nesnenin bulunduğunu ve koordinantlarını göstermektedir. Diğer nesnelerde aynı şekilde “2” sayısı arttırılarak eklenebilir.

Resimleriniz, opencv kütüphanesinde bulunan bir fonksiyon tarafından yan tarafında belirttiğiniz değerlere göre kırpılacak ve onlar üzerinden işlem yapılacaktır. İçinde nesnenin bulunduğu bütün resimlerinizi yukarıda belirtildiği şekilde txt dosyasına alt alta eklemelisiniz. Ancak resmin isim ve yolunda boşluk bulunmamasına dikkat edin. Eğer resimleri küçültmek için program kullanırsanız otomatikmen boşluk karakteri koyabilir. resim adlarının aralarında boşluk olmamalıdır. Bu işlem hem yorucu hem de uzun süreçli biri işlem olduğu için buna yönelik pozitif resim oluşturucular türemiştir. Bu ders için ağ eğitimine yoğunlaşıp kolay pozitif örnek oluşturma konusuna daha sonra değineceğim.

3-İçerisinde bulmak istediğiniz nesnenin olmadığı ve nesneyi arayacağınız ortamlara yakın ortamların resimlerini de “Negatif” isimli klasöre atınız. Pozitif resimler için geçerli olan resim uzantıları negatif resimler için de geçerlidir ve örneklerin aynı boyutta olmalarına dikkat ediniz. Daha sonra “Negatif” klasöründe bulunan resimlerinizin isimleriyle beraber yollarını yukarıda bahsedildiği gibi “negatif.txt” dosyasına alt alta yazınız. Ancak bu dosyada “pozitif.txt” de olduğu gibi kırpma parametreleri olmayacak, sadece resimlerin kendisi bulunacaktır. Örnek “negatif.txt” dosyası aşağıdaki gibi olacaktır:

opencv-haarcascade-egitimi23

 

Yukarıdaki örnekte C:\train\img\negatif klasörünün içerisinde 1.jpg ismiyle başlayan resimlerin isim ve yolları listelenmiştir. Negatif resim oluşturmanın da kolay yolları sonraki derslerde incelenecektir. Kendiniz bulup bu dosyayı oluşturmanız daha iyi sonuç almanızı sağlayabilir ancak çok zamanınızı alabilir.

Sınıflandırıcının efektif olarak nesneyi bulabilmesi için binlerce pozitif resme ihtiyacımız olduğunu söylemiştik. 2000 4000 civarındaki pozitif resim sayısı iyi bir sonuç verebilir. Negatif resimlerin de 800 1000 gibi bir adette olması iyi olabilecektir çünkü sınıflandırıcı pozitif resimleri negatif resimler üzerinde işlemektedir. Ancak bu kadar fazla negatif resim zorunlu değildir. Daha azıyla da sınıflandırıcı oluşturulabilir.

4- Pozitif ve Negatif klasörlerimizi örneklerle doldurduktan ve txt dosyalarımıza bu örneklerimizin isim ve yollarını kaydettikten sonra, pozitif resimlerimizi haarcascade sınıflandırıcısında kullanabilmek için gri skalaya çevirmemiz ve nesnenin bulunduğu kısmı kırparak bir vektör dosyası oluşturmamız gerekmektedir. Bunun için opencv’yi kurduğunuz dizinde, benim dizinim için D:\opencv\build\x64\vc11\bin dosya yolunda bulunan opencv_createsamples.exe dosyası işimizi kolaylaştıracaktır. 32 bit bilgisayar kullananların x64 yerine x86 yı, ve visual studionun farklı versiyonlarını kullananların vc11 yerine kendi versiyonlarını seçmeleri faydalı olabilir. Bu exe dosyası parametre olarak pozitif resimlerin isim ve adres yolunun bulunduğu txt dosyasını,  pozitif resim sayısını, oluşturulacak olan vektör dosyasının ismini ve örneklerin boyutlandırılacağı oran değerlerini alır. Bu parametre değerlerini  opencv_createsamples.exe dosyasına gönderebilmek için ya bilgisayarımızda bulunan command window siyah ekranından çalışılır ya da .bat uzantılı bir toplu işlem dosyası oluşturulur ve command windowa yazılacak komutlar kaydedilerek dosya çalıştırılır. Sınıflandırıcı eğitimini tekrar tekrar kullanabileceğiniz düşünülürse .bat uzantılı bir dosya oluşturmak daha mantıklı olacaktır. “pozitif.txt” ve “negatif.txt” dosyalarının bulunduğu ana dizine yeni bir text dosyası oluşturun ve .txt yazan kısmını .bat olarak değiştirin. Oluşturduğunuz dosyaya sağ tıklayarak “düzenle” kısmına tıklayın. Text editörü ile açılan kısma opencv yi kurduğunuz dizinde seçtiğiniz  opencv_createsamples.exe isimli dosyanızı dosya yoluyla beraber kopyalayarak parametreleri giriniz. Ben vektör dosyamı oluştururken  D:\opencv\build\x64\vc11\bin\opencv_createsamples.exe -info pozitif.txt -num 3400 -vec el.vec -w 24 -h 24  şeklinde parametreler kullandım. Bu ifadeyi kendinize göre değiştirip .bat dosyanıza yapıştırarak kaydedin. Sınıflandırıcı eğitimini çok iyi anlayabilmek ve hata almamak için bu parametreleri inceleyelim:

opencv-haarcascade-egitimi4

 

*D:\opencv\build\x64\vc11\bin\opencv_createsamples.exe kısmı benim opencv dizinimde bulunan opencv_createsamples.exe dosyasının yoludur. command window bu komutu gördüğünde belirtilen yolsa bulunan exe dosyasını çalıştırır. Bu kısmı kendi opencv dizininizde bulunan opencv_createsamples.exe dosyasının yolu ile değiştirin.

*-info pozitif.txt kısmı, opencv_createsamples.exe dosyasının ihtiyacı olan resimleri nerede bulacağı ve ne şekilde kırpacağı bilgisini tutan, oluşturduğumuz txt dosyasını parametre olarak almaya yarar. Eğer pozitif.txt dosyanıza farklı bir isim verdiyseniz bu kısmı o isme göre güncelleyiniz.

*-num 3400 kısmına “pozitif.txt” dosyanıza kaç tane örnek resim kaydettiyseniz o sayıyı giriniz. vektör dosyasının kaç tane resimden oluştuğu bilgisi tutulur.

*-vec el.vec kısmına ise oluşturmanıyı istediğiniz vektör dosyasının ismini giriniz. vektör dosyasının .vec uzantısı ile biteceğine dikkat ediniz.

*-w 24 -h 24 bu kısım ise belirtilen koordinantlarda kırpılmış olan resmi genişliği 24, yüksekliği 24 piksel olacak şekilde yeniden boyutlandırır. Bu sınıflandırıcının çalışması için kolaylık sağlar. binlerce pikselle çalışmaktansa 24*24 ten 576 piksel üzerinde çalışmak daha hızlı ve kolay sonuç verecektir. Bu boyutu seçmek istediğiniz şeye göre değiştirebilirsiniz ancak 24*24 oran sınıflandırıcı için iyi bir orandır. -w genişliğini, -h ise yüksekliğini belirtir.

opencv-haarcascade-egitimi5

 

Oluşturduğunuz .bat isimli dosyaya çift tıkladığınızda yukarıdaki gibi bir pencere görülür ve işlem bittiğinde kendi kendine kapanması gerekmektedir. Bu işlem .vec uzantılı vektör dosyası oluşturur. Eğer hata alırsanız büyük ihtimalle “pozitif.txt” dosyasına yazdığınız dosya yollarından birisi hatalıdır ya da o isimde bir dosya belirtilen klasörde bulunmamaktadır.

5-Vektör dosyasını oluşturduktan sonra, bu dosyanın doğruluğunu kontrol etmek için yine opencv_createsamples.exe dosyasını kullanıyoruz. Diğerinden farklı olarak vektör dosyasını direkt parametre olarak veriyoruz. Bu şekilde pozitif resimlerimizi görebiliriz. Aynı ana dizinde bir .bat dosyası daha oluşturun ve aşağıdaki gibi düzenleyin:

opencv-haarcascade-egitimi6

 

Parametreleri kendinize göre güncelleyip dosyayı çalıştırın. Aşağıdaki gibi bir ekran görmelisiniz:

opencv-haarcascade-egitimi7

 

Gelen ekranda nesnenizin belirtilen koordinantlarda kırpılmış ve yeniden boyutlandırılmış halini göreceksiniz. Space tuşuna basılı tutarak bütün nesneleri kontrol ediniz ki koordinant değerleri yanlış bir örnek varsa bu sınıflandırıcınızın iyi çalışmamasına neden olacaktır.

6-Son olarak sınıflandırıcımızın eğitim aşamasına gelelim. Bu eğitim opencv kütüphanesinde bulunan iki exe dosyası ile yapılabilmektedir. Bu dosyalar opencv_haartraining.exe ve opencv_traincascade.exe dosyalarıdır. opencv_haartraining.exe , sadece haar yöntemini kullanan eski algoritmaları kullanmaktadır. opencv_traincascade.exe ise en güncel sınıflandırıcı eğitim dosyası olup hem haar yöntemi hem de local binary yönteminde eğitim yapabilmektedir. Biz de opencv_traincascade.exe ile eğitimimizi yapacağız. Bu exe dosyası belirlenen aşama kadar pozitif resimleri negatif resimler üzerinde işleyerek belirlenen minhitrate ve maxfalsealarmrate değerlerine ulaştırmaya çalışır. Her bir aşamada pozitif resimler farklı çerçevelerle taranarak değerler oluşturulur. Belirlenen aşama değerine ulaşıldığında ise Nesneyi bulmak için kullanılabilecek .xml dosyası oluşacaktır.

Ana dizinde yeni bir .bat dosyası oluşturun ve düzenle kısmından opencv dizininde bulunan opencv_traincascade.exe dosyasını yoluyla beraber yapıştırın ve aşağıda gösterilen ifadedeki parametreleri ekleyin.

opencv-haarcascade-egitimi8

” D:\opencv\build\x64\vc11\bin\opencv_traincascade.exe -data Cascade -vec el.vec -bg negatif.txt -numPos 2350 -numNeg 845 -numStages 17 -minHitRate 0.995 -maxFalseAlarmRate 0.25 -mem 1024  -w 24 -h 24 ”

Yukarıdaki ifadede parametreleri kendinize göre ayarlayarak oluşturduğunuz .bat dosyasına yapıştırıp çalıştırırsanız belirli bir süre sonra .xml dosyasını alabilirsiniz. Ancak bu parametreler sınıflandırıcınızın performansının iyi olmasında çok etkilidir. Şimdi parametreleri inceleyelim.

* “D:\opencv\build\x64\vc11\bin\opencv_traincascade.exe” bu kısım benim opencv_traincascade.exe dosyamın bulunduğu dizini gösterir ve siz bunu kendi dizininizle değiştirin. Command Window bu komutla bu dosyayı çalıştırır ve ya yanda belirtilen değerleri de parametre olarak alır.

*”-data Cascade” bu kısımda sınıflandırıcının her bir aşamada(stage) elde ettiği xml dosyasının, parametrelerin tutulduğu xml dosyasının ve en son elde edilen xml dosyasının oluşturulduğu klasörün ismi belirtilir. En son cascade.xml isimli bir dosya oluşacaktır ve bu, nesne bulmak ve takip etmede kullanılacaktır.

*”-vec el.vec” bu kısım pozitif resimlerle elde ettiğiniz vektör dosyasını tanımlar.

*”-bg negatif.txt” Bu kısımda ‘bg’ ingilizce background yani arkaplan’ı gösterir. Pozitif resimlerin işleneceği arkaplan resimlerinin dosya yerleriyle isimlerini kaydettiğimiz “negatif.txt” dosyasını parametre olarak veririz.

*”-numPos 2350″ bu kısım, eğitimin aşamalarında kaç adet pozitif örnek kullanılacağını belirtir. Bu kısım .vec dosyasındaki toplam pozitif resim sayısı ile karıştırılmamalıdır. Eğer buraya vektör dosyasındaki pozitif resim sayısı girilirse hata verir. Çünkü vec file, pozitif örneklerin negatif resimler sayısınca kısmını arkaplanda işleyecektir. Ve minhitrate oranı da pozitif örnek sayısını sınırlandırır. Onun için kullanılan pozitif örnek sayısı için bir formül geliştirilmiştir. numPos<=(Vektör dosyasında toplam pozitif örnek sayısı-Negatif örnek sayısı)/(1+(aşama sayısı-1)*(1-minhitrate))) formülüne göre en yüksek numPos oranı seçilmelidir. Mesela vektör dosyamda 3400 örnek var ve Negatif örnek sayısı 845 . Minhitrate sayısını 0.995 ve aşama sayısını 17 alırsak numPos<(3400-845)/(1+16*0,005) formülüne göre numPos<2365 çıkacaktır. Bu değerden küçük olarak 2350 sayısı numPos olarak seçilebilir.

*”-numNeg 845″ bu kısım kaç tane negatif örnek resim kullanılacağını ifade etmek için kullanılır. “negatif.txt” dosyasındaki negatif resim sayısı kullanılabilir.

*”-numStages 17″ bu kısımda sınıflandırıcının kaç aşamada sonuca ulaşacağı değeri belirtilir.

*”-minHitRate 0.995″ Her bir aşamada kullanılan minimum isabet oranını verir. genel olarak 0.995 değeri verilir.

*”-maxFalseAlarmRate 0.25″ Nesneleri tanırken kabul edilebilir maksimum hata oranını belirtir. Eğer bu oran yüksek olursa sınıflandırıcı, az benzettiği nesneleri bile aradığımız nesne olarak sunacaktır. Çok küçük olursa da istediğimiz nesnenin küçük açılarda farklılıklarında bile bulamayacaktır. Bu oranı ayarlamak kullanım alanına göre değişiklik gösterecektir.

*”-mem 1024″ Sınıflandırıcının eğitimi için ayrılan belleği belirtir.

*”-w 24 -h 24″ vektör dosyasının boyutunu verir. Bu boyut vektör dosyasını oluştururken kullandığınız boyutla aynı olmalıdır.

Parametreleri ayarladıktan sonra sınıflandırıcı eğitimi için oluşturduğunuz .bat dosyasına çift tıklayın. aşağıdaki pencere gelecektir.

opencv-haarcascade-egitimi9

Bu eğitimde alabileceğiniz hataların büyük kısmı numPos hesabından olacaktır. Eğer hata alırsanız numPos sayısını büyük bir oranda azaltıp deneyiniz. Eğer hata ortadan kalkarsa numPos hesabınızı tekrardan gözden geçiriniz.

Eğer çok örnek kullandıysanız ve düşük bir maxfalsealarmrate oranı kullanıyorsanız sınıflandırıcının eğitimi çok uzun sürecektir. bilgisayarınızın güç ayarlarından uyku modunu kaldırınız. En son sınıflandırıcı eğitimim bir gün sürmüştü. Bu şekilde kendi sınıflandırıcınızı oluşturabilir, istediğiniz nesneyi seçebilirsiniz. Ancak reel time çalışanlar için nesne bulma kısmının bilgisayarı biraz kastığını unutmayınız. Eğitim sonucu oluşan .xml dosyası ile nesnenizi seçebilirsiniz.

Bir sonraki ders: Opencv C++ Ders 23(Haar Cascade Negatif Örnek Listeleme,Klasör Okuma)

70 thoughts on “Opencv Haar Cascade Sınıflandırıcısı Eğitimi

  1. merhaba; sitenizde anlattığınız şekilde haarcascade xml dosyası oluşturmaya çalıştım fakat 6. aşamada bat dosyasını çalıştırdığımda hata vermedi ama xml dosyasıda oluşturmadı. pozitif resim 22 adet, negatif resim 10 adet ve num pos 10 olarak ayarlamıştım. Nerede sıkıntı olabilir yardımcı olabilir misiniz?

  2. Merhaba, muhtemelen oluşturduğunuz dosya ile ilgili bir problem olmuştur. Ancak hiç öyle bir durumla karşılaşmadım.

  3. Merhaba 6.adım da cmd ekranı işi bitince kendisi mi kapanacak uzun süre bekledim kapanmadı yardımcı olurmusunuz

    1. Merhaba, evet kendisi kapanacak, siz müdahale etmiyorsunuz. Uzun süre beklemeniz gerekiyor zaten

  4. Merhaba 5. adıma kadar işlemleri yaptım ama console görüntüsü bu şekilde olmadı. Console 1sn bile açık durmuyor hemen kapanıyor. Nerde hata yapmış olabilirim ?

  5. Konsolun ekran görüntüsünü almaya çalışın muhtemelen poitif örnek sayısından kaynaklanan bir problem olmuştur. Onu düzenleyip bir daha deneyebilirsiniz.

  6. Merhaba 6. adıma kadar sorunsuz geldim ancak 6. adımda .xml dosyasını oluşturmadıği gibi siyah ekran göremeyeceğim kadar kısa sürede açılıp kapanıyor. Dizini ve dosyaları opencv klasörünün içinden direk denedim ancak sorun devam ediyor. Yardımcı olurmusunuz

  7. Eranı telefondan Timeshift burst ile yakaladım şöyle yazıyor en altta: Train dataset for temp stage can not be filled. Branch training teminated. Cascade classifier can’t be trained. Check the training parameters.
    Parametrelerim şöyle 20 pozitif 5 negatif resim 12 numposdiğer veriler sizin yazdığınız gibi

  8. ====TRANING 8-stage=====
    <BEGIN
    POS count : consumed 15:15 de kaldı

    çok fazla da resim koymadım çalışma prensibi nasıl bakim diye ama uzun sürdüğünü düşünüyorum çok az resme bağlı olarak?

      1. resim sayısını arttırıp deneyin. Belki yeni resim ile eşleşemediğinden olabilir.

  9. Herşeyi yaptım xml i oluşturamadım bir türlü galiba resimlerden kaynaklanıyor. Bişey sormak istiyorum, pozitif negatif resim alma olayına girmeden normal kodla el tespit etmek istesek nasıl bir yol izleriz?

    1. Mutlaka farklı yöntemleri vardır. Şekil ve renk üzerinden devam etmek durumundasınız.

  10. Merhaba biz 6.aşamaya kadar geldik siyah ekranı gördük ama 249 pozitif 180 negatif resime rağmen xml oluşturamadık eğitim ekranı 5 saniye içinde kapanıyor sorun ne olabilir?

  11. merhaba yüz görüntüsünde döndürme işlemi yapmak için veri tabanı eğitimi yapılması gerekiyormu.

  12. Merhaba, öncelikle bu güzel eğitimi bizlerle paylaştığınız için teşekkür ederim. Hocam ben vektör dosyasını oluştururken “opencv_createsamples.exe çalışmayı durdurdu” şeklinde bir hata alıyorum ancak vektör dosyası oluşuyor. vectorcontrol ve opencv_traincascade.exe dosyasının yolunu tanımladığım üçüncü bat dosyalarını da başarıyla oluşturduktan sonra xml dosyası oluşuyor. Ancak programda telefondan açtığım bir plaka resmini program algılamıyor. Nerede hata yapmış olabilirim? Sevgiler

        1. Muhtemelen eğitim aşamalarında hatanız olmalı. Ve bir kısmını yapıp bir kısmını yapmadığına göre büyük ihtimalle numpos değerinde bir problem olmalı. numpos değerini belirli değerlerle düşürüp tekrar deneyin.

  13. Merhaba.Ubuntu üzerinde qt kullanarak yüz tanıma sistemi yapmam gerekli.Uygulayacağım adımlar aynı mı olmalı?
    Teşekkürler.

    1. Sınıflandırıcı eğitimi, xml oluşumu aynı adımlar. Ancak xml kullanımında değişiklikler olabilir. Bu konu hakkında maalesef geniş bilgim yok.

  14. Merhabalar. ben de ag eğitim bat ı oluşturdum ancak opencv_traincascade.exe çalışmayı durdurdu diye hata alıyorum. 0x00a8226a adresindeki yönerge 0x00000000 bellek adresine başvurdu diyor. bu konuda yardımcı olabilir misiniz

  15. Merhabalar.Öncelikle teşekkürler.Son aşamada eğitim sırasında Stage 10 a kadar geldim fakat POS count:consumed 160:160 kısmında kaldı,NEG count aşamasına gelemedi bir türlü.Acaba bu stage olayını biraz daha daraltmamın bir zararı olur mu?Sizin önerdiğiniz şekilde 17 yapmıştım fakat eğitim aşırı uzun sürmekte.Bir de böyle kalması canımı çok sıktı.

  16. 5. adımda program aradığımız nesnenin el olduğunu nereden anlayıp da kırpıyor. Arka plan sade bir renkten oluşuyor. Belki renk farkından olabilir. Peki daha karışık bir resimde istenilen resmi doğru kırpacağını nasıl düzenliyor?

    1. Kendi sorumun cevabını kendim vereyim. Neticede istediğimiz objenin koordinatlarını giriyoruz. bu sayede herhangi bir karışıklık olmuyor.

  17. ===== TRAINING 6-stage =====
    <BEGIN
    POS count : consumed 400 : 400

    bu şekilde kalıyor ilerlemiyor bu durumdada durdurup numpos değerini değiştirmem gerekir mi yoksa işlemi tammlamasını beklemem mi gerekir?

  18. Processi hiç tamamlayamadım numpos değerini azalttım neg resim sayısını pozitifin 2 katı yaptım sonrasında pozitifi negatifin iki katı yaptım ama bir türlü sistemi tam belirttiğim numstages değerine ulaştıramadım bir seferinde 4 te başka bir seferinde başka bir aşamada hatalar veriyor acaba bu konuda bir püf noktası varmıdır. Nebileyim mesala pozitif resimleri harageksiz olacak vb gibi veya örnek bir data ile test yapabileceğimiz bir adres varmıdır.

  19. Merhaba,
    Hocam öncelikle elineze sağlık güzel bir tükçe kaynak olmuş.

    Hocam *.xml dosyalarının oluşması için Klasör içerisinde Cascade Klasörü oluşturulması gerekiyor. Yoksa Eğitim dosyası hazırlanıyor, ilk stage yazılacağı zaman hata veriyor.
    Cascade Klasörü olursa tüm stage lar sırayla yazılıyor.

    Belki aynı sorunla karşılaşanlara faydası olur.

    Saygılarımla

  20. merhaba. bir resimdeki farklı nesneleri bulup sınıflandırabilir miyiz. Mesela kamyon araba motor falan diye. Farklı xml’ ler mi üretmemiz gerekir? Tesekkürler

    1. Merhaba Ekrem, sınıflandırıcılar, knn kmeans gibi kümüleme algoritmalarını araştır. Pattern recognition bakabilirsin bir de.

  21. Merhaba emekleriniz teşekkür etmek istedim öncelikle gerçekten güzel bir kaynak hazırlamışsınız. Ben xml dosyası hazırlamak için kaynak topluyorum fakat aklıma şu takıldı,tanıtmak istediğim nesne el fakat bir pozdan değil kamera karşısında elin her pozisyonunda tanımasını istiyorum.şimdi ben her poz için ayrı ayrı xml dosyası mı hazırlamam gerekli yoksa bir nesnenin her pozu içerisinde barındıran bir xml dosyası oluşturma gibi bir durum söz konusu size danışmak istedim.

    1. Merhaba, elin farklı pozları için eşit sayılarda pozitif resimlerin bulunduğu bir xml oluşturmayı deneyebilirsin. Ancak her bir poz için elin diğer pozları negatif resimler olsun ki birbirinden ayırabilesin. Negatif resim sayısının oldukça fazla tutulmasında fayda olacaktır.

  22. iyi günler ben xml dosyası oluşturmaya çalışıyorum. Verdiğiniz adımları denedim tek tek şu an komut penceresi açık 15 stage ayarlamıştım. 2 gün oldu hala 14 ünc stageyin geçemedi bu bir sorun mu yok bu kadar uzun süren bir şey mi acaba?

  23. Merhaba,
    Öncelikle elinize sağlık, çok güzel bir paylaşım olmuş. 5. adıma kadar sorunsuz geldim fakat vektör dosyasının kontrolü için yapılan kısımda consol penceresi açılır açılmaz kapanıyor. Neden kaynaklanıyor olabilir ? Bu kısımı atlarak devam etsem ileride sorun yaratır mı ?
    Teşekkürler

    1. Orada bir sorun var demektir. Pozitif resimlerinin adlarını , uygunluklarını tekrar kontrol edin.

  24. Çok güzel ve anlaşılır anlatmışsınız. Bu kadar açıklayıcı bir yazıdan sonra beceremeyip sorular sormaya devam edenler lütfen başka bir işle uğraşmayı düşünsünler. İngilizce kaynaklar da dahil konunun bu kadar açıklayıcı anlatıldığına rastlamamıştım.

  25. Merhaba , ben 4. asamada tamamladim ama .bat uzantili dosyam acilmiyor bir anda ekrana dosya tarzi birsey gelip gidiyor.Tekrardan kontrol ettim ama dosya yolunda yada isimlendirmede bir hata yok. Yardim edebilirmisiniz acil Lutfen

      1. Sorunu Cozdum ama bu sefer baska bir problem yasiyorum.Surekli bu hatayi veriyor. Koordinatlari tek tek kontrol ettim. Onlarda sikinti yok

        OpenCV Error: Assertion failed (rect.width >= 0 && rect.height >= 0 && rect.x width && rect.y height && rect.x + rect.width >= (int)(rect.width > 0) && rect.y + rect.height >= (int)(rect.height > 0)) in cvSetImageROI, file /Users/zuleyhakaya/Documents/opencv-3.3.0/modules/core/src/array.cpp, line 3028
        libc++abi.dylib: terminating with uncaught exception of type cv::Exception: /Users/zuleyhakaya/Documents/opencv-3.3.0/modules/core/src/array.cpp:3028: error: (-215) rect.width >= 0 && rect.height >= 0 && rect.x width && rect.y height && rect.x + rect.width >= (int)(rect.width > 0) && rect.y + rect.height >= (int)(rect.height > 0) in function cvSetImageROI

  26. Merhaba hocam; eli tanıyan bir uygulama yapıyorum 500 pozitif 250 negatif resime sahibim sizin anlattıklarınızı uyguladım hiçbir sıkıntı yok ancak yüzümü de el gibi algılıyor . Direk elimi tanıması için neler yapmalıyım?

  27. Merhaba hocam,
    5. adıma kadar geldim ancak vec dosyasını çalıştırdığımda şu hatayı alıyorum
    Error: Assertion failed (elements_read == 1) in icvGetTraininDataFromVec, file C:\build\master_winpack-build-win64-vc15\opencv\apps\createsamples\utility.cpp, line 1374

    1. Vec file doğru bir şekilde oluşturulmamış. pozitif resimlerin oluşturulması aşamasını bir daha gözden geçirin.

  28. Merhaba öncelikle eğitiminiz cidden iyi hazırlanmış ve öğretici bunun için çok teşekkür ederim faydasını gördüm , ikinci olarak bir soru sormak istiyorum bu bilgileri kendinizmi öğrendiniz yoksa herhangibir yerden ders aldınızmı? , üçüncüsü eğer ben sadece 20 tane pozitif resim koysam mesela elimi göstersem bu resimlerde bunları işaretlesem veya bilgilerini info.txt nin iiçine girsem daha sonra 3000 tane negatif resim koysa doğru bir şekilde elimi tespit edermi (resimmler tamamen dışardan yüklenmiş el ile alaksız olan resimler rötgen , manzara , araba , oyuncaklar .vb)

    1. Herhangi bir yerden ders almadım. Kendi imkanlarımla araştırmalarım sonucu derlediğim bilgileri sundum. Rica ederim. Doğru bir şekilde tespit edip edemeyeceğini denemeden bilemeyiz. Ancak 20 pozitif örnek yapay zeka için çok az. 3000 negatif örnek arasında sınıflandırıcının çok başarılı olmayacağı görüşündeyim. Az örnekler için negatifin de az tutulması daha iyi sonuç alacaktır diye düşünüyorum.

  29. hocam öncelikle emeğiniz için teşekkürler. ben .bat dosyası olusturma kısmına kadar geldim ama burda bu hatayı alıyorum.openCV Error: Assertion failed (elements_read1 == 1 && elements_read2 == 1 && elements_read3 == 1 && elements_read4 == 1) in cvShowVecSamples, file C:\buildslave64\win64_amdocl\master_PackSlave-win64-vc11-shared\opencv\apps\createsamples\utility.cpp, line 1619
    neden dolayı kaynaklanıyor olabilir. acaba bazi imgelerin koordinatlarını C:\siniflandirici\Img\pozitif\8.jpg 1 012 001 444 304 gibi kaydettim burdaki 012 veya 001 den dolayı sıkıntı olmus olabilir mi ?

    1. Kırpma parametreleri resim boyutlarından daha büyük görünüyor. Bunların oluşturulması noktasını bir daha gözden geçirmenizi tavsiye ederim. Otomatik kırpılma kısmında çalışarak bir deneyin derim.

  30. Hocam merhaba klasörlere eklediğimiz pozitif ve negatif resimlerin gri tonlamada olması gerekli mi?İnternetten aldığımız gibi renkli resimler yeterli olur mu?

  31. Talha Bey,

    Tek bir kişinin yüz fotoğraflarını Haar-Cascade için eğitebilir miyiz? Bu sayede tek bir kişinin fotoğraflarını bulabilir miyiz?

  32. Merhaba hocam, 4.aşamada .bat dosyasını çalıştırdığımda OpenCV: terminate handler is called! The last OpenCV error is:
    OpenCV(3.4.3) Error: Assertion failed (0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows) in cv::Mat::Mat, file C:\build\3_4_winpack-build-win64-vc14\opencv\modules\core\src\matrix.cpp, line 465 hatası alıyorum. Sorunu nasıl çözebilirim?

  33. Hocam merhaba, ilk başta eğitiminiz için çok teşekkürler. Hocam pozitif ve negatif resimleri çekerken nelere dikkat etmemiz gerekir ? Mesela benim projem sürekli belli bir ortamda çalışacak. Resimleri sadece o ortamda mı çekmek iyi olur yoksa farklı farklı ortamlar daha mı iyi sonuç verir ? İkinci olarak da programın real-time çalışmalarda yavaş kalabilceğinden bahsetmişsiniz. Hangi parametreler bu hıza etki eder ve hata payından çok ödün vermeden bu parametleri ne kadar kısmak sağlıklı olur.

  34. Merhabalar hocam. Ben belirttiğiniz tim adımları sırasıyla yaptım. Kotrol ederken space’e basarken de son resme gelinde otomatik kapanıyor sanırım. o kısımda bir sorun yok gibi görünüyor ancak xml dosyası oluşturmuyor. 1 2 saniye içerisinde kapanıyor. ekranı yakaladım fakat herhangi bir hata da yazmıyor. 0 stage’de tablo kısmında 1 2 satır yazı çıkıyor ve sonrası yok. numpos için farklı birçok değerde denedim ama hala aynı. yardımcı olursanız çok sevinirim

CC için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Arama

Twitterda

© 2014 - Talha Koç. All Rights Reserved. Powered by Wordpress and Design by We Create Web Designs