1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

coremltoolを使った画像認識でsvm形式のモデルを利用する1

Posted at

開発環境

  • macOS 10.13
  • Swift4
  • XCode9
  • Python2.7

今更ですが、coremlでの画像認識をsvm形式のmodelで試してみました。
ここでは、元となるmodelを作るまで。

学習データ

手書き数字データを公開しているWebサイトから学習用イメージを取得して、それをsvm形式のモデルに変換するのだけど、やり方については、僕はこの本のやり方で.modelファイルを作りました。

JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック

手順を書けば
1. THE MNIST DATABASEからtrain-images-idx3-ubyte.gzをダウンロード
2. train-images-idx3-ubyteをCSVに変換

やり方は本を読むかネットで調べてください。

3. そのCSVからSVM形式のファイルを作る

SVM形式は以下のフォーマットになっている。

<label> <index1>:<value1> <index2>:<value2> <index3>:<value3> ...

mnistのデータは28x28のモノクロ画像なので、28x28=784の行列が色の明暗が0〜255で現れている。
本では明暗を255で割って0〜1で表現している。

例えば5を表すsvm形式のデータは以下のようになる(valueの値は適当)

5 0:0 1:0.12345 2:0.2344 3:0 ...

注意するのは、valueが0のものは省略出来る。省略した方がファイルのサイズが小さくなるが、一つの数字の行列の数がバラバラになり、今回作るmlmodelとしてはうまく動かないかもしれないので、省略せずに作る事
これも実際の作り方に関しては本を読むかネットで調べて欲しい。

4. libsvmをダウンロードしてコンソールから使えるようにする

#ダウンロードしたlibsvmフォルダ内で
$ sudo make
$ cd python
$ sudo make

楽するなら、libsvmコマンドのエイリアスを作っておくと便利

5. svm-trainでsvmファイルからmodelを作る

$ svm-train train.svm train.model

出来たmodelの内容の先頭はこんな感じ

train.model
svm_type c_svc
kernel_type rbf
gamma 0.00127551
nr_class 10
total_sv 19625
rho -0.875385 -1.57898 -1.86108 -1.69481 0.0843436 -1.11201 -1.37594 -0.864901 -3.56646 -0.464904 -0.707754 -0.23612 0.590029 0.370307 -0.106454 -0.0409962 -0.255275 0.229151 0.622187 1.22355 1.48548 0.365479 0.791545 0.736575 0.112124 2.15981 1.73285 0.383973 0.693789 0.201564 1.14541 1.10034 -0.121608 1.22076 0.184059 -0.729355 -1.53266 -1.24009 -2.48586 -0.945167 -0.414781 -2.42301 0.181592 0.114848 -0.102643
label 5 0 4 1 9 2 3 6 7 8
nr_sv 2632 1098 1988 1171 2667 1999 2289 1451 1833 2497
SV
0 0 0 0 1 1 0 0 0 1:0 2:0 3:0 4:0 5:0 6:0 7:0 8:0 9:0 10:0 11:0 12:0 13:0 14:0 15:0 16:0 17:0 18:0 19:0 20:0 2

これでモデルを用意できました。このモデルは他の言語でも利用出来ます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?