hans

hans

【Caffe】【場所の分類】Places365のインストール、dockerでの実行、およびローカルのcaffeの呼び出し(Ubuntu14.04)


場面分類モデル#

インストールファイルの GitHub アドレス: https://github.com/metalbubble/places365

ダウンロードして解凍します。

または、次のコマンドを実行します。

git clone https://github.com/metalbubble/places365

同じアドレスから使用する pre_trained モデルを選択してダウンロードします。

1. Docker のインストール#

ダウンロードリンク: こちら

Ubuntu のインストールマニュアル:

こちら

まず、リポジトリをインストールします。

sudo apt-get -y install \
  apt-transport-https \
  ca-certificates \
  curl

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \
       "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
       $(lsb_release -cs) \
       stable"

sudo apt-get update

Docker CE をインストールします。

sudo apt-get -y install docker-ce

最後に、インストールが成功したかどうかをテストします。

sudo docker run hello-world

テスト後、テストイメージを削除します。

sudo su

docker images

docker rmi -f iamge_name or image ID

2. places365_container の作成#

cd places365/docker

README.md を開きます。

このコンテナには、Ubuntu 14.04 システム、Caffe、および関連する依存関係が含まれています。

次のコマンドを実行します。

docker build -t places365_container .

ダウンロードとインストールには時間がかかります。合計で 3.5G 以上あります。

選択したネットワーク prototxt と対応するモデルを docker/models_places ディレクトリにコピーします。

準備ができたら、次のコマンドを実行します。

docker run places365_container python run_scene.py images/mountains.jpg

ここで注意する必要がありますが、私が何かを間違えた可能性があるかもしれませんが、上記のコマンドを実行すると places365_container が見つからないと言われました。後で修正しました。以下のコマンドを実行すると結果が表示されます。

docker run places365_contrainer python run_scene.py images/mountains.jpg

3. ローカルの caffe の呼び出し#

ローカルの caffe ディレクトリを $ROOT と定義します。

Places365 フォルダを $ROOT ディレクトリにコピーします。

ここには 2 つのバージョンがあります。1 つは caffe に付属の classfy.py を使用し、もう 1 つは Places365 の run_scene.py を使用します。両方について説明します。

3.1.classfier.py の使用#

まず、classfy.py を編集します。

デフォルトのプログラムでは、結果が npy ファイルに保存され、ターミナルに表示されないため、結果をターミナルに表示するように変更する必要があります。

次の行を見つけます。

mean = np.load(args.mean_file)

以下に追加します。

mean=mean.mean(1).mean(1)

次に、次の行に移動します。

    # Classify
    start = time.time()
    predictions = classifier.predict(inputs, not args.center_only)
    print("Done in %.2f s." % (time.time() - start))

以下に追加します。

    imagenet_labels_filename = '../places365/docker/resources/labels.txt' #注意这里要改成你自己labels.txt的路径
    labels = np.loadtxt(imagenet_labels_filename, str, delimiter='\t')
    top_k = predictions.flatten().argsort()[-1:-6:-1]
    for i in np.arange(top_k.size):
        print labels[top_k[i]]

最後に、132 行目のパスを自分自身のファイルパスに変更します。

imagenet_labels_filename = '$ROOT/places365/docker/resources/labels.txt'

3.1.1.labels.txt の生成#

比較すると、caffe が必要とするファイルは各行にカテゴリ名のみがあれば十分です。places365/docker/resources の labels.pkl を変更します。

以下のスクリプトを作成し、実行すると labels.txt が自動的に生成されます。

#!/bin/sh
cp labels.pkl labels.txt
sed -i 1d labels.txt
sed -i 731d labels.txt
for num in {1..365};
do
    sed -i "/p${num}/d" labels.txt
done
sed -i 's/aS//g' labels.txt
sed -i 's/S//g' labels.txt
sed -i 's/^.//g' labels.txt
sed -i 's/.$//g' labels.txt

3.1.2. 実行#

次のコマンドを使用して実行します。

cd $ROOT/python
python classify.py $ROOT/places365/docker/images/mountains.jpg result.npy \
--model_def $ROOT/places365/docker/models_places/deploy_alexnet_places365.prototxt \
--pretrained_model $ROOT/places365/docker/models_places/alexnet_places365.caffemodel

result.npy は出力ファイルです。

3.2.run_scene.py の使用#

このファイルを $ROOT/python フォルダにコピーし、次のコマンドを実行します。

python run_scene.py $ROOT/places365/docker/images/mountains.jpg

完了です!

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。