محاولة تشغيل شبكات GAN في OpenVINO

في مكتبة OpenVINO في حديقة الحيوان المفتوحة نموذج نموذج مستودع يحتوي على العديد من أنواع مختلفة من الشبكات العصبية العميقة من مجال الرؤية الحاسوبية (وليس فقط). لكننا لم نلتق بعد نماذج GAN التي من شأنها توليد بيانات جديدة من الضوضاء. في هذه المقالة ، سنقوم بإنشاء مثل هذا النموذج في Keras وتشغيله في OpenVINO.


صورة مقدمة


إلى حد ما حول شبكات GAN


تتيح لك الشبكات التنافسية (GANs) ذات التدريب الجيد إنشاء صور جديدة من الضجيج أو صور الإدخال التي سيتم النظر إليها على أنها حقيقية بدلاً من توليفها. يتم استخدام شبكات GAN بشكل متزايد في المهام المختلفة:


  • وضع وصف للصورة ؛
  • توليد الصور بالوصف ؛
  • إنشاء رموز تعبيرية من التصوير الفوتوغرافي ؛
  • زيادة دقة الصورة ؛
  • نقل نمط الصورة ؛
  • تحسين جودة الصور الطبية ؛
  • جيل الوجه وأكثر من هذا بكثير.

لكن أولاً ، دعنا نتدرب على قطط أرقام للتأكد من أن OpenVINO قادر على إنشاء شبكات GAN.


إنشاء صورة GAN


Keras, , MNIST. OpenVINO , GAN . , NVIDIA .


Keras : . GAN Keras .


, OpenVINO, OpenVINO .
5 .


مصفوفة أرقام


GAN , , Fashion MNIST — , — . , ?


OpenVINO


OpenVINO : Caffe, Tensorflow, ONNX .. Keras, ONNX, ONNX OpenVINO. , , Keras->ONNX->OpenVINO , Keras->TensorFlow->OpenVINO. , ONNX , Tensorflow, .


Python Keras ONNX:


import numpy as np
import argparse
import onnx
import keras2onnx
from keras.models import load_model

model = load_model('gan_digits.h5')
onnx_model = keras2onnx.convert_keras(model, model.name)
onnx.save_model(onnx_model, 'gan_digits.onnx')

ONNX OpenVINO ( Windows) Model Optimizer:


python "C:\Program Files (x86)\IntelSWTools\openvino\deployment_tools\model_optimizer\mo.py" --input_model gan_digits.onnx --input_shape [100,100]

, , OpenVINO. :


import numpy as np
import sys
import matplotlib.pyplot as plt
from openvino.inference_engine import IENetwork, IECore

#  OpenVINO   
ie = IECore()
net = IENetwork(model='gan_digits_R2020.1.xml', weights='gan_digits_R2020.1.bin')
exec_net = ie.load_network(net, 'CPU')
input_blob = next(iter(net.inputs))
out_blob = next(iter(net.outputs))

#      
noise = np.random.normal(loc=0, scale=1, size=[100, 100])
generated_images = exec_net.infer(inputs={input_blob: noise})

#  
generated_images = generated_images['Tanh']
generated_images = generated_images.reshape(100, 28, 28)
figsize = (10, 10)
dim = (10, 10)
plt.figure(figsize=figsize)
for i in range(generated_images.shape[0]):
    plt.subplot(dim[0], dim[1], i + 1)
    plt.imshow(generated_images[i], interpolation='nearest', cmap='gray_r')
    plt.axis('off')
plt.tight_layout()
plt.show()

, . , , 100%.



OpenVINO . , , OpenVINO , .


, , styleGAN. :


ستايل جان


styleGAN NVIDIA , . GitHub , GPU. OpenVINO.


, PyTorch ONNX ( OpenVINO). , , !


, , .
.


All Articles