Bu projede insan tespiti, yüz tespiti, yüz tanıma ve bireyi takip etme sorunu üzerinde çalıştık. Projemiz, belirli bir videoda bir insanı ve yüzünü tespit edebilmekte ve tespit edilen yüzlerin Yerel ikili Desen Histogramını (LBPH) saklayabilmektedir. LBPH özellikleri, görüntüleri tanımak ve kategorize etmek için kullanılan bir görüntüden çıkarılan kilit noktalardır. Videoda bir insan tespit edildiğinde, ona bir etiket atayan kişinin izini sürdük. Diğer videolarda onları tanımak için bireylerin depolanmış LBPH özelliklerini kullandık. Çeşitli videoları taradıktan sonra programımız, camera1 tarafından çekilen videoda subject1, camera2 tarafından videoda subject1 olarak etiketlenmiş kişi gibi çıktı verir. Bu şekilde bir kişiyi birden fazla kamera tarafından çekilen videoda tanıyarak takip ettik. Tüm çalışmalarımız [openCV] yardımıyla makine öğrenimi ve görüntü işleme uygulamasına dayanmaktadır (http://opencv.org ). Bu kod opencv 3.1.1, python 3.4 ve C ++ üzerine kurulmuştur, opencv'nin diğer sürümleri desteklenmez.
-
opencv [v3.1.1]
- ** Linux'ta kurulum:** Ubuntu'da opencv'nin tam kurulumu için buraya tıklayabilirsiniz.
- ** Windows'ta kurulum** Windows'ta opencv'nin tam kurulumu için buraya tıklayabilirsiniz
-
python3
- Ubuntu'da python 3.4, aşağıda verilen komutla terminal üzerinden kurulabilir:
sudo apt-get install python3
- Ubuntu'da python 3.4, aşağıda verilen komutla terminal üzerinden kurulabilir:
-
** python kütüphaneleri:** İşte tüm python kütüphanelerinin bir listesi
- Python Image Library (PILLOW)
- Imutils
- numpy
-
C++
- Kod aşağıda verilen adımları takip eder:
- Önce bir video okur ve her kareyi tek tek işler.
- Her kare için bir insanı tespit etmeye çalışır. Bir insan tespit edilirse etrafına bir dikdörtgen çizer.
-
- adımı tamamladıktan sonra insan yüzünü tespit etmeye çalışır.
- bir insan yüzü tespit edilirse, onu önceden eğitilmiş bir model dosyasıyla tanımaya çalışır.
- İnsan yüzü tanınırsa, etiketi o insan yüzüne koyar, aksi takdirde bir sonraki kare için tekrar 2. adıma geçer
- Depo aşağıdaki gibi yapılandırılmıştır:
main.py
: Bu, insanları algılayan ve tanıyan ana python dosyasıdır.main.cpp
: Bu, insanları algılayan ve tanıyan ana C ++ dosyasıdır.create_face_model.py
: Bu python betiği,data /
klasöründeki verilen verileri kullanarak model dosyası oluşturmak için kullanılırmodel.yaml
: Bu dosya, verilen veriler için eğitilmiş model içerir. Bu eğitimli model, verilen veriler için her yüzün LBPH özelliklerini içerir.- '
face_cascades/
: Bu dizin, kodlarımızı test etmek için örnek veriler içerir. Bu veriler, bazı videolardan pratiküler bir kişinin yüz görüntüleri çıkarılarak hazırlanır. scripts/
: Bu dizin, farklı sorunlar üzerinde çalıştığımız bazı yararlı komut dosyaları içerir.video/
: Bu dizin, test ederken kullandığımız bazı videoları içerir.
Yukarıdaki yükleme paragrafında açıklanan gerekli kitaplıkları yüklemeyi unutmayın.
İlk önce çalıştırmanız gerekir create_face_model.py oluşturmak için / data içindeki görüntüleri kullanan bir dosya.yaml dosyası
- Proje klasöründe çalıştırın
python create_face_model.py
- Kodun python sürümünü çalıştırmak için tüm giriş videolarını tek bir klasöre koymanız ve ardından bu klasörün yolunu komut satırı argümanı olarak sağlamanız gerekir:
python3 main.py -v /path/to/input/videos/
Örnek- dizin yapımız için:
python3 main.py -v /video
- Kodun C ++ sürümünü openCV ile derlemek için komut:
g++ -ggdb `pkg-config --cflags opencv` -o `basename name_of_file.cpp .cpp` name_of_file.cpp `pkg-config --libs opencv`
Örnek- dizin yapımız için:
g++ -ggdb `pkg-config --cflags opencv` -o `basename main.cpp .cpp` main.cpp `pkg-config --libs opencv`
- Kodun C ++ sürümünü çalıştırmak için tüm giriş videolarını tek bir klasöre koymanız ve ardından o videonun yolunu komut satırı argümanı olarak sağlamanız gerekir:
./name_of_file /path/to/input/video_file
Örnek- dizin yapımız için:
./main /video/2.mp4
- kendi model dosyanızı oluşturma; Kendi model dosyanızı oluşturmak için aşağıda verilen adımları uygulamanız yeterlidir:
- her birey için görüntüleri şu şekilde yeniden adlandırın:
subjectx.y.jpg
örneğin kişi 1 için resimler şu şekilde adlandırılmalıdırsubject01.0.jpg
,subject01.1.jpg
ve benzeri. - tüm kişilerin tüm resimlerini tek bir klasöre koyun, örneğin görebilirsiniz
data\
klasör daha sonra aşağıda verilen bu komutu çalıştırın:python3 create_face_model.py -i /path/to/persons_images/
- her birey için görüntüleri şu şekilde yeniden adlandırın:
- Bu bir bilgisayar vizyonu projesi olduğundan, çok fazla hesaplama gücü gerektirir ve kodun performansı burada bir tür sorundur.
- Kod, performansı analiz etmek için iki farklı makinede test edildi. Giriş 30fps 720p video idi.
- AMD A4 çift çekirdekli işlemcili bir makinede oldukça kötü olan 4 fps çıktı aldık.
- Intel i5 dört çekirdekli işlemciye sahip bir makinede saniyede 12 kare çıktı elde ettik.
Proje raporunu bulabilirsiniz here
- kodun performansını artırın
- kodun doğruluğunu artırın ve yanlış pozitif oranı azaltın.
- yüz tanıma doğruluğunu yüzde 90'ın üzerine çıkarın
- Jignesh S. Bhatt - Bu projeye rehberlik ettiğiniz için teşekkür ederiz
- Kamal Awasthi - Kodu test etmede yardımcı oldu