Rumah > pembangunan bahagian belakang > Tutorial Python > Daripada Data kepada Penerapan

Daripada Data kepada Penerapan

Linda Hamilton
Lepaskan: 2024-11-03 01:43:29
asal
526 orang telah melayarinya

DataWhisper: Menguasai Kitaran Hayat Projek DL

Pengarang: Abdellah Hallou (LinkedIn, Twitter)

Selamat datang ke Panduan Permulaan Projek Pembelajaran Dalam! Tutorial ini berfungsi sebagai sumber yang komprehensif untuk sesiapa sahaja yang ingin menyelami dunia pembelajaran mendalam yang menarik. Sama ada anda seorang pemula atau pembangun yang berpengalaman, panduan ini akan membawa anda melalui proses membina projek pembelajaran mendalam dari awal hingga akhir.

Jadual kandungan

  • Apa yang anda akan pelajari
  • Siapa yang patut mengikuti tutorial ini
  • Perlukan bantuan atau ada soalan?
  • Jom mulakan!
  • Mengimport dan memuatkan set data
  • Struktur Set Data
  • Analisis Data Penerokaan (EDA)
  • Praproses data
  • Bina model
  • Nilai ketepatan
  • Simpan dan Eksport Model
  • Buat ramalan
  • Kerahan
    • Buat projek flutter baharu
    • Mengkonfigurasi Kamera
    • Mencipta Skrin Kamera
    • Mengintegrasikan Muat Naik Imej
    • Pengecaman Objek dengan TensorFlow Lite
    • Menjalankan Model pada Imej
    • Memaparkan Hasil dalam Dialog
    • Membina Antara Muka Pengguna

Apa yang anda akan pelajari

Dalam tutorial ini, anda akan mempelajari langkah penting yang terlibat dalam mencipta dan menggunakan model pembelajaran mendalam dalam apl mudah alih. Kami akan membincangkan topik berikut:

  1. Menyediakan data: Kami akan meneroka pelbagai kaedah untuk prapemprosesan data untuk memastikan set data yang mantap dan boleh dipercayai untuk latihan.

  2. Penciptaan model: Anda akan mengetahui cara mereka bentuk dan membina model CNN anda.

  3. Melatih model: Kami akan menyelidiki proses melatih model pembelajaran mendalam anda menggunakan TensorFlow.

  4. Pengedaran dalam apl mudah alih: Setelah model anda dilatih, kami akan membimbing anda melalui langkah-langkah untuk menyepadukannya ke dalam apl mudah alih menggunakan TensorFlow Lite. Anda akan faham cara membuat ramalan semasa dalam perjalanan!

Siapa yang patut mengikuti tutorial ini

Tutorial ini sesuai untuk pemula dan pembangun pertengahan dengan pemahaman asas tentang konsep pembelajaran mendalam dan pengaturcaraan Python. Sama ada anda seorang saintis data, peminat pembelajaran mesin atau pembangun aplikasi mudah alih, panduan ini akan melengkapkan anda dengan pengetahuan yang diperlukan untuk memulakan projek pembelajaran mendalam anda.

Perlukan bantuan atau ada soalan?

Jika anda menghadapi sebarang isu, mempunyai soalan atau memerlukan penjelasan lanjut semasa mengikuti tutorial ini, jangan teragak-agak untuk mencipta isu GitHub dalam repositori Dari-Data-ke-Pengeluaran ini. Saya berbesar hati untuk membantu anda dan memberikan bimbingan yang diperlukan.

Untuk mencipta isu, klik pada tab "Isu" di bahagian atas halaman repositori ini dan klik butang "Isu baharu". Sila berikan sebanyak mungkin konteks dan perincian tentang masalah yang anda hadapi atau soalan yang anda ada. Ini akan membantu saya memahami kebimbangan anda dengan lebih baik dan memberi anda respons yang cepat dan tepat.

Maklum balas anda adalah berharga dan boleh membantu menambah baik tutorial ini untuk pengguna lain juga. Jadi, jangan teragak-agak untuk menghubungi jika anda memerlukan sebarang bantuan. Mari belajar dan berkembang bersama!

Mari mulakan!

Untuk bermula, pastikan anda memasang kebergantungan dan perpustakaan yang diperlukan. Tutorial dibahagikan kepada bahagian yang mudah diikuti, setiap satu merangkumi aspek khusus aliran kerja projek pembelajaran mendalam. Jangan ragu untuk melompat ke bahagian yang paling anda minati atau ikuti dari awal hingga akhir.

Adakah anda bersedia?

Mengimport dan memuatkan set data

Mari mulakan import yang diperlukan untuk kod kami. Kami akan menggunakan set data Fashion Mnist dalam tutorial ini.

# Import the necessary libraries
from __future__ import print_function
import keras
from google.colab import drive
import os
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten, BatchNormalization
from keras.layers import Conv2D, MaxPooling2D
from keras.wrappers.scikit_learn import KerasClassifier
from keras import backend as K
from sklearn.model_selection import GridSearchCV
import tensorflow as tf
from keras.utils.vis_utils import plot_model
import matplotlib.pyplot as plt
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Struktur Set Data

Dalam mana-mana projek pembelajaran mendalam, memahami data adalah penting. Sebelum menyelami penciptaan dan latihan model, mari mulakan dengan memuatkan data dan mendapatkan cerapan tentang struktur, pembolehubah dan ciri keseluruhannya.

# Load the Fashion MNIST dataset
fashion_mnist = tf.keras.datasets.fashion_mnist
(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Analisis Data Penerokaan (EDA)

Sekarang data dimuatkan, mari kita lakukan beberapa analisis data penerokaan untuk mendapatkan pemahaman yang lebih baik tentang ciri-cirinya.

print("Shape of the training data : ",x_train.shape)
print("Shape of the testing data : ",x_test.shape)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Shape of the training data :  (60000, 28, 28)
Shape of the testing data :  (10000, 28, 28)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Dataset Fashion MNIST mengandungi 70,000 imej skala kelabu dalam 10 kategori. Imej menunjukkan artikel pakaian individu pada peleraian rendah (28 kali 28 piksel), seperti yang dilihat di sini:
From Data to Deployment

60,000 imej digunakan untuk melatih rangkaian dan 10,000 imej untuk menilai sejauh mana rangkaian belajar mengelaskan imej dengan tepat.

# Printing unique values in training data
unique_labels = np.unique(y_train, axis=0)
print("Unique labels in training data:", unique_labels)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Unique labels in training data: [0 1 2 3 4 5 6 7 8 9]
Salin selepas log masuk
Salin selepas log masuk

Label ialah tatasusunan integer, antara 0 hingga 9. Ini sepadan dengan kelas pakaian yang diwakili oleh imej:
| Label | RClass |
| - |-|
| 0 | T-shirt/top|
| 1 | Seluar|
| 2 |Pullover|
| 3 |Pakaian|
| 4 |Kot|
| 5 |Sandal|
| 6 |Baju|
| 7 |Sneaker |
| 8 |Beg|
| 9 | But buku lali |

Memandangkan nama kelas tidak disertakan dengan set data, simpannya di sini untuk digunakan kemudian apabila memplot imej:

# Numeric labels
numeric_labels = np.sort(np.unique(y_train, axis=0))
# String labels
string_labels = np.array(['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat','Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot'])
# Mapping numeric labels to string labels
numeric_to_string = dict(zip(numeric_labels, string_labels))
print("Numeric to String Label Mapping:")
print(numeric_to_string)
Salin selepas log masuk
Salin selepas log masuk
Numeric to String Label Mapping:
{0: 'T-shirt/top', 1: 'Trouser', 2: 'Pullover', 3: 'Dress', 4: 'Coat', 5: 'Sandal', 6: 'Shirt', 7: 'Sneaker', 8: 'Bag', 9: 'Ankle boot'}
Salin selepas log masuk
Salin selepas log masuk

Praproses data

Data mesti dipraproses sebelum melatih rangkaian.
Kami mulakan dengan mentakrifkan bilangan kelas dalam set data kami (iaitu 10 dalam kes ini) dan dimensi imej input (28x28 piksel).

# Import the necessary libraries
from __future__ import print_function
import keras
from google.colab import drive
import os
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten, BatchNormalization
from keras.layers import Conv2D, MaxPooling2D
from keras.wrappers.scikit_learn import KerasClassifier
from keras import backend as K
from sklearn.model_selection import GridSearchCV
import tensorflow as tf
from keras.utils.vis_utils import plot_model
import matplotlib.pyplot as plt
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Bahagian ini bertanggungjawab untuk membentuk semula data imej input agar sepadan dengan format yang dijangkakan untuk model rangkaian saraf. Format bergantung pada bahagian belakang yang digunakan (cth., TensorFlow atau Theano). Dalam coretan ini, kami menyemak format data imej menggunakan K.image_data_format() dan menggunakan pembentukan semula yang sesuai berdasarkan hasilnya.

# Load the Fashion MNIST dataset
fashion_mnist = tf.keras.datasets.fashion_mnist
(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Nilai piksel imej dalam data berada dalam julat 0 hingga 255.
Skalakan nilai ini kepada julat 0 hingga 1 sebelum menyuapkannya kepada model CNN.

print("Shape of the training data : ",x_train.shape)
print("Shape of the testing data : ",x_test.shape)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Tukar label kelas (diwakili sebagai integer) kepada format matriks kelas binari, yang diperlukan untuk masalah pengelasan berbilang kelas.

Shape of the training data :  (60000, 28, 28)
Shape of the testing data :  (10000, 28, 28)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Bina model

Dalam langkah ini, kami mentakrifkan dan membina model rangkaian neural convolutional (CNN) untuk klasifikasi imej. Seni bina model terdiri daripada berbilang lapisan seperti lapisan konvolusi, pengumpulan, keciciran dan padat. Fungsi build_model mengambil bilangan kelas, latihan dan data ujian sebagai input dan mengembalikan sejarah latihan dan model yang dibina.

# Printing unique values in training data
unique_labels = np.unique(y_train, axis=0)
print("Unique labels in training data:", unique_labels)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Unique labels in training data: [0 1 2 3 4 5 6 7 8 9]
Salin selepas log masuk
Salin selepas log masuk
# Numeric labels
numeric_labels = np.sort(np.unique(y_train, axis=0))
# String labels
string_labels = np.array(['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat','Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot'])
# Mapping numeric labels to string labels
numeric_to_string = dict(zip(numeric_labels, string_labels))
print("Numeric to String Label Mapping:")
print(numeric_to_string)
Salin selepas log masuk
Salin selepas log masuk

Nilaikan ketepatan

Untuk menilai prestasi model terlatih, kami menilainya pada data ujian. Kaedah penilaian digunakan untuk mengira kehilangan dan ketepatan ujian. Metrik ini kemudian dicetak ke konsol.

Numeric to String Label Mapping:
{0: 'T-shirt/top', 1: 'Trouser', 2: 'Pullover', 3: 'Dress', 4: 'Coat', 5: 'Sandal', 6: 'Shirt', 7: 'Sneaker', 8: 'Bag', 9: 'Ankle boot'}
Salin selepas log masuk
Salin selepas log masuk

From Data to Deployment

num_classes = 10
# input image dimensions
img_rows, img_cols = 28, 28
Salin selepas log masuk
if K.image_data_format() == 'channels_first':
    x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols)
    x_test = x_test.reshape(x_test.shape[0], 1, img_rows, img_cols)
    input_shape = (1, img_rows, img_cols)
else:
    x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1)
    x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1)
    input_shape = (img_rows, img_cols, 1)
Salin selepas log masuk

Simpan dan Eksport Model

Selepas melatih model, kami menyimpannya dalam format fail Hierarchical Data Format (HDF5) menggunakan kaedah save. Model tersebut kemudiannya dieksport ke Google Drive dengan memanggil fungsi move_to_drive. Selain itu, model ini ditukar kepada format TensorFlow Lite menggunakan fungsi h52tflite dan model TFLite yang terhasil turut disimpan dalam Google Drive. Laluan model yang disimpan dan model TFLite dikembalikan.

x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
Salin selepas log masuk

Buat ramalan

Untuk menggambarkan ramalan model, kami memilih set rawak imej ujian. Model meramalkan label kelas untuk imej ini menggunakan kaedah ramalan. Label yang diramalkan kemudiannya dibandingkan dengan label kebenaran tanah untuk memaparkan imej bersama-sama dengan label ramalan yang sepadan menggunakan matplotlib.

# convert class vectors to binary class matrices
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)
Salin selepas log masuk

From Data to Deployment

untuk mendapatkan maklumat lanjut tentang model, semak sumber ini:

  1. https://www.tensorflow.org/tutorials/keras/classification
  2. https://github.com/cmasch/zalando-fashion-mnist/tree/master

Kerahan

Buat projek Flutter baharu

Sebelum membuat projek Flutter baharu, pastikan Flutter SDK dan keperluan berkaitan pembangunan apl Flutter lain dipasang dengan betul: https://docs.flutter.dev/get-started/install/windows

Selepas projek telah disediakan, kami akan melaksanakan UI untuk membolehkan pengguna mengambil gambar atau memuat naik imej dari galeri dan melakukan pengecaman objek menggunakan model TensorFlow Lite yang dieksport.
Mula-mula, kita perlu memasang pakej ini:

  1. kamera: 0.10.4
  2. pemetik_gambar:
  3. tflite: ^1.1.2

Untuk berbuat demikian, salin coretan kod berikut dan tampalkannya ke dalam fail pubspec.yaml projek:

# Import the necessary libraries
from __future__ import print_function
import keras
from google.colab import drive
import os
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten, BatchNormalization
from keras.layers import Conv2D, MaxPooling2D
from keras.wrappers.scikit_learn import KerasClassifier
from keras import backend as K
from sklearn.model_selection import GridSearchCV
import tensorflow as tf
from keras.utils.vis_utils import plot_model
import matplotlib.pyplot as plt
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Import pakej yang diperlukan dalam fail main.dart projek

# Load the Fashion MNIST dataset
fashion_mnist = tf.keras.datasets.fashion_mnist
(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Mengkonfigurasi Kamera

Untuk mendayakan kefungsian kamera, kami akan menggunakan pakej kamera. Mula-mula, import pakej yang diperlukan dan nyatakan pengawal kamera. Gunakan fungsi availableCameras() untuk mendapatkan senarai kamera yang tersedia. Dalam tutorial ini, kami akan menggunakan kamera pertama dalam senarai.

print("Shape of the training data : ",x_train.shape)
print("Shape of the testing data : ",x_test.shape)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Mencipta Skrin Kamera

Buat StatefulWidget baharu yang dipanggil CameraScreen yang akan mengendalikan pratonton kamera dan fungsi tangkapan imej. Dalam kaedah initState(), mulakan pengawal kamera dan tetapkan pratetap resolusi. Selain itu, laksanakan kaedah _takePicture(), yang menangkap imej menggunakan pengawal kamera.

Shape of the training data :  (60000, 28, 28)
Shape of the testing data :  (10000, 28, 28)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Mengintegrasikan Muat Naik Imej

Untuk membolehkan pengguna memuat naik imej dari galeri, import pakej image_picker. Laksanakan kaedah _pickImage(), yang menggunakan kelas ImagePicker untuk memilih imej daripada galeri. Setelah imej dipilih, ia boleh diproses menggunakan kaedah _processImage().

# Printing unique values in training data
unique_labels = np.unique(y_train, axis=0)
print("Unique labels in training data:", unique_labels)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Pengecaman Objek dengan TensorFlow Lite

Untuk melakukan pengecaman objek, kami akan menggunakan TensorFlow Lite. Mulakan dengan mengimport pakej tflite. Dalam kaedah _initTensorFlow(), muatkan model TensorFlow Lite dan label daripada aset. Anda boleh menentukan model dan melabel laluan fail serta melaraskan tetapan seperti bilangan urutan dan penggunaan perwakilan GPU.

# Import the necessary libraries
from __future__ import print_function
import keras
from google.colab import drive
import os
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten, BatchNormalization
from keras.layers import Conv2D, MaxPooling2D
from keras.wrappers.scikit_learn import KerasClassifier
from keras import backend as K
from sklearn.model_selection import GridSearchCV
import tensorflow as tf
from keras.utils.vis_utils import plot_model
import matplotlib.pyplot as plt
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Menjalankan Model pada Imej

Laksanakan kaedah _objectRecognition(), yang mengambil laluan fail imej sebagai input dan menjalankan model TensorFlow Lite pada imej. Kaedah mengembalikan label objek yang dikenali.

# Load the Fashion MNIST dataset
fashion_mnist = tf.keras.datasets.fashion_mnist
(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Memaparkan Keputusan dalam Dialog

Apabila imej diproses, paparkan hasilnya dalam kotak dialog menggunakan kaedah showDialog(). Sesuaikan dialog untuk menunjukkan label objek yang dikenali dan berikan pilihan untuk membatalkan.

print("Shape of the training data : ",x_train.shape)
print("Shape of the testing data : ",x_test.shape)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Membina Antara Muka Pengguna

Shape of the training data :  (60000, 28, 28)
Shape of the testing data :  (10000, 28, 28)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

From Data to Deployment
From Data to Deployment

Atas ialah kandungan terperinci Daripada Data kepada Penerapan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan