セマンティックセグメンテーションのエラーについて

335 views
Skip to first unread message

Kentee

unread,
Nov 9, 2021, 8:06:34 PM11/9/21
to Neural Network Console Users (JP)
セマンティックセグメンテーションの初心者です。
今回、NNCでセマンティックセグメンテーションをやろうとしたところ、エラーが出現し、その原因がよくわからないので質問いたしました。

今回のセマンティックセグメンテーションの目的は、写真から緑を抽出するというものです。データセットには、自分がストリートビューから作成した二値画像を用いています。
データセットは、添付したスクリーンショットのように、inputは3,640,640、outputは1,640,640のものとなっています。

プロジェクトは、サンプルtutorial.semantic_segmentation.binary_semantic_segmentationを用いています。

そして、今回出たエラーが添付したスクリーンショットのようになります。

データセットに含まれる変数のサイズとInputレイヤーのSizeプロパティで指定されるサイズが異なっている可能性があります。もしくは、隣接しているレイヤーのOutput値とInput値が一致しているかご確認ください。

というエラーが毎回出ます。

ログは以下の通りです。
2021-11-08 13:59:56,044 [worker]: [INFO]: Network structure auto searching, mutate .sdcproj 2021-11-08 13:59:57,160 [worker]: [INFO]: Download mutate network candidates 2021-11-08 14:00:12,652 [worker]: [INFO]: sdeep_console_cli_util structure_search -i "/home/nnabla/work/mutate/candidates.csv" -o "/home/nnabla/work/data.sdcproj" 2021-11-08 14:00:12,865 [worker]: [INFO]: Created mutate network: /home/nnabla/work/data.sdcproj 2021-11-08 14:00:14,552 [worker]: [INFO]: sdeep_console_cli_util create_result_ini -i "/home/nnabla/work/data.sdcproj" -y "/home/nnabla/empty_monitoring_report.yml" -o "/home/nnabla/work/result.ini" 2021-11-08 14:00:15,753 [worker]: [INFO]: sdeep_console_cli_util create_prototxt -i "/home/nnabla/work/data.sdcproj" -o "/home/nnabla/work/network.prototxt" -p "/home/nnabla/work/param_assign.csv" 2021-11-08 14:00:17,969 [worker]: [INFO]: console_cli train -c /home/nnabla/work/network.prototxt -o /home/nnabla/results -s /home/nnabla/work/data.sdcproj -a /home/nnabla/work/param_assign.csv 2021-11-08 14:00:18,594 [nnabla]: Using context "Context(backend=['cpu:float'], array_class='CpuCachedArray', device_id='')" 2021-11-08 14:00:18,788 [nnabla]: Train with contexts ['cpu'] 2021-11-08 14:00:18,919 [nnabla]: Training epoch 1 of 10 begin 2021-11-08 14:00:18,920 [nnabla]: ctx passed to scheduler doesn't have cuda/cudnn backend. lms scheduler will not be used. 2021-11-08 14:00:18,920 [nnabla]: ctx passed to scheduler doesn't have cuda/cudnn backend. lms scheduler will not be used. 2021-11-08 14:00:19,014 [nnabla]: Shape does not match between data "y" and variable "BinaryCrossEntropy_T" ((8, 3, 640, 640) != (8, 1, 640, 640)). NNabla command line interface (Version:1.21.0.dev1, Build:210825160030, Callback:console.day12.dev) Traceback (most recent call last): File "/usr/local/lib/python3.8/dist-packages/nnabla/utils/cli/cli.py", line 147, in cli_main return_value = args.func(args) File "/usr/local/lib/python3.8/dist-packages/nnabla/utils/cli/train.py", line 705, in train_command result, restart = _train(args, config) File "/usr/local/lib/python3.8/dist-packages/nnabla/utils/cli/train.py", line 505, in _train cost = _update(iteration, config, cost, scheduler) File "/usr/local/lib/python3.8/dist-packages/nnabla/utils/cli/train.py", line 180, in _update let_data_to_variable(v.variable_instance, data[ File "/usr/local/lib/python3.8/dist-packages/nnabla/utils/cli/utility.py", line 122, in let_data_to_variable variable.data.cast(data.dtype)[...] = data ValueError: could not broadcast input array from shape (8,3,640,640) into shape (8,1,640,640) /usr/lib/python3.8/subprocess.py:844: RuntimeWarning: line buffering (buffering=1) isn't supported in binary mode, the default buffer size will be used self.stdout = io.open(c2pread, 'rb', bufsize) 2021-11-08 14:00:19,208 [worker]: [ERROR]: console_cli command is failed. 2021-11-08 14:00:20,076 [worker]: [INFO]: Network structure auto searching, count 28 done 2021-11-08 14:00:22,502 [worker]: [INFO]: worker done

inputのレイヤーのサイズを3,640,640に合わせているのですが、上手くいかないので、どうしたらいいかわからず、手詰まっています。

どうすればこのエラーが解決できるのか、ご回答していただければ幸いです。
SharedScreenshot.jpgScreenshot 2021-11-10 095547.jpgScreenshot 2021-11-10 100346.jpg


小林由幸

unread,
Jan 13, 2022, 11:26:15 PM1/13/22
to Neural Network Console Users (JP)
エラーメッセージを拝見する限り、1,640,640(モノクロ)であるはずの出力画像のサイズが3,640,640(カラー)になっているようです。
データセットに含まれる画像yをモノクロで作成しなおすか、あるいは以下のようにカラー画像から1枚目だけを取り出してモノクロ画像として用いることでエラーを回避できるかと思います。

  • Input_2としてラベルyの画像(Dataset=y, Size=3,640,640)を入力
  • Sliceレイヤー(Stop=1,640,640)で最初のチャンネルのみを抽出

mono_label_semaseg.png

2021年11月10日水曜日 10:06:34 UTC+9 Kentee:
Reply all
Reply to author
Forward
0 new messages