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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

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

機械学習

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

Python

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

Q&A

1回答

5333閲覧

自前画像を用いた回帰分析を行いたい

zassota

総合スコア1

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

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

機械学習

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

Python

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

0グッド

2クリップ

投稿2020/09/18 06:39

独自画像を用いて機械学習用のデータセットの作り方、回帰分析の仕方を知りたいです。
下記2点の方法を教えていただきたいです。

#1)データセットの作り方について
MNIST等の書籍で載っている分類問題はkerasを用いて一通りやりました。
また、犬、猫のような2項分類については、trainフォルダの下に犬フォルダ、猫フォルダを作り、
その中に集めた画像を入れて、VGG16をファインチューニングして分類するというところまではなんとかできます。

次のステップとして、画像から回帰分析を実施してみたいです。
自分で集めた画像(例えば料理画像やスナップ写真)と、連続値の目的値(例えばカロリー値や体重)を組み合わせて、
回帰分析し、最終的には画像だけから目的値を推測できるようにしたいです。

ところがインターネットで調べても、画像から回帰分析する際のデータセットの作り方が見つけられませんでした。
一つのフォルダの中に、JPGデータ(例えば001.jpg、002.jpg、003jpg、、、、)と、
1列目にJPGデータ名(例えば001.jpg、002.jpg、003jpg、、、、)、
2列目に目的値(例えば100kcal、200kcal、249kcal、230kcal、、、)のように入力したcsvファイルを作って保存すればデータセットとなるのでしょうか。

#2)回帰分析の仕方について
上記データセットができた上で、どのように取り込み、回帰分析するのかコードをご教示いただけますと幸いです。
2項分類の際には最後の出力層がsigmoidになっていて、それを使わない~くらいまでは理解しているのですが、
実際コードとなると分からず困っております。

#3)参考にしたサイト
下記は見てみましたが、上記の目的を達することができませんでした。
https://qiita.com/ha9kberry/items/314afb56ee7484c53e6f
https://pchun.work/keras%E3%81%A7%E5%9B%9E%E5%B8%B0/
https://cookie-box.hatenablog.com/entry/2017/08/15/001805
https://colab.research.google.com/drive/11YwK8GDlt1KDxd3zBOkfcoqWsMfdvWTH
→こちらのサイトはカロリーが出ますが、すしなら〇〇kcalと決まった値が出てくるので、回帰でないと思っています。

また、上記のようなことを行うためにその他参考となるサイトや書籍があればご紹介いただけますと幸いです。

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

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

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

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

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

aokikenichi

2020/09/18 09:43

https://qiita.com/ha9kberry/items/314afb56ee7484c53e6f がまさに画像から回帰の好例だと思うのですが、何がどう駄目なのでしょうか。 データは上記記事にある通り 説明変数が画像 目的変数が(ファイル名からですが別ファイルでもよい)年齢 のようにすればよいと思います。
zassota

2020/09/18 11:38

ご助言ありがとうございます。 > 目的変数が(ファイル名からですが別ファイルでもよい) ここの部分について具体的にご教示いただけますと幸いです。
guest

回答1

0

機械学習におけるロジスティック回帰分析を用いた、手書き数字の学習と分類

こちらの解説ですと手書き数字の画像ファイルとラベルファイルがあり
ラベルファイルにどの位置画像が0、1、2...なのか記載されているようです
そこから画像ファイルをどの様に数値化するかも書かれています。

###データセットの作り方に関して
「人体写真から体重」これは人体の輪郭が抽出できればデータ化できます。
「料理画像とカロリー値」こちらは料理画像からは数値化できないとおもいます。
カレーとビーフシチューとハッシュドビーフの違いを画像の何をもって判断するかが不明です。
「顔写真から男女」これは目鼻口と輪郭をデータ化すれば良いので可能です
先で試された「動物写真から犬ネコ判定」は動物の輪郭と色の分布から分析されていると思いますが
実は犬ネコではなく犬の種類、ネコの種類で一度分析してその結果から
犬ネコどちらか判定したほうが精度が上がります。
結局は画像から何の情報を取り出すのが一番判断できるかは使う人が考えなくてはなりません
あとはそのような方法があるのか?を検索されてはいかがでしょうか?

###回帰分析の仕方について
2. 機械学習ライブラリの基礎

基本的には目的関数を用意して、その目的関数に目標値、元となる値、パラメータを設定します。
目的関数は元となる値、パラメータから値を計算します。
この時のパラメータ値をパラメータAとします
そうすると計算した値と目標値で誤差が生まれます。
これを誤差Aとします。

今度はパラメータの値を変えて再度計算します。
この時の各値はパラメータBと誤差Bとします。

誤差Aと誤差BからパラメータAとパラメータBの関係性が判ります
その関係から新たにパラメータCを計算して再度目的関数で計算します。
これを何度も繰り返えす事から回帰といわれます。

繰り返すうちに最適なパラメータ値に近づきます。
この作業が訓練と言われる工程です。

そのパラメータ値が判れば元の値から目標値が割り出せるといった仕組みです。

Pythonで重回帰分析を行うには

  • statsmodels モジュールを利用して統計モデルを構築する方法
  • scikit-learn モジュールを利用して機械学習のモデルを構築する方法

sklearn.linear_model.LinearRegression

基本2種類あるそうです。
目的によってどちらが良いかが決まります。

投稿2020/09/18 11:57

kuma_kuma_

総合スコア2506

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

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

zassota

2020/09/18 14:24

ご助言ありがとうございます。 大変参考になります。 こちらの解説ですと手書き数字の画像ファイルとラベルファイルがあり ラベルファイルにどの位置画像が0、1、2...なのか記載されているようです そこから画像ファイルをどの様に数値化するかも書かれています。 上記の部分について、mnistはjpgのような、いわゆる普通の画像データでないようなので、①画像を自分で集める->②画像を加工する->③上記サイトの方法を実施 という流れになるかと思います。その時の②の方法を見つけることが出来ず困っております。 何度も申し訳ございません。
kuma_kuma_

2020/09/18 23:03

そうですね②画像を加工するに関しては画像加工の技術をある程度知らないといけませんので... もし目的がこれですと提示していただければ細かいアドバイスもできますが 基本画像加工はどれだけノイズを削除できるか?というのが基本になります。 たとえばカラー画像をグレースケールにすると1ピクセルで(256*256*256)かかっていた値が(256)まで減少しますここから彩度・明度のに基づいて(64)まで減少させたりします。 そうすると明らかに色の違いが判りますか輪郭が取得できるというのが基本です。 あとはJPEG圧縮で採用されているような一定範囲毎に区切って DCT変換(離散フーリエ変換の一種)するとかも方法論の一つです 顔認証の場合はまずグレースケール化して顔の輪郭を認識そこからおおよその目の位置から 黒目を色差異で判別、目の中央から画像を下に向かって検索して差異があるところまでが鼻 その下の一定範囲で差異を見つけその輪郭が口となります。 この全部の工程がすべて行えた場合顔と認識されます。 GIMPという画像加工ソフトがありますが 実はPythonから操作することが可能なのです。 遠回りのように感じますがGIMPをつかって一度画像を加工する勉強(フィルタ機能だけで良いです)をされるのもひとつの方法かもしれません。 例えば先の犬ネコ判断の画像で背景の部分を領域指定で削除すると輪郭精度があがり判別も正確になったりします。 NHKアーガイブが観れれば「人間ってナンだ?超AI入門」で画像加工方法の解説も見れます。 そこで紹介されていた方法の一つに「葉についた青虫の判断」というのがありました。 これは「葉の画像」から一度人間が判断して「青虫」の領域を設定(数値化) これを数万枚行って学習させる方法もあります。 力技のようですが画像のここの部分が物体であるという情報があれば判別がつくという事です 機械学習の結果精度は9割データ作成にかかっているといっても過言でではありません。 結局は画像処理方法をある程度覚えあとはアイディア次第となるので 画像を元にするならあとは言語問わず機械学習時の画像データ変換方式をかたっぱしから確認するとかでしょうか?
kuma_kuma_

2020/09/18 23:15

追記です 先の「食品画像からカロリー計算」は難しいと書きましたが 「近赤外光で取得した一定距離からの食品画像からからカロリー計算」は可能です https://kaden.watch.impress.co.jp/docs/news/1084125.html 元の画像を一定条件に絞り込むことでノイズ軽減をしている例となります。
zassota

2020/09/18 23:26

ありがとうございます。大変勉強になります。 書き方が悪く申し訳ございません。 画像の加工という部分について、ご提示いただいたレベルに達しておらず、まずJPEG画像を上記コードで利用できるようにするは、どうすればよいかご教示いただきたいです。 まずは単純にJPEG画像を集めて、JPEG画像の目的値を入力したcsvを作り、とりあえずコードを走らせるというレベルを試してみたいです。 その後ご提示いただいた手法はぜひ試してみたいです。
kuma_kuma_

2020/09/18 23:39

Python, OpenCVで画像ファイルの読み込み、保存 https://note.nkmk.me/python-opencv-imread-imwrite/ Python, NumPyで画像処理(読み込み、演算、保存) https://note.nkmk.me/python-numpy-image-processing この辺りでしょうか? 元々JPEGは元情報にノイズが混ざっています。 非可逆圧縮なので元の状態に戻せません。 圧縮率を高めて保存するか、JPEGを開いては保存を繰り返すと画質が悪くなることで確認できます。 できれば可逆圧縮のPNGやJPEG圧縮ではないTIFF、圧縮されていないBMPをオススメします。
zassota

2020/09/19 02:34

ありがとうございます。 試させていただきます。 このサイトを見ながら、内容を理解して自分の画像に適用(コードを書く)できるまでにかなり時間がかかるので、すみません、また試して分からないことあれば書き込みます。 普段は最初から最後まで基本コピペで実施しており。。。勉強します。 JPEGとtiff等についても勉強になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問