Bagaimana saya belajar untuk tidak khawatir dan menyukai visi mesin

Halo, Habr! Nama saya Artyom Nagumanov, saya memiliki lebih dari 15 tahun pengalaman dalam pengembangan perangkat lunak, manajemen proyek, tim, departemen TI. Saya selalu tertarik dengan topik kecerdasan buatan dan visi mesin. Saat mengembangkan perangkat lunak, saya selalu dikunjungi oleh pemikiran mengapa tidak menambahkan setidaknya beberapa kepintaran ke aplikasi perusahaan untuk menolak sebagian atau seluruhnya partisipasi pengguna dalam proses apa pun yang pada pandangan pertama tampaknya sepenuhnya tidak diformalkan.

gambar

Untuk melakukan ini, setiap kali saya harus pergi jauh lagi: mempelajari / mengingat perpustakaan yang sesuai, menginstal pada mesin virtual Linux untuk menguji alat gratis untuk membuat dan melatih jaringan saraf, menemukan arsitektur jaringan yang saat ini menjadi mahkota penciptaan manusia di dunia kecerdasan buatan. Proses ini cukup melelahkan dan tidak terlalu menyenangkan. Suatu ketika, memahami arsitektur jaringan saraf lain, saya menyadari bahwa sudah waktunya untuk mengakhiri ini dan menciptakan alat universal yang akan mengambil seluruh rutinitas. Dan saya hanya perlu menekan beberapa tombol kaca besar dan mendapatkan hasilnya. Dalam gambar untuk menarik perhatian (dalam paragraf pertama artikel), contoh pengakuan jet air dari mesin irigasi ditampilkan, tetapi hal pertama yang pertama.

Kami membuat layanan pengenalan


Saya punya ide berikut - untuk membuat situs web di mana pengguna dapat mengunggah gambar apa pun, klik tombol "Kenali" dan dapatkan hasilnya dalam format json. Tetapi kenyataannya adalah bahwa tidak ada algoritma universal atau jaringan saraf yang dapat menemukan objek di dunia. Akibatnya, saya memutuskan untuk memungkinkan untuk melatih model jaringan saraf saya sendiri untuk mengenali objek yang kita butuhkan, hanya menggunakan situs dan sampel gambar yang perlu dikenali. Sebelum mulai bekerja, saya menganalisis perkembangan apa yang ada di dunia tentang topik ini. Ternyata, banyak raksasa industri TI bekerja ke arah ini: Yandex, Mail.ru, Amazon. Kerugian utama adalah bahwa semua raksasa ini menginginkan uang untuk layanan mereka. Ini cukup bagi saya untuk memulai perkembangan saya sendiri.Saya sudah memiliki latar belakang, dan saya tahu bagaimana menemukan dan mengklasifikasikan objek pada gambar dengan baik, yang tersisa adalah menyatukan semuanya dan membuat antarmuka yang nyaman.

Dalam sebagian besar kasus, saya menggunakan teknologi Microsoft dalam proyek saya, yang secara signifikan mempengaruhi teknologi yang digunakan dalam proyek ini:

  • ASP.NET (bahasa C #)
  • Webpi
  • Javascript jquery
  • MSSQL Server
  • Python
  • Tensorflow

Pertama-tama, saya memutuskan untuk membuat layanan REST, yang akan menjadi otak seluruh sistem, yang akan memungkinkan kita menerima perintah melalui API dan melakukan semua pekerjaan kasar. Arsitektur jaringan saraf, saya memilih Mask R-CNN, jaringan ini dapat menemukan objek dalam gambar dan mengklasifikasikannya.

Semuanya berjalan kurang lebih teratur, sampai saya mencapai realisasi pelatihan model saya sendiri. Proses pembelajarannya sangat mahal dan menuntut perangkat keras. Tentu saja, saya tahu ini sebelumnya, tetapi sebelum itu, saya bisa menunggu pelatihan model selama satu atau dua hari, menggunakan CPU untuk perhitungan. Tetapi karena idenya adalah untuk membuat alat yang nyaman dan cepat, saya tidak bisa tahan dengan pelatihan model yang panjang. Jadi pertanyaannya telah matang dengan pemasangan server khusus dengan kartu grafis yang sesuai yang akan mendukung teknologi CUDA ( https://ru.wikipedia.org/wiki/CUDA) dan secara signifikan akan mengurangi waktu yang diperlukan untuk melatih model. Agar tidak menaikkan anggaran proyek, saya memilih kartu grafis NVIDIA GeForce GTX 1050 Ti yang tidak mahal. Sejalan dengan layanan, saya membuat klien pada Formulir Windows yang akan memungkinkan pengujian.

Pada tahap kedua, saya membuat situs web, yang pada dasarnya adalah klien untuk layanan ini. Saya tidak terlalu peduli dengan desain dan bahkan tidak mengambil template yang sudah jadi, saya menulis semuanya sendiri, hanya menggunakan apa yang diberikan Visual Studio dari kotak. Butuh tiga bulan lagi untuk membuat dan menguji situs.

Saya sangat senang ketika saya mengunggah gambar, memilih model yang sudah jadi untuk pengakuan, mengklik tombol "Kenali" dan mendapatkan hasil pertama.

gambar

Tugas nyata dari visi mesin


Ketika saya sedang bekerja pada sistem pengenalan, tugas nyata terbang ke saya - untuk menentukan posisi sekop depan dari mesin khusus yang membersihkan salju di jalan. Untuk mengatasi masalah ini, saya tidak terbatas dalam memilih pendekatan untuk solusi dan dari awal saya ingin menggunakan pemasangan sensor khusus yang menentukan sudut sekop, tetapi dengan cepat meninggalkan ide ini. Ternyata, sensor-sensor ini harus terus-menerus dikalibrasi karena fakta bahwa sekop dilepas secara berkala dan satu lagi dimasukkan, selain berbicara dengan rekan-rekan yang memasang sensor semacam itu, saya menemukan bahwa sensor-sensor ini ada di jalan dan tersedia untuk disabotase. Idenya muncul di pikiran untuk menganalisis kontrol kerja sekop, tetapi ternyata, dalam kehidupan nyata mereka pergi sejauh untuk menghapus sekop, dan pada badan kerja mereka memberi sinyal bahwa sekop diturunkan,dalam satu kata, sekali lagi bukan opsi yang dapat diandalkan. Ya, mereka tidak memberi saya pilihan selain menggunakan kekuatan penuh dari layanan pengenalan. Saya meletakkan kamera di kompartemen penumpang mobil, yang memandangi sekop depan, mengumpulkan beberapa ratus sampel sekop, menandainya dengan alat VGG, yang saya buat di lokasi dan mulai berlatih. Prosesnya memakan waktu sekitar dua jam dan pada era ke-30 saya mendapat hasil pengakuan yang cukup dapat diterima, akurasi pengakuan sekitar 95%.Prosesnya memakan waktu sekitar dua jam dan pada era ke-30 saya mendapat hasil pengakuan yang cukup dapat diterima, akurasi pengakuan sekitar 95%.Prosesnya memakan waktu sekitar dua jam dan pada era ke-30 saya mendapat hasil pengakuan yang cukup dapat diterima, akurasi pengakuan sekitar 95%.

gambar

Agar sistem dapat sepenuhnya bekerja pada mobil, saya harus memodifikasinya: menambahkan kemampuan untuk mengunggah foto melalui ftp, dan bukan hanya melalui API karena camcorder memungkinkan Anda untuk mengambil foto dan mengirimkannya ke ftp yang ditentukan. Menambahkan kemampuan untuk menyimpan hasil dalam database, dan kemudian melalui API untuk periode waktu tertentu untuk mendapatkan hasil, menganalisisnya dan menulis ke sistem akuntansi yang ditulis dalam 1C, yang omong-omong adalah sistem kontrol besar yang menganalisis ribuan mobil pada saat yang sama dan mengendalikan banyak parameter, seperti jarak tempuh , jam mesin, bahan bakar di tangki, wahana, pemalasan, dll., tetapi ini adalah kisah yang sama sekali berbeda. Versi pertama dari kontrol sekop sudah siap, tetapi dalam pertempuran itu akan diuji hanya ketika salju turun.

Seberapa mudah?


Gagasan utama dari layanan pengenalan adalah kesederhanaan membuat dan melatih model Anda sendiri. Untuk memahami apakah ada yang benar-benar dapat membuat dan melatih model mereka sendiri, saya meminta asisten saya untuk membuat model untuk mengenali jet air dari mesin irigasi. Satu-satunya masukan yang saya berikan kepadanya adalah video pengoperasian mesin irigasi, diambil dari kabin, dan alamat layanan pengenalan, pada malam hari saya mengatur tugas ini untuknya, dan pada pagi hari, ketika masuk ke sistem, saya melihat model selesai yang benar-benar berfungsi. Di bawah ini adalah screenshot dari jendela di mana model dilatih.

gambar

Saat Anda belajar, era model dipertahankan, dan kita dapat, tanpa mengganggu proses pembelajaran, menguji era apa pun.

Pengembangan dan penggunaan


Contoh cara kerja semuanya dapat dilihat di klip video .

Saya berpikir untuk waktu yang lama bahwa jika ada yang dapat membuat model mereka sendiri, maka mengapa tidak memungkinkan untuk berbagi model ini dengan pengguna sistem lainnya. Sebagai hasilnya, saya menambahkan bagian di mana Anda dapat menempatkan model yang sukses dengan satu klik mouse dan setiap peserta dapat menggunakannya. Layanan ini sepenuhnya gratis.

Sekarang saya sendiri menggunakan layanan ini untuk menyelesaikan tugas saya dalam proses otomatisasi di perusahaan-perusahaan di mana visi mesin dapat digunakan. Di masa depan saya berencana untuk menambahkan pendekatan pengakuan lain, bukan hanya jaringan saraf. Saya akan sangat senang jika orang lain yang menggunakan layanan ini dapat menyelesaikan masalah mereka.

All Articles