Abstract
人の視野は中心ほど精細である。画像データにも被写体を中心に置いたデータが多い。
そこで、中心ほど分解能が高まる極座標形式での画像解析によって、特徴点を抽出しやすくなると考えた。
簡易な実験としてMNISTを極座標変換しての試行を試したが、結果として精度の向上は見られなかった。
実験内容
MNIST画像をOpenCVのLogPolarで極座標化したものに、基本的な畳み込み演算処理を施した。
- 元画像
- 極座標化
- 極座標変換ソースコード
import numpy as np
import matplotlib.pyplot as plt
from dataset.mnist import load_mnist
import cv2
(x_train, t_train), (x_test, t_test) = load_mnist(flatten=False)
px_train = np.zeros((500,1,28,28))
px_test = np.zeros((100,1,28,28))
for i in range(500):
px_train[i][0] = cv2.logPolar(x_train[i][0], (14, 14), 9, cv2.WARP_FILL_OUTLIERS)
if(i < 100):
px_test[i][0] = cv2.logPolar(x_test[i][0], (14, 14), 9, cv2.WARP_FILL_OUTLIERS)
畳み込み演算処理は「ゼロから作るDeep Learning ――Pythonで学ぶディープラーニングの理論と実装(
斎藤 康毅 著)」のものを流用。処理時間の関係上、MNISTの冒頭、訓練500枚・評価100枚のみで学習。
実験結果
- 通常画像:精度83%
=============== Final Test Accuracy ===============
test acc:0.83
- 極座標画像:精度77%
=============== Final Test Accuracy ===============
test acc:0.77
考察
使用したデータの平均を取った画像では外周の情報は少ないと考えられるが、今回の実験では有意な差異が見られなかった。
MNISTデータの使用画素領域が広い為という理由が考えられるが、極座標解析で検索しても目立った実験が見つからなかったのは実験結果が有意義でない為とも考えられる。
今後はデータ圧縮と組み合わせて性能評価したい。
(2019/11/14更新)
特徴量として、ドット平均との二乗差の合計で対数を取ってみた。
x_spec = sum(np.log(np.exp(1) + (x_train[:] - np.mean(x_train, axis = (0, 1)))**2))
print(np.shape(x_spec))
plt.imshow(x_spec[0])
plt.show()
やっぱり中心に近い部分の方が情報量多いと思うんだけどなぁ。