
Ya, memang, kami dapat mengganti jaringan saraf pramuka olahraga dan mulai secara otomatis mengumpulkan data tentang permainan. Dan sekarang kita tahu tentang acara olahraga lebih dari hadirin hadir, dan kadang-kadang hakim.
Kami (
Constanta ) berspesialisasi dalam mengembangkan produk TI taruhan: aplikasi seluler, situs, dan baru-baru ini kami mengembangkan proyek di bidang visi komputer dan pembelajaran mesin. Salah satunya akan dibahas.
Sementara atlet berjuang untuk kemenangan besar dan kecil, taruhan harus mengetahui jalannya pertandingan secara real time untuk menghitung ulang koefisien, yang menurutnya, pada kenyataannya, taruhan diterima. Untuk melakukan ini, pemandu olahraga langsung di taman bermain mengumpulkan dan mengirimkan sejumlah besar data menggunakan aplikasi khusus pada smartphone. Scout adalah orang yang sama dengan kita semua, sehingga risiko yang terkait dengan faktor manusia muncul secara alami. Tujuan kami adalah untuk meminimalkannya, sekaligus meningkatkan volume dan efisiensi pengumpulan dan transmisi data, plus - untuk mengurangi biaya semua pekerjaan ini. Sebuah bola kecil terbang di atas meja tenis atau bola di lapangan sepak bola - sisi teknis dari penerapan sistem visi komputer untuk mengumpulkan data tidak memiliki perbedaan konseptual. Kami memutuskan bahwa lebih menarik untuk segera membangun sistem untuk permainan dengan sejumlah besar bola yang berinteraksi, seperti di biliar.
Saya membutuhkan koordinat dan kecepatan semua bola dan isyarat Anda.Perhatikan bahwa dalam analisis banyak permainan olahraga untuk menentukan hasil dengan benar, Anda harus secara akurat melacak rangkaian peristiwa. Karenanya tuntutan yang tinggi pada keandalan komponen yang bertanggung jawab untuk menentukan peristiwa ini. Mari kita jelaskan dalam contoh sederhana: jika rata-rata, pemain melempar semua bola ke dalam saku selama 20 pukulan, maka dengan keandalan menentukan hasil hit 99%, probabilitas menentukan pemenang dalam undian hanya sekitar 82% (0,99
20 .80,817). Pertandingan berlangsung hingga lima kemenangan dari salah satu pemain, yaitu dari total imbang 5 hingga 9, secara rata-rata 7. Dengan demikian, secara rata-rata, dengan keandalan dalam menentukan acara, hasil yang benar dari pertandingan tersebut diperoleh dengan probabilitas hanya sekitar 24% (0,817
7 β0, 24). Namun awalnya kemungkinan kesalahan hanya 1%!
Nine Pool
Dari seluruh ragam game biliar, pertimbangkan Pool-9. Pemenangnya adalah pemain yang telah mengocok bola dengan angka 9 ke dalam saku. Awalnya, "sembilan" terletak di tengah belah ketupat bola berwarna. Bola tujuan yang menjadi sasaran bola isyarat harus mengenai adalah bola dengan angka terendah di atas meja. Jika seorang pemain tidak bisa mencetak bola berwarna tunggal atau busuk, misalnya, tidak membentur bola bertujuan atau mencetak bola isyarat di dalam lubang, langkah tersebut menuju ke lawan. Agar dapat mencetak poin dengan benar, perlu untuk menentukan pukulan bola di saku dan semua acara yang mengarah ke pergantian pemain.
Visi komputer
Pertama, mari kita bicara tentang bagaimana jaringan saraf menerima data. Input information stream - siaran video dari satu kamera yang terletak di atas tabel dan merekam pada frekuensi 60 frame per detik.
Contoh bingkai aliran video yang diproses oleh sistem.Tahap kunci dalam memproses streaming video oleh jaringan saraf adalah segmentasi semantik. Ini adalah tugas klasik dari visi komputer, yang terdiri dari fakta bahwa algoritma harus menetapkan piksel gambar ke satu atau beberapa kelas. Sederhananya, pada bingkai video Anda perlu menentukan apa itu apa. Jaringan saraf menghasilkan "topeng", menyoroti piksel yang terkait, misalnya, ke bola atau pemain. Setelah melalui serangkaian algoritma postprocessing, "topeng" bola berubah menjadi koordinat. Menurut mereka, setelah dihaluskan dengan filter, untuk setiap bola kecepatan dan lintasan gerakan ditentukan. Pada tahap ini, tingkat rendah, atau menengah, peristiwa, seperti tabrakan bola satu sama lain dan dengan sisi meja, dilacak. Data yang diterima dikirim ke modul pemrosesan aturan, yang mengimplementasikan seluruh logika permainan. Pada akhirnya, ia memberikannya kepada konsumen akhir, yaitu taruhan, acara tingkat tinggi: mengarahkan bola ke saku, pelanggaran, transisi gerakan dan, pada kenyataannya, hasil dari permainan.
Skema umum sistem.Untuk mengatasi masalah, pertama-tama, perlu untuk menemukan lokasi tabel pada bingkai dan semua bola di atasnya. Peserta penting lainnya dalam aksi adalah isyarat, dialah yang menentukan arah pukulan dan, dengan demikian, lintasan bola isyarat. Pemain membungkuk di atas meja, menutupi sebagian dari kamera. Dari sudut pandang analisis permainan, mereka adalah "benda asing", seperti dudukan untuk bola, serta ponsel, sarung tangan, serbet dan hal-hal lain yang, atas kehendak para pemain, muncul di sisi meja. Dengan demikian, beberapa kelas target diperoleh untuk segmentasi semantik gambar: meja, sisi-sisinya, kantung, isyarat, benda asing dan, tentu saja, bola. Selain itu, setiap bola diwakili oleh kelas yang terpisah, tergantung pada warnanya.
Untuk segmentasi semantik, jaringan saraf convolutional penuh dengan arsitektur
LinkNet-34 digunakan . Ini bekerja relatif cepat dan telah membuktikan dirinya dalam berbagai tugas "memerangi" kompetisi visi komputer. Untuk menentukan set kelas di atas, hanya satu jaringan saraf yang digunakan, yang memecahkan semua masalah penglihatan komputer.
Arsitektur jaringan LinkNet-34 (lihat arXiv ).Gambar adalah input, dan setumpuk "topeng" dari semua kelas yang diperlukan diperoleh pada output. "Prediction mask" adalah array dua dimensi dari angka dengan nilai dari 0 hingga 1. Nilai setiap elemen dari "mask" sesuai dengan kepercayaan jaringan bahwa pixel yang sesuai milik kelas "mask" ini. Untuk klasifikasi piksel terakhir, prediksi yang diperoleh akan dibubarkan oleh filter ambang.
Anda dapat melatih jaringan saraf untuk mengklasifikasikan piksel pada sejumlah besar contoh dengan "topeng" yang sesuai. Untuk melakukan ini, kami mengumpulkan banyak video, dibagi menjadi beberapa frame, dan departemen markup secara manual menyiapkan "topeng" untuk mereka. Dalam kasus-kasus sulit, set data tambahan diperlukan. Misalnya, ketika bola "menyelam" ke dalam saku atau berdiri di dekatnya dekat sisi meja, bayangan jatuh di atasnya, karena warna-warnanya terlihat berbeda. Atau, ketika seorang pemain memecahkan sebuah belah ketupat, bola terbang dengan cepat di sepanjang jalur yang kompleks, itulah sebabnya gambar mereka kabur. Jika jaringan saraf telah "melihat" beberapa contoh seperti itu, klasifikasi yang benar akan sulit.
Contoh gambar dan markup yang sesuai. Tugas dari jaringan saraf adalah untuk mendapatkan "topeng" dari gambar input.Cepat, lebih cepat, bahkan lebih cepat ...
Pengguna akhir data membutuhkan informasi secara real time (atau bahkan lebih baik - lebih cepat daripada waktu nyata). Beberapa teknik digunakan untuk mempercepat jaringan saraf, seperti menggabungkan normalisasi paket dengan konvolusi 2D (BatchNorm Fusion), yang memungkinkan Anda untuk mendapatkan jaringan yang setara tanpa beberapa lapisan. Persiapan dan pemuatan bingkai baru secara paralel dengan pemrosesan yang sebelumnya pada kartu video juga memberikan hasil yang baik. Selain itu, bagian dari operasi persiapan dengan personel dan pasca-pemrosesan "topeng" dilakukan pada GPU. Bahkan sebuah ide sederhana membantu mengurangi total waktu pemrosesan untuk setiap frame - untuk mentransfer hasil jaringan dari kartu video ke RAM setelah binarisasi dalam bentuk uint8 bukan yang diterima dari jaringan float32.
Akibatnya, segmentasi semantik dari satu frame dengan semua pra dan pasca pemrosesan yang dibutuhkan rata-rata hanya 17 ms! Dan untuk pengoperasian sistem, hanya satu kartu video game yang cukup.
Apakah ada bentrokan?
Kami menentukan koordinat bola dengan "topeng", tetapi pertama-tama kita harus mengecualikan apa yang hanya menyerupai bola, misalnya, garis-garis bundar pada kaos pemain. Di sini heuristik ikut berperan: bentuk dan ukuran bola, posisinya relatif terhadap masa lalu, sudah dikenal luas. Selanjutnya, jika semuanya sesuai dengan "topeng", centroid diambil untuk diproses.
Pemain biliar dalam mimpi buruk pengembang.Ini aneh pada pandangan pertama, tetapi kenyataannya adalah bahwa hasil menentukan posisi bola dapat berbeda antara frame bahkan dengan bola yang tidak bergerak. Penjelasannya sederhana - "noise" dari video nyata, artefak kompresi aliran video, yang, bersama dengan kesalahan dalam menentukan posisi gambar buram bola bergerak, mengharuskan perataan hasil.
Berdasarkan koordinat bola yang diterima dari jaringan dan ditentukan pada frame sebelumnya, kecepatan diperkirakan sebagai turunan numerik. Jumlah titik yang diperhitungkan dan interval di antara mereka dipilih secara adaptif selama operasi sistem, tergantung pada ketersediaan data dan kejadian seperti tabrakan. Kemudian, informasi tentang posisi dan kecepatan bola dikirim ke
filter sigma-titik
Kalman . Ini memungkinkan Anda untuk memuluskan data yang bising, yang sangat penting untuk menentukan kecepatan dan arahnya. Selain itu, hasil dari model dinamis dari itu dapat digunakan untuk memprediksi waktu dekat.
Peragaan smoothing penentuan posisi dan kecepatan bola oleh filter Kalman.
Kiri: Raw: hasil pengukuran langsung, vektor bola sesuai dengan kecepatan, angka menunjukkan perkiraan kecepatan; UKF: hasil filter.
Kanan: contoh menghaluskan arah kecepatan bola dengan filter Kalman. Warna biru menunjukkan hasil pengukuran, merah - hasil penyaringan. Tiba-tiba melompat ke arah sesuai dengan tumbukan bola.Data tentang keadaan dan lintasan bola memungkinkan untuk menentukan terjadinya apa yang disebut peristiwa tingkat rendah, bahkan ketika jatuh βdi antara frameβ.

Bola bergerak sangat cepat selama pukulan sehingga sering kali tidak ada bingkai yang secara langsung menunjukkan suatu peristiwa, misalnya, tabrakan bola. Oleh karena itu, untuk semua jenis interaksi (benturan bola satu sama lain, dengan papan atau jatuh ke dalam lubang), daftar peristiwa yang mungkin pertama kali dibangun. Ada dua kriteria. Pertama, pengaturan timbal balik yang sangat dekat. Ketika bergerak lambat, ada kesalahan relatif yang besar dalam menentukan kecepatan dan lintasan, oleh karena itu, jarak antara benda yang berinteraksi adalah penting. Kedua, pada kecepatan tinggi pergerakan bola, peristiwa yang mungkin ditentukan oleh persimpangan lintasan yang diperoleh dari model dinamis. Pendekatan ini memberikan bonus yang sangat bagus: kemampuan untuk memprediksi sedikit di muka kemungkinan pukulan bola di saku.
Bingkai berurutan dari aliran video selama pemecahan awal belah ketupat dari bola. Tanpa model yang menggambarkan lintasan bola, sulit untuk menentukan bola mana yang menjadi bola isyarat yang dihadapi.Perubahan arah dan besarnya vektor kecepatan memungkinkan kita untuk menilai bahwa suatu peristiwa, yaitu tabrakan, telah terjadi. Dalam kasus ketika bola bergulir ke dalam saku, itu "menghilang". Tetapi ada poin penting: perlu menggunakan data pada lintasannya dan memverifikasi bahwa bola telah dipalu secara akurat, dan tidak menghilang dari bidang pandang kamera karena fakta bahwa tangan pemain atau benda lain secara tidak sengaja berada di atasnya.
Dan jika ada yang salah? Katakanlah beberapa acara jatuh karena kehilangan bingkai atau figur pemain tergantung di atas meja. Kelalaian seperti itu sangat penting untuk logika game. Menghemat sistem koreksi otomatis heuristik yang meningkatkan stabilitas sistem. Sebagai contoh, jika hit pada bola cue terdeteksi dan bola tujuan jatuh ke dalam lubang, tetapi tidak ada tabrakan bola isyarat terdeteksi dan bola lainnya tetap bergerak, logis untuk menambahkan tabrakan bola isyarat dengan bola tujuan.
Jadi kita bermain atau tidak?
Bola-bola berguling, bertabrakan, jatuh ke kantong ... Tetapi apakah permainan benar-benar terjadi pada saat itu? Atau, sebaliknya, semua yang ada di atas meja tampak tak tergoyahkan ... Jadi permainan telah berhenti? Jawaban yang benar untuk pertanyaan-pertanyaan ini mungkin sama pentingnya dengan definisi tabrakan. Ketika seorang pemain bersiap untuk pukulan, merenungkannya, membidik, tidak ada gerakan. Tapi itu terjadi, dan sebaliknya, di saat-saat non-game, kehidupan di atas meja bisa berjalan sangat dinamis: bola yang tersumbat bergerak dari satu saku ke yang lain, bola cue dapat berguling di atas meja ketika dipasang setelah melakukan pelanggaran, dan ini dilakukan termasuk ujung cue (sangat mirip dengan pukulan!) ) Jika akhir pukulan saat ini dapat dengan mudah ditentukan - setelah pukulan yang benar semua bola berhenti bergerak, maka dengan permulaan semuanya tidak begitu jelas. Tentu saja, Anda dapat melatih jaringan saraf untuk mendeteksi peristiwa dalam video, termasuk serangan isyarat nyata pada bola isyarat. Dan Anda dapat membuat satu set heuristik yang menganalisis posisi dan sudut isyarat, lintasan dan kecepatan ujungnya dan lintasan bola isyarat setelah dampak yang dituduhkan. Kami pergi dengan cara kedua, dan hasilnya adalah algoritma yang sangat cepat dan andal yang menentukan kondisi permainan saat ini.
Sistem mencoba memahami apakah permainan sudah dimulai atau belum.Dan siapa yang akhirnya menang?
Semua data pada peristiwa tingkat rendah (hit pada bola cue, posisi dan tabrakan bola, jatuh ke dalam saku) dikirim ke modul, yang, menurut urutannya, menentukan bahwa telah terjadi pelanggaran atau bola telah jatuh dengan benar ke dalam lubang, gerakan telah berlalu atau permainan berakhir. Modul yang tidak memihak mencetak dan mengumumkan pemenang. Keunikannya adalah ia bekerja tanpa koreksi otomatis dan heuristik, hanya secara formal menerapkan aturan permainan. Blok aturan dapat sepenuhnya diganti, yang memungkinkan Anda untuk menyesuaikannya dengan aturan lokal turnamen tanpa intervensi signifikan dalam sistem atau menggunakannya untuk memproses jenis permainan biliar lainnya.
Karena kendaraan tak berawak masih belum sepenuhnya menyingkirkan insinyur penguji di kabin, yang memantau keselamatan, maka modul aturan kami memungkinkan kontrol manual eksternal melalui antarmuka web. Intervensi mungkin diperlukan jika sistem otomatis gagal. Selain itu, Anda perlu memasukkan data secara manual yang tidak ada dalam aliran video: tentang pemain pemula, hit khusus yang diumumkan selama permainan dengan suara, dll. Satu orang berpotensi dapat memantau beberapa game sekaligus.
Bagaimana cara kerjanya
Setelah peluncuran dan pengaturan sistem yang berhasil, kami tidak hanya mulai menerima data yang diperlukan, tetapi juga menemukan banyak hal menarik. Jadi, kadang-kadang hakim, yang berada di meja, tidak dapat menentukan dengan pasti apakah bola isyarat mengenai bola bertujuan atau yang lain berdiri di dekatnya. Sementara pandangan objektif dari sistem kami memungkinkan kami untuk melihat bagaimana situasi sebenarnya berkembang. Selain itu, sistem mengumpulkan banyak informasi yang berguna untuk analisis lebih lanjut, yang seseorang tidak dapat menentukan dan mentransmisikan secara real time: posisi dan kecepatan bola, parameter isyarat pukulan oleh masing-masing pemain.

Saat ini, sistem bekerja dan digunakan oleh bandar taruhan. Di masa depan, direncanakan untuk meningkatkan sistem, termasuk menambahkan identifikasi otomatis pemain, penentuan otomatis hasil serangan pertama.
Visualisasi teknis tentang cara kerja sistem. Bola di samping "Bola Cue" menunjukkan bola pertama yang bola cue hadapi; "Status" - status sistem: bisa "menunggu" - sampai pemain memukul, dan "bermain" - selagi bola bergerak; "Player" - pemain saat ini; angka-angka di sekitar bola menunjukkan perkiraan kecepatan dalam cm / s.