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

demo

Otomobillerde Nesne İzleyici Demosu

arabalar

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 yolov3yolov3.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 --outputkomut satırı işaret yolunu ayarladığınız yere kaydedilecektir . Her zaman 'çıktılar' klasörüne kaydedecek şekilde ayarladım. Ayrıca --output_formatbayrağı 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 personsınıfı veya yalnızca caren 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_classesizleyicinin 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