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

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

新規登録して質問してみよう
ただいま回答率
85.47%
PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

287閲覧

機械学習を用いた画像分類

mgjptw

総合スコア1

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

1クリップ

投稿2022/06/24 23:29

編集2022/06/25 14:43

機械学習を用いて画像分類を行いたいと思っています。正規化せずに入力画像の局所的な最大値で画像分類する方法はございますでしょうか。人間が最大値をみれば、分類可能な問題だと思います。

図を追加しました。イメージ説明
グレースケールの画像上に局所的に0以外の部分があるとします。例えば、それが2以上3以下であれば、クラスAに分類し、0.5~1であればクラスBに分類し、3以上であればクラスCに分類したいと思っています。1、2、3は適当な値ですが、実際は小数であっても自動で分類できるようにしたいので、閾値は設定せずに機械学習によって分類したいと思っています。

1日調べても手法がわからなかったので、質問しました。よろしくお願い申し上げます。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2022/06/25 13:55

> 局所的な最大値で画像分類する方法はございますでしょうか。人間が最大値をみれば、分類可能な問題だと思います。 「真っ黒な画像のごく一部が灰色に塗りつぶされているような状態で、どれくらい灰色のところが白っぽいかで人間なら判断できるだろう」というように読み取れます。最大値の値だけで分類できるのであれば、画像をグレースケール化して最大値だけを探せば良さそうに思います。最大値1点「しか」扱わないのであればデータ的にはいかなる画像であっても一次元データでしかなくなります。こうなると機械学習も何もシンプルなifの条件分けだけで成立するように思います。それとも、「局所的な最大値」を探す際に、「どの局所を選ぶか」を学習させたいのでしょうか? ――というコメントは恐らく質問の本意をつかんでいない回答だろうと思います。本当に伝えたいことが伝わるように質問の修正をお願いします。もし可能であれば手書きでもペイントでの殴り書きでもいいですので、何か具体的に伝わる絵や図を添えてください。
mgjptw

2022/06/25 14:36

真っ黒な画像のごく一部が灰色に塗りつぶされているような状態で、どれくらい灰色のところが白っぽいかで人間なら判断できるだろう」というように読み取れます。最大値の値だけで分類できるのであれば、画像をグレースケール化して最大値だけを探せば良さそうに思います。 ->コメントありがとうございます。私もそう考えております。どの局所を選ぶかの学習は不要だと考えています。絵と説明を追記します。
guest

回答1

0

ベストアンサー

課題の整理

・ グレースケールの画像上に局所的に0以外の部分がある
・ この「局所的な最大値」で画像を分類したい
・ 局所的な最大値は、0、1、2、3のような整数かもしれないし、小数点の値がはいるかもしれない
・ 閾値は設定せずに機械学習によって分類したい

機械学習に沿った考え方

画像の寸法やデータの分布がどうであれ、
・ 局所的な最大値のみで評価(最大値のあった「位置情報」を加味しないし、最大値以外の値がどう分布していたか…例えば標準偏差は加味しないで評価)するのであれば、サンプル1つ当たりから得られる値は1つのみ。言い換えれば、「最大値のみが並んだ縦1列のみのデータレコード」として捉えられる(下記1)。もしどのクラスかを示す正解情報(ラベル)を用意できるのであれば、「最大値のみが並んだ縦1列とクラス情報のラベルの縦1列を持ったデータレコード」として捉えられる(下記2)。

  1. 正解情報(ラベル)を用意できないときの考え方
  2. 正解情報(ラベル)を用意できるときの考え方

この時、正解情報(ラベル)のことを教師データ(学ぶ対象のこと)と呼びます。

なので、
上記の1はラベルがないので「教師なし学習」(分け方すらも機械に任せる)、
上記の2は「教師あり学習」(人間が与えたラベルを可能な限り満たせるように分け方を学ぶ)と呼びます。

実際の考え方の詳細

1. 教師なし学習:正解情報(ラベル)を用意できないときの考え方

サンプル番号最大値
11.2
21.3
30.5
42.2
53.0

この場合は教師なし学習のため、機械が自力でデータの分布を考え、どう分類するのがよいかを考える必要があります。似たデータのみを寄せ集めてクラスタを形成させるため、「クラスタリング」と呼ばれる手法が使われます。
詳細:Scikit-learnのクラスタリング

イメージ説明
出典:Scikit-learn公式「2.3.1. Overview of clustering methods

※この例では縦横の2次元データでクラスタリングをしていますが、これは一次元データでも基本的に同じやり方を適用できますので、こういう手法もあるくらいのイメージで捉えてください。

クラスターがいくつあるかあらかじめ分かっているか、分かっていないかで細かい手法を調整することもできます。具体的には、エルボー法を用いると、(適当に直感でいくつのクラスターにするのが良さそうかとするのではなく)「いくつのクラスターに分けるのが合理的か」を知ることができます。

2.教師あり学習:正解情報(ラベル)を用意できるときの考え方。

サンプル番号最大値正解情報
11.2B
21.3B
30.5A
42.2C
53.0C

この場合は教師あり学習のため、機械があらかじめ与えられた正解情報を元に、どう分類するのがよいかを考えます。データの分布ではなく正解情報を元になるべく正しく分類させようとするため、「クラシフィケーション」と呼ばれる手法が使われます。
詳細:Scikit-learnのクラシフィケーション

イメージ説明
出典:Scikit-learn公式「Classifier comparison

※この例では縦横の2次元データでクラスタリングをしていますが、これは一次元データでも基本的に同じやり方を適用できますので、こういう手法もあるくらいのイメージで捉えてください。

備考

いずれにせよ、沢山手法があり、カッコよく表示させることもできますが、実際には「エクセルで作ったCSVファイル」を用意して、先のURLにある「見本のプログラムサンプル」にCSVファイルをほぼほぼポン付けで突っ込むだけで同じようなことがすぐにできます。

タグにPyTorchがつけられていますが、深層学習を使う場合であっても「教師なし学習」か「教師あり学習」かの考え方は全く同じですし、似たような捌き方をしているプログラムがすでにあれば「ほぼほぼポン付けで突っ込むだけ」で動かせるのも同じです。

投稿2022/06/25 21:44

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

mgjptw

2022/06/26 12:59

ご回答ありがとうございます。scikit-learnを使えば、判別できそうです。URLを参考に実装してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問