극좌표 MNIST
추상
남자의 시각은 심혼만큼 정밀하다. 화상 데이터에도 피사체를 중심으로 둔 데이터가 많다.
그래서, 중심만큼 분해능이 높아지는 극좌표 형식으로의 화상 해석에 의해, 특징점을 추출하기 쉬워진다고 생각했다.
간단한 실험으로서 MNIST를 극좌표 변환하여 시도를 시도했지만, 결과적으로 정밀도의 향상은 보이지 않았다.
실험 내용
MNIST 화상을 OpenCV의 LogPolar로 극좌표화한 것에, 기본적인 컨벌루션 연산 처리를 실시했다.
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장만으로 학습.
실험 결과
=============== Final Test Accuracy ===============
test acc:0.83
=============== 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()
역시 중심에 가까운 부분이 정보량 많다고 생각하지만.
Reference
이 문제에 관하여(극좌표 MNIST), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Poular/items/1974649c4ffb958a15d8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)