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

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

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

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

Q&A

解決済

1回答

1015閲覧

Segnetを動かしてみたい

Seven_Sea

総合スコア23

Keras

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

0グッド

0クリップ

投稿2020/07/24 13:35

元々U-netでいろいろセグメンテーションをやっているのですが、
知人からSegnetの方が軽くてよいと言われまして、
あれこれ検索しては試しているのですが、いまいちちゃんと動作せず、
おすすめのSegnetの実装方法が書かれているHPなどありましたら、教えていただければと思います。
よろしくお願いします。

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

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

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

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

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

aokikenichi

2020/07/25 01:26

こういうサイトの記事を試したが動作しない と列挙してくださらないと同じものを挙げられてしまう可能性があると思います また、環境もしめしていただかないと、環境によってもことなるので回答者の環境で動いてもSeven_Seaさんの環境で動かないかもしれません
Seven_Sea

2020/07/25 11:08

回答ありがとうございます。 こちらは tensorflow2.2.0 keras2.3.1 Win10の環境です。 今、以下のページのものを試してみました。 https://github.com/milky1210/Segnet (GPU) C:\Users\user\Python_Study\Segnet2>python main.py dir Using TensorFlow backend. 2020-07-25 19:13:52.094373: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_101.dll Traceback (most recent call last): File "main.py", line 78, in <module> main() File "main.py", line 53, in main sg = loader.segment_generator(path_b) File "C:\Users\user\Python_Study\Segnet2\loader.py", line 65, in segment_generator image = identity[image] IndexError: index 22 is out of bounds for axis 0 with size 22 このエラーでてできないです。 対処法がわかるような教えてください。 よろしくお願いします。
guest

回答1

0

ベストアンサー

今、以下のページのものを試してみました。

Segnet

IndexError: index 22 is out of bounds for axis 0 with size 22

このエラーでてできないです。

VOCデータセットに、仕様から外れた画像が含まれているためです
その画像を除外すれば、エラーが出なくなるはずです
Segnetを用いて画像を機械学習させたい
の「質問への追記・修正の依頼」を見てください

投稿2021/02/28 14:17

編集2021/02/28 14:19
jbpb0

総合スコア7651

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

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

Seven_Sea

2021/03/09 02:11

その後、該当画像を見つけることができまして、”2011_002920.jpg”でした。 で、その後Tensorflow の2を入れていたことが原因で with variable_scope(self.name):の部分でエラーが出まして、それは with tf.compat.v1.variable_scope(self.name): とすることで解決できたようです。 またその後、別のエラーが出まして、困っております。 ご存じの方いましたら、教えていただければと思います。 よろしくお願いいたします。 エラーは以下。 ValueError: The channel dimension of the inputs should be defined. Found `None`.
jbpb0

2021/03/30 12:16 編集

当方では、エラーが出ずに実行できました [環境]  Windows 10  Python 3.7.9  tensorflow-gpu 1.15.3  Keras 2.3.1 [手順] https://github.com/milky1210/Segnet をダウンロードして解凍する 「Segnet」ディレクトリに、「main.py」等がある 「Segnet」ディレクトリの「main.py」の先頭に、下記を追記する import sys http://host.robots.ox.ac.uk/pascal/VOC/voc2012/index.html#devkit の「Download the training/validation data (2GB tar file)」をダウンロードして解凍する 「VOCdevkit/VOC2012」の中の「JPEGImages」と「SegmentationObject」を、「Segnet」の中に移動する 移動後のパスは、下記の通り  JPEGImages → Segnet/VOCdataset/original  SegmentationObject → Segnet/VOCdataset/segmented 下記ファイルを削除する  Segnet/VOCdataset/original/2011_002920.jpg  Segnet/VOCdataset/segmented/2011_002920.png 「Segnet/Segnet」ディレクトリを作成する Anacondaプロンプトで、下記を実行する cd 「Segnet」ディレクトリのパス python main.py Segnet
Seven_Sea

2021/06/28 02:38

やってみます。
Seven_Sea

2021/07/22 12:03

試して見ましたが、 AttributeError: module 'tensorflow' has no attribute 'variable_scope' が出まして、 それは、model.pyの30行目を tf.compat.v1.variable_scope(self.name): に変更することでエラーが出なくなりました。 しかしながら、 ValueError: The channel dimension of the inputs should be defined. Found `None`. というエラーがでて解消出来ていません。
jbpb0

2021/07/22 12:54

バージョンを合わせてみてください >  tensorflow-gpu 1.15.3  Keras 2.3.1
Seven_Sea

2021/07/22 13:02

合わせたら確かに動きはしたのですが、CPUでの動作になってしまっています……。おそらくCUDA10.2のせいだと思います……。 ほかのYOLOとかの動作があるため、10.2以外が入れられない状態です……。諦めるほかないでしょうか?
jbpb0

2021/07/22 13:15 編集

当方のWindows 10 PCには、CUDA 10.0, 10.2を両方入れてて、TF 1.15ではCUDA 10.0を、PyTorchではCUDA 10.2を使うように設定して、どちらも使えてます TFを使う際に、必要なCUDAバージョンのDLLが環境変数Path上にあれば、TFは見つけて使ってくれるので、両方のCUDAバージョンのDLLが入ってるディレクトリパスを、どちらもPathに入れてます (Path内の順番は10.2が優先されるようにしてます)
Seven_Sea

2021/07/22 13:16

やってみます。ありがとうございます。
jbpb0

2021/07/22 13:49 編集

そのPCの、関係してそうな環境変数は、現状下記の通りです CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2 CUDA_PATH_V10_0=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0 CUDA_PATH_V10_2=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2 NVCUDASAMPLES10_0_ROOT=C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0 NVCUDASAMPLES10_2_ROOT=C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.2 NVCUDASAMPLES_ROOT=C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.2 NVTOOLSEXT_PATH=C:\Program Files\NVIDIA Corporation\NvToolsExt\ Path= (関係してそうなものだけ記載) C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\bin; C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\libnvvp; C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\extras\CUPTI\lib64; C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common; C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR; C:\Program Files\NVIDIA Corporation\Nsight Compute 2019.5.0; C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin; C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\libnvvp; C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras\CUPTI\libx64; C:\Program Files\NVIDIA Corporation\NVSMI; また、そのPCでのインストールの順番は、CUDA 10.0→10.2 でした 順番が逆(10.2→10.0)だと、10.0を追加インストール後の状態では、もしかしたら環境変数 CUDA_PATH, NVCUDASAMPLES_ROOT あたりは、後からインストールしたバージョンの方が設定されてるかもしれませんので、インストール後に調べて、もしそうなっていたら手動で書き換えてください Path内の順番も、後からインストールしたバージョンが先頭に追加されて優先されるようになってるかもしれませんので、そちらもインストール後に調べて、必要なら手動で書き換えてください
jbpb0

2021/07/22 13:51

CUDA 10.0を追加インストールする前に、現状の環境変数を全て記録しておくことをお勧めします 10.0を入れた後で、もしどれかの環境変数が消えていたら、手動で復活させる必要があるからです
Seven_Sea

2021/07/22 14:12

CuDNNに関係するエラーが出てます 1回目の計算に入った直後に、エラーが出ています…… (1) Unknown: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
jbpb0

2021/07/22 15:05

> This is probably because cuDNN failed to initialize CuDNNのバージョンが合ってないというエラーは出てませんでしょうか? https://teratail.com/questions/306602 の「回答 (解決した方法)」を見てください GPUのメモリーは足りてますでしょうか? 当方で使ってるGPUのメモリーは11GBです もし、質問者さんが使ってるGPUのメモリーがもっと少なければ、メモリー不足で落ちてるのかもしれません また、GPUを使ったPythonのプロセスが、終わっても消えずに残っていると、GPUのメモリーが占有されたままになり、メモリー不足で落ちます GPUのメモリーの余裕が十分にあるか、タスクマネージャーで確認してみてください 参考 https://qiita.com/Ka-k/items/cb942855ab669ff60630
Seven_Sea

2021/07/22 15:29

メモリは大丈夫だと思います。おそらく、パスが通ってないことが原因です……、10.2の方のパスしか通って無く、GPUのチェックを為てもCPUだけになってます……
Seven_Sea

2021/07/22 16:56

10.0で動きました。 が、10.2を入れると動かなくなるかもしれなくてビクビクしてます。 後で、10.2のパスを入れ直すことでやれるか見てみます……
Seven_Sea

2021/07/22 17:39

これって、自分の画像を使うときはどうすれば良いんでしょうか?
jbpb0

2021/07/22 22:26

main.py に、学習後にモデルをsaveするコードを追加します そうしないと、毎回学習することになり、時間の無駄です 推論専用のPythonコードファイルを書きます ファイル名は何でもいいですが、ここでは test.py とします test.py には、main.py でsaveしたモデルをloadし、セグメンテーションしたい自分の画像ファイルを読み込み、推論(predict)するコードを書きます 画像の読み込みと推論は、main.py から該当する部分を抜き出せば、簡単に書けると思いますよ
Seven_Sea

2021/07/22 23:24

なんとか頑張ってみます。 長々ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問