私はプログラミング初心者で、まだ数日間しかコードを触ったことがありません。ですが、AIによる画像補完をどうしても行いたくて、今回不慣れなプログラミングに手を出しました。

試したモノ  
[SIGGRAPH論文](https://github.com/satoshiiizuka/siggraph2017_inpainting/blob/master/inpaint.lua)

私は独学で数日間かけて環境をDockerとUbuntuのLTS版20.4を用いてなんとか構築し、パッケージをインストールして使用する所までこぎつけました。しかし、画像を補完する過程でこのようなエラーが出てスタックし続けております。

```

    root@82a52e3b8c9f:/mount# th inpaint.lua --input example.png --mask example_mask.png
    {
    gpu : false
    mask : "example_mask.png"
    postproc : false
    model : "completionnet_places2_freeform.t7"
    maxdim : 600
    input : "example.png"
    }
    Loading model...
    /root/torch/install/bin/luajit: inpaint.lua:78: inconsistent tensor size, expected
    tensor [4 x 336 x 600] and mask [3 x 336 x 600] to have the same number of elements,
    but got 806400 and 604800 elements respectively at
    /root/torch/pkg/torch/lib/TH/generic/THTensorMath.c:138
    stack traceback:
    [C]: in function 'maskedFill'
    inpaint.lua:78: in main chunk
    [C]: in function 'dofile'
    /root/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:150: in main chunk
    [C]: at 0x00405d50
    
```

インターネットでエラーコードを調べましたが、どれもしっくり来るものは一つもなく困り果てています。素人考えで、一応画像の大きさも統一しましたし、名前も最初に付いてるexample.pngとexample_mask.pngのまま作っています。しかし、一向に解決しません。

そして、このようなエラーが出たというSIGGRAPH論文の関連記事もなく、修正方法も見つからず、どうして自分だけがこんな目に会わなければならないのかというやり場のない怒りだけが込み上げて来ました。どなたか解決してもらえませんか？
CC BY-SA 4.0
2021-09-11T00:43:26.540
82409
2021-09-11T09:03:51.383
2021-09-11T09:03:51.383
19110
48156
question
lua torch
siggraph2017_inpaintingでの画像補完stack解決方法
> /root/torch/install/bin/luajit: inpaint.lua:78: inconsistent tensor size,
> expected  
>  tensor [4 x 336 x 600] and mask [3 x 336 x 600] to have the same number of
> elements,  
>  but got 806400 and 604800 elements respectively at

エラーメッセージを見たところPNGファイルのチャネル数が異なっているのがエラーの原因のようです。入力画像とマスク画像でチャネル数を揃える必要があるでしょう。  
※今回の場合はマスク画像にアルファチャネルがないようです。

参考：[何故か3つもあるPNG形式の違いについて](https://www.attend.jp/desine_171028)
CC BY-SA 4.0
2021-09-11T02:39:24.687
82411
2021-09-11T02:39:24.687
39819
82409
answer