chore(i18n): sync translations with latest source changes (chunk 3/4, 8 changes)
This commit is contained in:
parent
e2c201135e
commit
7a16e4d00e
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,34 @@
|
|||
# ការវិភាគចំណាត់ថ្នាក់សត្វចិញ្ចឹម Oxford ដោយប្រើការរៀនផ្ទេរ
|
||||
|
||||
ការចំណាយពេលក្នុងមុខវិជ្ជាពី [មូលដ្ឋានសិក្សា AI សម្រាប់អ្នកចាប់ផ្តើម](https://github.com/microsoft/ai-for-beginners)។
|
||||
|
||||
## បេសកកម្ម
|
||||
|
||||
សូមច្របល់ថាអ្នកត្រូវការធ្វើកម្មវិធីមួយសម្រាប់ដបសត្វចិញ្ចឹម ដើម្បីកំណត់បញ្ជីសត្វគ្រប់ប្រភេទ។ មុខងារល្អមួយនៃកម្មវិធីដូចនេះគឺការរកឃើញប្រភេទសត្វដោយស្វ័យប្រវត្តិពីរូបភាព។ ក្នុងការចំណាយពេលនេះ យើងនឹងប្រើការរៀនផ្ទេរ ដើម្បីចំណាត់ថ្នាក់រូបភាពសត្វពិតប្រាកដពីទិន្នន័យសត្វ [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/)។
|
||||
|
||||
## តុបតែងទិន្នន័យ
|
||||
|
||||
យើងនឹងប្រើទិន្នន័យ [Oxford-IIIT](https://www.robots.ox.ac.uk/~vgg/data/pets/) ដើម ដែលមានចំណាត់ថ្នាក់ចំនួន ៣៥ ប្រភេទនៃឆ្កែ និងពីសចិញ្ចឹម។
|
||||
|
||||
ដើម្បីទាញយកទិន្នន័យនេះ សូមប្រើកូដខាងក្រោម៖
|
||||
|
||||
```python
|
||||
!wget https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz
|
||||
!tar xfz images.tar.gz
|
||||
!rm images.tar.gz
|
||||
```
|
||||
|
||||
## ការចាប់ផ្ដើមសៀវភៅកំណត់ត្រា
|
||||
|
||||
ចាប់ផ្តើមការសិក្សានៅលើ [OxfordPets.ipynb](OxfordPets.ipynb)
|
||||
|
||||
## ចំណាំក្រោយ
|
||||
|
||||
ការរៀនផ្ទេរ និងបណ្តាញដែលបានបណ្តុះបណ្តាលមុនអនុញ្ញាតឲ្យយើងដោះស្រាយបញ្ហាចំណាត់ថ្នាក់រូបភាពពិភពពិតបានយ៉ាងងាយស្រួល។ ទោះជាយ៉ាងណា បណ្តាញដែលបានបណ្តុះបណ្តាលមុនដំណើរការល្អលើរូបភាពដែលមានប្រភេទជាងគ្នា ហើយបើយើងចាប់ផ្តើមចំណាត់ថ្នាក់រូបភាពខុសគ្នាខ្លាំង (ឧ. រូបភាពវេជ្ជសាស្ត្រ) យើងប្រហែលជាធ្វើបានល្អតិចជាង។
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**ការបញ្ជាក់**:
|
||||
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែកម្មវិធី AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំព្យាយាមឲ្យមានភាពត្រឹមត្រូវ សូមកត់សម្គាល់ថាការបកប្រែកម្មវិធីអាចមានកំហុស ឬការខុសច្រឡំ។ ឯកសារដើមនៅក្នុងភាសាមូលដ្ឋានគួរត្រូវបានគិតថាជាឈើនាទីពិតប្រាកដ។ សម្រាប់ព័ត៌មានសំខាន់ៗ យើងផ្តល់អនុសាសន៍ឲ្យប្រើការបកប្រែដោយមនុស្សជំនាញ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំនិងការបកប្រែដូច្នេះទេ។
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,104 @@
|
|||
# Autoencoders
|
||||
|
||||
នៅពេលបណ្ដុះបណ្ដាល CNNs មួយក្នុងចំណោមបញ្ហាគឺថា យើងត្រូវការទិន្នន័យមានស្លាកច្រើន។ ក្នុងករណីចាត់ថ្នាក់រូបភាព យើងត្រូវបំបែករូបភាពទៅជាចំណាត់ថ្នាក់ផ្សេងៗ ដែលជាការខិតខំដាក់ទៅដៃ។
|
||||
|
||||
## [ប្រឡងមុនវគ្គបង្រៀន](https://ff-quizzes.netlify.app/en/ai/quiz/17)
|
||||
|
||||
ទោះយ៉ាងណា យើងអាចចង់ប្រើទិន្នន័យដើម (គ្មានស្លាក) សម្រាប់បណ្ដុះបណ្ដាលម៉ូដែល CNN ដល់ការដកស្រង់លក្ខណ: ដែលហៅថា **ការសិក្សាដោយខ្លួនឯង**។ ជំនួសស្លាក យើងនឹងប្រើរូបភាពបណ្ដុះបណ្ដាលទាំងជាការបញ្ចូលនិងចេញនៃបណ្តាញ។ គំនិតសំខាន់នៃ **autoencoder** គឺយើងនឹងមាន **បណ្តាញ encoder** ដែលបម្លែងរូបភាពបញ្ចូលទៅជាផ្លូវចំណុចកំណត់មួយ (latant space) (ធម្មតាជាវ៉ិកទ័រមានទំហំតូចជាង) បន្ទាប់មកជាបណ្តាញ **decoder** ដែលមានគោលបំណងបង្កើតឡើងវិញរូបភាពដើម។
|
||||
|
||||
> ✅ [autoencoder](https://wikipedia.org/wiki/Autoencoder) គឺជាប្រភេទបណ្តាញប្រព័ន្ធប្រសាទសិប្បនិម្មិត នាដែលប្រើដើម្បីសិក្សាកូដ៖ទិន្នន័យគ្មានស្លាកយ៉ាងមានប្រសិទ្ធភាព។
|
||||
|
||||
ដោយសារយើងបណ្ដុះបណ្ដាល autoencoder ដើម្បីចាប់យកព័ត៌មានពីរូបភាពដើមជាច្រើនមួយសម្រាប់ការបង្កើតឡើងវិញបានត្រឹមត្រូវបំផុត ដូច្នេះបណ្តាញព្យាយាមស្វែងរក **embedding** ល្អបំផុត សម្រាប់ចាប់យកន័យរបស់រូបភាព។
|
||||
|
||||

|
||||
|
||||
> រូបភាពពី [Keras blog](https://blog.keras.io/building-autoencoders-in-keras.html)
|
||||
|
||||
## សេណារីយ៉ូសម្រាប់ការប្រើ Autoencoders
|
||||
|
||||
ក្នុងពេលបង្កើតឡើងវិញរូបភាពដើមមើលទៅមិនមានប្រយោជន៍ដោយខ្លួនវាទេ មានសេណារីយ៉ូខ្លះៗដែល autoencoders មានប្រយោជន៍ខ្លាំង:
|
||||
|
||||
* **បន្ថយវិមាត្ររូបភាពសម្រាប់ការមើលមុខងារ** ឬ **បណ្តុះបណ្តាល embedding រូបភាព**។ ជាទូទៅ autoencoders ផ្តល់លទ្ធផលល្អជាង PCA ពីព្រោះវាគិតគ្រោងដល់លក្ខណៈលំហរប្រសាទ និងលក្ខណៈមានជាលំដាប់ជាន់។
|
||||
* **ការដកសំឡេងរំខាន (Denoising)** គឺជាការដកសំឡេងរំខានចេញពីរូបភាព។ ពីព្រោះសំឡេងរំខានពេញនិយមផ្ទុកព័ត៌មានមិនទាន់ប្រយោជន៍ជាច្រើន autoencoder មិនអាចដាក់វាទាំងអស់នាពេលចំណុច latant តូចបានទេ ដូច្នេះវាចាប់យកតែផ្នែកសំខាន់ៗនៃរូបភាពតែប៉ុណ្ណោះ។ ពេលបណ្ដុះបណ្ដាល denoiser យើងចាប់ផ្ដើមពីរូបភាពដើម ហើយប្រើរូបភាពដែលបន្ថែមសំឡេងរំខានវិជ្ជមានជាការបញ្ចូលសម្រាប់ autoencoder។
|
||||
* **Super-resolution** ការបង្កើនមាត្រូបភាព។ យើងចាប់ផ្ដើមពីរូបភាពមាន resolution ខ្ពស់ ហើយប្រើរូបភាពមាន resolution ទាបជាការបញ្ចូល។
|
||||
* **ម៉ូដែលបង្កើតថ្មីបន្ទាន់ (Generative models)** កាលណាយើងបានបណ្ដុះបណ្ដាល autoencoder រួច បណ្តាញ decoder អាចប្រើសម្រាប់បង្កើតវត្ថុថ្មីពីវ៉ិកទ័រលាតង់បែបចៃដន្យ។
|
||||
|
||||
## Variational Autoencoders (VAE)
|
||||
|
||||
autoencoders ប្រពៃណីបន្ថយវិមាត្រទិន្នន័យបញ្ចូលមួយវិធីណាមួយ ដើម្បីស្វែងរកលក្ខណ:សំខាន់ៗនៃរូបភាពបញ្ចូល។ ប៉ុន្តែវ៉ិកទ័រលាតង់ភាគច្រើនមិនមានអត្ថន័យច្បាស់ទេ។ ក្នុងពាក្យផ្សេង ការយក dataset MNIST ជាគំរូ ការស្វែងរកឥណទានថាតើលេខណាដែលតំណាងឲ្យវ៉ិកទ័រលាតង់នេះគ្មានភាពងាយស្រួលទេ ពីព្រោះវ៉ិកទ័រលាតង់ជិតគ្នាមិនចាំបាច់តំណាងឲ្យលេខដូចគ្នា។
|
||||
|
||||
ផ្សេងពីនេះ ដើម្បីបណ្ដុះម៉ូដែល *បង្កើត* វាល្អជាងក្នុងការមានចំនេះដឹងពីលាតង់ស្ពេស។ គំនិតនេះនាំយើងទៅកាន់ **variational auto-encoder** (VAE)។
|
||||
|
||||
VAE គឺជា autoencoder ដែលរៀនព្យាករណ៍ *ចែកចាយស្ថិតិ* នៃប៉ារ៉ាម៉ែត្រលាតង់ ឬហៅថា **បម្រែបម្រួលលាតង់**។ ឧទាហរណ៍ យើងចង់ឲ្យវ៉ិកទ័រលាតង់ចែកចាយធម្មតាជាមួយមធ្យម z<sub>mean</sub> និងស្ដង់ដារបំបែក z<sub>sigma</sub> (ទាំងមធ្យម និងស្ដង់ដារបំបែកជាវ៉ិកទ័រមានវិមាត្រមួយ d)។ Encoder នៅក្នុង VAE រៀនព្យាករណ៍ប៉ារ៉ាម៉ែត្រទាំងនេះ ហើយ decoder ទទួលតម្លៃវ៉ិកទ័រចៃដន្យពីចែកចាយនេះដើម្បីបង្កើតឡើងវិញវត្ថុ។
|
||||
|
||||
សង្ខេប:
|
||||
|
||||
* ពីវ៉ិកទ័របញ្ចូល យើងព្យាករណ៍ `z_mean` និង `z_log_sigma` (ជំនួសការព្យាករណ៍ស្ដង់ដារបំបែកដោយផ្ទាល់ យើងព្យាករណ៍លោករីធម៌វា)
|
||||
* យើងគំនូរវ៉ិកទ័រ `sample` មួយពីចែកចាយ N(z<sub>mean</sub>,exp(z<sub>log_sigma</sub>))
|
||||
* decoder ព្យាយាមដកស្រង់រូបភាពដើមជាមួយ `sample` ជាវ៉ិកទ័របញ្ចូល
|
||||
|
||||
<img src="../../../../../translated_images/km/vae.464c465a5b6a9e25.webp" width="50%">
|
||||
|
||||
> រូបភាពពី [this blog post](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) ដោយ Isaak Dykeman
|
||||
|
||||
Variational auto-encoders ប្រើមុខងារខាតខាតស្មុគស្មាញមានពីរផ្នែក៖
|
||||
|
||||
* **Reconstruction loss** ខាតខាតបង្ហាញពីភាពជិតស្និទ្ធរវាងរូបភាពដែលបានបង្កើតឡើងវិញនិងគោលដៅ (អាចជា Mean Squared Error ឬ MSE)។ វាគឺជាផ្នែកខាតដដែលនឹងក្នុង autoencoders ប្រពៃណី។
|
||||
* **KL loss** ដែលធានាថាចែកចាយអថេរលាតង់នៅជិតចែកចាយធម្មតា។ វា dựa trên khái niệm [Kullback-Leibler divergence](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - មាត្រយក្សប៉ាន់ស្មានភាពដូចគ្នារវាងចែកចាយស្ថិតិពីរដែលខុសគ្នា។
|
||||
|
||||
អត្ថប្រយោជន៍សំខាន់នៃ VAEs គឺវាអនុញ្ញាតឲ្យយើងបង្កើតរូបភាពថ្មីៗបានរសាយថាគោល ដោយសារយើងដឹងថាចែកចាយណាដែលយើងគួរតែគំនូរវ៉ិកទ័រលាតង់ពីវា។ ឧទាហរណ៍ ប្រសិនបើយើងបណ្ដុះបណ្ដាល VAE ជាមួយវ៉ិកទ័រលាតង់ 2D លើ MNIST គេអាចប្ដូរប្រភេទសមាសធាតុរបស់វ៉ិកទ័រលាតង់ ដើម្បីទទួលបានលេខខុសៗគ្នា៖
|
||||
|
||||
<img alt="vaemnist" src="../../../../../translated_images/km/vaemnist.cab9e602dc08dc50.webp" width="50%"/>
|
||||
|
||||
> រូបភាពដោយ [Dmitry Soshnikov](http://soshnikov.com)
|
||||
|
||||
មើលពីរបៀបរូបភាពរួមបញ្ចូលគ្នា ខណៈពេលយើងចាប់ផ្ដើមទទួលបានវ៉ិកទ័រលាតង់ពីផ្នែកខុសៗគ្នានៃលាតង់ស្ពេស។ យើងក៏អាចមើលមុខងារនេះក្នុង 2D ផងដែរ៖
|
||||
|
||||
<img alt="vaemnist cluster" src="../../../../../translated_images/km/vaemnist-diag.694315f775d5d666.webp" width="50%"/>
|
||||
|
||||
> រូបភាពដោយ [Dmitry Soshnikov](http://soshnikov.com)
|
||||
|
||||
## ✍️ លំហាត់៖ Autoencoders
|
||||
|
||||
ស្វែងយល់បន្ថែមអំពី autoencoders នៅក្នុង notebook ដូចតទៅ៖
|
||||
|
||||
* [Autoencoders នៅក្នុង TensorFlow](AutoencodersTF.ipynb)
|
||||
* [Autoencoders នៅក្នុង PyTorch](AutoEncodersPyTorch.ipynb)
|
||||
|
||||
## លក្ខណៈសម្បត្តិរបស់ Autoencoders
|
||||
|
||||
* **ទិន្នន័យជាក់លាក់** - វាដំណើរការល្អតែជាមួយប្រភេទរូបភាពដែលវាបានបណ្ដុះបណ្ដាល។ ឧទាហរណ៍ ប្រសិនបើយើងបណ្ដុះបណ្ដាលបណ្តាញ super-resolution លើ ផ្កា វានឹងមិនល្អសម្រាប់ រូបភាពថតបុរសនារីទេ ព្រោះបណ្តាញអាចផលិតរូបភាពមាន resolution ខ្ពស់ដោយយកព័ត៌មានលម្អិតពីលក្ខណៈដែលបានរៀនពីទិន្នន័យបណ្ដុះបណ្ដាល។
|
||||
* **បាត់បង់** - រូបភាពដែលបានបង្កើតឡើងវិញមិនដូចនឹងរូបភាពដើមទេ។ សេចក្តីធម្មជាតិនៃការបាត់បង់ត្រូវបានកំណត់ដោយ *មុខងារខាតខាត* ដែលបានប្រើក្នុងពេលបណ្ដុះបណ្ដាល។
|
||||
* ដំណើរការជាមួយ **ទិន្នន័យគ្មានស្លាក**
|
||||
|
||||
## [ប្រឡងបន្ទាប់វគ្គបង្រៀន](https://ff-quizzes.netlify.app/en/ai/quiz/18)
|
||||
|
||||
## សេចក្តីសន្និដ្ឋាន
|
||||
|
||||
ក្នុងមេរៀននេះ អ្នកបានរៀនអំពីប្រភេទ autoencoders ដែលមានស្រាប់សម្រាប់វិទ្យាសាស្ត្រអោយ ។ អ្នកបានរៀនរបៀបបង្កើតវា និងរបៀបប្រើវា ដើម្បីបង្កើតឡើងវិញរូបភាព។ អ្នកក៏បានរៀនអំពី VAE និងរបៀបប្រើវា ដើម្បីបង្កើតរូបភាពថ្មី។
|
||||
|
||||
## 🚀 thách thức
|
||||
|
||||
ក្នុងមេរៀននេះ អ្នកបានរៀនអំពីការប្រើ autoencoders សម្រាប់រូបភាព។ តែក៏អាចប្រើសម្រាប់តន្ត្រីបានដែរ! សូមពិនិត្យមើលគម្រោង MusicVAE របស់ Magenta [MusicVAE](https://magenta.tensorflow.org/music-vae) ដែលប្រើ autoencoders ដើម្បីរៀនបង្កើតឡើងវិញតន្ត្រី។ សូមធ្វើ [ការប្រឡង](https://colab.research.google.com/github/magenta/magenta-demos/blob/master/colab-notebooks/Multitrack_MusicVAE.ipynb) ជាមួយបណ្ណាល័យនេះ ដើម្បីមើលថាអ្នកអាចបង្កើតអ្វីបានខ្លះ។
|
||||
|
||||
## [ប្រឡងបន្ទាប់វគ្គបង្រៀន](https://ff-quizzes.netlify.app/en/ai/quiz/16)
|
||||
|
||||
## ការពិនិត្យឡើងវិញ និង សិក្សាឯករាជ្យ
|
||||
|
||||
សម្រាប់យោង អានបន្ថែមអំពី autoencoders នៅក្នុងធនធានទាំងនេះ៖
|
||||
|
||||
* [Building Autoencoders in Keras](https://blog.keras.io/building-autoencoders-in-keras.html)
|
||||
* [Blog post on NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/)
|
||||
* [Variational Autoencoders Explained](https://kvfrans.com/variational-autoencoders-explained/)
|
||||
* [Conditional Variational Autoencoders](https://ijdykeman.github.io/ml/2016/12/21/cvae.html)
|
||||
|
||||
## ការចាត់តួនាទី
|
||||
|
||||
នៅចុង [notebook នេះប្រើ TensorFlow](AutoencodersTF.ipynb) អ្នកនឹងឃើញ 'task' - ប្រើវាជាការចាត់តួនាទីរបស់អ្នក។
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**ការបដិសេធ**៖
|
||||
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលយើងខិតខំរកភាពត្រឹមត្រូវ សូមយល់ថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុសឬគ្មានភាពត្រឹមត្រូវ។ ឯកសារដើមនៅក្នុងភាសាមូលដ្ឋានគួរត្រូវបានយកជាអក្សរដើមដោយផ្លូវការជាចម្បង។ សម្រាប់ព័ត៌មានសំខាន់ៗ សូមណែនាំឱ្យប្រើការបកប្រែដោយមនុស្សជំនាញវិជ្ជាជីវៈ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកប្រែខុសពីការប្រើប្រាស់បកប្រែនេះឡើយ។
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,105 @@
|
|||
# បណ្តាញរូបស្ទុះផ្សងប្រកួត
|
||||
|
||||
នៅក្នុងផ្នែកមុន យើងបានរៀនអំពី **ម៉ូដែលរូប**: ម៉ូដែលដែលអាចបង្កើតរូបភាពថ្មីៗដែលស្រដៀងនឹងរូបភាពនៅក្នុងឈុតទិន្នន័យបណ្ដុះបណ្ដាល។ VAE គឺជាឧទាហរណ៍ល្អមួយនៃម៉ូដែលរូប។
|
||||
|
||||
## [សំណួរមុនវគ្គ](https://ff-quizzes.netlify.app/en/ai/quiz/19)
|
||||
|
||||
យ៉ាងណាក៏ដោយ ប្រសិនបើយើងព្យាយាមបង្កើតអ្វីឡើយមានអត្ថន័យជាក់លាក់ ដូចជាផ្សឹកនៅកម្រិតផ្ដល់ម៉ូដែលសមស្រួល ពី VAE យើងនឹងឃើញថា ការបណ្ដុះបណ្ដាលមិនត្រូវបានបញ្ចប់បានល្អទេ។ សម្រាប់ករណីនេះ យើងត្រូវរៀនអំពីស្ថាបัตិកម្មមួយផ្សេងទៀតដែលមានគោលបំណងច្បាស់លាស់សម្រាប់ម៉ូដែលរូប - **បណ្តាញរូបស្ទុះផ្សងប្រកួត** ឬ GAN។
|
||||
|
||||
គំនិតសំខាន់នៃ GAN គឺ មានបណ្តាញសរសៃសួរពីរដែលនឹងត្រូវបានបណ្ដុះប្រឆាំងគ្នា៖
|
||||
|
||||
<img src="../../../../../translated_images/km/gan_architecture.8f3a5ab62b8d5d69.webp" width="70%"/>
|
||||
|
||||
> រូបភាពដោយ [Dmitry Soshnikov](http://soshnikov.com)
|
||||
|
||||
> ✅ វប្បធម៌តិចតួច៖
|
||||
> * **ម៉ូឌឺរេត** គឺជាបណ្តាញ ដែលទទួលវ៉ិចទ័របែបចៃដន្យ មួយចំនួន ហើយបង្កើតរូបភាពជាលទ្ធផល
|
||||
> * **អ្នកបំបែក** គឺជាបណ្តាញដែលទទួលរូបភាពមួយហើយវាគួរតែប្រាប់ថាតើវាជារូបភាពពិត (ពីឈុតទិន្នន័យបណ្ដុះបណ្ដាល) ឬវាត្រូវបានបង្កើតដោយម៉ូឌឺរេត។ វាមានន័យមួយជាស្ដែងថាជាអ្នកចាត់ថ្នាក់រូបភាពមួយ។
|
||||
|
||||
### អ្នកបំបែក
|
||||
|
||||
ស្ថាបាតិកម្មរបស់អ្នកបំបែក មិនខុសពីបណ្តាញចាត់ថ្នាក់រូបភាពធម្មតាទេ។ ក្នុងករណីសាមញ្ញ វាអាចជាអ្នកចាត់ថ្នាក់ Fully-connected ប៉ុន្តែភាគច្រើនវានឹងជាបណ្តាញ [Convolutional](../07-ConvNets/README.md)។
|
||||
|
||||
> ✅ GAN ដែលផ្អែកលើបណ្តាញ convolutional ហៅថា [DCGAN](https://arxiv.org/pdf/1511.06434.pdf)
|
||||
|
||||
CNN Discriminator រួមមានស្រទាប់ដូចតទៅ៖ ខ្សែបង្វិលជាច្រើន និង អង្គុយស្លាប (poolings) ដោយមានទំហំដែនលក្ខណៈកាត់បន្ថយ ហើយមានពីរឬច្រើនស្រទាប់ fully-connected ដើម្បីទទួលបាន "វ៉ិចទ័រឡักษณะ", ហើយចុងក្រោយជាអ្នកចាត់ថ្នាក់ឌីហ្សាញប៊ីណារីមួយ។
|
||||
|
||||
> ✅ ការអង្គុយស្លាប (pooling) ក្នុងសារៈបច្ចេកទេសនេះគឺជាបច្ចេកទេសកាត់បន្ថយទំហំរូបភាព។ "ស្រទាប់ pooling កាត់បន្ថយវិមាត្រទិន្នន័យ ដោយបញ្ចូលលទ្ធផលនៃក្រុមណឺរ៉ូននៅស្រទាប់មួយ ទៅជា នឺរ៉ូនតែមួយនៅស្រទាប់បន្ទាប់។" - [ប្រភព](https://wikipedia.org/wiki/Convolutional_neural_network#Pooling_layers)
|
||||
|
||||
### ម៉ូឌឺរេត
|
||||
|
||||
ម៉ូឌឺរេតមានភាពលំបាកបន្តិច។ អ្នកអាចយល់ថាវាអាចមានរៀបរាប់ជាម៉ូឌឺរេតមុខងារក្រឡាផ្ទួន។ ចាប់ផ្តើមពីវ៉ិចទ័រលាក់ (latent vector) (ជំនួសវ៉ិចទ័រឡក្ខណៈ) វាមានស្រទាប់ fully-connected មួយដើម្បីបម្លែងវាទៅទំហំ/រាងត្រូវការ បន្ទាប់មកជាគ្រឿងបន្ថែម deconvolutions និងកំណត់ទំហំឡើងវិញ។ វាស្រដៀងនឹងផ្នែក *decoder* របស់ [autoencoder](../09-Autoencoders/README.md)។
|
||||
|
||||
> ✅ ព្រោះស្រទាប់ convolution ត្រូវបានអនុវត្តជាគ្រឿងត្រង់បន្ទាត់មួយក្នុងការស្ទួចរូបភាព ការបន្សល់ត្រូវស្រដៀងនឹង convolution ហើយអាចអនុវត្តបានដោយប្រើលទ្ធផលស្រទាប់ដូចគ្នា។
|
||||
|
||||
<img src="../../../../../translated_images/km/gan_arch_detail.46b95fd366f8e543.webp" width="70%"/>
|
||||
|
||||
> រូបភាពដោយ [Dmitry Soshnikov](http://soshnikov.com)
|
||||
|
||||
### ការបណ្ដុះបណ្ដាល GAN
|
||||
|
||||
GAN ត្រូវបានហៅថា **ប្រឆាំងគ្នា** ព្រោះមានការប្រកួតប្រជែងជាបន្តរវាងម៉ូឌឺរេត និងអ្នកបំបែក។ ក្នុងការប្រកួតនេះ ទាំងម៉ូឌឺរេត និងអ្នកបំបែក ធ្វើការកែលម្អខ្លួន ដូច្នេះបណ្តាញរៀនបង្កើតរូបភាពល្អប្រសើរឡើងបន្តិចៗ។
|
||||
|
||||
ការបណ្ដុះបណ្ដាលប្រព្រឹត្តទៅក្នុងពីរដំណាក់កាល៖
|
||||
|
||||
* **បណ្ដុះបណ្ដាលអ្នកបំបែក**។ បេសកកម្មនេះគឺច្បាស់លាស់៖ យើងបង្កើតកុងតែម្យ៉ាងនៃរូបភាពដោយម៉ូឌឺរេត ប្រើស្លាកលេខ 0 សម្រាប់រូបភាពក្លែងបន្លំ ហើយយកកុងតែកមួយនៃរូបភាពពីឈុតទិន្នន័យបញ្ចូល (មានស្លាក 1 រូបភាពពិត)។ យើងទទួលបាន *ការបាត់បង់អ្នកបំបែក* មួយ ហើយអនុវត្តការផ្ទុះត្រឡប់ក្រោយ។
|
||||
* **បណ្ដុះបណ្ដាលម៉ូឌឺរេត**។ វាត្រូវការលំបាកបន្តិច ព្រោះយើងមិនដឹងលទ្ធផលដែលចាំបាច់សម្រាប់ម៉ូឌឺរេតដោយផ្ទាល់ទេ។ យើងយកបណ្តាញ GAN ទាំងមូល ដែលរួមមានម៉ូឌឺរេត និងអ្នកបំបែក បញ្ចូលវ៉ិចទ័រចៃដន្យមួយចំនួន ហើយរំពឹងលទ្ធផលជា 1 (តំណាងឲ្យរូបភាពពិត)។ បន្ទាប់មក យើងប៊ិចបន្តិចបង្ហាប់ប៉ារ៉ាម៉ែត្រ của អ្នកបំបែក (មិនចង់ឲ្យវាបណ្ដុះនៅជំហាននេះ) ហើយអនុវត្តការផ្ទុះត្រឡប់ក្រោយ។
|
||||
|
||||
រយៈពេលនេះ ការបាត់បង់របស់ទាំងម៉ូឌឺរេត និងអ្នកបំបែកមិនចុះចាញ់យ៉ាងមានន័យសំខាន់ទេ។ នៅក្នុងលក្ខខណ្ឌអ идеល ពួកវាគួរតែបង្វិលមកវិញ ការសម្របសម្រួលនៃទាំងពីរបណ្តាញប្រសើរឡើង។
|
||||
|
||||
## ✍️ លំហាត់៖ GANs
|
||||
|
||||
* [កំណត់ត្រារបស់ GAN ក្នុង TensorFlow/Keras](GANTF.ipynb)
|
||||
* [កំណត់ត្រារបស់ GAN ក្នុង PyTorch](GANPyTorch.ipynb)
|
||||
|
||||
### បញ្ហាក្នុងការបណ្ដុះ GAN
|
||||
|
||||
GAN ត្រូវបានគេចាត់ទុកថាលំបាកពិសេសក្នុងការបណ្ដុះ។ មានបញ្ហាខ្លះៗ៖
|
||||
|
||||
* **ការធ្លាក់បាត់មូដ** (Mode Collapse)។ ពាក្យនេះមានន័យថា ម៉ូឌឺរេតរៀនបង្កើតរូបភាពជោគជ័យមួយដែលបញ្ឆោតអ្នកបំបែកបាន តែមិនបង្កើតជារូបភាពច្រើនផ្សេងៗគ្នា។
|
||||
* **ការពឹងផ្អែកលើប៉ារ៉ាម៉ែត្រលេខកំណត់**។ ជាញឹកញាប់ អ្នកអាចឃើញ GAN មិនបញ្ចប់ទេ ហើយបន្ទាប់មកអត្រា រៀនធ្លាក់ធំទូលៃរហូតដល់បញ្ចប់។
|
||||
* គ្រប់គ្រង **សមតុល្យ** រវាងម៉ូឌឺរេត និងអ្នកបំបែក។ ជាលក្ខណៈភាគច្រើន ការបាត់បង់អ្នកបំបែកអាចធ្លាក់ចុះទៅសូន្យយ៉ាងលឿន ដែលធ្វើឲ្យម៉ូឌឺរេតមិនអាចបណ្ដុះបណ្ដាលបន្ថែមបានទៀត។ ដើម្បីដោះស្រាយនេះ យើងអាចព្យាយាមកំណត់អត្រាររៀនខុសគ្នា សម្រាប់ម៉ូឌឺរេត និងអ្នកបំបែក ឬលាតត្រដាងការបណ្ដុះអ្នកបំបែក ប្រសិនបើការបាត់បង់ចុះខ្លាំងរួចហើយ។
|
||||
* ការបណ្ដុះសម្រាប់ **កម្រិតផ្ដល់ខ្ពស់**។ វា phản ánh បញ្ហាដូចគ្នាជាមួយ autoencoders ដែលបញ្ហានេះកើតឡើង ព្រោះការស្តារបណ្តាស្រទាប់សាច់ញាតិ convolutional network ច្រើនពេក បង្កើតអត្ថិភាពមិនល្អ។ បញ្ហានេះតែងតែដោះស្រាយជាមួយ **ការលូតលាស់ដំបូងពីតិចទៅច្រើន** (progressive growing), ដែលជារៀបចំស្រទាប់ជាច្រើននៅតិចកម្រិត នៅពេលដំបូង ហើយបន្ទាប់មក "ដោះបិទ" ឬ បន្ថែមស្រទាប់សរសើរ។ ផ្លូវដោះស្រាយមួយផ្សេងទៀតគឺបន្ថែមការតភ្ជាប់បន្ថែមរវាងស្រទាប់ និងបណ្ដុះនៅកម្រិតជាច្រើនពេលមួយ - មើល [Multi-Scale Gradient GANs paper](https://arxiv.org/abs/1903.06048) សម្រាប់ព័ត៌មានលម្អិត។
|
||||
|
||||
## ការបម្លែងរចនាបថ (Style Transfer)
|
||||
|
||||
GANs ជាវិធីដ៏ល្អសម្រាប់បង្កើតរូបភាពសិល្បៈមួយ។ បច្ចេកទេសមួយទៀតគឺហៅថា **ការបម្លែងរចនាបថ** ដែលយករូបភាពមួយ **រូបភាពមាតិកា** ហើយគូរឡើងវិញក្នុងរចនាបថផ្សេងទៀតដោយប្រើតម្រង់ពី **រូបភាពរចនាបថ**។
|
||||
|
||||
វិធីសាស្ត្រដែលវាធ្វើការនោះគឺដូចខាងក្រោម៖
|
||||
* យើងចាប់ផ្តើមពីរូបភាពសំពាធសំឡេងចៃដន្យ (ឬរូបភាពមាតិកា ប៉ុន្តេល្មត់ដែលយល់មានងាយ សម្រាប់រៀនគឺចាប់ពីសំពាធសំឡេងចៃដន្យ)
|
||||
* គោលដៅរបស់យើងគឺបង្កើតរូបភាពដែលនៅជិតរូបភាពពីរដូចជា រូបភាពមាតិកា និង រូបភាពរចនាបថ។ វាត្រូវបានវាយតម្លៃដោយមុខងារបាត់បង់ពីរដូចជា៖
|
||||
- **ការបាត់បង់មាតិកា** គណនាពីលក្ខណៈដែលបានដកស្រង់ដោយ CNN នៅស្រទាប់មួយចំនួន ពីរូបភាពបច្ចុប្បន្ន និងរូបភាពមាតិកា
|
||||
- **ការបាត់បង់រចនាបថ** គណនារវាងរូបភាពបច្ចុប្បន្ន និង រូបភាពរចនាបថ នៅលើវិធីឆ្លាតវៃ ដោយប្រើម៉ាទ្រីស Gram (ព័ត៌មានបន្ថែមនៅក្នុង [កំណត់ត្រាឧទាហរណ៍](StyleTransfer.ipynb))
|
||||
* ដើម្បីធ្វើឲ្យរូបភាពរលោង និងយកសំឡេងចេញ យើងបញ្ចូលមុខងារ **Variation loss** ដែលគណនាដាច់ដោយឡែកមធ្យមភាពរវាងភិចសែលជិតៗគ្នា
|
||||
* វដ្តកែតម្រូវសំខាន់កែប្រែរូបភាពបច្ចុប្បន្នដោយប្រើលំហ៍ព្រំ (gradient descent) ឬអាល់ករីធម៍បំបាត់បាត់ផ្សេងៗ ដើម្បីបន្ថយការបាត់បង់សរុប ដែលជាចំនួនបំណុលទម្រង់ទម្រង់ជាការសរុបនៃបីការបាត់បង់។
|
||||
|
||||
## ✍️ ឧទាហរណ៍៖ [ការបម្លែងរចនាបថ](StyleTransfer.ipynb)
|
||||
|
||||
## [សំណួរបន្ទាប់វគ្គ](https://ff-quizzes.netlify.app/en/ai/quiz/20)
|
||||
|
||||
## 결론
|
||||
|
||||
នៅក្នុងមេរៀននេះ អ្នកបានរៀនអំពី GAN និងរបៀបបណ្ដុះវា។ អ្នកក៏បានស្គាល់ពីបញ្ហាពិសេសដែលបណ្តាញសរសៃសួរប្រភេទនេះអាចប្រឈមមុខ និងយុទ្ធសាស្ត្រខ្លះៗដើម្បីដោះស្រាយវា។
|
||||
|
||||
## 🚀 챌린지
|
||||
|
||||
រត់តាម [កំណត់ត្រាបម្លែងរចនាបថ](StyleTransfer.ipynb) ដោយប្រើរូបភាពខ្លួនឯង។
|
||||
|
||||
## ការត្រួតពិនិត្យ & រៀនដោយខ្លួនឯង
|
||||
|
||||
សម្រាប់យោង សូមអានបន្ថែមអំពី GAN នៅក្នុងធនធានទាំងនេះ៖
|
||||
|
||||
* Marco Pasini, [10 មេរៀនដែលខ្ញុំបានរៀនពីការបណ្ដុះ GANs តួរៀលមួយឆ្នាំ](https://towardsdatascience.com/10-lessons-i-learned-training-generative-adversarial-networks-gans-for-a-year-c9071159628)
|
||||
* [StyleGAN](https://en.wikipedia.org/wiki/StyleGAN), ស្ថាបតិកម្ម GAN *de facto* ដែលគួរតែជៀសជាត
|
||||
* [បង្កើតសិល្បៈរូបដោយ GANs នៅលើ Azure ML](https://soshnikov.com/scienceart/creating-generative-art-using-gan-on-azureml/)
|
||||
|
||||
## ការបំពេញការងារ
|
||||
|
||||
ចូលមកមើលកំណត់ត្រាតែមួយក្នុងពីរកំណត់ត្រាដែលទាក់ទងទៅមេរៀននេះ ហើយបណ្ដុះ GAN លើរូបភាពរបស់អ្នក។ អ្នកអាចបង្កើតអ្វីបាន?
|
||||
|
||||
---
|
||||
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
||||
**ការបញ្ជាក់**៖
|
||||
ឯកសារនេះបានបំលែងជាភាសាខ្មែរ ដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខិតខំដល់ភាពត្រឹមត្រូវ សូមយល់ព្រមថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវ។ ឯកសារដើមនៅភាសាបុរាណគួរត្រូវបានគេជាឯកសារដែលមានអំណាច។ សម្រាប់ព័ត៌មានសំខាន់ សូមណែនាំឲ្យប្រើការបកប្រែដោយអ្នកជំនាញមនុស្ស។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកបញ្ចេញមេនខុសពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
|
||||
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
|
||||
Loading…
Reference in New Issue