class DSelect
Public Class Methods
compare(f1, f2)
click to toggle source
image同士を比較して特徴量出す
# File lib/deepselect.rb, line 15 def self.compare(f1, f2) # 引数がRmagick imageならfeature vectorへ変換 if f1.class == Magick::Image and f2.class == Magick::Image f1,f2 = f1.to_vector, f2.to_vector # さすがに他のライブラリと被りそうな気が end # cos similarity v1 = Vector.elements(f1) v2 = Vector.elements(f2) return v2.inner_product(v1)/(v1.norm() * v2.norm()) end
id()
click to toggle source
…? modelの各layerのid
# File lib/deepselect.rb, line 53 def self.id conv1_id = '140326425860192'.freeze fc6_id = '140326200777584'.freeze softmax_id = '140326200803680'.freeze {conv1_id: conv1_id, fc6_id: fc6_id, softmax_id:softmax_id} end
model_opt()
click to toggle source
モデルの詳細
# File lib/deepselect.rb, line 61 def self.model_opt conv1_id, fc6_id, softmax_id = self.id.values input_shape = { channel_num: 3, width: 224, height: 224 } model_opt = { backend: 'mkldnn', input_layers: [ { name: conv1_id, dims: [ 1, #image_list.size, # batch size input_shape[:channel_num], input_shape[:height], input_shape[:width], ] } ], output_layers: [fc6_id, softmax_id] } end
vgg16()
click to toggle source
vgg16返す
# File lib/deepselect.rb, line 28 def self.vgg16 # 読み込み済みなら読み込んであるモデルを返す return @@vgg16_obj if @@vgg16_obj vgg16_dir = File.expand_path('./deepselect/data/VGG16.onnx', __dir__) if File.exist?(vgg16_dir) @@vgg16_obj = Menoh::Menoh.new(vgg16_dir) else # menohと同じようにモデルをダウンロードする # url勝手に使うのダメだったら教えてください...! model_parent_dir = File.expand_path('./deepselect/data', __dir__) FileUtils.mkdir(model_parent_dir) unless File.exist?(model_parent_dir) puts "model data downloading... (first time only)" url = 'https://www.dropbox.com/s/bjfn9kehukpbmcm/VGG16.onnx?dl=1' open(url) do |file| File.open(vgg16_dir, "wb") do |out| out.write(file.read) end end @@vgg16_obj = Menoh::Menoh.new(vgg16_dir) end return @@vgg16_obj end