Penggunaan algoritma analitik pada aliran data sekarang menjadi salah satu tugas paling mendesak di bidang membangun sistem analitik. Banyak model prediksi presisi tinggi, misalnya, dikembangkan berdasarkan pembacaan dari sensor pabrik industri, siap untuk mencegah kecelakaan industri yang serius, tetapi untuk ini mereka perlu dilakukan pada perangkat akhir ("perangkat tepi"), di mana pembacaan dari sensor datang secara real time. Produk Pemrosesan Streaming Acara SAS dipanggil untuk menyelesaikan masalah ini dan mentransfer analitik ke "online". Dalam publikasi ini, saya ingin berbagi pengalaman konfigurasinya menggunakan contoh masalah yang diterapkan - analisis gambar dari kamera video.

Teknologi
SAS telah hadir di lini produk SAS selama bertahun-tahun dan sedang mengembangkan solusi pemrosesan alirannya sendiri, SAS Event Stream Processing (selanjutnya disebut ESP). Tugas utama para pengembang adalah untuk mencapai kinerja tinggi, pesanan lebih besar dari solusi yang ada di pasar. Untuk melakukan ini, selama pengembangan ESP, mereka sepenuhnya meninggalkan penyimpanan perhitungan menengah dan indeks pada disk. Semua konversi aliran dilakukan dalam RAM, dan penghitungan ulang peristiwa khusus dipertahankan.
Bekerja dengan memori dalam SAS ESP. Repositori acara di RAM menyimpan hasil antara dan tidak diblokir jika akses paralel dari proses internal atau eksternal karena indeks tambahan.Mesin dapat menangani aliran data besar - pada beberapa juta peristiwa per detik. Pada saat yang sama, sambil mempertahankan latensi rendah, karena itu ia dengan cepat mengambil tempatnya dalam solusi untuk pemasaran online dan memerangi penipuan bank. Di sana, ini adalah filter cerdas operasi pelanggan dan secara instan mendeteksi aktivitas non-standar pada akun, mengisolasi operasi penipuan dari aliran data.
Tapi tetap ini adalah fitur sekunder ESP. Mesin dirancang sebagai mekanisme untuk terus menggunakan model analitis (SAS, C, Python dan lain-lain) pada aliran data.
Prinsip pemrosesan acara streaming.Sebagai contoh ilustratif, untuk forum
SAS Viya Business Breakfast , kami di SAS memutuskan untuk membuat demo stand, dengan mengambil sebagai dasar tugas analisis gambar. Dan ini adalah bagaimana kami mengaturnya dan apa yang kami temui dalam proses.
Alirkan analisis video
Kami memiliki model analitik yang dibangun oleh rekan-rekan dari departemen analitik mendalam pada platform SAS Viya. Esensinya adalah bahwa, menerima gambar input dari pengemudi di interior mobil, suatu algoritma (dalam hal ini, jaringan saraf convolutional terlatih) mengklasifikasikan perilaku pengemudi sesuai dengan kelas: "mengemudi normal", "terganggu oleh percakapan dengan penumpang", "berbicara tentang telepon "," tulis SMS ", dll.
Contoh dari model: gambar input diklasifikasikan sebagai "menulis SMS", berdasarkan pada bagian gambar di mana tangan dengan telepon menekan.Muncul pertanyaan tentang bagaimana menjalankan algoritma ini secara real time untuk dapat menanggapi perilaku yang tidak diinginkan. Menurut skenario, gambar dari kamera dalam mode online sudah jatuh dalam bentuk file ke direktori jaringan pada disk.
Yang tersisa hanyalah menyambungkan ke data, mengonversi gambar ke format yang diinginkan, menerapkan model, dan, dalam semua kemungkinan milik kelas perilaku, menampilkan peringatan waktu nyata di dasbor online. Dan ternyata semua ini dapat dikonfigurasi dalam GUI SAS ESP, tanpa satu baris kode program (!).
Pemrosesan Aliran Acara SAS
Proyek deteksi bahaya dalam antarmuka grafis SAS ESP Studio.Di editor grafis ESP, kami telah menambahkan transformasi aliran data berikut:
- Sebagai input, kami memiliki dua simpul tipe sumber: model_source dan input_image. Dalam model_source kami menerbitkan model klasifikasi kami. Untuk melakukan ini, konfigurasikan konektor file, yang membaca perintah dari file teks yang berisi tiga parameter: nama operasi, jenis format model, dan jalur fisik ke file biner. ESP tertinggal di belakang masing-masing sumber data kemampuan untuk menjadi statis dan streaming, sehingga, kapan saja, kami dapat menerbitkan perintah baru untuk mengunduh model ke simpul ini, yang nyaman dalam operasi industri - kami tidak perlu menghentikan proyek untuk memperbarui versi algoritma.

Menyiapkan perintah penerbitan ke model_source
Isi file model input:
I,N,1,action,load
I,N,2,type,astore
I,N,3,reference,/opt/sas/demo/image_processing/d.astore
- Sumber kedua, input_image, adalah gambar dari kamera. Untuk mempublikasikan data, kami menggunakan adaptor standar - program yang menerbitkan data dari sumber di ESP. Dalam hal ini, kami menggunakan adaptor file, tetapi Anda juga dapat terhubung ke kamera secara langsung, misalnya, melalui adaptor UVC yang disertakan dengan solusi.

Mengkonfigurasi konektor UVC untuk jenis camcorder yang umum. - Gambar mungkin datang dalam format yang berbeda dari yang di mana model dilatih, dan ini dapat mempengaruhi kualitas klasifikasi. Oleh karena itu, setelah input_image, kami segera menambahkan simpul resize_image dan meresepkan format yang diinginkan dalam pengaturannya. Dalam hal ini, tekan hingga kuadrat 100/100 piksel.
Pengaturan Pemrosesan Gambar
- Eksekusi model dikonfigurasikan dalam CNN_score_code. Antarmuka akan secara otomatis mengekstrak atribut keluaran dari meta-description model - P__label_c0, P__label_c1, P__label_c2 dan P__label_c9 - probabilitas setiap kelas perilaku. Selanjutnya, dalam simpul max_class, kita akan mendefinisikan bidang terhitung baru yang akan memilih kelas dengan probabilitas maksimum.
- Sekarang, dengan meluncurkan proyek, kita akan dapat memperoleh klasifikasi waktu nyata untuk setiap gambar input. Dalam sejarah kami, pengemudi yang tidak bertanggung jawab secara berkala terganggu dari jalan. Tapi penting untuk memisahkan kasus-kasus itu ketika dia terganggu sejenak dari kasus mengemudi berbahaya yang berkepanjangan. Untuk melakukan ini, kami menambahkan 3 node: menyimpan acara di menit terakhir (copy_1_min), agregasi berdasarkan kelas perilaku (aggr_for_alert) dan filter fakta “mengemudi berbahaya” (filter_alert).
Mengonfigurasi pengaturan penyimpanan acara - dalam 1 menit terakhir.

Menyiapkan penghitungan acara untuk setiap kelas perilaku.

Menetapkan aturan penyaringan.
Indeks
Penting untuk dicatat bahwa setiap transformasi dalam ESP memiliki pengaturan - "Negara". Ini mencirikan apakah transformasi data mengalir, mis. saat memproses suatu peristiwa input, hasilnya segera dikirim lebih jauh di sepanjang diagram dan dihapus dari memori node ini. Atau kita dapat menyimpan hasil pemrosesan setiap peristiwa dan membuat indeks di atasnya untuk memungkinkan akses ke sana kapan saja. Misalnya, jendela agregasi selalu menyimpan status, dan terus-menerus dihitung ulang berdasarkan aliran input.
Luncurkan
Kembali ke proyek. Kami hanya harus menjalankannya

.
Untuk memudahkan melihat aliran data, perancang laporan online, SAS ESP Stream Viewer, disediakan dengan ESP. Dalam mode pengaturan, kami melihat semua proyek yang berjalan di server, dan kami dapat terhubung dengan mereka dan memilih visualisasi yang nyaman.
Dasbor online di SAS ESP Stream ViewerItu saja. Kami mendapat kesempatan untuk mengotomatisasi reaksi secara real time ke sinyal video. Dalam hal ini, kami membuat pemantauan online, tetapi menggunakan adaptor / konektor yang sama, kami dapat mengirim pesan untuk setiap kasus pelanggaran yang terdeteksi, atau membentuk aksi kontrol ke sistem eksternal.
Atau Python?
Secara teknis, kasus ini selesai, tetapi untuk tujuan menunjukkan di forum, sepertinya tidak cukup interaktif. Itu merepotkan, dan sangat tidak aman (!) Untuk ditampilkan dalam waktu nyata, jadi foto diambil di muka dan mobil ada di tempat parkir.
SAS ESP mendukung eksekusi streaming model yang dibuat dengan Python. Untuk konfirmasi, kami mengatur analisis gambar, yaitu mencari objek dalam gambar, menggunakan pustaka OpenCV.
Model ESP untuk menemukan topi sulit pada aliran input gambarDalam diagram ESP, kami memiliki 2 sumber data: bingkai dari kamera online laptop dan foto objek yang kami cari. Dalam hal ini, kami menentukan apakah calon pekerja di lokasi konstruksi telah melupakan peraturan keselamatan: apakah ada helm di situ. Di simpul proc_detection, kami menjalankan kode Python berikut:
def compute_total(Image,image_template): "Output: score_point" import sys import cv2 import numpy as np import os import base64 import io from imageio import imread MIN_MATCH_COUNT = 10
Identifikasi keberadaan helm dalam gambar dari webcam di forum SAS Viya Business Breakfast (kolega, maxxts sedang menguji dudukan)Pembelajaran mesin
Jika kita berbicara tentang pengembangan lebih lanjut dari pemrosesan aliran, maka penekanannya mungkin akan bergeser ke pelatihan model analitik pada aliran. Yaitu tidak seperti contoh sebelumnya, model tidak hanya akan mengeksekusi, tetapi juga melatih di dalam SAS ESP. Ini akan membutuhkan aliran data tambahan untuk menjalankan operasi kereta dari algoritma yang dipilih oleh acara (misalnya, untuk pemula, pengelompokan k-means sederhana). Kemudian mobil dengan ESP on board akan memiliki kesempatan untuk menganalisis situasi menggunakan sensor baru yang baru saja terhubung. Ini akan memungkinkan untuk menyalakan dan mengotomatisasi perangkat baru dengan cepat dalam konsep Industry 4.0.
Silakan tulis di komentar tugas apa yang dihadapi dalam analitik streaming, dan tentu saja, saya akan dengan senang hati menjawab pertanyaan tentang
SAS Stream Event Processing .