Class: DSelect
- Inherits:
-
Object
- Object
- DSelect
- Defined in:
- lib/deepselect.rb
Constant Summary collapse
- @@vgg16_obj =
nil
Class Method Summary collapse
-
.compare(f1, f2) ⇒ Object
image同士を比較して特徴量出す.
-
.id ⇒ Object
…? modelの各layerのid.
-
.model_opt ⇒ Object
モデルの詳細.
-
.vgg16 ⇒ Object
vgg16返す.
Class Method Details
.compare(f1, f2) ⇒ Object
image同士を比較して特徴量出す
15 16 17 18 19 20 21 22 23 24 25 |
# 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 ⇒ Object
…? modelの各layerのid
53 54 55 56 57 58 |
# 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 ⇒ Object
モデルの詳細
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# 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 ⇒ Object
vgg16返す
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/deepselect.rb', line 28 def self.vgg16 # 読み込み済みなら読み込んであるモデルを返す return @@vgg16_obj if @@vgg16_obj vgg16_dir = File.('./deepselect/data/VGG16.onnx', __dir__) if File.exist?(vgg16_dir) @@vgg16_obj = Menoh::Menoh.new(vgg16_dir) else # menohと同じようにモデルをダウンロードする # url勝手に使うのダメだったら教えてください...! model_parent_dir = File.('./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 |