Mencoba menjalankan jaringan GAN di OpenVINO

Tempat penyimpanan model Open Model Zoo dari perpustakaan OpenVINO berisi banyak jenis jaringan saraf yang dalam dari bidang visi komputer (dan tidak hanya). Tapi kami belum bertemu model GAN ​​yang akan menghasilkan data baru dari noise. Pada artikel ini, kita akan membuat model seperti itu di Keras dan menjalankannya di OpenVINO.


Gambar intro


Cukup banyak tentang jaringan GAN


Jaringan kompetitif generatif (GAN) dengan pelatihan yang baik memungkinkan Anda untuk membuat gambar baru dari gambar bising atau input yang akan dianggap nyata daripada disintesis. Jaringan GAN semakin banyak digunakan dalam berbagai tugas:


  • menyusun deskripsi gambar;
  • pembuatan gambar dengan deskripsi;
  • membuat emoji dari fotografi;
  • meningkatkan resolusi gambar;
  • transfer gaya gambar;
  • meningkatkan kualitas gambar medis;
  • Menghadapi generasi dan banyak lagi.

Tapi pertama-tama, mari kita berlatih kucing angka untuk memastikan bahwa OpenVINO mampu jaringan GAN.


Pembuatan Gambar GAN


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


Keras : . GAN Keras .


, OpenVINO, OpenVINO .
5 .


Matriks digit


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


styleGAN NVIDIA , . GitHub , GPU. OpenVINO.


, PyTorch ONNX ( OpenVINO). , , !


, , .
.


All Articles