


Anda boleh memahami prinsip rangkaian saraf konvolusi walaupun dengan asas sifar! Sangat terperinci!
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.
Prinsip imej
Imej diwakili oleh nombor (0-255) dalam komputer Setiap nombor mewakili kecerahan atau maklumat warna piksel dalam imej. Antaranya:
- Imej hitam dan putih: Setiap piksel hanya mempunyai satu nilai, dan nilai ini berbeza antara 0 (hitam) dan 255 (putih).
- Imej berwarna: Setiap piksel mengandungi tiga nilai, yang paling biasa ialah model RGB (Merah-Hijau-Biru), iaitu cahaya merah, hijau dan biru digabungkan pada keamatan yang berbeza untuk menghasilkan pelbagai warna. Setiap saluran warna mempunyai 256 tahap kecerahan, dari 0 hingga 255, jadi setiap warna boleh dinyatakan dengan nombor binari 8-bit, contohnya (255,0,0) mewakili merah, (0,255,0) mewakili hijau, ( 0 ,0,255) mewakili biru, dan kombinasi lain sepadan dengan pelbagai warna. Dalam komputer, struktur data imej berwarna biasanya tatasusunan atau tensor tiga dimensi dengan bentuk (lebar, tinggi, kedalaman), di mana kedalaman ialah bilangan saluran Untuk imej RGB, kedalaman ialah 3. Ini bermakna bagi setiap kedudukan piksel, terdapat tiga nilai yang mewakili kecerahan tiga saluran merah, hijau dan biru. Sebagai contoh, imej RGB 100*100 piksel akan menduduki 100x100x3 bait memori.
"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.
Apakah rangkaian neural convolutional CNN?
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.
(1) Convolution Calculation
Convolution ialah kaedah transformasi integral dalam analisis matematik, yang digunakan dalam pemprosesan imej ialah bentuk diskret konvolusi. Dalam rangkaian neural convolutional CNN, intipati pelaksanaan lapisan convolutional ialah pengiraan korelasi silang (korelasi silang) yang ditakrifkan dalam matematik. Proses pengiraan khusus ditunjukkan dalam rajah di bawah.
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:
2.Padding
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:
- Setiap kali anda melakukan operasi lilitan, saiz imej output akan dikurangkan
- Lebih sedikit piksel di sudut atau kawasan tepi akan digunakan dalam output Oleh itu, adalah mudah untuk kehilangan banyak maklumat mengenai kedudukan tepi imej.
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:
- Konvolusi yang sama: Seperti yang dinyatakan di atas, saiz imej selepas pengisian dan lilitan adalah sama dengan imej asal.
- Belitan sah: tiada operasi pengisian, lilitan langsung.
3.stride
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:
4. Intipati penyatuan Ia pengurangan dimensi.
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.Apabila 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)
di mana:
- saiz_batch: Bilangan sampel yang diproses dalam kelompok.
- in_channels: Bilangan saluran imej input, biasanya 3 (merah, hijau, biru) untuk imej berwarna.
- tinggi dan lebar ialah ketinggian dan lebar imej masing-masing.
Seperti yang ditunjukkan dalam gambar di atas:
- Imej input Bentuk: [tinggi, lebar, saluran], iaitu, [8,8,3], yang mewakili imej 8x8 dengan 3 saluran (R, G, B).
- Bentuk kernel lilitan: [kernel_height, kernel_width, in_channels, out_channels], iaitu, [3,3,3,5], menunjukkan kernel lilitan 3x3 dengan 3 saluran (R, G, B), saluran keluaran Nombornya ialah 5.
- Imej output Bentuk: [tinggi, lebar, saluran_luar], iaitu, [6,6,5], menunjukkan imej output 6x6 dengan 5 saluran (R, G, B).
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.
6. Fungsi pengaktifan
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.
Struktur keseluruhan CNN
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:
- Lapisan input: menerima data imej asal sebagai input kepada rangkaian.
- Lapisan konvolusi: Ia terdiri daripada penapis dan fungsi pengaktifan Ia adalah lapisan teras CNN. Ia terdiri daripada data input, penapis (atau kernel lilitan) dan peta ciri. Jika data input adalah imej RGB, ini bermakna input akan mempunyai tiga dimensi - ketinggian, lebar dan kedalaman. Intipati penapis ialah matriks berat dua dimensi, yang akan bergerak dalam medan penerimaan imej untuk memeriksa sama ada ciri itu wujud. Proses operasi lilitan adalah seperti yang diterangkan di atas. Hiperparameter biasanya ditetapkan untuk lapisan konvolusi termasuk bilangan penapis, langkah, kaedah pelapik (sah atau sama), fungsi pengaktifan, dsb.
- Lapisan penggabungan: Intinya adalah pensampelan rendah Ia menggunakan prinsip korelasi setempat bagi imej untuk mensubsampel imej dan mengurangkan jumlah pemprosesan data sambil mengekalkan maklumat yang berguna.
- Lapisan bersambung sepenuhnya: Setiap nod lapisan ini disambungkan kepada semua nod lapisan sebelumnya, yang digunakan untuk mensintesis ciri yang diekstrak sebelum ini. Biasanya, lapisan yang disambungkan sepenuhnya mempunyai paling banyak parameter.
- Lapisan keluaran: Dapatkan hasil dengan kebarangkalian tertinggi berdasarkan maklumat lapisan bersambung sepenuhnya.
Kelebihan CNN
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.
- Disambung separa: Setiap nilai output peta ciri tidak perlu disambungkan kepada setiap nilai piksel dalam imej input, tetapi hanya perlu disambungkan ke medan penerimaan penapis yang digunakan, jadi lapisan konvolusi sering dipanggil "lapisan separa bersambung" ”, ciri ini juga dipanggil sambungan tempatan.
- Perkongsian berat: Apabila kernel lilitan bergerak pada imej, beratnya kekal tidak berubah. Itu perkongsian berat.
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











DMA di C merujuk kepada DirectMemoryAccess, teknologi akses memori langsung, yang membolehkan peranti perkakasan secara langsung menghantar data ke memori tanpa campur tangan CPU. 1) Operasi DMA sangat bergantung kepada peranti perkakasan dan pemacu, dan kaedah pelaksanaan berbeza dari sistem ke sistem. 2) Akses langsung ke memori boleh membawa risiko keselamatan, dan ketepatan dan keselamatan kod mesti dipastikan. 3) DMA boleh meningkatkan prestasi, tetapi penggunaan yang tidak wajar boleh menyebabkan kemerosotan prestasi sistem. Melalui amalan dan pembelajaran, kita dapat menguasai kemahiran menggunakan DMA dan memaksimumkan keberkesanannya dalam senario seperti penghantaran data berkelajuan tinggi dan pemprosesan isyarat masa nyata.

Menggunakan perpustakaan Chrono di C membolehkan anda mengawal selang masa dan masa dengan lebih tepat. Mari kita meneroka pesona perpustakaan ini. Perpustakaan Chrono C adalah sebahagian daripada Perpustakaan Standard, yang menyediakan cara moden untuk menangani selang waktu dan masa. Bagi pengaturcara yang telah menderita dari masa. H dan CTime, Chrono tidak diragukan lagi. Ia bukan sahaja meningkatkan kebolehbacaan dan mengekalkan kod, tetapi juga memberikan ketepatan dan fleksibiliti yang lebih tinggi. Mari kita mulakan dengan asas -asas. Perpustakaan Chrono terutamanya termasuk komponen utama berikut: STD :: Chrono :: System_Clock: Mewakili jam sistem, yang digunakan untuk mendapatkan masa semasa. Std :: Chron

Mengendalikan paparan DPI yang tinggi di C boleh dicapai melalui langkah -langkah berikut: 1) Memahami DPI dan skala, gunakan API Sistem Operasi untuk mendapatkan maklumat DPI dan menyesuaikan output grafik; 2) Mengendalikan keserasian silang platform, gunakan perpustakaan grafik silang platform seperti SDL atau QT; 3) Melaksanakan pengoptimuman prestasi, meningkatkan prestasi melalui cache, pecutan perkakasan, dan pelarasan dinamik tahap butiran; 4) Selesaikan masalah biasa, seperti teks kabur dan elemen antara muka terlalu kecil, dan selesaikan dengan betul menggunakan skala DPI.

Alat kuantisasi terbina dalam pertukaran termasuk: 1. Binance: Menyediakan modul kuantitatif niaga hadapan Binance, yuran pengendalian yang rendah, dan menyokong urus niaga AI-dibantu. 2. OKX (OUYI): Menyokong Pengurusan Multi Akaun dan Routing Pesanan Pintar, dan menyediakan kawalan risiko peringkat institusi. Platform strategi kuantitatif bebas termasuk: 3. 4. Kuadensi: Perpustakaan Strategi Algoritma Tahap Profesional, menyokong ambang risiko yang disesuaikan. 5. PionEx: Strategi Preset 16 terbina dalam, yuran transaksi yang rendah. Alat domain menegak termasuk: 6. Cryptohopper: platform kuantitatif berasaskan awan, menyokong 150 petunjuk teknikal. 7. Bitsgap:

C berfungsi dengan baik dalam pengaturcaraan sistem operasi masa nyata (RTOS), menyediakan kecekapan pelaksanaan yang cekap dan pengurusan masa yang tepat. 1) C memenuhi keperluan RTO melalui operasi langsung sumber perkakasan dan pengurusan memori yang cekap. 2) Menggunakan ciri berorientasikan objek, C boleh merancang sistem penjadualan tugas yang fleksibel. 3) C menyokong pemprosesan gangguan yang cekap, tetapi peruntukan memori dinamik dan pemprosesan pengecualian mesti dielakkan untuk memastikan masa nyata. 4) Pemrograman templat dan fungsi sebaris membantu dalam pengoptimuman prestasi. 5) Dalam aplikasi praktikal, C boleh digunakan untuk melaksanakan sistem pembalakan yang cekap.

Mengukur prestasi thread di C boleh menggunakan alat masa, alat analisis prestasi, dan pemasa tersuai di perpustakaan standard. 1. Gunakan perpustakaan untuk mengukur masa pelaksanaan. 2. Gunakan GPROF untuk analisis prestasi. Langkah -langkah termasuk menambah pilihan -pg semasa penyusunan, menjalankan program untuk menghasilkan fail gmon.out, dan menghasilkan laporan prestasi. 3. Gunakan modul Callgrind Valgrind untuk melakukan analisis yang lebih terperinci. Langkah -langkah termasuk menjalankan program untuk menghasilkan fail callgrind.out dan melihat hasil menggunakan kcachegrind. 4. Pemasa tersuai secara fleksibel dapat mengukur masa pelaksanaan segmen kod tertentu. Kaedah ini membantu memahami sepenuhnya prestasi benang dan mengoptimumkan kod.

Langkah -langkah utama dan langkah berjaga -jaga untuk menggunakan aliran rentetan dalam C adalah seperti berikut: 1. Buat aliran rentetan output dan tukar data, seperti menukar integer ke dalam rentetan. 2. Memohon untuk berseri struktur data kompleks, seperti menukar vektor ke dalam rentetan. 3. Beri perhatian kepada isu -isu prestasi dan mengelakkan penggunaan aliran rentetan yang kerap apabila memproses sejumlah besar data. Anda boleh mempertimbangkan menggunakan kaedah tambahan std :: string. 4. Perhatikan pengurusan ingatan dan elakkan penciptaan dan pemusnahan objek stream rentetan yang kerap. Anda boleh menggunakan semula atau menggunakan std :: stringstream.

Kaedah yang cekap untuk memasukkan data dalam MySQL termasuk: 1. Menggunakan sintaks Insertinto ... Sintaks, 2. Menggunakan perintah LoadDatainFile, 3. Menggunakan pemprosesan transaksi, 4. Laraskan saiz batch, 5. Lumpuhkan pengindeks
