前提・実現したいこと
セマンティックセグメンテーションの初心者です。
今回、Neural Network Console(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
該当のソースコード
ソースコードは、NNCにサンプルとしてあるtutorial.semantic_segmentation.binary_semantic_segmentation を用いています。
その様子は以下のスクリーンショットの通りです。
試したこと
Inputのレイヤープロパティで、Sizeを3,640,640に変更したのですが、それでもうまくいきません。
原因究明をお願いいたします。