Saya percaya bahawa rakan-rakan yang menyukai teknologi dan mempunyai minat yang kuat dalam AI seperti penulis mesti biasa dengan rangkaian saraf konvolusi, dan pastinya telah lama keliru dengan nama "maju" sedemikian. Penulis akan memasuki dunia rangkaian neural konvolusi dari awal hari ini ~ kongsi dengan anda!
Sebelum kita menyelami rangkaian neural konvolusi, mari kita lihat prinsip imej dahulu.
Imej diwakili oleh nombor (0-255) dalam komputer Setiap nombor mewakili kecerahan atau maklumat warna piksel dalam imej. Antaranya:
"Bagaimana anda memahami "nombor binari 8-bit" di sini?"
Dalam model warna RGB, setiap saluran warna (merah, hijau, biru) boleh mempunyai 256 tahap kecerahan yang berbeza, setiap satu Saluran mewakili perwakilan perduaan 8-bit Nilai maksimum nombor perduaan 8-bit ialah 11111111, iaitu 255 apabila ditukar kepada nilai perpuluhan ialah 00000000, iaitu 0 apabila ditukar kepada perpuluhan.
CNN melaporkan senario permohonan yang terkenal di CV. Mengambil saiz imej asal sebagai 10x10 sebagai contoh, seperti yang ditunjukkan dalam rajah di bawah, separuh kiri mempunyai nilai piksel yang lebih besar dan merupakan kawasan terang yang separuh kanan mempunyai nilai piksel yang lebih kecil dan merupakan kawasan kedalaman. Garis pemisah di tengah adalah tepi untuk dikesan.
"Jadi bagaimana untuk mengesan tepi?" Pada masa ini, penapis (juga dipanggil kernel) muncul, seperti yang ditunjukkan dalam rajah di bawah, saiz kernel ialah 3x3.
Penapis meluncur ke atas imej input, berhenti seketika di setiap kawasan, mendarab dan menambah elemen yang sepadan, dan kemudian meluncur ke kawasan lain untuk meneruskan pengiraan sehingga ia meluncur ke kawasan terakhir imej asal. Proses ini dipanggil "konvolusi". tercermin. "Jadi boleh disimpulkan bahawa pengesanan tepi diiktiraf melalui operasi lilitan imej input dan penapis yang sepadan
Selain itu, gelongsor di sini juga melibatkan konsep asas, "langkah". Langkah 1 bermakna setiap kali anda meluncur satu bingkai, anda akan kekal dalam jumlah kawasan 8x8, jadi hasil keluaran akhir ialah matriks 8x8.
"Jadi, apakah sebenarnya rangkaian neural convolutional?"Selepas analisis di atas terhadap senario pengesanan sasaran khusus pengesanan tepi, tidak sukar untuk kita memahami bahawa CNN (Convolutional neural network) menggunakan pelbagai Penapis secara berterusan mengekstrak ciri imej, daripada setempat kepada keseluruhan, dan kemudian mengenal pasti sasaran. Dalam rangkaian saraf, setiap nombor dalam penapis ini adalah parameter, yang boleh diperolehi melalui latihan dengan sejumlah besar data (iaitu, proses pembelajaran mendalam). Konsep asas dalam CNN1. Convolution (Convolution)
Antaranya:
Gambar (a): Saiz gambar kiri ialah 3×3, menunjukkan bahawa data input ialah tatasusunan dua dimensi dengan dimensi 3×3 saiz gambar tengah ialah 2×2, menunjukkan dua tatasusunan -dimensi dengan dimensi 2×2 , juga dikenali sebagai "irung lilitan". Sudut kiri atas kernel lilitan diselaraskan dengan sudut kiri atas (0,0) data input, dan data kedudukan yang sepadan bagi kedua-duanya didarabkan dan kemudian ditambah untuk mendapatkan hasil pertama keluaran lilitan 25.
Dengan analogi, Rajah (b), (c), dan (d) masing-masing ialah hasil keluaran kedua, ketiga dan keempat bagi keluaran lilitan.
(2) Operasi lilitan imej
Jadi apakah sebenarnya operasi lilitan imej? Seperti yang ditunjukkan dalam rajah di bawah, proses lilitan imej berwarna ditunjukkan.
Untuk imej berwarna saluran 1 (Merah), saluran 2 (Hijau) dan saluran 3 (Biru), gunakan Kernel1, Kernel2 dan Kernel3 masing-masing. Setiap kernel lilitan meluncur pada imej monokrom yang sepadan, melakukan operasi pendaraban titik demi titik pada nilai piksel dalam kawasan kecil (saiz kernel) pada setiap kedudukan dan elemen sepadan kernel lilitan, dan kemudian menambah produk ini Dapatkan a nilai. Kemudian tambahkan nilai yang diperoleh daripada setiap saluran dan tambahkan bias keseluruhan untuk mendapatkan nilai dalam peta ciri yang sepadan.
Kesan tiga dimensi ditunjukkan dalam rajah di bawah:
Dalam contoh pengesanan tepi seperti yang dinyatakan di atas, anda boleh melihat bahawa saiz imej asal ialah 10x10, dan selepas menapis ia adalah 8x8. Jika anda melakukan operasi lilitan yang lain, ia akan menjadi 6x6... Dalam kes ini, akan terdapat dua kelemahan:
Seperti yang ditunjukkan dalam gambar di bawah, bayang merah di sudut kiri atas hanya disentuh oleh satu output, manakala piksel tengah (ditandakan dengan kotak ungu) akan mempunyai banyak kawasan 3x3 yang bertindih dengannya. Oleh itu, piksel di sudut atau kawasan tepi kurang digunakan dalam output, dan banyak maklumat tentang kedudukan tepi imej mudah hilang.
Untuk menyelesaikan masalah ini, kami biasanya menggunakan kaedah Padding Sebelum operasi lilitan, terlebih dahulu mengisi tepi imej asal dengan lapisan piksel saiz 12x12, dan kelantangan Saiz imej selepas pendaraban ialah 8x8, iaitu saiz yang sama dengan imej asal Ini membolehkan piksel di kawasan tepi imej asal digunakan beberapa kali.
Pilih bilangan piksel yang perlu diisi Biasanya terdapat dua pilihan:
Konsep langkah telah disebut dalam pengenalan, yang mewakili panjang setiap slaid penapis penapis dalam arah mendatar dan menegak dalam imej asal, juga dipanggil panjang langkah.
Andaikan bahawa s mewakili panjang langkah, p mewakili panjang padding, saiz imej asal ialah nxn, dan saiz penapis ialah fxf, maka saiz imej berbelit ialah:
Peranan lapisan pengumpulan dalam rangkaian konvolusi: mengurangkan bilangan parameter peta ciri, meningkatkan kelajuan pengiraan dan meningkatkan medan penerimaan, yang merupakan operasi pensampelan rendah.
Pengumpulan yang biasa digunakan dalam pengesanan objek: Pengumpulan Maks dan Pengumpulan Purata.
(1) Pengumpulan maksimumbermaksud mengambil nilai maksimum dalam kawasan gelongsor penapis tanpa operasi belitan. Sebilangan besar bermakna ciri tertentu mungkin dikesan dan nilai lain diabaikan, mengurangkan kesan hingar dan meningkatkan keteguhan model. "Tambahan pula, hiperparameter yang diperlukan untuk pengumpulan Maks hanyalah saiz penapis f dan panjang langkah s. Tidak perlu melatih parameter lain, dan jumlah pengiraan adalah kecil."
Iaitu, dalam penapis Kira nilai purata dalam kawasan gelongsor penapis. 5.ShapeApabila berurusan dengan data berbilang dimensi, terutamanya data imej, terdapat perbezaan antara Tensorflow dan Data Pytorch Shape.
TensorFlow:(saiz_batch, tinggi, lebar, dalam_saluran)
Pytorch:(saiz_batch, dalam_saluran, tinggi, lebar)
Seperti yang ditunjukkan dalam gambar di atas:
out_height = (height - kernel_height + 1) / strideout_width = (width - kernel_width + 1) / stride
Untuk imej 8x8 dan kernel lilitan 3x3, saiz output ialah (8 - 3 + 1) / 1 = 6, jadi bentuk output ialah [6, 6, 5], menunjukkan peta ciri 6x6 dengan 5 saluran keluaran .
Bilangan saluran input (dalam_saluran) kernel lilitan ditentukan oleh bilangan saluran imej input Contohnya: imej format RGB mempunyai bilangan saluran input sebanyak 3.
Bilangan saluran matriks keluaran (saluran_keluar) ditentukan oleh bilangan saluran keluaran kernel lilitan, iaitu, berapa banyak penapis berbeza yang ada pada kernel lilitan. Dalam contoh ini, kernel lilitan mempunyai 5 penapis, jadi output mempunyai 5 saluran.
Tidak semua hubungan pemetaan boleh dinyatakan dengan tepat oleh hubungan linear. Oleh itu, fungsi pengaktifan diperlukan untuk mewakili pemetaan tak linear.
Fungsi pengaktifan juga merupakan pemetaan tak linear. Jika rangkaian saraf hanya disusun oleh operasi linear, ia tidak akan dapat membentuk ruang ekspresi yang kompleks, dan ia akan menjadi sukar untuk mengekstrak maklumat semantik tinggi Oleh itu, adalah perlu untuk menambah hubungan pemetaan bukan linear.
(1) fungsi sigmoid
fungsi sigmoid memampatkan ciri -ciri ke dalam selang (0,1). kecerunan di bahagian tengah adalah yang terbesar.
(2) Fungsi Relu
Unit Linear Dibetulkan (ReLU). Biasanya digunakan untuk mengurangkan fenomena kecerunan yang hilang.
Dalam bahagian yang kurang daripada 0, nilai dan kecerunan ialah 0, dan terbitan yang lebih besar daripada 0 ialah 1, yang mengelakkan masalah kehilangan kecerunan yang disebabkan oleh kecerunan dalam fungsi Sigmoid menghampiri 0.
(3) Fungsi Softmax
Pengkelas yang lebih biasa digunakan untuk pelbagai kategori objek ialah fungsi Softmax.
Dalam tugas pengelasan khusus, input fungsi Softmax selalunya merupakan markah berbilang kategori, dan output adalah kebarangkalian yang sepadan dengan setiap kategori Nilai kebarangkalian semua kategori adalah antara 0 dan 1, dan jumlah ialah 1.
Formula fungsi Softmax adalah seperti berikut:
di mana, Vi mewakili skor kategori ke-i, C mewakili jumlah bilangan kategori yang dikelaskan, dan output Si ialah kebarangkalian bagi kategori ke-i.
Rangkaian saraf konvolusi CNN terdiri daripada lapisan input, lapisan konvolusi, Relu, lapisan penyatuan, lapisan bersambung sepenuhnya dan lapisan keluaran.
Seperti yang ditunjukkan dalam rajah di bawah ialah contoh rangkaian berbelit Lapisan berbelit ialah lapisan pertama rangkaian berbelit, diikuti dengan lapisan berbelit lain atau lapisan menghimpun, dan lapisan terakhir ialah lapisan bersambung sepenuhnya. Lapisan kemudian mengenal pasti bahagian imej yang lebih besar, dan lapisan awal biasanya memfokuskan pada ciri mudah (seperti warna dan tepi). Apabila data imej maju melalui lapisan dalam CNN, ia mula mengenal pasti elemen atau bentuk objek yang lebih besar sehingga akhirnya ia mengenal pasti objek yang dimaksudkan.
Antaranya:
Berbanding dengan rangkaian neural tradisional, CNN mempunyai kelebihan sambungan tempatan, perkongsian berat, dll., yang sangat mengurangkan jumlah parameter yang dipelajarinya dan rangkaian menumpu lebih cepat.
Atas ialah kandungan terperinci Anda boleh memahami prinsip rangkaian saraf konvolusi walaupun dengan asas sifar! Sangat terperinci!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!