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

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

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

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

深層学習

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

Python 3.x

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

機械学習

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

解決済

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

dendenmushi
dendenmushi

総合スコア0

Keras

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

深層学習

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

Python 3.x

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

機械学習

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

1回答

0評価

0クリップ

3293閲覧

投稿2020/07/04 10:59

編集2022/01/12 10:58

前提・実現したいこと

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

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

cmd

No module named 'tf_slim'

対応

cmd

pip install tf_slim

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

python

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

cmd

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

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

python

pip install tensorflow_gpu==1.13.1

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

cmd

ImportError: 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

from tensorflow.python.framework import device_spec as tf_device ImportError: 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

# Google Driveマウント from google.colab import auth auth.authenticate_user() from oauth2client.client import GoogleCredentials creds = GoogleCredentials.get_application_default() !apt-get install -y -qq software-properties-common python-software-properties module-init-tools !add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null !apt-get update -qq 2>&1 > /dev/null !apt-get -y install -qq google-drive-ocamlfuse fuse import getpass !google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL vcode = getpass.getpass() !echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} !mkdir -p drive !google-drive-ocamlfuse drive !ls drive # Pascal VOC形式のデータセットをTFRecordに変換 !git clone https://github.com/tensorflow/models cd models/research/deeplab/datasets !mkdir pascal_voc_seg !mkdir pascal_voc_seg/VOCdevkit cd ../../../../../ cd content/ !cp drive/"Colab Notebooks"/VOC2012/VOCtrainval_11-May-2012.tar models/research/deeplab/datasets/pascal_voc_seg/ cd models/research/deeplab/datasets/pascal_voc_seg/ !7z x VOCtrainval_11-May-2012.tar cd ../../../../../../ cd content/models/research/deeplab/datasets/ # SegmentationClassRawを生成 !python ./remove_gt_colormap.py --original_gt_folder="./pascal_voc_seg/VOCdevkit/VOC2012/SegmentationClass" --output_dir="./pascal_voc_seg/VOCdevkit/VOC2012/SegmentationClassRaw" mkdir pascal_voc_seg/tfrecord !python ./build_voc2012_data.py \ --image_folder="./pascal_voc_seg/VOCdevkit/VOC2012/JPEGImages" \ --semantic_segmentation_folder="./pascal_voc_seg/VOCdevkit/VOC2012/SegmentationClassRaw" \ --list_folder="./pascal_voc_seg/VOCdevkit/VOC2012/ImageSets/Segmentation" \ --image_format="jpg" \ --output_dir="./pascal_voc_seg/tfrecord/" !pip uninstall tensorflow !pip install tensorflow==1.13.1 !python ./build_voc2012_data.py \ --image_folder="./pascal_voc_seg/VOCdevkit/VOC2012/JPEGImages" \ --semantic_segmentation_folder="./pascal_voc_seg/VOCdevkit/VOC2012/SegmentationClassRaw" \ --list_folder="./pascal_voc_seg/VOCdevkit/VOC2012/ImageSets/Segmentation" \ --image_format="jpg" \ --output_dir="./pascal_voc_seg/tfrecord/" cd ../../../../../../ cd content/models/research/deeplab/ mkdir ./datasets/pascal_voc_seg/init_models cd ../../../../../content/ !cp drive/"Colab Notebooks"/VOC2012/deeplabv3_pascal_train_aug_2018_01_04.tar.gz models/research/deeplab/datasets/pascal_voc_seg/init_models/ cd models/research/deeplab/datasets/pascal_voc_seg/init_models/ !tar -zxvf deeplabv3_pascal_train_aug_2018_01_04.tar.gz cd ../../ # PATH通し ! echo $PYTHONPATH import os os.environ['PYTHONPATH'] += ":/content/models/research" os.environ['PYTHONPATH'] += ":/content/models/research/slim" os.environ['PYTHONPATH'] += ":/content/models/research/deeplab" ! echo $PYTHONPATH cd ../../../../../ !cp -r content/models/research/slim/nets content/models/research/deeplab cd /content/models/research/deeplab/ !python model_test.py -v !pip install tf_slim # PATHチェック !python model_test.py -v

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

Colab

/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'. _np_qint8 = np.dtype([("qint8", np.int8, 1)]) /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'. _np_quint8 = np.dtype([("quint8", np.uint8, 1)]) /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'. _np_qint16 = np.dtype([("qint16", np.int16, 1)]) /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'. _np_quint16 = np.dtype([("quint16", np.uint16, 1)]) /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'. _np_qint32 = np.dtype([("qint32", np.int32, 1)]) /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'. np_resource = np.dtype([("resource", np.ubyte, 1)]) Traceback (most recent call last): File "model_test.py", line 22, in <module> from deeplab import model File "/content/models/research/deeplab/model.py", line 58, in <module> from deeplab.core import feature_extractor File "/content/models/research/deeplab/core/feature_extractor.py", line 24, in <module> from deeplab.core import nas_network File "/content/models/research/deeplab/core/nas_network.py", line 44, in <module> from deeplab.core import nas_genotypes File "/content/models/research/deeplab/core/nas_genotypes.py", line 23, in <module> from deeplab.core import nas_cell File "/content/models/research/deeplab/core/nas_cell.py", line 29, in <module> from deeplab.core import xception as xception_utils File "/content/models/research/deeplab/core/xception.py", line 58, in <module> from nets.mobilenet import conv_blocks as mobilenet_v3_ops File "/content/models/research/deeplab/nets/mobilenet/conv_blocks.py", line 20, in <module> import tf_slim as slim File "/usr/local/lib/python3.6/dist-packages/tf_slim/__init__.py", line 25, in <module> from tf_slim.layers import * File "/usr/local/lib/python3.6/dist-packages/tf_slim/layers/__init__.py", line 25, in <module> from tf_slim.layers.layers import * File "/usr/local/lib/python3.6/dist-packages/tf_slim/layers/layers.py", line 30, in <module> from tf_slim.ops import variables File "/usr/local/lib/python3.6/dist-packages/tf_slim/ops/variables.py", line 27, in <module> from tensorflow.python.framework import device_spec as tf_device ImportError: cannot import name 'device_spec'

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

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Keras

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

深層学習

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

Python 3.x

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

機械学習

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