극좌표 MNIST

추상



남자의 시각은 심혼만큼 정밀하다. 화상 데이터에도 피사체를 중심으로 둔 데이터가 많다.
그래서, 중심만큼 분해능이 높아지는 극좌표 형식으로의 화상 해석에 의해, 특징점을 추출하기 쉬워진다고 생각했다.
간단한 실험으로서 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()
    



    역시 중심에 가까운 부분이 정보량 많다고 생각하지만.

    좋은 웹페이지 즐겨찾기