yolov4-deepsort
YOLOv4, DeepSort ve TensorFlow ile uygulanan nesne izleme. YOLOv4, nesne algılamalarını gerçekleştirmek için derin evrişimli sinir ağlarını kullanan son teknoloji bir algoritmadır. Son derece hassas bir nesne izleyici oluşturmak için YOLOv4'ün bu nesne tespitlerinin çıktısını Derin SIRALAMA'ya (Derin İlişki Ölçümü ile Basit Çevrimiçi ve Gerçek Zamanlı İzleme) besleyebiliriz.
Kişiler Üzerine Nesne İzleyici Demosu
Otomobillerde Nesne İzleyici Demosu
Başlangıç
Başlamak için, Anaconda veya Pip aracılığıyla uygun bağımlılıkları kurun. Sizin için CUDA araç seti sürümünü yapılandırdığı için GPU kullanan kişiler için Anaconda rotasını öneriyorum.
Conda (Recommended)
# Tensorflow CPU
conda env create -f conda-cpu.yml
conda activate yolov4-cpu
# Tensorflow GPU
conda env create -f conda-gpu.yml
conda activate yolov4-gpu
Pip
# TensorFlow CPU
pip install -r requirements.txt
# TensorFlow GPU
pip install -r requirements-gpu.txt
Nvidia Sürücüsü (GPU için, Conda Environment'ı kullanmıyorsanız ve CUDA'yı henüz kurmadıysanız)
Bu depoda kullanılan TensorFlow sürümü için uygun sürüm olduğundan CUDA Toolkit sürüm 10.1'i kullandığınızdan emin olun.
https://developer.nvidia.com/cuda-10.1-download-archive-update2
Resmi YOLOv4 Önceden Eğitilmiş Ağırlıkları İndirme
Nesne izleyicimiz, derin sıralamanın daha sonra izlemek için kullandığı nesne algılamalarını yapmak için YOLOv4'ü kullanır. 80 sınıfı algılayabilen önceden eğitilmiş resmi bir YOLOv4 nesne dedektör modeli vardır. Kolay demo amaçları için, izleyicimiz için önceden eğitilmiş ağırlıkları kullanacağız.
Önceden eğitilmiş yolov4.weights dosyasını indirin: https://drive.google.com/open?id=1cewMfusmPjYWbrnuJRuKhPMwRe_b9PaT
Yolov4.weights'ı indirilenler klasörünüzden bu havuzun 'veri' klasörüne kopyalayıp yapıştırın.
Algılamaları çalıştırmada daha hızlı ancak daha az doğru olan daha küçük bir model olan yolov4-tiny.weights'ı kullanmak istiyorsanız, dosyayı buradan indirin: https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v4_pre/yolov4-tiny. ağırlıklar
İzleyiciyi YOLOv4 ile Çalıştırma
YOLOv4 kullanarak nesne izlemeyi uygulamak için, önce .weights'ı, bir kontrol noktaları klasörüne kaydedilecek olan karşılık gelen TensorFlow modeline dönüştürüyoruz. O zaman tek yapmamız gereken, nesne izleyicimizi YOLOv4, DeepSort ve TensorFlow ile çalıştırmak için object_tracker.py betiğini çalıştırmak.
# Convert darknet weights to tensorflow model
python save_model.py --model yolov4
# Run yolov4 deep sort object tracker on video
python object_tracker.py --video ./data/video/test.mp4 --output ./outputs/demo.avi --model yolov4
# Run yolov4 deep sort object tracker on webcam (set video flag to 0)
python object_tracker.py --video 0 --output ./outputs/webcam.avi --model yolov4
Çıktı bayrağı, daha sonra tekrar görüntüleyebilmeniz için çalışan nesne izleyicinin ortaya çıkan videosunu kaydetmenize olanak tanır. Video, belirlediğiniz yola kaydedilecektir. (Çıktılar klasörü, yukarıdaki komutu çalıştırdığınızda olacağı yerdir!)
Yolov3'ü çalıştırmak istiyorsanız model bayrağını olarak ayarlayın, --model yolov3
yolov3.weights'ı 'data' klasörüne yükleyin ve yukarıdaki komutlarda ağırlık bayrağını ayarlayın. (aşağıdaki bölümde tüm mevcut komut satırı bayraklarına ve bunların açıklamalarına bakın)
İzleyiciyi YOLOv4-Tiny ile Çalıştırma
Aşağıdaki komutlar yolov4-tiny modelini çalıştırmanıza izin verecektir. Yolov4-tiny, doğruluk için küçük bir maliyetle izleyici için daha yüksek bir hız (FPS) elde etmenizi sağlar. Komutların çalışması için minik ağırlıklar dosyasını indirdiğinizden ve 'veri' klasörüne eklediğinizden emin olun!
# save yolov4-tiny model
python save_model.py --weights ./data/yolov4-tiny.weights --output ./checkpoints/yolov4-tiny-416 --model yolov4 --tiny
# Run yolov4-tiny object tracker
python object_tracker.py --weights ./checkpoints/yolov4-tiny-416 --model yolov4 --video ./data/video/test.mp4 --output ./outputs/tiny.avi --tiny
Ortaya Çıkan Video
Yukarıda belirtildiği gibi, elde edilen video --output
komut satırı işaret yolunu ayarladığınız yere kaydedilecektir . Her zaman 'çıktılar' klasörüne kaydedecek şekilde ayarladım. Ayrıca --output_format
bayrağı ayarlayarak kaydedilen videonun türünü de değiştirebilirsiniz, varsayılan olarak XVID olan AVI kodekine ayarlıdır.
Nesne İzleyici Tarafından İzlenen Sınıfları Filtrele
Varsayılan olarak kod, önceden eğitilmiş YOLOv4 modelinin eğitildiği şey olan coco veri kümesindeki 80 kadar sınıfı takip edecek şekilde ayarlanmıştır. Bununla birlikte, 80 sınıfın herhangi birini veya kombinasyonunu izlemek için birkaç satırlık kodu kolayca ayarlayabilirsiniz. Yalnızca person
sınıfı veya yalnızca car
en yaygın olan sınıfı filtrelemek çok kolaydır .
Özel bir sınıf seçimini filtrelemek için yapmanız gereken tek şey 159. satırın yorumunu çıkarmak ve object_tracker.py satırının 162 satırını kaldırmaktır Listeye allowed_classes
izleyicinin izlemesini istediğiniz sınıfları ekleyin. Sınıflar, modelin eğitildiği 80'den herhangi biri olabilir, veri / sınıflar / coco.names dosyasında hangi sınıfları izleyebileceğinizi görün.
Komut Satırı Args Referansı
save_model.py:
--weights: path to weights file
(default: './data/yolov4.weights')
--output: path to output
(default: './checkpoints/yolov4-416')
--[no]tiny: yolov4 or yolov4-tiny
(default: 'False')
--input_size: define input size of export model
(default: 416)
--framework: what framework to use (tf, trt, tflite)
(default: tf)
--model: yolov3 or yolov4
(default: yolov4)
object_tracker.py:
--video: path to input video (use 0 for webcam)
(default: './data/video/test.mp4')
--output: path to output video (remember to set right codec for given format. e.g. XVID for .avi)
(default: None)
--output_format: codec used in VideoWriter when saving video to file
(default: 'XVID)
--[no]tiny: yolov4 or yolov4-tiny
(default: 'false')
--weights: path to weights file
(default: './checkpoints/yolov4-416')
--framework: what framework to use (tf, trt, tflite)
(default: tf)
--model: yolov3 or yolov4
(default: yolov4)
--size: resize images to
(default: 416)
--iou: iou threshold
(default: 0.45)
--score: confidence threshold
(default: 0.50)
--dont_show: dont show video output
(default: False)
--info: print detailed info about tracked objects
(default: False)
GitHub : https://github.com/theAIGuysCode/yolov4-deepsort