İçindekiler:

Cambus - Kentsel Otobüste Veri Toplama Sistemi: 8 Adım
Cambus - Kentsel Otobüste Veri Toplama Sistemi: 8 Adım

Video: Cambus - Kentsel Otobüste Veri Toplama Sistemi: 8 Adım

Video: Cambus - Kentsel Otobüste Veri Toplama Sistemi: 8 Adım
Video: Patron görmesin :) 2024, Temmuz
Anonim
Cambus - Kentsel Otobüste Veri Toplama Sistemi
Cambus - Kentsel Otobüste Veri Toplama Sistemi

Toplu taşımada bilinen sorunlar ve zorluklar arasında, nüfus gerçek zamanlı bilgiden yoksun ve en az iddialı. Toplu taşıma otobüslerinin aşırı kalabalık olması, saatlerce trafikte olmalarına rağmen kendi araçlarını kullanmayı tercih eden kullanıcıları uzaklaştırıyor. Bir kullanıcı, otobüs sayısı gibi gerçek zamanlı bilgilere kolayca erişebiliyorsa, bir sonraki otobüsü beklemeyi veya otobüsle dolaşmayı veya kendi aracını kullanmayı seçebilir. Seçim gücü, toplu taşımayı kullanıcı için daha çekici bir seçenek haline getiriyor.

İç mekandaki insanları saymak veya tahmin etmek birçok şekilde yapılabilir, bunların arasında en yaygın olarak kullanılanlar şunlardır:

  • Termal görüntüler;
  • Bilgisayar görüşü;
  • Yüz sayacı;

Bilgisayarla görü kullanan bir ortamda insanları tahmin etmenin çeşitli zorlukları arasında başlıcaları şunlardır:

  • İnsanların tıkanıklıkları;
  • Ters aydınlatma;
  • Statik tıkanıklık, yani nesnelerin arkasındaki insanlar;
  • Çevreye kamera açısı;

Bu proje için bir zorluk, görüntünün arka planının çıkarılmasına en iyi yardımcı olacak kameranın doğru açısının yanı sıra gün boyunca otobüsün içindeki değişken parlaklığın bilinmesidir.

Teklifin temel amacı, aşırı kalabalığı tahmin etmek için sağlam ve yapılandırılabilir bir model oluşturmak ve sonuçları akıllı telefonlar aracılığıyla nüfusun kullanımına sunmaktır.

Adım 1: Malzemeler

Proje için ihtiyaç duyulan malzeme aşağıdaki gibidir:

1 x Dragon Kurulu 410c;

1 x USB kamera;

1 x Akıllı Telefon Android;

Adım 2: Linaro'yu Dragonboard 410c'ye kurun

Linaro'yu Dragonboard 410c'ye kurun
Linaro'yu Dragonboard 410c'ye kurun
Linaro'yu Dragonboard 410c'ye kurun
Linaro'yu Dragonboard 410c'ye kurun

DragonBoard 410c'ye Linaro 17.09'u yüklemek için aşağıdaki bağlantıdaki talimatları izleyin. GPS için çekirdek desteği için Linaro 17.09'u yüklemenizi öneririz.

www.96boards.org/documentation/consumer/dr…

3. Adım: 2. Adım: Kitaplıkları Kurun ve GitHub'dan Kaynak Kodu İndirin

2. Adım: Kitaplıkları Kurun ve GitHub'dan Kaynak Kodu İndirin
2. Adım: Kitaplıkları Kurun ve GitHub'dan Kaynak Kodu İndirin

Cambus modüler bir mimariye ve kod tasarımına sahiptir. Kendi makine öğrenimi algoritmanızı kodlamanız, diğer bulut servislerine geçmeniz ve kendi kullanıcı uygulamalarınızı oluşturmanız mümkündür.

Cambus projesini çalıştırmak için önce kaynak kodunu github'dan (https://github.com/bmonteiro00/cambus) indirmeniz gerekiyor. Python'u (Cambus, sürüm 2.7 ve > 3.x üzerinde çalışacak moddu) ve aşağıdaki kitaplıkları 'pip' (sudo apt-get install python-pip) kullanarak kurun. Linaro sistemine bir grup kitaplık kurmak gerekecek (Ayrıca, Cambus sistemini SO'dan izole etmek için sanal bir ortam - pip install virtualenv - oluşturulması önerilir). Lütfen aşağıdaki kitaplıkları kurun:

  • pip kurulumu paho-mqtt
  • pip kurulum numpy
  • pip kurulumu opencv-python
  • pip kurulumu opencv-katkı-python
  • pip kurulum twilio
  • pip kurulumu matplotlib

Ana program sınıflara ayrıldı:

  • CamBus - ana sınıf;
  • Sensör - GPS konumu, sıcaklık, Co2 gibi verileri elde etmek için bir sınıf.
  • Counter - görüntü işleme algoritmalı sınıf.

Tüm kitaplıkların kurulu olduğundan emin olun ve python CamBus_v1.py'yi çalıştırın.

4. Adım: AWS IoT Core, DynamoDB Kurulumu

AWS IoT Core, DynamoDB Kurulumu
AWS IoT Core, DynamoDB Kurulumu
AWS IoT Core, DynamoDB Kurulumu
AWS IoT Core, DynamoDB Kurulumu
AWS IoT Core, DynamoDB Kurulumu
AWS IoT Core, DynamoDB Kurulumu

AWS IoT çekirdeğini, verileri günlüğe kaydetmek için TLS ve X509 ve NoSQL ve DynamoDB ile bir MQTT aracısı olarak kullandık. https://aws.amazon.com/free adresinde bir hesap oluşturmanız gerekecek.). Ardından, bir şey oluşturmak ve Dinamo ile entegre olmak için aşağıdaki adımları izleyeceksiniz:

docs.aws.amazon.com/iot/latest/developergu…

Adım 5: Twilio ve Dweet API'lerini Ayarlayın

Twilio ve Dweet API'lerini Ayarlayın
Twilio ve Dweet API'lerini Ayarlayın
Twilio ve Dweet API'lerini Ayarlayın
Twilio ve Dweet API'lerini Ayarlayın

Twilio SMS hizmeti de kuruldu. Bu adımı tamamlama talimatları için aşağıdaki URL'ye bakın:

www.twilio.com/docs/iam/api/account

Android uygulaması ile sistem arasındaki entegrasyon Dweet platformunda REST kullanılarak yapılmıştır. Üyelik gerektirmez.

dweet.io/

6. Adım: Zorluklar

Geliştirmemiz sırasında OpenCV tekniklerinden AWS platformuna kadar birçok zorlukla karşılaştık. C/C++ ile geliştirme yaparken zamandan tasarruf etmek için Python ile kodlamaya karar verdik. Geliştirmemiz sırasında yalnızca aşağıdakiler gibi temel Opencv yöntemleri:

• cv2. GaussianBlur(..)

• cv2.threshold(..)

• cv2.morphologyEx(..)

• cv2.contourArea(..)

• cv2.findContours(..)

Bu temel yöntemler, insanları tespit etmede iyi bir kaliteye ulaşmak için yeterli değildi. Titrek video ML(Machine Learning) içeren senaryolar kullanıldı. Bu yüzden OpenCV makine öğrenme kütüphanesini kullanmaya karar verdik ve başka bir problemimiz oldu çünkü ML algoritması için iyi bir veri girişi bulmak günlerce uğraştığımız bir problemdi. OpenCV SVM algoritmasını kullandık ama işe yaramadı. OpenCV Naive Bayses kullandık ve bu işe yaradı. Tensorflow ve CNN sinir ağlarını kullanmaya çalıştık ancak şimdilik bunu gerçekleştiremedik. CNN, bizim sahip olmadığımız bir çok işlem gücü kullanır. OpenCV ML ve temel OpenCV yöntemlerini kullanmak, insanları iyi bir oranda tespit etmemize yardımcı oldu. Yine de, iyi bir insan tespit etme oranına ulaşmak ve yanlış pozitiflerden kaçınmak için her video türü için OpenCV parametrelerini uyarlamamız gerekiyor. sadece yolcu sayısı ve GPS konumu. Sıcaklık vb. gibi diğer sensörleri kullanarak veri toplamamaya karar verdik. Uygulamayı parametreleştirmek ve yapılandırılabilir hale getirmek için bir.ini dosyası oluşturduk. Cambus.ini dosyasında uygulamayı birçok şekilde yapılandırabilirsiniz.

7. Adım: Sonuçlar ve Gelecekteki Çalışmalar

Videoda görebileceğiniz gibi, sayaç doğru bir şekilde çalışıyor. Mavi çizgiler giriş sınırını ve kırmızı çizgi çıkış sınırını gösterir. Bu durumda, bir veriyoluna dağıtamadığımız için simülasyon için bir video kullanıldı.

Video boyutu, kamera açısı, parlaklık vb. ile ilgili durumunuzda bazı değişiklikler yapılması gerektiğini unutmayın. Her video türü, opencv çekirdek çıkarma arka planı vb. gibi kendi parametre uyarlaması olmalıdır.

Lütfen ayrıca cambus.ini'de MQTT komisyoncusu vb. belirten değişkenleri değiştirin.

Gelecekteki uygulamalarda sisteme sıcaklık, nem ve CO2 gibi sensörler eklemeyi düşünüyoruz. Buradaki fikir, şehirler etrafında veri toplayarak onları topluluğa sunmaktır.

Aşağıda, projeyi geliştirmek için atabileceğiniz sonraki adımları sıralıyoruz:

  • C/C++ kullanarak kodu yeniden yazın;
  • ML algoritmasını geliştirin;
  • Yeniden faktör python kodu;
  • Bir otobüse yerleştirme;

Embarcados ve Qualcomm'a verilen tüm destek için teşekkür ederiz.

Ortak çalışanlar:

Bruno Monteiro - [email protected]

Kleber Drobowok - [email protected]

Vinicius de Oliveira - [email protected]

Adım 8: Referanslar

[1]

[2]

[3]

[4]

[5]

Önerilen: