Kami mengubah penyedot debu robot menjadi tentara universal

Semuanya dimulai dengan hasrat untuk belajar mendalam, jaringan saraf dan lebih jauh ke bawah daftar. Saya melihat beberapa kursus, berpartisipasi dalam kompetisi di Kaggle ... "apa lagi yang harus dilakukan?". Kemudian robot penyedot debu (Xiaomi Vacuum Cleaner V1) dirayapi oleh bisnisnya sendiri dan melemparkan ide menarik ...



Pengantar panjang


Artikel ini adalah ringkasan sementara dari masa hidup tertentu. Saya berharap ini akan bermanfaat bagi orang-orang yang ingin terlibat dalam pembelajaran mesin, tetapi belum memutuskan arah mana yang akan dikembangkan. Hampir setahun yang lalu, saya sekali lagi mengganti pekerjaan dan tempat tinggal saya. Di tempat baru, mereka banyak berbicara tentang pembelajaran mesin, tetapi kebanyakan manajer yang ingin mempromosikan topik hype. Selebihnya, bertemu topik tanpa banyak antusiasme (masih, bekerja untuk mereka).


Saya bertanya-tanya apa itu pembelajaran mesin. Setahun kemudian, saya dapat mengatakan bahwa topiknya sangat banyak. Mari kita lihat aspek spesifik apa yang tersedia untuk digunakan dalam kehidupan dan bisnis.


  1. Pembelajaran mesin klasik.
    Secara singkat: semua yang ada sebelum penampilan hypa pembelajaran mendalam (deep learning). Jika Anda memiliki data tabular tentang penjualan, pelanggan, transaksi dan Anda ingin meningkatkan penjualan, menarik pelanggan, mengenali penipuan, inilah Anda. Berikut adalah beberapa kuliah yang bagus untuk membantu Anda memahami cara menganalisis data dan menggunakan metode seperti hutan acak, K-means atau XGBoost. Saya juga menyukai microcourses Kaggle dan kompetisi prediksi harga rumah yang menyertainya. Mungkin bisnis apa pun yang memiliki pelanggan nyata (dan karenanya basis data) dapat menerapkan metode ini. Ada banyak hal menarik.
  2. Pembelajaran yang mendalam
    Mobil tak berawak, mobil tak berawak dan mengganti kepala Jack Nicholson dengan kepala Jim Carrey . Tetapi jika Anda menyelam lebih dalam, kepala mana pun akan berputar. Berikut adalah pengenalan wajah, emosi, posisi tubuh, menarik semantik dari video dan semua jenis transformasi aliran video. Transkripsi otomatis dan terjemahan otomatis, definisi penyakit dan gulma, well, Anda mengerti, hampir semuanya. Selain visi komputer, ada juga pemrosesan bahasa alami (NLP), pemrosesan dan simulasi aliran audio, jaringan syaraf gaming GAN. Aspek apa pun dari pembelajaran mendalam yang Anda pilih, Anda dapat menghabiskan waktu untuk:

  • Memperdalam rincian arsitektur jaringan saraf.
    Area ini, menurut saya, paling dekat dengan sains dan membutuhkan pengetahuan yang sesuai dalam matematika dan sains komputer. Jika Anda ingin bereksperimen dengan fungsi aktivasi pembunuh baru, memutar lapisan kustom, dan sehingga tingkat pembelajaran tidak hanya mengurangi basi, tetapi berubah menjadi tabung, maka bidang pembelajaran yang mendalam ini adalah untuk Anda. Buka artikel ilmiah terbaru dan mulailah bereksperimen. Dari sudut pandang bisnis, ini adalah hal-hal yang dapat dilakukan perusahaan yang bersedia berinvestasi secara khusus dalam diskusi. Ada kuliah dari Stanford University untuk kenalan youtube di YouTube .


  • Memperdalam detail infrastruktur.
    Pelatihan jaringan saraf yang dicitrakan untuk pengenalan gambar membutuhkan sumber daya mesin. Pilihan besi lebar dan hanya dibatasi oleh ukuran dompet. Saya pikir GTX 1070 Ti dapat dianggap sebagai awal yang baik, tetapi jangan lupa bahwa kartu video saja tidak menyelesaikan semua masalah, karena data masih perlu disiapkan dan diumpankan ke jaringan saraf. CPU yang lemah atau hard drive yang lambat dapat menjadi penghambat sistem Anda. Karena itu, beli prosesor i5 tambahan, 16 gig RAM dan hard-state hard drive. Keyboard, jadi itu, akan keluar dari yang termurah. Opsi lain, Google Cloud, Azure, AWS, Kaggle lagi. Layanan Cloud menawarkan lusinan, jika bukan ratusan opsi, dengan harga awal sekitar 50 sen per jam untuk K80 (kira-kira sama dengan GTX 1070 Ti). Google memberi Anda deposit $ 300 untuk berlatih. Azure memberi $ 200, dengan Amazon tidak harus berurusan. Saya menyukai opsi Google karena Anda dapat dengan cepat mengubah kartu video ("Ah, berjalan seperti berjalan. Hari ini akan menjadi V100"). Tentu saja, dibandingkan dengan gaji bintang rock dari tes situs dari departemen penelitian Anda, biaya ini akan menjadi uang nyata. Peretasan kehidupan kecil, saat terhubung ke mesin di cloud, gunakan penerusan port: you_user@your_host -L 8888:127.0.0.1:8888 . Ini akan memungkinkan Anda untuk menjalankan Jupyter jarak jauh di komputer lokal. Saya juga ingin mengatakan tentang Google TPUs. Mereka dapat digunakan sepenuhnya gratis langsung dari Google Colab, tetapi apakah Anda dapat menggunakannya, itu pertanyaannya. Ketika Anda bekerja dengan model yang kurang lebih standar, semuanya terlihat cantik, tetapi model khusus berperilaku tidak terduga jika baru mulai.


  • Memperdalam implementasi dalam produksi.
    Eksperimen dengan arsitektur dan partisipasi dalam kompetisi adalah hal yang sangat berguna, tetapi pada kenyataannya itu tidak begitu penting, model Anda memberikan akurasi 85% atau 87%. Untuk mobil tak berawak atau aplikasi seluler dalam kasus ini, kecepatan pengambilan keputusan akan lebih penting, dan untuk kebutuhan medis, kemungkinan besar tingkat kesalahan jenis rendah ("Sehat! Ayo, selamat tinggal!"). Artinya, identifikasi prioritas datang kedepan. Plus, banyak pertanyaan teknis: bagaimana meluncurkan dan memastikan operasi berkelanjutan di lingkungan produk, bagaimana melatih model pada data baru, bagaimana memantau dan mengevaluasi hasil kerja, bagaimana menangkap dan memperbaiki bug, akhirnya. Kami sudah memiliki semua masalah ini dengan perangkat lunak normal, tetapi sekarang mereka pergi ke tingkat yang berbeda. Sudah ada alat untuk kontrol versi (Git-LFS, Saturn Cloud), yang dirancang khusus untuk pembelajaran mesin, tetapi standar yang diterima secara umum belum ada, yang tentunya memiliki romansa sendiri. Peretasan lain: jika Anda menyimpan hyperparameter dalam file konfigurasi terpisah, maka Anda dapat dengan mudah mengembalikan eksperimen yang berhasil.


  • Menggunakan model yang sudah jadi dan transfer pembelajaran.
    Bagian paling sederhana dan paling menarik dari pembelajaran mesin, bagi mereka yang ingin melihat bagaimana semuanya bekerja dalam kenyataan. Ada cukup model yang sudah jadi, beberapa lusin baris kode dan voila: kotak multi-warna berjalan di sekitar layar. Tidak perlu menghabiskan waktu dan sumber daya untuk melatih model dari awal. Bahkan ada solusi siap pakai dalam perangkat keras jika Anda ingin pengakuan di tempat (omong-omong, mereka sangat baik) . Sepertinya, ambil dan gunakan, tapi ada beberapa nuansa. Model siap pakai dilatih tentang dataset standar. Karenanya, untuk mengetahui siapa yang mencuri krim asam dari bisnis Anda: Vaska cat atau Semyon cat, Anda masih harus menyelaraskan modelnya (transfer learning). Mungkin Baba Masha dengan sapu akan mengurangi biaya bisnis.



Tubuh utama


Di sini kita kembali ke awal tulisan. Pada saat penyedot debu robot melewatinya, saya ingin membuat aplikasi atau perangkat yang berfungsi sederhana menggunakan visi mesin. Maka muncul ide, untuk memberikan penyedot debu saluran komunikasi lain dengan dunia luar.
Jika Anda mengacaukan kamera kecil ke sana, Anda dapat menggunakan model yang sudah jadi atau melatihnya sendiri. Kemungkinan aplikasi penuh. Dari pembersihan tempat hingga menguntit anjing. Anda dapat membuat beberapa jenis permainan di ruang fisik menggunakan GAN atau bermain dengan model NLP dan mengajarinya cara berbicara dengan cara asisten suara. Singkatnya, waktu untuk melatih robot rumah Anda sendiri.


Tentu saja, Anda harus mulai dengan hal-hal sederhana. Misalnya, untuk mencari di Habré yang sudah dibuat untuk kami. Ternyata menjadi "inside her" Ubuntu 14.04, yang berarti bahwa jika Anda memiliki root, Anda dapat, misalnya, mengendalikannya dari joystick . Jika Anda menarik data LIDAR, maka Anda akan menemukan prototipe mobil tak berawak.
Pilihan sudah dimulai pada tahap ini. Ambil kamera jadi dengan Wi-Fi dan baterai atau papan untuk inferensi seperti Jetson Nano? Dan bisakah saya merakit kamera, Wi-Fi, dan baterai pada Raspberry Pi? Setiap pendekatan menarik dengan caranya sendiri, tetapi saya mencoba untuk tetap pada tujuan utama: untuk membuat perangkat berfungsi sederhana menggunakan pembelajaran mesin, jadi saya memilih opsi pertama.


Sementara kamera sedang dalam perjalanan, penyedot debu berdetak dan mengendarainya. Ini bekerja dengan sempurna, masih ada waktu untuk bermimpi. Katakanlah Hector menyeret sebatang tongkat dari jalan dan menariknya, tergeletak di atas karpet favoritnya. Kamera, tergantung cukup tinggi, menangkap polusi (di sini saya ingat tantangan tentang piring kotor ) dan mengirim koordinat ke penyedot debu. Berburu anjing masih lebih mudah. Cukup dengan menempatkan kamera pada penyedot debu itu sendiri dan mulai bergerak maju ketika anjing terdeteksi, kemudian lingkaran penuh dan kembali ke pangkalan.


Tetapi ini adalah rencana untuk masa depan. Sekarang mari kita lakukan sesuatu yang sangat sederhana. Biarkan penyedot debu mengeluarkan suara yang berbeda tergantung pada objek yang terlihat oleh kamera. Untuk ini kita perlu dua utas yang dihubungkan oleh antrian umum.


  • Model (saya menggunakan salah satu model TensorFlow model zoo yang sudah jadi) mengenali objek dan memasukkan namanya ke dalam antrian.
  • Utas lain mengambil nama objek dari antrian dan menghasilkan URL ke file suara.
  • Jalur dilewatkan ke penyedot debu, dan mengetuk alamat yang diterima untuk file melalui ftp atau http.
  • Di folder setiap objek ada beberapa file untuk perubahan. File dipilih secara acak. Selain itu, ada parameter untuk kemungkinan mereproduksi suara sehingga penyedot debu, memperbaiki Hector pada kecepatan 10 fps, tidak berderak seperti orang gila, tetapi mengomunikasikan sesuatu dengan meyakinkan dan dengan bermartabat.

Diagram terlihat seperti ini:



Beginilah cara kerjanya:



Subtotal


Tujuannya tercapai: penyedot debu sedang berbicara. Saya senang bahwa saya tidak membuat terlalu banyak hal sekaligus. Langkah selanjutnya adalah mengaitkan pengenalan pola dengan aliran yang mengatur gerakan, dan juga mencoba belajar transfer.


Kecerdasan buatan, topiknya sangat banyak sehingga sulit untuk menentukan apa yang harus dilakukan. Menurut pendapat saya, tidak ada titik masuk tunggal. Sama sekali tidak perlu memulai dengan perhitungan turunan kompleks atau program pemrograman Python (meskipun keduanya tentu berguna). Pilih apa yang menarik bagi Anda secara pribadi, dan mungkin kekuatan bersama Anda untuk menyelesaikan apa yang Anda mulai.


Detail implementasi PS ada di repositori . Komentar dan permintaan tarik dipersilakan.

Source: https://habr.com/ru/post/id474024/


All Articles