Magang di Mars Digital Technologies. Bagaimana kami menerapkan pembelajaran mendalam di M&M



Halo semuanya!

Setiap tahun, sekitar 200 siswa dan lulusan bergabung dengan Mars di Rusia sebagai peserta pelatihan atau peserta dalam program kepemimpinan. Dmitry Korzhimanov, menyelesaikan magang di pusat IT Mars musim panas ini. Di blog kami, Dmitry berbicara tentang proyek yang ia kerjakan selama magang.


Sejumlah besar perusahaan menawarkan magang untuk siswa mulai tahun ketiga. Jadi saya, seperti banyak teman sekelas saya yang lulus dari tahun ketiga, berangkat mencari magang untuk musim panas. Di mechmath Universitas Negeri Moskow, siswa lebih suka TI dan perbankan, yang tidak mengejutkan, mengingat adanya sejumlah masalah matematika yang layak baik di sana maupun di sana. Saya mempertimbangkan magang di berbagai perusahaan dan memilih Mars, karena saya tertarik pada kesempatan untuk bekerja di proyek-proyek TI dalam produksi nyata. Selain itu, Mars adalah perusahaan internasional, yang berarti pekerjaannya unggul dalam tim dari seluruh dunia.

Setelah melewati tes teknis dan verbal, serta wawancara dengan mentor masa depan, mereka mengirimi saya tawaran dan, lihatlah, saya menjadi pekerja magang di tim Next Generation Technologies. Departemen ini terdiri dari 5 orang dari seluruh dunia dan terutama terlibat dalam pengenalan teknologi pembelajaran mesin di berbagai siklus produksi dan penjualan perusahaan.

Sejujurnya, saya bukan ahli algoritma pembelajaran mesin, dan pada saat magang, saya tidak memiliki pemahaman penuh tentang apa yang akan saya lakukan dan bagaimana saya akan mengimplementasikan proyek. Ya, saya memiliki latar belakang matematika yang baik dan bahkan tahu apa itu Random Forest, tetapi di situlah pengetahuan saya berakhir. Antara lain, di Mars ada banyak tugas yang terkait dengan visi komputer, dan tim kami berhasil menyelesaikannya. Ternyata selama 2 minggu pertama magang, saya menemukan cara mengatur jaringan saraf, apa itu OpenCV, apa metrik yang ada, bagaimana bekerja dengan PyTorch dan TensorFlow, dan banyak lagi banyak hal lainnya. Kepalaku dalam ayunan penuh pada akhir setiap hari, karena informasi harus diserap dalam jumlah yang sangat besar, dan ide-ide dari beberapa algoritma sangat tidak penting. Untungnya, saat ini ada banyak sumber daya yang sangat berguna seperti Neurohive, Medium, dan Habr yang sama (saya mengucapkan terima kasih yang mendalam kepada semua orang yang menulis artikel tentang pembelajaran mesin di sini, tanpa Anda, pencelupan dalam topik akan menjadi tugas yang jauh lebih sulit). Berkat sumber daya ini, Anda dapat mempelajari topik tertentu dengan kecepatan yang cukup tinggi. Coursera, yang masih saya tonton ceramah, tidak berdiri di samping.

Setelah mempelajari beberapa fondasi dasar dari pembelajaran mendalam dan telah menguasai sedikit, saya ditawari untuk ikut serta dalam proyek ini. Kami harus mengimplementasikan program yang mengukur objek dalam foto. Tentu saja, muncul pertanyaan: mengapa ini dibutuhkan oleh perusahaan FMCG? Namun, jawabannya cukup sederhana: untuk mempertahankan statistik pada ukuran bahan baku dan produk di pabrik. Sebagai contoh, Mars menghasilkan M&M, dan saya pikir banyak yang mencoba M&M dengan kacang. Namun, agar setiap permen tidak terlalu besar dan tidak terlalu kecil, kacang juga harus berukuran tertentu.

Seperti yang Anda tahu, di dunia tidak ada yang ideal dan para pihak datang ke pabrik dengan kualitas yang sama sekali berbeda. Oleh karena itu, orang khusus harus secara manual (!) Membuat pilihan dari kumpulan kacang dan menyusun statistiknya. Tentu saja, pada titik tertentu, perusahaan menyadari bahwa prosesnya agak tidak efisien dan akan menyenangkan untuk mengotomatiskannya. Tugas sebenarnya cukup sederhana dan semua yang diperlukan adalah mengajarkan model untuk menemukan mur atau benda lain, katakanlah, pada selembar A4, dan juga tengara dari ukuran yang diketahui dicetak di atasnya, dimana piksel akan masuk ke unit nyata. Kedengarannya sangat sepele, tetapi kenyataannya, kesulitan biasanya mulai muncul. Saya diperintahkan untuk terlibat dalam implementasi bagian yang terkait dengan pengakuan tengara ini dan terjemahan piksel ke dalam milimeter.

Perusahaan besar memberikan perhatian serius untuk mempertahankan identitas perusahaan mereka, yang berperan dalam proyek saya. Sebagai titik referensi atau titik referensi, yang akan dicetak di atas kertas di pabrik-pabrik di seluruh dunia, sebuah lingkaran dipilih dengan huruf "M" karakteristik perusahaan.

Untuk mengatasi masalah saya, saya segera mulai mencari contoh yang baik dari implementasi jaringan saraf convolutional yang dapat dengan cepat dan jelas menemukan objek dalam foto. Setelah meninjau berbagai opsi, saya memilih salah satu implementasi R-CNN yang lebih cepat dan mempelajari kemampuan dan arsitekturnya. Langkah selanjutnya adalah melatih model, karena ini, sekitar seratus foto dihasilkan dengan lokasi acak dari titik referensi dan, karenanya, sebuah kotak yang menggambarkannya. Pada titik ini, paket reportlab banyak membantu saya. Ini adalah seperangkat alat yang dirancang khusus untuk menghasilkan dokumen dengan pengaturan objek kustom pada mereka.

Untuk augmentasi, paket albumentations dipilih, kemampuannya cukup mengesankan. Di Github Anda dapat membaca lebih lanjut tentang itu, termasuk perbandingan dengan perpustakaan alternatif. Saya mencoba membuat transformasi yang sangat beragam sehingga tidak ada yang disebut "kotak hitam" yang tersisa. Mengubah, memperbesar, mengubah kontras, menambahkan noise dan teknik standar lainnya. Sayangnya, ada masalah dengan alat Rotate, yang penting bagi saya, karena tidak ada yang memberi jaminan orientasi yang benar dari huruf M dalam foto, dan model harus dapat mengenali opsi yang berbeda untuk posisinya.

Tidak peduli bagaimana saya mencoba untuk menemukan kesalahan, fungsi dari paket albumentations dengan keras kepala terus membuat konversi kotak pembatas yang salah, menggesernya dalam kunci yang salah. Akibatnya, saya memutuskan untuk menggunakan paket imgaug klasik, yang saya tidak punya masalah.

Setelah melatih jaringan dalam beberapa era, saya menjadi tertarik pada hasil apa yang akan dihasilkan model pada contoh nyata. Setelah mencetak selembar kertas dengan titik referensi di atasnya dan mengambil beberapa foto, saya mulai menguji jaringan saraf. Dan ya, dia benar-benar belajar bagaimana menemukan apa yang dia butuhkan, tetapi dia melakukannya jauh dari sempurna. Batas-batas yang ditunjukkan jaringan terlalu tidak akurat untuk pengukuran objek berkualitas tinggi, dan di sini proses yang agak tidak menyenangkan dari parameter pemasangan untuk mencari konfigurasi ideal dimulai. Saya mengubah langkah pelatihan, mencoba mengubah arsitektur jaringan, menyelesaikannya, mengubah pengaturan augmentasi, tetapi rata-rata IoU tidak naik di atas 0,85.

Hasil dari R-CNN Lebih Cepat



Sayangnya, pengalaman saya kurang berhasil. Setelah tidak sibuk mencari alat yang lebih sederhana, saya terlalu tertarik untuk bereksperimen dengan jaringan saraf, tetapi tidak peduli bagaimana saya mencoba, itu tidak memberikan hasil yang dapat diterima. Dalam prosesnya, ternyata produksinya tidak menggunakan printer warna, dan semua usaha saya tampaknya sia-sia. Tetapi kemudian kolega saya memberi tahu saya bahwa Anda dapat menggunakan lingkaran hitam biasa dan transformasi Hough dari paket OpenCV untuk mendeteksinya. Saya bisa menggunakan solusi sederhana yang sama untuk versi awal, namun, saya tidak memperhatikan alat klasik penglihatan komputer. Setelah bermain sedikit dengan parameter, saya akhirnya mendapatkan apa yang saya inginkan, dan masalahnya terpecahkan. Langkah selanjutnya adalah membuat API menggunakan paket Flask dan merilis program di server Azure, tetapi ini adalah cerita yang sama sekali berbeda.

Hasil akhir dengan transformasi Hough



Selain tugas-tugas visi komputer, perusahaan menghadapi tugas-tugas dari bidang pembelajaran mesin lainnya - mulai dari memproses tweet untuk memantau persepsi produk tertentu, hingga mengembangkan program yang membantu dokter hewan merawat hewan secara lebih efisien. Apa yang mengejutkan bagi saya adalah bagian riset dari karya ini. Seringkali tugas terdengar sangat sederhana, tetapi tidak diketahui bagaimana menemukan solusi berkualitas tinggi mereka. Untuk melakukan ini, Anda harus mempelajari artikel dan metode saat ini di bidang Pembelajaran Mesin. Sebagai contoh, saya harus memahami metode pembelajaran mesin Bayesian, yang sangat populer untuk menyelesaikan masalah medis. Berkat ini, saya dapat mempelajari artikel medis yang menjelaskan penerapan metode ini dan membantu tim memilih vektor pengembangan yang tepat.

Saat ini, saya sedang menyelesaikan magang. Karena tahun ajaran baru akan tiba, pada bulan September saya beralih ke pekerjaan paruh waktu, yang tidak menjadi masalah. Selain itu, perusahaan memiliki kesempatan untuk bekerja dari rumah dan, ternyata, praktik ini cukup umum di sini. Sekarang tim kami sedang menyelesaikan proyek yang saya jelaskan di artikel dan pindah ke yang baru terkait dengan visi komputer. Ada banyak tugas, dan semuanya sangat berbeda, jadi Anda tidak akan bosan.

Magang di Mars sekarang terbuka, Anda dapat mempelajari lebih lanjut dan melamar di: situs .

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


All Articles