Jaringan saraf convolutional dan integrasinya di iOS (bagian 2)



Pada bagian sebelumnya, kami menyiapkan data dan juga memeriksa alat implementasi dan arsitektur jaringan saraf ( tautan ). Mari kita mulai tahap pengembangan selanjutnya dengan preprocessing data.

Upgrades

Keras menyediakan berbagai alat untuk pemrosesan data, terutama untuk gambar. Metode ImageDataGenerator (Gbr. 7) memungkinkan Anda untuk memperluas kumpulan data dengan transformasi buatan.


Gbr. 7. - Generator data.

Angka Rotasi_range pertama adalah angka acak untuk memutar gambar di dalam generator. Width_shift_range - menunjukkan seberapa besar Anda dapat mengurangi lebar nilai piksel. Height_shift_range - koefisien di mana setiap piksel akan dikalikan dengan tinggi kompres. Shear_range - laju geser, sudut pergeseran dalam arah berlawanan dalam derajat. Zoom_range - rentang untuk penskalaan acak. Horizontal_flip - tampilan gambar acak secara horizontal. Vertical_flip - tampilan gambar vertikal acak. Fill_mode - poin di luar data input diisi sesuai dengan mode yang ditentukan. Data_format - format data gambar. Dengan demikian, jaringan saraf akan memiliki generalisasi yang lebih baik, karena dataset asli pada dasarnya memiliki piksel bersih, angkanya ada di tengah.Dalam foto nyata, situasi lain dimungkinkan ketika gerakan berada di sudut atau buram. Proses pembelajaran sedang ditulis ulang dengan data baru.

Pada Gambar. 8, Grafik tes mulai berkurang, sehingga pelatihan dihentikan. Jika metrik val_acc tidak digunakan untuk berhenti, algoritme akan melanjutkan kerjanya, menghasilkan jaringan saraf yang dilatih ulang.

Dibandingkan dengan hasil sebelumnya, nilai fungsi kerugian menurun dan, oleh karena itu, tingkat kepercayaan algoritma dalam prediksi meningkat. Akurasi meningkat sedikit lebih dari 2% (Gbr. 8, Gbr. 9).


Gbr. 8 - Jadwal pelatihan tentang data baru.


Gambar 9. - Metrik model.

Konversi

Untuk integrasi ke aplikasi iOS Anda perlu mendapatkan jaringan saraf format tertentu. Ini memungkinkan Anda untuk membuat kerangka kerja CoreML. Hal ini memungkinkan Anda untuk menjalankan model pembelajaran mesin terlatih dalam format. mlmodel dalam aplikasi. Untuk bekerja dengan gambar ada Visi kerangka kerja berdasarkan Core ML dan membantu dengan pelacakan dan pengenalan wajah, teks, objek, barcode. Penentuan cakrawala dan akuisisi matriks untuk penyelarasan gambar juga tersedia.

Untuk mengkonversi model dari .h5 ke. mlmodel digunakan oleh perpustakaan di Python Coremltools. Perpustakaan ini mendukung konversi ke format mlmodel.

Untuk kesimpulan yang benar dari model, kamus ditentukan yang akan sesuai dengan 10 digit. Baris berikutnya menyatakan, Model_check.h5 adalah nama model, selanjutnya ditunjukkan bahwa ia akan menerima gambar pada lapisan input dari jaringan saraf. Bidang image_scale akan mengarah untuk membakukan matriks piksel. (Gbr. 10) Gbr. 10


. - Konversi.

Aplikasi seluler. Bekerja dengan model yang disiapkan.

Contoh dari situs web resmi pengembang Apple digunakan sebagai dasar untuk proyek tersebut. Lingkungan pengembangan Xcode terbaru, bahasa pemrograman adalah versi kelima Swift.

File (Gbr. 11) yang berisi kode dalam proyek dipertimbangkan. AppDelegate.swift meluncurkan jendela mulai aplikasi dan menginisialisasi semua file yang terhubung ke proyek.


Fig. 11. - Struktur aplikasi.

Model yang disiapkan ditambahkan ke proyek setelah konversi sign_lang.mlmodel (Gbr. 12).


Gambar 12. - Model dalam Xcode.

Garis Jenis menunjukkan bahwa Model Pembelajaran Mesin yang ditambahkan ke proyek memang merupakan jaringan saraf pengklasifikasian. Untuk memprediksi model, gambar hitam-putih dengan elemen abu-abu dari dimensi 64x64 akan dimasukkan, program akan mengubahnya menjadi format ini menggunakan Vision. Outputnya akan berupa kamus di mana pasangan akan menjadi garis dengan label yang ditentukan selama konversi, dan keyakinan (probabilitas) yang diprediksi oleh jaringan saraf itu.

File aplikasi utama.

File utama dianggap - Pengontrol Tampilan Klasifikasi Gambar.

Ubah ImageView - jendela untuk menampilkan gambar saat ini di layar ponsel, dikirim ke input model.

CameraButton - tombol yang, ketika diklik, akan memunculkan menu konteks yang menawarkan pengguna untuk melakukan tindakan berikut: Ambil Foto, Pilih Foto. Tindakan pertama akan membuka kamera smartphone, di mana mode foto akan tersedia. (Gbr. 13)

Saat memilih tindakan alternatif, Pilih Foto, galeri internal akan terbuka. Menekan tombol Use Photo akan mengembalikan pengguna ke layar utama, di mana jaringan saraf akan menganalisis gambar dan memberikan prediksi, seperti yang ditunjukkan pada Gambar. 14.

Setelah kata Klasifikasi, kita melihat kesimpulan dari dua hasil yang paling mungkin diprediksi oleh model. Angka dalam tanda kurung adalah kepercayaan dari jaringan saraf bahwa prediksinya benar. Dari Gambar. 14 dapat dilihat bahwa algoritma dengan kepercayaan 0.99 mengatakan bahwa angka 0. ditunjukkan. Dan ini bertepatan dengan kenyataan. Tidak ada algoritma pembelajaran mesin yang dapat memberikan akurasi 100% pada data nyata, dan jaringan saraf yang dibangun tidak terkecuali, dan prediksi yang salah dimungkinkan, yang dapat dilihat pada Gambar. 15.


Gbr. 13. - Bekerja dengan kamera.


Fig. 14. - Prediksi jaringan saraf.


Gbr. 15. - Prediksi salah.

Sebagai hasilnya, kami merancang arsitektur jaringan saraf convolutional untuk mengenali angka bahasa isyarat. Pelatihan jaringan saraf dilakukan, dan sebagai hasil dari perluasan data pelatihan dan pemilihan hiperparameter, akurasi 81% diperoleh pada set data uji. Algoritma telah berhasil dikonversi untuk porting ke smartphone. Aplikasi mobile dikembangkan di mana jaringan saraf terintegrasi.

Tautan Kode

All Articles