1
4

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.

パーソルキャリアAdvent Calendar 2018

Day 24

最安で環境を借りてOpenCVの学習環境を構築する

Posted at

会社とは関係なく、サーバを借りてOpenCVのモデルを作成した時の話をします。

問題

自宅PCはMac(Memory16G)しかないが、これだと遅いのでもっと早く学習したい。

選定

  • Conoha: 今回はこれを使うことにした
  • Amazon: 料金的にはConohaと大差なかったが通信量やEBSの料金などいろいろかかるのでやめた。VPS(Lightsail)は月額制っぽかったので、対象外
  • さくらのインターネット: 月額なので、今回は対象外

構築作業

前提

  • ローカル: 自分のPC
  • Conoha: Conohaの管理パネル
  • Conoha - 1G: Conohaの1Gのインスタンス。sshで作業
  • Conoha - 32G: Conohaの32Gのインスタンス。sshで作業

インスタンスを起動する (Conoha)

32Gでインスタンスを作成します。
多分エラーが出るので、Conohaにお問い合わせをしてください。
作成できたら、作ったサーバインスタンスは一度削除してください。

事務作業(Conoha)

エラーが出た場合は、お問い合わせをします。
個人で上位プランを使ったことがない場合は制限をかけられているようなのでお問い合わせをしてください。

問い合わせ例:

一時的にハイスペックなサーバーを使いたかったので、32GのVPSに申し込もうとしたのですが、
「サービスの申し込み上限数に達しています。」
とメッセージが出て申し込みができません。

学習データを作る(ローカル)

回答が返ってくる間に学習データを作ってしまいます。
以下のような構成で作っていきます

opencv
├── data
│   ├── neg
│   └── pos
├── model
└── src
    ├── negative.dat
    └── positive.dat

data/posは、正しいデータ
data/negは、NGデータ
を格納するところです。

positive.datには、data/pos
negative.datには、data/neg
特徴量をそれぞれ入れてください

学習データを作り終えたら、zipで圧縮しておいてください

事務作業(ローカル)

メールで、以下のような感じで返答があると思うので、回答します。
返答は素直に行いましょう

返答メールサンプル
〇〇 様 

いつもご利用いただき、まことにありがとうございます。 
ConoHa お客様センターです。 

お問い合わせの件につきまして、上位プランのお申し込みに
ついては弊社にて確認を行わせていただいております。

お手数ではございますが、下記内容につきましてお知らせください
ますと幸いでございます。

希望プラン:
リージョン:
追加希望台数:
ご利用用途:

恐れ入りますが、何とぞご確認くださいますようお願い申しあげます。

今後ともConoHaをよろしくお願いいたします。
回答例
希望プランなどは下記のとおりです。

希望プラン:
VPS・32G

リージョン:
東京

追加希望台数:
1台

ご利用用途:
機械学習(OpenCV)のモデルを自作するため。
自宅マシンのスペックだとかなり時間がかかってしまったので、CPUとメモリをたくさん積んだマシンが使いたかった

備考:
・法人利用(商用)じゃなくて、個人利用です
・1ヶ月まるまる使う予定はなく、数日〜1週間ほどの予定です
・モデル生成にだけ使うので、基本的にポートは全部閉じた状態。ローカルから学習データをアップデートしたりするのをscpでやろうと思うで、sshだけ例外的に開ける
・リージョンは価格を見て東京のほうが安かったので東京と書きましたが、シンガポールでもいいです。
・可能であれば、今後も必要なときだけ立ち上げて使いたい

32Gが使えるようになったら次の作業に移ります

インスタンスを起動する (Conoha)

1Gのインスタンスを起動する。OSはCentOSでもubuntuでもかまいません。

  • この後インストール作業などを行うので、いきなり32Gもったいないです。
  • 作業が全て完了してから32Gにプラン変更を行います

ユーザを作成 (Conoha - 1G)

ユーザを作成し、パスワードを設定(なんでもいいですがopencvなので、cvuserとした)

$ useradd cvuser
$ passwd cvuser

%wheel ALL=(ALL) ALL がコメントされてないかを確認されていたら外す

visudo

作成したユーザをwheelグループに追加

$ usermod -aG wheel cvuser
$ groups

rootになれることを確認する

sudo su - 

OpenCVに必要なパッケージをインストールする(Conoha - 1G)

インストール手順は、いかにまとめていますので、こちらを参照してください
https://qiita.com/usk81/items/98e54e2463e9d8a11415

以降は作成したユーザを使います

作成した学習データをアップロードする(ローカル)

圧縮したファイルをアップロードする

scp -l 6000 ~/Desktop/opencv/(作成した圧縮ファイル) cvuser@(conohaのインスタンスのIP):/home/cvuser

アップロードしたファイルを解凍する(Conoha - 1G)

以下のようになるように解凍します

/home/cvuser
├── data
│   ├── neg
│   └── pos
├── model
└── src
    ├── negative.dat
    └── positive.dat

ベクトルファイルを作成する(Conoha - 1G)

cd src
# ベクトルファイルを作成する
opencv_createsamples -info positive.dat -vec positive.vec -num (任意の数) -w 48 -h 48

プラン変更を行う(Conoha)

サーバを停止する


sudo haltしてもconohaの管理パネルでサーバが落ちてると認識されなかったので、管理パネルからサーバダウンさせてしまっていいと思います。

プランを変更する(1G -> 32G)

サーバを起動する

学習を開始する(Conoha - 32G)

cd src
# sshのコネクションが切れてもいいようにnohupをつけて実行します
nohup opencv_traincascade -data /home/cvuser/model -vec positive.vec -bg negative.dat -numPos (opencv_createsamplesのnumの設定と同じ数値) -numNeg (negative.datのデータ数) -w 48 -h 48 -minHitRate 0.97 -numStages 10 -precalcValBufSize 12000 -precalcIdxBufSize 12000 > out.log 2> err.log &

学習後

急いで、1Gにプランを変更してください。
/home/cvuser/modelに学習したモデルが作成されているので、scpでダウンロードしてください

モデルを使ってみて問題なければいいですが、作り直すかもしれないので、作り直す必要がないことを確認してから削除してください。

完了

おつかれさまでした。
データ量にもよりますが、そこまで多くなければ、学習1回あたり1000円〜2000円の間ぐらいでできると思います。

1
4
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
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?