Rumah > Artikel > Peranti teknologi > Contoh aplikasi praktikal gabungan ciri cetek dan ciri mendalam
Pembelajaran mendalam telah mencapai kejayaan besar dalam bidang penglihatan komputer, dan salah satu kemajuan penting ialah penggunaan rangkaian neural convolutional dalam (CNN) untuk klasifikasi imej. Walau bagaimanapun, CNN dalam biasanya memerlukan sejumlah besar data berlabel dan sumber pengkomputeran. Untuk mengurangkan permintaan untuk sumber pengiraan dan data berlabel, penyelidik mula mengkaji cara menggabungkan ciri cetek dan ciri mendalam untuk meningkatkan prestasi klasifikasi imej. Kaedah gabungan ini boleh mengambil kesempatan daripada kecekapan pengiraan yang tinggi bagi ciri cetek dan keupayaan perwakilan yang kuat bagi ciri mendalam. Dengan menggabungkan kedua-duanya, kos pengiraan dan keperluan pelabelan data boleh dikurangkan sambil mengekalkan ketepatan klasifikasi yang tinggi. Kaedah ini amat penting untuk senario aplikasi dengan volum data yang kecil atau sumber pengkomputeran terhad. Dengan kajian mendalam tentang kaedah gabungan ciri cetek dan ciri mendalam, kami boleh meningkatkan lagi prestasi algoritma pengelasan imej dan membawa lebih banyak penemuan kepada penyelidikan dan aplikasi dalam bidang penglihatan komputer.
Kaedah biasa ialah menggunakan model CNN berlatarkan Model CNN pertama digunakan untuk mengekstrak ciri cetek, model CNN kedua digunakan untuk mengekstrak ciri mendalam, dan akhirnya output kedua-dua model disambungkan ketepatan keputusan pengelasan.
Ini adalah contoh menggunakan model CNN berlatarkan untuk mengenali digit tulisan tangan. Model ini menggunakan set data MNIST, yang merangkumi 60,000 imej latihan dan 10,000 imej ujian, setiap saiz imej ialah 28×28 piksel.
Pertama, kami mentakrifkan seni bina model. Kami menggunakan dua model CNN untuk mengekstrak ciri. Model CNN pertama mengandungi dua lapisan konvolusi dan lapisan pengumpulan maksimum untuk mengekstrak ciri cetek. Model CNN kedua mengandungi tiga lapisan konvolusi dan lapisan pengumpulan maksimum untuk mengekstrak ciri yang mendalam. Seterusnya, kami menggabungkan output kedua-dua model bersama-sama dan menambah dua lapisan bersambung sepenuhnya untuk pengelasan. Seni bina sedemikian boleh mengekstrak ciri yang kaya dan melaksanakan tugas pengelasan yang lebih baik.
import tensorflow as tf from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D, Flatten, Dense, Concatenate # Define shallow CNN model shallow_input = Input(shape=(28, 28, 1)) shallow_conv1 = Conv2D(32, (3, 3), activation='relu', padding='same')(shallow_input) shallow_pool1 = MaxPooling2D((2, 2))(shallow_conv1) shallow_conv2 = Conv2D(64, (3, 3), activation='relu', padding='same')(shallow_pool1) shallow_pool2 = MaxPooling2D((2, 2))(shallow_conv2) shallow_flat = Flatten()(shallow_pool2) shallow_output = Dense(128, activation='relu')(shallow_flat) # Define deep CNN model deep_input = Input(shape=(28, 28, 1)) deep_conv1 = Conv2D(32, (3, 3), activation='relu', padding='same')(deep_input) deep_pool1 = MaxPooling2D((2, 2))(deep_conv1) deep_conv2 = Conv2D(64, (3, 3), activation='relu', padding='same')(deep_pool1) deep_pool2 = MaxPooling2D((2, 2))(deep_conv2) deep_conv3 = Conv2D(128, (3, 3), activation='relu', padding='same')(deep_pool2) deep_pool3 = MaxPooling2D((2, 2))(deep_conv3) deep_flat = Flatten()(deep_pool3) deep_output = Dense(256, activation='relu')(deep_flat) # Concatenate shallow and deep models concatenate = Concatenate()([shallow_output, deep_output]) output = Dense(10, activation='softmax')(concatenate) # Define the model model = tf.keras.Model(inputs=[shallow_input, deep_input], outputs=output)
Model itu kemudiannya disusun dan dilatih. Memandangkan set data MNIST ialah masalah klasifikasi berbilang kelas, fungsi kehilangan entropi silang dan pengoptimum Adam digunakan untuk menyusun model. Model ini dilatih pada set latihan untuk 100 zaman, menggunakan 128 kelompok untuk setiap zaman.
# Compile the model model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) # Train the model model.fit([x_train, x_train], y_train, batch_size=128, epochs=100, verbose=1, validation_data=([x_test, x_test], y_test))
Akhir sekali, nilai prestasi model pada set ujian. Dalam contoh ini, ketepatan ujian model CNN bertingkat ialah 99.2%, iaitu kira-kira 0.5% lebih tinggi daripada ketepatan ujian yang dilatih dengan model CNN tunggal, menunjukkan bahawa gabungan ciri cetek dan ciri mendalam sememangnya boleh meningkatkan prestasi imej. pengelasan.
Ringkasnya, gabungan ciri cetek dan ciri mendalam adalah kaedah yang berkesan untuk meningkatkan prestasi klasifikasi imej. Contoh ini menunjukkan cara menggunakan model CNN berlatarkan untuk mengecam digit tulisan tangan, di mana model CNN pertama mengekstrak ciri cetek, model CNN kedua mengekstrak ciri mendalam, dan kemudian output kedua-dua model digabungkan bersama untuk pengelasan. Kaedah ini juga digunakan secara meluas dalam banyak tugas pengelasan imej lain.
Atas ialah kandungan terperinci Contoh aplikasi praktikal gabungan ciri cetek dan ciri mendalam. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!