Rubyで深層学習のスタイル変換を動かす


準備するもの

st.rb

require 'magro'
require 'onnxruntime'

model = OnnxRuntime::Model.new('mosaic.onnx')

input = Magro::IO.imread(ARGV[0])
                 .transpose(2, 0, 1)
                 .expand_dims(0)
                 .to_a

output = model.predict(input1: input)

result = Numo::Int32.cast(*output['output1'])
                    .clip(0, 255)
                    .transpose(1, 2, 0)
                    .cast_to(Numo::UInt8)

Magro::IO.imsave(ARGV[1], result)

実行2

ruby st.rb in.jpg out.jpg # pngも可

生成された画像

https://commons.wikimedia.org/wiki/File:Arimatsushibori.JPG 3 を 1200x900に変換

imagemagickによるmontage

candy

mosaic

pointilism

rain_princess

udnie

美しい絵が出力されました。


  1. created by @yoshoku  

  2. 画像のサイズによってはエラーが出る。4の倍数じゃないとエラーが出るとか? 

  3. Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)