Cet article est [ici](https://aiotadiary.wp.xdomain.jp/2020/02/27/espcn%e3%82%92%e7%94%a8%e3%81%84%e3%81% 9f% e8% b6% 85% e8% a7% a3% e5% 83% 8f% e3% 82% 92% e3% 82% 84% e3% 81% a3% e3% 81% a6% e3% 81% bf% Ceci est une réécriture de l'article e3% 81% 9f /) pour qiita.
En un mot, super-résolution signifie "augmenter la résolution de l'image". Lorsque vous entendez cela, vous pouvez penser que vous étirez simplement l'image, mais lorsque vous réduisez l'image, les informations de l'image d'origine sont inévitablement perdues. Faisons une simple vérification. Tout d'abord, réduisez de moitié la taille de l'image appropriée. Utilisez ensuite la méthode bilinéaire pour agrandir l'image afin qu'elle soit de la même taille que l'image d'origine. Le résultat est l'image ci-dessous. L'image de gauche est l'image ci-dessous, et l'image de droite est l'image qui a été réduite puis agrandie.
C'est difficile à comprendre en un coup d'œil, mais même si la résolution est la même, elle devient floue et les petites fonctionnalités disparaissent. La tâche de la super-résolution n'est pas seulement d'augmenter la résolution, mais de la convertir en une image haute résolution tout en compensant les petites fonctionnalités.
ESPCN (réseau neuronal convolutif sous-pixel efficace) est un modèle de super-résolution basé sur un réseau neuronal profond annoncé en 2016.
Un modèle similaire est le SRCNN (Super-Resolution Convolutional Neural Network) annoncé en 2015. Il s'agit d'un modèle qui utilise un réseau neuronal pour les tâches de super-résolution et le transforme en une image haute résolution avec trois couches de convolution.
Une particularité d'ESPCN est que lorsque vous augmentez la résolution, vous ajoutez généralement une opération appelée convolution inverse, mais cette opération peut générer un bruit de type grille. Pour surmonter cela, ESPCN augmente la résolution par une opération appelée Pixel Shuffle. Par exemple, si vous souhaitez doubler la taille d'une image, créez quatre images juste avant la sortie et combinez les quatre images dans une relation de position fixe pour la sortie.
J'ai appris en utilisant le code de ici et l'image obtenue par grattage. À propos, environ 10 000 images ont été utilisées pour l'apprentissage. L'image de gauche est l'image du bas, l'image du centre est réduite puis agrandie et l'image de droite utilise ESPCN.
Il y a un léger sentiment d'incongruité dans les détails par rapport à l'image d'origine, mais elle a été presque restaurée. Si vous l'utilisez, il semble que vous puissiez également augmenter la résolution des vidéos.
Cette fois, j'ai essayé la super résolution en utilisant ESPCN. Il semble intéressant d'essayer de créer des API en utilisant un tel modèle. De plus, il semble que vous puissiez également utiliser ce modèle pour augmenter la résolution des images générées à l'aide du GAN, etc.
Voici les sites et articles auxquels j'ai fait référence lors de la création de cet article.
[Image super-résolution: mise en œuvre / apprentissage ESPCN pytorch](https://nykergoto.hatenablog.jp/entry/2019/05/28/%E7%94%BB%E5%83%8F%E3%81% AE% E8% B6% 85% E8% A7% A3% E5% 83% 8F% E5% BA% A6% E5% 8C% 96% 3A_ESPCN_% E3% 81% AE_pytorch_% E5% AE% 9F% E8% A3% 85_ / _% E5% AD% A6% E7% BF% 92) Image Super-Resolution Using Deep Convolutional Networks(2015) Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network(2016)
Recommended Posts