画像サイズ2020.02.01ほとんどの畳み込みニューラルネットワーク(CNN)を使用した深層学習アーキテクチャは、正方形の画像を入力画像としている。このため、正方形でない画像が入力されたとき、次のような処理を施して、正方形に変更しておく必要がある。画像の長辺と短辺を指定したサイズ(例:299×299)になるように拡大縮小する。このとき、長辺と短辺の縮尺率が異なるので、画像中のオブジェクトの縦横の比率が変化する。オブジェクトの比率が画像判別に重要な場合は、この方法が不適である。画像の短辺が長辺と同じ長さになるように延長し、延長して得られた空白領域を黒などの色で塗りつぶす。空白領域に、他の写真の一部を貼り付けるなどで対応することもできる。画像の短辺に合わせて、長辺ではみ出している部分を切り落とす。この場合、画像判別に重要な領域が半分になったり、切り出した正方形に含まれなかったりする場合が起こり得る。画像の長辺と短辺の比率を考慮せずに、強制的に指定されたサイズの正方形に拡大縮小するには、特別な前処理を行う必要がない。フレームワークではすでにこのような関数が用意されている。メソッドを使用して、サイズを変更する。次のサンプルコードは、入力画像の短辺と長辺の差を計算して、画像がなるべく真ん中に配置されるように、短辺を上下あるいは左右を延長する。一色で塗りつぶしている。処理後ここでは、短辺を長辺に合わせて延長してできた領域を黒で塗りつぶした。この場合、機械は上下または左右に生じた黒の領域に情報が含まれていないと簡単にわかり、学習効果が薄いと考えられる。そのため、このような領域に一色で塗りつぶすのではなく、一色にノイズを加えたり、ほかの写真の一部をここに埋め込んだりすることもある。次のサンプルコードは、画像の長辺の長さが短編の長さと同じなるように、余分な領域を切り落とす例である。この例では、画像の中央から左右あるいは上下にはみ出している部分を切り落としている。