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

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

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

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

Q&A

解決済

1回答

2159閲覧

deeplabcut google colab上での開発 python AttributeError: 'CommentedSeq' object has no attribute 'keys'

xs5786

総合スコア1

Python

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

0グッド

0クリップ

投稿2021/10/26 07:17

編集2021/10/26 11:55

前提・実現したいこと

deeplabcutというツールをGoogle colab上のgpuで動かしたいです。
以下のサイトを参考にGoogle colab上で順に実行していったのですが、
deeplabcut.create_training_dataset(path_config_file)を実行したところでエラーメッセージが発生しました。

https://qiita.com/riichirohira/items/b92723278ba92fb42db9

configファイルの写真

configファイルの写真

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

AttributeError Traceback (most recent call last) <ipython-input-102-b29a52be26d9> in <module>() ----> 1 deeplabcut.create_training_dataset(path_config_file) 1 frames /usr/local/lib/python3.7/dist-packages/deeplabcut/generate_training_dataset/trainingsetmanipulation.py in create_training_dataset(config, num_shuffles, Shuffles, windows2linux, userfeedback, trainIndices, testIndices, net_type, augmenter_type) 761 762 Data = merge_annotateddatasets( --> 763 cfg, Path(os.path.join(project_path, trainingsetfolder)), windows2linux 764 ) 765 if Data is None: /usr/local/lib/python3.7/dist-packages/deeplabcut/generate_training_dataset/trainingsetmanipulation.py in merge_annotateddatasets(cfg, trainingsetfolder_full, windows2linux) 414 AnnotationData = [] 415 data_path = Path(os.path.join(cfg["project_path"], "labeled-data")) --> 416 videos = cfg["video_sets"].keys() 417 for video in videos: 418 _, filename, _ = _robust_path_split(video) AttributeError: 'str' object has no attribute 'keys

config.yamlファイルのvideo_setsを
video_sets:
-/content/drive/MyDrive/ColabNotebooks~のように変更したところ
エラーメッセージが以下のように変わりました。

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

AttributeError Traceback (most recent call last) <ipython-input-16-b29a52be26d9> in <module>() ----> 1 deeplabcut.create_training_dataset(path_config_file) 1 frames /usr/local/lib/python3.7/dist-packages/deeplabcut/generate_training_dataset/trainingsetmanipulation.py in create_training_dataset(config, num_shuffles, Shuffles, windows2linux, userfeedback, trainIndices, testIndices, net_type, augmenter_type) 761 762 Data = merge_annotateddatasets( --> 763 cfg, Path(os.path.join(project_path, trainingsetfolder)), windows2linux 764 ) 765 if Data is None: /usr/local/lib/python3.7/dist-packages/deeplabcut/generate_training_dataset/trainingsetmanipulation.py in merge_annotateddatasets(cfg, trainingsetfolder_full, windows2linux) 414 AnnotationData = [] 415 data_path = Path(os.path.join(cfg["project_path"], "labeled-data")) --> 416 videos = cfg["video_sets"].keys() 417 for video in videos: 418 _, filename, _ = _robust_path_split(video) AttributeError: 'CommentedSeq' object has no attribute 'keys'

該当のソースコード

試したこと

config.yamlの中身を色々といじっているのですがエラーが消えません。
分かる方がいれば回答よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

追記

ご質問にある参考資料と設定ファイルの中身が異なり、インデントがおかしくなってしまっているようです。

深層学習で動物の身体をトラッキングするdeeplabcutをgoogle colaboratoryで走らせる - Qiita

参考記事内:

yaml

1video_sets: 2 '/content/drive/なんとかかんとか': 3 crop: 0, 1024, 0, 1024

ご質問者さんの設定ファイル:

yaml

1video_sets: '/content/drive/なんとかかんとか': 2crop: 0, 1024, 0, 1024

ご確認ください。

過去の回答

【追記】
期待されているのはリストではなく辞書(YAMLではハッシュ)です。失礼しました。
修正しました。

当方deeplabcutについては詳しくありませんが、video_setsが辞書ではなく文字列だからではないでしょうか。

エラーをよくみると、

python

1videos = cfg["video_sets"].keys()

とあるように、cgf["video_sets"]が辞書であることを期待しているわけですが、実際の設定の方だと

yaml

1video_sets: '/content/drive/なんとかかんとか'

と文字列になっています。

yaml

1video_sets: 2 '/content/drive/なんとかかんとか':

など、辞書(YAMLではハッシュと呼びます)にしてみてはいかがでしょうか。

YAML入門 - Qiita

投稿2021/10/26 09:37

編集2021/10/26 11:52
fj68

総合スコア752

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

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

xs5786

2021/10/26 11:32

回答ありがとうございます。 教えていただいたことを試したところ、AttributeErrorの内容が AttributeError: 'CommentedSeq' object has no attribute 'keys' に変わりました。'CommentedSeq'というのがよく分からなかったので 調べたところ、このようなのが見つかりましたがよく分かりません。 https://stackoverflow.com/questions/55677079/how-to-parse-nested-dictionary-inside-a-list-in-yaml よろしくお願いいたします。
fj68

2021/10/26 11:39

'CommentedSeq'というのはYAMLのコメントを表すパーサライブラリのオブジェクトのようですが、私もdeeplabcatが想定している設定ファイルについて詳しいわけではないので、質問を編集してみてください。 他の方からも回答をもらえるかと思います。 私の方でも調べてみてわかったことなどあれば回答に追記しますね。
xs5786

2021/10/26 11:42

分かりました。ご丁寧にありがとうございます。
fj68

2021/10/26 11:44

設定ファイルのインデントについて追記しました。 ご確認ください。
xs5786

2021/10/26 12:01

ありがとうございました。エラー消えて動くようになりました!
fj68

2021/10/26 12:10

よかったです。 頑張ってください!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問