web-dev-qa-db-ja.com

Tensorflowの回帰出力を使用したCNN画像認識

CNNを使用して、画像に基づいて推定待ち時間を予測します。だから、これはCNNを使用して、現在使用しているRMSEの損失関数を使用して回帰タイプの出力を出力すると想像しますが、正しく機能していません。

誰かがCNN画像認識を使用して待機時間に似た(クラス出力ではなく)スカラー/回帰出力を出力する例を指摘できますか?適切な例。

私が見つけたCNNの例はすべて、MSINTデータ用であり、待ち時間の数値/スカラー出力ではなく、クラス出力を出力する猫と犬を区別しています。

誰かが画像認識に基づいてスカラーまたは回帰出力を与えるCNNのテンソルフローを使用した例を教えてもらえますか?.

本当にありがとう!私は正直に行き詰まっていて、何の進展もありませんし、この同じ問題に取り組んでいるのは2週間以上です。

12
Ic3MaN911

ダッシュカムから入力画像を取得し、道路にとどまるためのステアリング角度(連続スカラー)を予測するUdacity自動運転車モデルを確認してください...通常、1つ以上の完全に接続されたレイヤーの後に回帰出力を使用してCNNレイヤーの最上位。

https://github.com/udacity/self-driving-car/tree/master/steering-models/community-models

典型的なモデルは次のとおりです。

https://github.com/udacity/self-driving-car/tree/master/steering-models/community-models/autumn

... tf.atan()を使用するか、tf.tanh()を使用するか、または線形を使用して最終出力yを取得できます。

損失関数にMSEを使用します。

kerasの別の例 ...

model = models.Sequential()
model.add(convolutional.Convolution2D(16, 3, 3, input_shape=(32, 128, 3), activation='relu'))
model.add(pooling.MaxPooling2D(pool_size=(2, 2)))
model.add(convolutional.Convolution2D(32, 3, 3, activation='relu'))
model.add(pooling.MaxPooling2D(pool_size=(2, 2)))
model.add(convolutional.Convolution2D(64, 3, 3, activation='relu'))
model.add(pooling.MaxPooling2D(pool_size=(2, 2)))
model.add(core.Flatten())
model.add(core.Dense(500, activation='relu'))
model.add(core.Dropout(.5))
model.add(core.Dense(100, activation='relu'))
model.add(core.Dropout(.25))
model.add(core.Dense(20, activation='relu'))
model.add(core.Dense(1))
model.compile(optimizer=optimizers.Adam(lr=1e-04), loss='mean_squared_error')

MNISTの例との主な違いは、ロジットのN次元のベクトルにクロスエントロピー損失のあるソフトマックスに集中する代わりに、MSE損失のある1次元のベクトルになることです。

11
j314erre

重要なのは、最後に完全に接続された(出力)レイヤーにアクティベーション機能を持たないことです。事前に少なくとも1つのFCレイヤーが必要であることに注意してください。

1
Edd