Convolutional Neural Network (CNN)
합성곱 신경망은 딥러닝에서 가장 많이 언급되고, 현재 AI기술로도 많이 언급되고 사용되고있는 기술이다.
주로 컴퓨터비전에서 이미지 인식에 사용되는 딥러닝 알고리즘이다.
컴퓨터비전은 딥러닝 이전에 오랫동안 연구가 계속 되어왔었다.
그러나 딥러닝 알고리즘이 나오고나서 혁신이 일어났다.
왜냐하면, 그 전에 풀 수 없었던 문제를 풀 수 있게 되고 있기 때문이다.
NLP(자연어처리)에서도 마찬가지로 딥러닝 이전과 이후는 완전히 달라졌다.
딥러닝을 통해 BreakThourgh(큰 변화)가 생기게 되었다.
컴퓨터비전에서 딥러닝을 이용해서 좋은 결과를 얻기 시작했다!
왜 딥러닝을 사용하는가?
Linear Regression을 예로 들면 신경망(Neural Network)을 통해서도 풀기가 가능하다.
2020/11/30 - [2020/데이터사이언스개론] - [Deep Learining] 텐서플로우-케라스 신경망을 이용한 선형회귀분석
하지만, 그러기 위해서는 훈련을 위한 학습데이터와 많은 처리 과정이 필요하다.
신경망의 장점으로 데이터가 많이 수집이되어 훈련이 되면,
단순한 로직으로 풀 수 없는 추론의 과정이 더해져 output을 제공해주기 때문이다.
따라서 굉장히 정밀한 기계학습이 되는 것이다.
하지만 이러한 장점이 컴퓨터비젼에서 뉴럴 네트워크의 문제점이 되었다.
- Full Connected로 인한 파라미터가 너무 많음
- 학습시킴에 있어 sample데이터가 굉장히 많이 필요함
- 이로인해 시간과 비용이 요구
이러한 문제점으로 컴퓨터비전에서 NN을 사용하기에 무리가 있었고, M/L분야가 더 인기가 있었다.
하지만, 데이터의 수집과 저장이 가능함에 빅데이터를 다룰 수 있게 되었고 동시에 컴퓨팅 자원이 늘어났다.
따라서 과거와 비교해 비용이 낮아지고, 처리 속도가 굉장히 빨라졌다.
시간과 비용, 그리고 엄청나게 방대한 sample 데이터를 제공할 수 있는 상황이 되었고
이러한 이유로 딥러닝이 각광을 받기되기 시작했다.
딥러닝을 기반해 컴퓨터비전, NLP(자연어 처리)에서 혁신을 이루어 내고 있다.
이제 이러한 딥러닝의 양대축 중, 컴퓨터비전에 사용되는 알고리즘인 Convolutional Neural Network을 이용한
이미지인식문제를 풀어 보겠습니다!
딥러닝의 Framework가 (ex : 텐서플로우)구축됨에 있어
이미지 전문지식이 없어도 딥러닝에대한 경험과 지식이 있으면, 이미지 문제를 풀 수 있게 되었다.
(물론 이미지 전문지식이 있으면 더 좋겠지만!)
컴퓨터비전의 Problems
1) Object Detection을 통한
-> 자율주행의 고도화 , 기계의 이상 작업여부 확인 등
2) Image Classification -> 이미지를 주었을 때, 구분하는것 (ex 고양이인지, 고양이가 아닌지)
-> 필기체 (0 - 9) 학습 후 0-9 테스트해서 맞추기 등
3) 이외에도 많은 문제들이 있다.
NN을 이용한 컴퓨터비전 처리
- 칼라 : RGB 3가지 색으로 조합해서 모든 색 표현
- 가로*세로*칼라chanel 수= input값 이고, output은 1 or 0 : 참 또는 거짓
(예들 들어 좋은 화질의 사진 : 1000*1000*3 = 300만차원 의 input 데이터가 할당된다.)
Hidden Layer1에 1000개의 뉴런(부족하지만)으로 구성하기만 해도
300만 * 1000 = 30억개의 파라미터가 필요하게 된다.
이는 hidden layer1에서 학습에만 필요한 파라미터의 개수이므로
hidden layer가 늘어날수록 파라미터의 개수도 기하급수적으로 증가하게 된다.
이 과정을 통해 사진이 그 object인지 아닌지 분류하는 결과만을 도출하기 위해
투자하는 학습과 처리에 드는 시간과 비용은 경제성이 없다고 판단된다.
따라서 Fully connected 신경망으로는 이미지를 학습시키기가 어렵다.
따라서 그 대안으로 나온 것이 Convolution Neural Network(합성곱 신경망)가 등장했다.
기존 Fully Connected(FC) Neural Network(NN)에서와는 다르게
Input 데이터가 주어지면
Convolutional Layer –> Pooling Layer -> (반복) –> Fully connected layers -> SoftMax Layer를 통과시켜
아웃풋을 얻어낸다.
노을이 지는 바다에 흰색 차 input 이미지가 오게되면 ,
이미지의 일부분이 Convolutional layer에 더 작아지며 맵핑이 되고,
그 Convolutional layer에 있는 영역의 일부가 다시 pooling layer로 mapping이 된다.! (다음 포스팅에서 다루겠습니다!)
이때 Convolutional layers, pooling layers (컴퓨터비젼의 알고리즘)+ NN 결합 = Convolution Neural Network (CNN)이 된다
따라서 CNN은 딥러닝 이전의 컴퓨터비전 아이디어(Conv- Pool Layer)와 FC와 결합하여 만든 것이다.
이 CNN을 통해 일반적인 Neural Network 보다
파라미터 개수를 충분히 줄일 수 있게 되었고, 데이터를 투입하면 할 수록 성능도 월등히 좋게 나타난다!
다음에서 Convolutional Layer와 Pooling Layer를 알아보겠습니다!
'Make the Learning Curve > Data Science' 카테고리의 다른 글
[CNN] CNN을 이용한 MNIST-1 // MNIST 이해 및 데이터 확인 (0) | 2020.12.18 |
---|---|
[딥러닝] Convolution and Pooling in CNN (0) | 2020.12.12 |
[Deep Learining] 텐서플로우-케라스 신경망을 이용한 선형회귀분석 (0) | 2020.11.30 |
[Deep Learning] What is D/L? 딥러닝이란? (0) | 2020.11.25 |
K-Means Algorithms (0) | 2020.11.24 |
댓글