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

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

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

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

深層学習

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

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

Q&A

解決済

1回答

6716閲覧

セマンティックセグメンテーション Deeplab v3+を用いて画像から人型を認識させたい。

dendenmushi

総合スコア98

Keras

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

深層学習

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

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

0グッド

0クリップ

投稿2020/07/04 10:59

編集2020/07/04 12:34

前提・実現したいこと

semantic_segmentation Deeplabを使用して画像から人だけを認識させたい。(2020年7月現在の方法)
行おうとしていることは以下のサイトの内容になります。
誰でも出来る!DeepLab v3+でGPUを使って自作データセットで学習・推論する

推奨環境

OS Windows10
GPU RTX2060
GPUのドライバー 436.48
python Python 3.6.9 :: Anaconda, Inc.
CUDA CUDA Toolkit 9.0
cuDNN v7.4.1.5
tensorflow_gpu v1.13.1
keras 2.3.1

私の開発環境

OS Windows10
GPU RTX2070
GPUのドライバー 26.21.14.4166
python Python 3.6.9 :: Anaconda, Inc.
CUDA CUDA Toolkit 9.0
cuDNN release 9.0, V9.0.176
tensorflow_gpu v1.13.1
keras 2.3.4

発生している問題・エラーメッセージ

【事象①】
PATHを通してPC再起動を行った後に
model_test.py -vを行ったときに以下エラーが発生しました。

python

1(py37gpu_resnet) C:\ProgramData\Anaconda3\envs\py37gpu_resnet\background-removal\models\research\deeplab>python model_test.py -v

cmd

1No module named 'tf_slim'

対応

cmd

1pip install tf_slim

この対応後に以下が発生しました。
【事象②】

python

1(py37gpu_resnet) C:\ProgramData\Anaconda3\envs\py37gpu_resnet\background-removal\models\research\deeplab>python model_test.py -v

cmd

1cannot import name 'device_spec' from 'tensorflow.python.framework

対応
以下のサイトを参考にしました。
ImportError: cannot import name 'device_spec' from 'tensorflow.python.framework'

python

1pip install tensorflow_gpu==1.13.1

その後、python model_test.py -vを行ったところ、

cmd

1ImportError: cannot import name 'device_spec' from 'tensorflow.python.framework' (C:\ProgramData\Anaconda3\envs\py37gpu_resnet\lib\site-packages\tensorflow\python\framework\__init__.py)

さらに試したこと

1
DeepLab で Sematic Segmentation する(デモを動かす)
ここで言われているDemoをGoogle-colabでも動かしてみましたが、この場合は、自分の好きな画像に対してURLを準備しなければ実行できないようでした。

GPUをあきらめてtensorflow==1.13.1で動かそうとしたところ、

cmd

1 from tensorflow.python.framework import device_spec as tf_device 2ImportError: cannot import name 'device_spec' from 'tensorflow.python.framework' (C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\framework\__init__.py)

この際ローカル実行の方向は諦めてGoogle colab上の整った環境で行ってみようと思い以下を実行しました。

2
準備として上記サイト『誰でもできる~』にある手順を参考に、以下2つを入手してから、GoogleDriveのColab NotebookにVOC2012フォルダを作り、入れておきました。

deeplabv3_pascal_train_aug_2018_01_04.tar.gz →入手先
VOCtrainval_11-May-2012.tar →入手先
イメージ説明

Google Colab のコマンドごとに一行あけています。

Colab

1# Google Driveマウント 2from google.colab import auth 3auth.authenticate_user() 4from oauth2client.client import GoogleCredentials 5creds = GoogleCredentials.get_application_default() 6 7!apt-get install -y -qq software-properties-common python-software-properties module-init-tools 8!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null 9!apt-get update -qq 2>&1 > /dev/null 10!apt-get -y install -qq google-drive-ocamlfuse fuse 11 12import getpass 13!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL 14vcode = getpass.getpass() 15!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} 16 17!mkdir -p drive 18!google-drive-ocamlfuse drive 19!ls drive 20 21# Pascal VOC形式のデータセットをTFRecordに変換 22!git clone https://github.com/tensorflow/models 23 24cd models/research/deeplab/datasets 25 26!mkdir pascal_voc_seg 27 28!mkdir pascal_voc_seg/VOCdevkit 29 30cd ../../../../../ 31 32cd content/ 33 34!cp drive/"Colab Notebooks"/VOC2012/VOCtrainval_11-May-2012.tar models/research/deeplab/datasets/pascal_voc_seg/ 35 36cd models/research/deeplab/datasets/pascal_voc_seg/ 37 38!7z x VOCtrainval_11-May-2012.tar 39 40cd ../../../../../../ 41 42cd content/models/research/deeplab/datasets/ 43 44# SegmentationClassRawを生成 45!python ./remove_gt_colormap.py --original_gt_folder="./pascal_voc_seg/VOCdevkit/VOC2012/SegmentationClass" --output_dir="./pascal_voc_seg/VOCdevkit/VOC2012/SegmentationClassRaw" 46 47mkdir pascal_voc_seg/tfrecord 48 49!python ./build_voc2012_data.py \ 50 --image_folder="./pascal_voc_seg/VOCdevkit/VOC2012/JPEGImages" \ 51 --semantic_segmentation_folder="./pascal_voc_seg/VOCdevkit/VOC2012/SegmentationClassRaw" \ 52 --list_folder="./pascal_voc_seg/VOCdevkit/VOC2012/ImageSets/Segmentation" \ 53 --image_format="jpg" \ 54 --output_dir="./pascal_voc_seg/tfrecord/" 55 56!pip uninstall tensorflow 57 58!pip install tensorflow==1.13.1 59 60!python ./build_voc2012_data.py \ 61 --image_folder="./pascal_voc_seg/VOCdevkit/VOC2012/JPEGImages" \ 62 --semantic_segmentation_folder="./pascal_voc_seg/VOCdevkit/VOC2012/SegmentationClassRaw" \ 63 --list_folder="./pascal_voc_seg/VOCdevkit/VOC2012/ImageSets/Segmentation" \ 64 --image_format="jpg" \ 65 --output_dir="./pascal_voc_seg/tfrecord/" 66 67cd ../../../../../../ 68 69cd content/models/research/deeplab/ 70 71mkdir ./datasets/pascal_voc_seg/init_models 72 73cd ../../../../../content/ 74 75!cp drive/"Colab Notebooks"/VOC2012/deeplabv3_pascal_train_aug_2018_01_04.tar.gz models/research/deeplab/datasets/pascal_voc_seg/init_models/ 76 77cd models/research/deeplab/datasets/pascal_voc_seg/init_models/ 78 79!tar -zxvf deeplabv3_pascal_train_aug_2018_01_04.tar.gz 80 81cd ../../ 82 83# PATH通し 84! echo $PYTHONPATH 85import os 86os.environ['PYTHONPATH'] += ":/content/models/research" 87os.environ['PYTHONPATH'] += ":/content/models/research/slim" 88os.environ['PYTHONPATH'] += ":/content/models/research/deeplab" 89! echo $PYTHONPATH 90 91cd ../../../../../ 92 93!cp -r content/models/research/slim/nets content/models/research/deeplab 94 95cd /content/models/research/deeplab/ 96 97!python model_test.py -v 98 99!pip install tf_slim 100 101# PATHチェック 102!python model_test.py -v

しかし以下ログが出てしまいました。

Colab

1/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:526: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'. 2 _np_qint8 = np.dtype([("qint8", np.int8, 1)]) 3/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:527: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'. 4 _np_quint8 = np.dtype([("quint8", np.uint8, 1)]) 5/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:528: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'. 6 _np_qint16 = np.dtype([("qint16", np.int16, 1)]) 7/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:529: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'. 8 _np_quint16 = np.dtype([("quint16", np.uint16, 1)]) 9/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:530: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'. 10 _np_qint32 = np.dtype([("qint32", np.int32, 1)]) 11/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:535: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'. 12 np_resource = np.dtype([("resource", np.ubyte, 1)]) 13Traceback (most recent call last): 14 File "model_test.py", line 22, in <module> 15 from deeplab import model 16 File "/content/models/research/deeplab/model.py", line 58, in <module> 17 from deeplab.core import feature_extractor 18 File "/content/models/research/deeplab/core/feature_extractor.py", line 24, in <module> 19 from deeplab.core import nas_network 20 File "/content/models/research/deeplab/core/nas_network.py", line 44, in <module> 21 from deeplab.core import nas_genotypes 22 File "/content/models/research/deeplab/core/nas_genotypes.py", line 23, in <module> 23 from deeplab.core import nas_cell 24 File "/content/models/research/deeplab/core/nas_cell.py", line 29, in <module> 25 from deeplab.core import xception as xception_utils 26 File "/content/models/research/deeplab/core/xception.py", line 58, in <module> 27 from nets.mobilenet import conv_blocks as mobilenet_v3_ops 28 File "/content/models/research/deeplab/nets/mobilenet/conv_blocks.py", line 20, in <module> 29 import tf_slim as slim 30 File "/usr/local/lib/python3.6/dist-packages/tf_slim/__init__.py", line 25, in <module> 31 from tf_slim.layers import * 32 File "/usr/local/lib/python3.6/dist-packages/tf_slim/layers/__init__.py", line 25, in <module> 33 from tf_slim.layers.layers import * 34 File "/usr/local/lib/python3.6/dist-packages/tf_slim/layers/layers.py", line 30, in <module> 35 from tf_slim.ops import variables 36 File "/usr/local/lib/python3.6/dist-packages/tf_slim/ops/variables.py", line 27, in <module> 37 from tensorflow.python.framework import device_spec as tf_device 38ImportError: cannot import name 'device_spec'

このエラーから下記サイトを参考にしました。
ImportError: cannot import name device_spec #40857

今度はtensorflowを上げた方がよいという指摘でした…先ほどあえて2verだと駄目なため、1.13.1に下げたばかりでした。
人型に綺麗に認識させる挑戦がこんなにも大変だと思いませんでした。
この後の対応、もしくは他方法でもDeeplabを用いた2020年現在の方法ご教授どなたか頂けないでしょうか。
よろしくお願い致します。

20200704 21:30追記

すみません。別解決方法の糸口です。
DeepLab で Sematic Segmentation する(デモを動かす)
上記のこのサイトで外部URL指定すればできるのですが、もしこれがローカル上にある画像を指定できるのであれば実現できるのですが、C:/~でも,./2.PNGなどでもできませんでした。これはIISやもしくはどこかに外部にアップロードが必ず必要ということになるのでしょうか。

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

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

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

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

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

guest

回答1

0

ベストアンサー

追記部分に関しての部分レスになります。

20200704 21:30追記
もしこれがローカル上にある画像を指定できるのであれば実現できるのですが、

これは Google Colab 上で利用の際に、ローカル上にある画像を指定
ということですよね?(確認) アップロードするなら

直接ローカルのパスを指定するはセキュリティの都合があるので、
Google Colab から C:/~でも,./2.PNGなど は当然できません。
が、自分のみの環境でも良いなら ngrok について調べて見て下さい。
ローカルファイルを外部から参照可能にするサービスを中継に使う方法があります。

投稿2020/07/04 18:59

編集2020/07/05 05:11
teamikl

総合スコア8760

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

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

dendenmushi

2020/07/05 00:37

ありがとうございます。このような方法があるのですね。
teamikl

2020/07/05 05:10

ローカルでの環境構築に関してはTensorflow 2 が必要そうですね。 > GPUをあきらめてtensorflow==1.13.1で動かそうとした > 先ほどあえて2verだと駄目なため、1.13.1に下げたばかりでした。 Tensorflow 2 がダメだった原因辺りが気になります。 もしpip でインストールできなかった場合の確認点 https://www.tensorflow.org/install/pip > TensorFlow 2 のインストールには、より新しいバージョンの pip が必要です。 docker を利用でも、対象のフォルダをマウントすることでローカルファイルへアクセスできます。
dendenmushi

2020/07/05 05:14

バージョンまわりが本当に大変なんですね…なんとかローカル保存ができるようになりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問