Selamatkan penyinter data biasa. Bagaimana bekerja pada computer vision untuk menyelesaikan sebuah proyek dan tidak kehilangan diri Anda sendiri



Nama saya Alexandra Tsareva. Rekan saya dan saya sedang mengerjakan proyek di bidang computer vision di Machine Learning Center of Jet Infosystems. Saya ingin berbagi pengalaman kami dalam pengembangan dan implementasi proyek di bidang computer vision.



Dalam artikel ini saya akan berbicara tentang bagaimana proses kerja seorang datasetist pada sebuah proyek tidak terlihat dari sudut pandang "spiritual" dan, pada kenyataannya, dari sudut pandang datasignist, tetapi lebih dari sudut pandang organisasi. Dan saya berharap posting ini akan diikuti oleh beberapa lagi dan bisa menulis seri kecil.



Saya akan segera membuat dua poin penting:



  1. Langkah-langkah ini berlaku untuk hampir semua proyek kumpulan data. Tapi beberapa momen disebabkan oleh efek hype di sekitar CV, kemuliaan "peluru perak" dalam visi komputer dan keinginan pelanggan "untuk memilikinya dengan jaringan saraf."
  2. , , — , - . , , ( , ..) , — - .


: ?



Ketika seorang pelanggan memutuskan bahwa dia membutuhkan kumpulan data dan semacam kecerdasan buatan yang akan membantunya, pertama-tama, dia perlu memahami masalah apa yang akan dia selesaikan. Pada tahap ini, seorang datasigner bertindak sebagai “psikoanalis” data dan menanyakan secara detail tentang data, kendala eksternal dari sudut pandang bisnis dan masalah yang ingin dipecahkan di dunia yang ideal. Pelanggan sering kali sudah mengetahui segalanya tentang tugas di masa mendatang - Anda hanya perlu membantunya memahami dan memformalkan pengetahuan ini (memahami dunia data internalnya, dan terkadang - dan memahami kekhasannya).



Tentu saja, visi komputer adalah bidang yang sangat menarik, selalu ada sesuatu untuk dihitung dan dilakukan dengan tangan Anda. Tetapi semua ini cukup mahal - baik dalam hal jam pengembangan, dan biaya spesialis, dan dalam peralatan yang diperlukan untuk mereka. Kami bertanya-tanya apakah solusi optimal untuk masalah ini benar-benar membutuhkan CV. Mungkin ada alat pembelajaran mesin lain yang lebih cocok dan dapat memecahkan masalah dengan lebih baik dengan waktu pengembangan yang lebih singkat dan akurasi yang lebih tinggi?



Saya akan menunjukkan ide dengan contoh sederhana. Salah satu pengecer ingin menerapkan pengenalan gambar CCTV untuk melacak berapa banyak orang yang mengantri di kasir. Tampaknya tugas yang jelas - ada arsip video, bahkan ada jaringan saraf terlatih - "penghitung". Tanda tangani jadwalnya, lakukan.



Tetapi dari percakapan dengan pengecer, penulis data mengetahui bahwa tugas tersebut tidak terkait dengan beban pada kasir pada saat tertentu. Tugas global bukanlah memanggil karyawan yang tidak perlu untuk diganti, tetapi pada saat yang sama menghindari antrian. Pengecer memiliki database besar yang menunjukkan jumlah pelanggan yang mengunjungi toko (jika Anda melihat penjual membungkuk di atas bingkai di pintu keluar dari toko, Anda melihat implementasi paling sederhana dari penghitung tersebut), data pembelian dari kasir ... Dan pada kenyataannya, tugasnya tidak menghitung orang dalam antrian, dan memprediksi beban kerja kasir dan mengoptimalkan jadwal kerja mereka.



Anda tentu saja bisa menyelesaikannya dengan menghitung orang dalam video yang diarsipkan. Tetapi data tabular biasanya disimpan lebih dalam dan lebih mudah untuk diproses. Adil untuk menawarkan alternatif - mungkin pelanggan hanya mendengar tentang fakta bahwa CV itu wow.



Jadi, pada tahap pertama, kami memastikan bahwa masalah yang ingin diselesaikan pelanggan benar-benar merupakan masalah visi mesin, dan bahwa teknologi ini paling cocok untuk menyelesaikannya.



Langkah kedua: bagaimana kita akan menyelesaikan masalah CV dan mengevaluasi keberhasilan solusinya?



Tahap kedua adalah perumusan masalah matematika, pemilihan metrik.



Adakah solusi yang diketahui, jaringan saraf, yang dapat menyelesaikan masalah ini? Mungkin bahkan produk dalam kemasan? Jika tugasnya baru - mungkin ada publikasi yang dapat kami andalkan dan menilai awal kualitas yang dapat dicapai?



Pada tahap ini, kami membahas metrik untuk memecahkan masalah dari sudut pandang pekerjaan kami, sebagai ilmuwan data, dan dari sudut pandang pelanggan, dalam konteks penyelesaian masalah bisnis.



Bekerja dengan data terkadang dimulai pada saat yang sama dengan menyetujui solusi dan metrik, tetapi untuk kenyamanan kami akan memisahkannya menjadi langkah terpisah.



Langkah ketiga: jelajahi dan pahami data kami



Sangat penting untuk menilai apakah kita memiliki cukup data untuk menyelesaikan tugas yang ada. Jelas, dataset kecil akan ditolak bahkan pada tahap pengaturan, tetapi dalam proses untuk mengetahui masalah bisnis, nuansa baru mungkin muncul. Situasinya berbeda: kami dapat memiliki 1000 gambar, di mana hanya 10 yang termasuk dalam kelas yang diperlukan, dan tidak ada teknologi visi mesin rahasia yang akan membantu kami.



Mungkin kita akan segera mengerti bahwa tidak sulit membuat dataset yang ada menjadi lebih baik - meminta karyawan untuk memotret lebih banyak objek daripada yang difilmkan secara rutin, untuk mengumpulkan beberapa data tambahan melalui outsourcing atau open dataset.



Pada tahap yang sama, kekurangan dicatat dalam hal model pembelajaran masa depan, dan banyak di antaranya dapat mengembalikan kita ke langkah ketika kita membahas kembali pemecahan masalah yang mendasar. Contoh yang paling umum adalah keragaman yang rendah dalam data atau kurangnya representasi salah satu kelas. Dimungkinkan untuk bersaing untuk meningkatkan keragaman menggunakan berbagai teknik augmentasi, tetapi ini tidak selalu memungkinkan kami membuat model yang siap untuk dunia nyata. Namun, jika menurut kami kami dapat mengatasi kesulitan dalam data, langkah keempat datang untuk menyelamatkan.



Langkah keempat: kembangkan model prototipe



Pada tahap ini, kami tidak berbicara tentang model yang siap untuk diimplementasikan, tetapi tentang prototipe yang akan menjawab pertanyaan kami dan pelanggan tentang apakah perlu terus bekerja ke arah ini, apakah hasil yang mungkin memenuhi harapan (milik kami dan, yang terpenting, pelanggan). Setelah bekerja dengan data, kami mulai mengembangkan model percontohan dan mengevaluasi kualitasnya. Beberapa hal yang jelas: pada tahap ini, model divalidasi terhadap dataset yang ditangguhkan. Dua opsi utama adalah gambar yang kami sisihkan, atau gambar yang diketik klien kami saat kami mengerjakan proyek.



Jangka waktu pengerjaan proyek pada tahap percontohan untuk pengembangan prototipe setidaknya sebulan. Selama waktu ini, dalam banyak kasus, pelanggan dapat mengumpulkan data untuk pengujian. Ini adalah pengujian yang baik bagi para pembuat data untuk melihat seberapa serius mereka memecahkan masalah: jika kita mengambil data yang belum pernah kita lihat, kita memeriksa bagaimana model kita dapat menggeneralisasi dan apakah cocok dengan jawaban untuk dataset validasi (yang, tentu saja, juga ditangguhkan. tetapi sudah terlambat untuk mengetahui bahwa semuanya telah berubah di dunia nyata sejak saat itu, itu akan sangat memalukan).



Di sisi lain, pada saat menerima set data yang ditangguhkan, kita dapat mengetahui sejauh mana objek yang termasuk dalam lingkup kepentingan pelanggan proyek (dan ini juga berlaku untuk pelanggan internal) stabil dan sesuai dengan sampel yang digunakan untuk melatih dan memvalidasi model. Bagaimanapun, situasi seperti itu sangat mungkin terjadi: visi komputer diimplementasikan sebagai proyek besar untuk mendigitalkan segala sesuatu dan semua orang, dan pada tahap yang sama perubahan penting terjadi pada sumber data (misalnya, konveyor utama telah sepenuhnya dibangun kembali, dan gambar yang berasal darinya telah berubah secara mendasar).



Analisis hasil uji coba membantu menentukan nasib proyek di masa depan. Mungkin ternyata pelanggan memiliki persyaratan yang sangat tinggi untuk tingkat keakuratan: misalnya, 99% jawaban harus benar, dan pada langkah sebelumnya menurut kami hal ini dapat dicapai secara fundamental. Namun pada uji coba, kami mencapai akurasi 93% dan, tentu saja, kami tidak dapat menjanjikan jaminan perolehan 6%. Adalah logis untuk mendiskusikan opsi untuk pengembangan proyek dengan hasil percontohan yang tersedia dengan pelanggan - tentang mengumpulkan data tambahan, mengurangi metrik yang diperlukan, atau bahkan membekukan proyek hingga terobosan baru dalam lingkup CV.



Empat langkah pertama dapat ditunjukkan dengan diagram berikut:







Mereka membutuhkan lebih sedikit waktu daripada pengembangan sebenarnya. Namun demikian, kesuksesan proyek di masa depan sudah ditentukan - seberapa besar proyek tersebut akan memenuhi harapan pelanggan dan benar-benar menyelesaikan masalahnya.



Langkah lima: lakukan sisanya;)



Keseluruhan proyek, dari konfirmasi konsep hingga solusi yang diterapkan, akan terlihat seperti ini:





Rencana dan persyaratan pengembangan proyek adalah perkiraan. Dalam proyek nyata, nuansa yang berbeda selalu muncul, karena data berbeda untuk setiap orang, data dikumpulkan pada kecepatan yang berbeda, dan tahap pengenalan visi komputer di dalam perusahaan itu sendiri bisa sangat berbeda tergantung pada rencana integrasi, siapa yang melakukannya, dll. .P. Bagaimanapun, itu satu hal ketika menginstal sistem identifikasi untuk karyawan yang memasuki kantor berdasarkan rekaman dari kamera pengintai untuk jangka waktu yang lama: kami dapat segera mulai bekerja dengan mereka. Ini masalah lain jika kami memiliki jumlah gambar contoh yang tidak signifikan yang akan kami gunakan sebagai bukti konsep - kami akan memeriksa apakah masalah tersebut pada prinsipnya diselesaikan, dan berapa lama waktu yang dibutuhkan untuk mengumpulkan kumpulan data lengkap, kami tidak tahu.



Dengan demikian, slide menunjukkan kerangka waktu yang sangat mendekati untuk proyek abstrak dalam ruang hampa, tetapi saya pikir ada gunanya untuk mengetahui bahwa siklus penuh dari pembuktian konsep hingga implementasi dan implementasi membutuhkan waktu sekitar satu tahun. Istilah-istilah ini dapat meningkat untuk tugas-tugas kompleks, dan menurun jika solusi “di luar kotak” lebih disukai atau masalahnya diketahui dengan baik dan tidak memerlukan pekerjaan penelitian.



All Articles