Bu yazıyı [İngilizce] okuyun.
GitHub Repository : [Link to GitHub Repo]
Bu yazıyı [İngilizce] okuyun.
— — — — — — —
Gerçek zamanlı video verilerini analiz etmek, güvenlik gözetiminden endüstriyel otomasyona kadar birçok alanda zorlu ancak kritik bir görevdir. Güvenlik kamerası görüntülerinde şiddeti otomatik olarak tespit ettiğinizi, trafik izlemede belirli eylemleri tanımladığınızı, üretim hatlarındaki anormallikleri fark ettiğinizi veya hatta video akışlarından duyguları tanıdığınızı hayal edin. Bu görevler için modeller oluşturmak, eğitmek ve dağıtmak genellikle karmaşık kurulumlar ve önemli çaba gerektirir.
Bu süreci basitleştirmek için, özellikle gerçek zamanlı uygulamalar için tasarlanmış video sınıflandırma modellerini eğitmek için güçlü, esnek ve kullanımı kolay, Docker tabanlı bir çerçeve olan Gerçek Zamanlı Olay Tespit Eğiticisi’ni (Actual-Time Occasion Detection Coach) sunmaktan heyecan duyuyoruz.
Bu sistem, gelişmiş video sınıflandırma modellerini eğitmek için modernize edilmiş bir iş akışı sağlar. Temelinde, tek tek karelerden uzamsal özellikler çıkarmak için Evrişimli Sinir Ağları (CNN’ler) ve kare dizileri arasındaki zamansal bağımlılıkları yakalamak için Çift Yönlü Uzun Kısa Süreli Bellek (Bi-LSTM) ağlarının bir kombinasyonunu kullanır.
Öncelikle güvenlik görüntülerinde şiddet tespiti düşünülerek tasarlanmış olsa da, esnek mimarisi sayesinde aşağıdakiler de dahil olmak üzere çok çeşitli video analizi görevleri için uygundur:
- Trafik İzleme: Şerit değiştirme, kaza veya yaya geçişi gibi eylemleri tanıma.
- Endüstriyel Kalite Kontrol: Üretim hatlarındaki kusurları veya anormallikleri tespit etme.
- Duygu Tanıma: Videolardaki yüz ifadelerini zaman içinde analiz etme.
- Eylem Tanıma: Genel insan eylemlerini (koşma, yürüme, zıplama) sınıflandırma.
- Son Teknoloji Mimari: Güçlü CNN omurgalarını (MobileNet, ResNet, DenseNet, VGG) sağlam uzamsal-zamansal öğrenme için Bi-LSTM’lerle birleştirir.
- Docker Tabanlı Ortam: Kolay kurulum, tekrarlanabilirlik ve bağımlılık yönetimi sağlar. Sadece birkaç Docker komutuyla başlayın!
- Yüksek Düzeyde Yapılandırılabilir: Basit bir config.json dosyası aracılığıyla eğitim sürecinizi ince ayarlayın — koda dokunmadan veri parametrelerini, mannequin hiperparametrelerini ve çalıştırma ayarlarını düzenleyin.
- Esnek Veri İşleme: Standart bir veri seti formatını destekleyerek kendi verilerinizi kullanmayı kolaylaştırır.
- Çoklu Çalışma Modları: Veriyi ön işlemeyi, modeli eğitmeyi veya tüm işlem hattını tek bir komutla çalıştırmayı seçin.
- Anlaşılır Çıktılar: Kolay analiz için eğitilmiş modeller, performans metrikleri (doğruluk, kayıp), karışıklık matrisleri ve günlükler oluşturur.
- GPU Hızlandırmalı: Önemli ölçüde daha hızlı eğitim için GPU’lardan yararlanır.
Sistem, video sınıflandırmasını iki aşamalı bir yaklaşımla ele alır:
- Özellik Çıkarımı (CNN): Önceden eğitilmiş bir CNN (MobileNet, ResNet, DenseNet veya VGG), bir video dizisinin her karesini işleyerek anlamlı uzamsal özellikler çıkarır. Hız ve doğruluk ihtiyaçlarınıza göre omurgayı seçebilirsiniz.
- Zamansal Modelleme (Bi-LSTM): Kare özelliklerinin dizisi daha sonra bir Bi-LSTM ağına beslenir. LSTM’ler sıralı verilerdeki örüntüleri öğrenmede mükemmeldir ve çift yönlü doğası, modelin dizi içindeki hem geçmiş hem de gelecek bağlamını dikkate almasını sağlayarak videoda gelişen olayın daha kapsamlı bir şekilde anlaşılmasına yol açar.
Kendi olay dedektörünüzü eğitmeye hazır mısınız? Çok basit!
1. Veri Setinizi Hazırlayın:
Video dosyalarınızı, tespit etmek istediğiniz sınıfların adını taşıyan klasörler halinde düzenleyin.
/path/to/your/dataset/ (veri_setinizin_yolu)
├── Sinif1/
│ ├── video_01.mp4
│ ├── video_02.mp4
│ └── ...
└── Sinif2/
├── video_03.mp4
├── video_04.mp4
└── ...
Use code with caution.
2. Eğitiminizi Yapılandırın (config.json):
Veri seti konumunuzu, istediğiniz mannequin mimarisini, eğitim parametrelerini ve çıktı yollarını tanımlamak için bir config.json dosyası oluşturun.
// Örnek config.json
{
"data_config": {
"dataset_dir": "/knowledge/dataset", // Konteyner içindeki yol
"processed_dir": "/knowledge/processed", // Ön işlenmiş veri yolu
"image_height": 64,
"image_width": 64,
"sequence_length": 16,
"lessons": ["Sinif1", "Sinif2"], // Klasör adlarınızla eşleştirin
// ... diğer veri ayarları
},
"model_config": {
"title": "siddet_tespiti_mobilenet_v1", // Modelinizin adı
"structure": "mobilenet_bilstm", // Seçenekler: mobilenet, resnet, densenet, vgg
"epochs": 50,
"batch_size": 8,
// ... diğer mannequin ayarları (öğrenme oranı, dropout vb.)
},
"run_config": {
"mode": "all", // Seçenekler: "put together", "prepare", "all"
"output_dir": "/output" // Sonuçlar için yol
}
}
3. Docker İmajını İndirin:
docker pull furkancolhak/real-time-event-detection-trainer:newest
4. Eğiticiyi Çalıştırın:
Veri setinizi, yapılandırma dosyanızı, işlenmiş verileri (isteğe bağlı, yeniden kullanım için) ve çıktı dizinlerinizi konteynere bağlayın.
docker run --gpus all
-v /path/to/your/dataset:/knowledge/dataset
-v /path/to/your/processed_data:/knowledge/processed
-v /path/to/your/config:/config
-v /path/to/your/output:/output
furkancolhak/real-time-event-detection-trainer:newest --config /config/config.json
— mode bayrağını (veya config.json içindeki run_config.mode’u) kullanarak yürütme akışını kontrol edebilirsiniz:
- — mode put together: Yalnızca videoları ön işler (kareleri çıkarır, dizileri düzenler) ve bunları processed_dir içine kaydeder. Ön işlemenin zaman aldığı büyük veri setleri için kullanışlıdır.
- — mode prepare: processed_dir içinde bulunan önceden işlenmiş verileri kullanarak modeli eğitir. İşlenmiş veri biriminin bağlanmasını gerektirir.
- — mode all (Varsayılan): Tüm işlem hattını çalıştırır — veriyi ön işler ve ardından hemen eğitime başlar.
Eğitim tamamlandıktan sonra, belirttiğiniz çıktı dizinini kontrol edin. Modelinizin adını taşıyan (model_config.title) bir klasör bulacaksınız ve içinde şunlar bulunur:
- mannequin.h5: Eğitilmiş Keras mannequin dosyası.
- model_architecture.json: Modelin mimari tanımı.
- confusion_matrix.png: Take a look at seti üzerindeki sınıflandırma performansının görselleştirmesi (Karışıklık Matrisi).
- accuracy_plot.png & loss_plot.png: Epoch’lar boyunca eğitim/doğrulama doğruluğunu ve kaybını gösteren grafikler.
- Çalıştırmanın konsol çıktısını içeren bir .log dosyası.
- Doğruluk (Accuracy), Duyarlılık (Recall), Kesinlik (Precision) ve F1-Skoru metriklerini içeren JSON dosyası.
Gerçek Zamanlı Olay Tespit Eğiticisi, video verileriyle çalışan araştırmacılar, geliştiriciler ve veri bilimciler için sağlam ve erişilebilir bir platform sağlar. Güçlü modellerin, Docker aracılığıyla kullanım kolaylığının ve internet yapılandırmanın birleşimi, onu video sınıflandırma projelerinize başlamak için supreme bir araç haline getirir.
🚀 Hemen bugün başlayın! Docker imajını indirin, verilerinizi hazırlayın, çalıştırmanızı yapılandırın ve kendi özel gerçek zamanlı olay dedektörlerinizi eğitmeye başlayın.
Kendi özel kullanım durumunuz için denemenizi tavsiye ederim. Sizin için nasıl çalıştığını bize bildirin!
- Docker Hub: furkancolhak/real-time-event-detection-trainer
- GitHub Deposu : [GitHub Repo Linki]
Bu proje, alandaki temel çalışmalara dayanmaktadır ve Bi-LSTM uygulaması için Actual-Time-Violence-Detection deposundan ilham alan kodu kullanmaktadır. Orijinal yazarlara katkılarından dolayı teşekkür ederiz.