CNN을 이용한 홀수/짝수 분류

목적



사람이 숫자의 이미지에서 홀수인지 짝수인지 파악할 때, 어떤 숫자가 그려져 있는지를 머리로 숫자로 변환한 다음 그 숫자가 홀수인지 짝수인지, 2단계의 처리를 합니다(아마 ) 그러므로 인간이 말하는 홀수인지 짝수인지 생각하는 과정을 날려 버리고 이미지를 인식 할 수있는 Convolution Neural Network (이하 CNN)를 사용하여 숫자의 홀수와 짝수를 분류 할 수 있는지 검증해 보았다. 겠지, 라는 의견은 두고...)

이 기사의 코드는 다음과 같습니다.
github 링크

사용 데이터



필기 숫자 이미지 및 숫자 레이블 세트
The Mnist database【 h tp : // / 얀.ぇ군. 이 m/에 xdb/m에 st/】
교육 데이터 수 : 60,000 samples, 테스트 데이터 수 : 10,000 samples

실험



Convolution Neural Network를 사용하여 홀수/짝수 분류를 시도했습니다.
또, 덤으로 5 이상/5 이하의 분류도 해 보았습니다.
CNN 모델은 2 층 컨볼 루션과 2 층 전체 결합 층으로 구성된 매우 쉽습니다.

(1) 홀수의 라벨을 0, 짝수의 라벨을 1로 모델 학습
(2) 5 이상의 숫자 레이블을 0, 5 이하 숫자 레이블을 1로 모델 학습

결과



(1) 홀수/짝수 분류 모델



학습 과정





loss와 epochs의 관계





일부 테스트용 이미지 및 예측 라벨



0 = 홀수, 1 = 짝수


(2) 5 이상 / 이하 분류 모델



학습 과정





loss와 epochs의 관계





일부 테스트용 이미지 및 예측 라벨



0 = 5 이상, 1 = 5 이하


결과에서 알 수 있는 것



Validation loss를 보면 4 %, 6 % 정도의 오차라는 결과를 얻었다.
무작위 분류로 50 %의 오차라고 생각하면, 이번 실험에서는 화상 인식으로부터 직접 짝수 홀수라든지 5 이상 5 이하가 분류 할 수 있다!
아무리 숫자의 성질을 포착하는 것은 현명한 일은 하지 않고, 1, 3, 5, 7, 9와 같은 형태라면 홀수 그룹, 0, 2, 4, 6, 8과 같은 형태라면 짝수 그룹 그냥 그렇게하기 때문에 알 수없는 숫자를 보더라도 판단 할 수는 없을 것입니다. CNN이 결정되면 알려지지 않은 숫자라도 짝수 홀수를 예측할 수 있습니다.)

나중에.
당연할지도 모르지만, CNN은 비슷한 이미지만을 하나의 라벨로 할 필요는 없고(고양이라면 고양이만을 하나의 라벨로 하는, 같이), 법칙만 있으면 분류하는 것이 가능하다고 법칙은 이번에 {1, 3, 5, 7, 9 → 홀수, 0, 2, 4, 6, 8 → 짝수}와 같습니다.

CNN의 허용에 대해


흥미롭게도, (1) 홀수 짝수 분류보다 (2) 5 이상 이하의 분류가 학습 시간이 길었다 (예 : 10 [epochs] 일 때, (1) 1.558 [minutes], (2) 1.742 [minutes] ).
특히 {1, 3, 5, 7, 9}와 {0, 2, 4, 6, 8}로 분류했을 때보다 {0, 1, 2, 3, 4}와 {5, 6, 7, 8, 9}로 분류했을 때는 학습 시간이 길었습니다.이 이유에 대해 현재 단계에서는 알 수 없었지만, 그룹화 방법에 따라 학습 시간에 차이가 있음을 확인할 수 있습니다. (어쨌든 알고 계시다면 알려 주시면 감사하겠습니다 ...!)

좋은 웹페이지 즐겨찾기