質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Caffe

Caffeは、深層学習に用いられるオープンソースフレームワークの一つです。C++で実装されており、C++/Python/MATLABで用いることができます。画像認識に特化しており、動作も早い点が特徴。GUPにも対応しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

665閲覧

Caffeを用いたGoogLeNetによる画像分類時にすべて同クラスに分類される

gammaman

総合スコア3

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Caffe

Caffeは、深層学習に用いられるオープンソースフレームワークの一つです。C++で実装されており、C++/Python/MATLABで用いることができます。画像認識に特化しており、動作も早い点が特徴。GUPにも対応しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/09/23 03:18

編集2020/10/11 07:11

前提・実現したいこと

深層学習フレームワークCaffeを用いて2クラス分類を行っています。アルゴリズムはGoogLeNetです。
学習の結果、test_accuracyは約0.89となりました。
その後、pythonスクリプトで画像分類を行ったところ、全て同じクラスに分類されてしまいます。
テストに用いたデータ、訓練にもテストにも用いていないデータを使用した場合も結果は同様です。
以下に画像分類に使用した、pythonスクリプトと10個の画像に対する出力結果を載せます。

ご回答よろしくお願いします。

classify.py

python

1#!/usr/bin/env python 2#_*_ coding: utf-8 _*_ 3 4import numpy as np 5import scipy as sp 6import sys 7 8import caffe 9from PIL import Image 10 11argvs = sys.argv 12argc = len(argvs) 13 14IMAGE_FILE = argvs[1] 15 16caffe.set_mode_gpu() 17 18model_def = 'deploy.prototxt' # deploy.prototxtを指定 19model_weights = 'snapshot/bvlc_googlenet_iter_720000.caffemodel' # 学習で生成されたモデル(連番の最後)を指定 20net = caffe.Net(model_def, model_weights, caffe.TEST) # 変数netにcaffe.Netを生成 21 22# transformerを生成 23transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape}) 24transformer.set_raw_scale('data', 255) 25transformer.set_transpose('data', (2, 0, 1)) 26transformer.set_channel_swap('data',(2,1,0)) 27 28net.blobs['data'].reshape(1, 3, 224, 224) # 学習のバッチサイズ, チャネル数, 縦, 横の順で 29 30#for cl in range(0, 2): # clはクラスの連番 31# print('\nprint class: ' + str(cl)) 32# for n in range(0, 2): 33 34# (cl)_(n).pngの画像をロード 35image = caffe.io.load_image(IMAGE_FILE) 36 37# データの整形 38transformed_image = transformer.preprocess('data', image) 39net.blobs['data'].data[...] = transformed_image 40output = net.forward() 41output_prob = output['prob'][0] 42 43 44 45print('predicted class is ', output_prob) 46

出力結果

全て2つ目のクラスに分類されてしまっています。

('predicted class is ', array([0.0457759, 0.9542241], dtype=float32)) ('predicted class is ', array([0.01303386, 0.98696613], dtype=float32)) ('predicted class is ', array([0.07630268, 0.9236973 ], dtype=float32)) ('predicted class is ', array([0.01624789, 0.98375213], dtype=float32)) ('predicted class is ', array([0.14536919, 0.85463077], dtype=float32)) ('predicted class is ', array([0.04405485, 0.95594513], dtype=float32)) ('predicted class is ', array([0.09450724, 0.9054927 ], dtype=float32)) ('predicted class is ', array([0.01997812, 0.9800219 ], dtype=float32)) ('predicted class is ', array([0.01074958, 0.9892504 ], dtype=float32)) ('predicted class is ', array([0.06119116, 0.93880886], dtype=float32))

試したこと

学習時と分類時に使用したレイヤー名の一致は確認しました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kuma_kuma_

2020/10/07 11:31

classify.pyに訓練時の画像データを投入した場合 分類は正しくおこなわれますか?
gammaman

2020/10/11 07:05 編集

訓練時の画像データを投入したとき、ほとんど同じクラスに分類されてしまいます。 2クラスのうち一方のクラスでは全て正しい結果で分類され、 もう一方のクラスでは、2割程度のみ正しく分類されます。
kuma_kuma_

2020/10/11 07:10

> 訓練時の画像データを投入したとき、ほとんど同じクラスに分類されてしまいます。 そうしたら、 1. 訓練データの作成に不備があって「学習で生成されたモデル」が役に立っていない 2.「学習で生成されたモデル」での処理が訓練データ時のパラメータ等が違う となります。 どちらにしても訓練データの作成方法が判らないと判断できませんね...
gammaman

2020/10/11 08:04

>どちらにしても訓練データの作成方法が判らないと判断できませんね... 答えにならないかも知れませんが、作成方法は訓練用のカラー画像を用意して $CAFE_DIR/build/tools/convert_imageset -resize_height=224 -resize_width=224 -shuffle ./ train.txt train_lmdb 以上のコマンドでLMDBを作成し、このLMDBを使用して訓練しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問