머신러닝 283

CNN 필터링 스트라이딩 풀링 코드 연습

TensorFlow를 사용하여 CNN을 MNIST 수기 숫자 인식 문제를 다루어 보기 위한 준비 단계로서 아래 그림에서처럼 흑백 명암 픽셀로 구성된 단순 수치 이미지를 대상으로 CNN 코드 작성 연습을 해 보도록 한다. 이 코드 작성 연습은 TensorFlow 가 설치되어 있는 아나콘다의 쥬피터 또는 구글 Colab을 사용하도록 하자. Colab 사용 시에는 별도로 파이선 라이브러리들을 설치할 필요가 없다. 다음의 간단한 연습 코드는 명암 변화가 있는 3X3 격자형 이미지를 준비하자. TensorFlow의 그라프를 생성할 필요가 없으므로 직접 session 명령을 사용하기로 한다. 명암 변화가 있는 격자형 이미지를 numpy 배열 형태로 입력 후 shape 값을 출력해 보자. 다음 코드를 참조하면서, 2..

머신러닝 2021.07.09

CNN 필터와 스트라이딩 코드 작성을 위한 워밍업

머신 러닝의 여러 가지 문제 중에서 CNN(Convolutional Neural Network)에 다다르게 되면 왜 이렇게 복잡한 코딩을 하는지 이해하기가 무엇보다 어렵다고 생각할지도 모르겠다. 그럴 때면 항상 머신 러닝의 발전과정을 단계적으로 돌이켜 볼 필요가 있다. 1940년대 초 이미 McCulloch 과 Pittsdp 의해 신경 병리학적인 관찰 결과를 논리학적인 토대 위에 뉴론에 입력되는 신호들에 대하여 웨이트를 부여하는 뉴럴 네트워크 모델이 제안되었다. 그로부터 시작해서 1957년에 Rosenblatt이 오늘날의 조도센서로 알려진 포토 센서를 사용하여 컴퓨터와 인터페이스를 통해 퍼셉트론을 시현했다. 이 퍼셉트론으로만 해도 이미 문자 인식이 가능했고 아울러 이미지 인식이라든지 인간처럼 말하거나 듣..

머신러닝 2021.07.09

CNN 이미지 인식: Pooling to Deep Stacking

6-3절 앞 페이지의 마지막 부분에서 9X9 매트릭스에 표현된 이미지 “X”를 식별하기 위해서 3개의 컨볼루셔널 필터를 사용해 적용하여 각 필터의 특징을 그대로 반영한 3개의 7X7 이미지 매트릭스가 성공적으로 생성되었다. 메모리 용량 측면에서 보면 81 픽셀 이미지 데이터에서 49픽셀 이미지 데이터 3세트가 생성되었으므로 원래 이미지의 거의 2배에 가까운 147 픽셀 이미지 데이터를 가지게 된 셈이며 생각보다 증가된 메모리 용량은 그다지 달갑지 않아 보인다. 당연히 메모리 용량을 줄일 수 있도록 처리가 뒤따라야 할 것이다. 이 과정을 subsampling 또는 Pooling 이라고 한다. Pooling의 의미는 특정한 가두리 안에 위치한 픽셀들을 대표할 수 있는 값을 정하는 것이다. 위 결과에서 보듯이..

머신러닝 2021.07.09

6-3 Convolutional Neural Network(CNN)의 이미지 인식 원리 2: 필터링

MNIST 문제에서처럼 수기 숫자 데이터를 샘플해서 DB를 만들 듯이 알파벳 문자도 비슷하게 처리하면 되지 않을까? 고 반문할 수도 있을 것이다. 다음의 MNIST 수시 숫자 샘플들을 살펴보자 수많은 사람들이 임의로 작성한 수기문자임에도 불구하고 뭔가 잘 정리되었으면서도 인위적인 느낌이 많이 나지 않는가? 그렇다. 이 수기숫자 DB 구성을 위해서 숫자 하나당 크기 방향 굵기를 비롯하여 많은 요인들이 이미 관리 된 상태에서 샘플된 데이터이다. 그렇다면 아무런 제약 조건 없이 샘플되는 글자는 어떤 기하학적 특징을 가지게 될것이가? 다음과 같이 기본적인 4가지 요소 즉 병진, 확대, 회전 및 가중 여부가 큰 영향을 미칠 것이다. 즉 MNIST에서 처럼 DB가 일정한 조건하에처럼 구성되지 않으면 softmax에..

머신러닝 2021.07.09

6-2 컨볼루셔널 뉴럴 네트워크(CNN:Convolutional Neural Network)의 이미지 인식

우리가 생각하기에 머신 러닝은 엄청난 속도로 발전하는 것처럼 생각하기 쉬우나 사실은 그 정반대다. 1957년에 코넬 대학의 Rosenblatt이 시제작하여 시연한 퍼셉트론으로부터 시작되었으며 동시에 퍼셉트론과는 직접적인 관계는 없었지만 1959년 하버드 의과대학의 후벨 박사가 고양이 시각 피질 반응에 대한 연구를 통해 사물의 특징을 추출해내는 시각적 인식에 대한 간단한 원리를 이해하게 되었다. 이어서 1969년 MIT 의 민스키 교수가 XOR 논리 문제를 처리하지 못하는 퍼셉트론의 한계를 지적하고 이 문제 해결을 위해서는 단일 레이어 뉴럴네트워크 조차도 아무런 소용이 없다는 식의 폄훼가 이루어져 머신 러닝 발전의 족적을 남길 정도로 큰 장애물 역할을 자행하였다. 그럼에도 불구하고 머신 러닝은 전 세계적으..

머신러닝 2021.07.09

6-1 고양이 시각피질의 edge detection 실험과 CNN(Convolutional Neural Network)

※파이선 코딩 초보자를 위한 텐서플로우∙OpenCV 머신 러닝 2차 개정판 발행 https://blog.daum.net/ejleep1/1175 파이선 코딩 초보자를 위한 텐서플로우∙OpenCV 머신 러닝 2차 개정판 하이퍼링크 목차 pdf 파일 본서는 10월 26일 교보문고 퍼플 POD 출판 신청하였습니다. 일정 기간 검토 후 출판 결정이 될 것이며 11월 초부터 주문 구입이 가능합니다. 참고로 책 목차에 따른 내용별 학습을 위한 코드는 이미 blog.daum.net ____________________________________________________________________________________________________________________________ 시각 이미지 인식..

머신러닝 2021.07.08

5-4 2차 방정식 TensorFlow 머신 러닝

인공지능 기술의 중추중의 하나인 머신 러닝은 NN(Neural Network)을 이용하면 MNIST 수기 숫자를 거의 100%에 가깝게 인식할 수도 있다. 또 OpenCV 에서는 Haarcascade 라이브러리 모듈을 이용하여 사람의 얼굴을 인식할 수도 있었으며 hue 값을 사용하여 색상이 있는 공을 인식하는 것도 가능하다. 그밖에도 Deep Learning 에 의해 이세돌과의 바둑경쟁에서도 승리했다. 이처럼 영리한 머신 러닝이 왜 사람이면 누구나 중학교에서 배우는 2차방정식을 풀었다는 얘기가 없을까? 그 원인은 머신 러닝으로 하여금 학습하는 방법과 hypothesis 만드는 법 교육을 시키지 않아서 아닐까 한다. 머신 러닝 자체가 특별한 지능이 있어서 학습하지 않은 내용까지도 창의적으로 처리할 수는 없..

머신러닝 2021.07.07

5-3 TensorFlow solution of x - 1.12345 = 0

머신 러닝 연구가 아무리 첨단을 간다 해도 머신 러닝이 그렇게 대단한 툴이라면 이 정도 간단한 문제는 당연히 풀 수 있어야 하겠지. 항상 어려운 어렵고 난해한 문제만 쫓아다니다 보니 x – 1.12345 = 0 과 같이 우스울 정도로 쉬운 문제를 어떻게 코딩해야 할지 해보기 전에는 막막하다는 생각이 들기도 한다. 물론 머신 러닝이 컴퓨터에 인스톨되기 때문에 기본적인 덧셈, 뺄셈, 곱셈, 나눗셈의 4칙 연산이 가능하므로 양변에 1.12345를 한번 더해주면 끝나는 간단한 문제이지만 이 방법에 의해서 푼다면 그것은 머신 러닝이라 할 수는 없다. 머신 러닝의 특징은 데이터 학습, random number 생성에 의한 웨이트와 편향(바이어스) 설정, hypothesis 설정, 경사하강법 적용 및 웨이트와 편향의..

머신러닝 2021.07.07

5-1 TensorFlow 머신 러닝 중학교 수학 2원1차 연립방정식의 풀이

※파이선 코딩 초보자를 위한 텐서플로우∙OpenCV 머신 러닝 2차 개정판 발행 https://blog.daum.net/ejleep1/1175 파이선 코딩 초보자를 위한 텐서플로우∙OpenCV 머신 러닝 2차 개정판 하이퍼링크 목차 pdf 파일 본서는 10월 26일 교보문고 퍼플 POD 출판 신청하였습니다. 일정 기간 검토 후 출판 결정이 될 것이며 11월 초부터 주문 구입이 가능합니다. 참고로 책 목차에 따른 내용별 학습을 위한 코드는 이미 blog.daum.net ______________________________________________________________________________________________________________________________ 머신러닝의 방..

머신러닝 2021.07.07

2-19 Fashion MNIST 텐서플로우 예제 “Your first neural network” 해설

2020년 구글 TensorFlow 홈페이지에서 제공하는 첫 번째 예제 바로 밑에 선보이는 Fashion MNIST 코드 해설에 주목하자. 비록 MNIST 수준의 초보자를 위한 기초적인 코드 예제이긴 하지만 그래도 웬만한 입문자에게는 쉽사리 넘을 수 없는 벽이라는 느낌을 지울 수 없어 보이므로 보다 더 쉬운 해설을 추가하기로 한다. Fashion MNIST 문제를 처리할 수 있도록 우선 아래와 같이 Keras가 제공하는 방식으로 데이터를 읽어야 할 필요가 있다. 읽기 명령이 MNIST 와는 다음에 유의하자. 읽어 들인 데이터는 튜플 형태로 즉 학습(train) 과 테스트(test)를 위한 복수개의 데이터 세트로 나누어진다. 머신 러닝에 사용될 오브젝트들의 분류Class 는 주로 의류와 악세사리 백 및 신..

머신러닝 2021.07.06