Hayden's Archive

[AI/딥러닝] 딥러닝 도입( Segmentation / Computer Vision / Edge Detection / CNN / Classification / Cross-Validation ) 본문

Study/AI & Math

[AI/딥러닝] 딥러닝 도입( Segmentation / Computer Vision / Edge Detection / CNN / Classification / Cross-Validation )

_hayden 2020. 7. 27. 15:47

2020 유망 인공지능 스타트업 100

출처 : http://scimonitors.com/ai-100-2020-%EC%9C%A0%EB%A7%9D-%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5-%EC%8A%A4%ED%83%80%ED%8A%B8%EC%97%85-100%EA%B3%B3-%EC%9C%A0%EB%8B%88%EC%BD%98-10-%ED%8F%AC%ED%95%A8/

2017년에는 한국 회사로 Lunit이 유일하게 100위 안에 든 적이 있다 ( http://www.techforkorea.com/2017/01/18/lunit-about-to-run-it-in-2017-the-only-korean-company-in-the-ai100-by-cb-insights/ )

 


참고 : https://news.unist.ac.kr/kor/column_202/

 

알파고 바둑 실력의 비밀, ‘딥 러닝(Deep Learning)

최근 인공지능 기술이 주목받고 있다. 이것은 빅데이터 기술과 사물 인터넷 기술의 발전으로 다양하고 질 좋은 데이터를 손쉽게 수집할 수 있게 되었기 때문이다. 인공지능 기술의 일종인 딥러�

news.unist.ac.kr

 

Stochastic gradient descent
-> 미분. 경사하강법. 고도가 0인 지점. 3차원으로 나타낸 것.
-> 경사하강법이 어려운 이유는 차원이 10차원, 100차원 이렇게 될 수 있음.

 


Segmentation - 모든 픽셀들을 카테고리로 분류하는 것
여러 개의 픽셀 집합으로 분류. 카테고리를 단순화 시키는 데 탁월한 효과
=> 자율 주행에서 인도, 차도, 사람 이렇게 구분 가능

출처 : https://divamgupta.com/image-segmentation/2019/06/06/deep-learning-semantic-segmentation-keras.html

 


Computer Vision

Computer Vision
=> 컴퓨터 기계의 시각으로 어떤 정보를 받아들여서 Classification(분류)한다. 최신 분야. 딥러닝 알고리즘이 들어감. 그 분류는 인간의 시각을 본떠서 만들어짐.

Psycology(심리학) -> 마음을 정형화해서 데이터를 뽑아내서 기계에게 마음을 심는 것... 컴퓨터 비전적인 측면에서 연관이 되어있음.

 

 

Computer Vision에 어느 정도 영향력이 있는 연구 중 하나인 Hubel & Wiesel, 1959의 연구

고양이 뇌속에 Electrical signal을 심고, 사과를 보고 어떻게 사과를 인식하는지 알아내는 실험.
-> 모서리를 보고 가장 많이 반응함.
-> 생명체가 어떤 사물을 인지하는 데 있어 가장 많이 영향을 주는 부분이 모서리.

출처 : https://blog.pigno.se/post/183382418888/stanford-cs231n116-introduction-to-cs231

 

* Edge Detection 알고리즘 (경사하강법의 출발)
모서리를 인지하는 것->명암의 극적인 반전. 명암에 대한 값이 갑자기 밝았다가 어두워지는 기울기값. 갑자기 기울기값이 확 꺾이는 값. 미분으로 구함.

하지만 모서리로 사물을 판별하기에는 정보량이 부족했다.

 


Convolutional Neural Network (CNN)

1998년에 LeCun(르쿤)이라는 사람이 발표. 이름 알아둘 것. 

딥러닝의 3대 선구자 
요슈아 벤지오, 제프리 힌튼(르쿤의 스승), 얀 르쿤 (-> 이 중에 한명만 뽑으라면 제프리 힌튼.) 
(벤지오는 언어학, 자연어 쪽으로 대가 / 벤지오와 르쿤은 이미지 프로세싱 쪽의 대가)

출처 : http://premium.chosun.com/site/data/html_dir/2016/03/17/2016031700345.html

왼쪽에서부터 얀 르쿤, 제프리 신튼, 요수아 벤지오. 맨 오른쪽에 있는 앤드류 응도 딥러닝에서 유명한 사람임

 

얀 르쿤이 만든 최초의 CNN

출처 : http://aidev.co.kr/deeplearning/8840

1998년에 얀 르쿤이 만든 CNN이 빛을 못 보다가 2010~2012년 사이에, 정확히는 2012년에 빛을 발함.

전세계적으로 이미지를 알아맞히는, 이미지넷이라는 대회가 있었음. 1년에 에러율을 1%씩 줄이는 것을 목표로 한 대회.
2012년에 10%의 에러율을 낮추게 되고, 전세계 연구진이 놀람->거기서 사용한 알고리즘이 CNN. 그 이후부터 에러가 확 줄음. 2015년에는 인간을 능가하는 분류 => 인간을 능가했다고 해서 이미지넷 대회 없어짐.

참고 : https://blog.naver.com/cni1577/221920601686

레이어가 하나인 경우 ANN (Artificial Neural Network)
Deep => 레이어가 여러개. 레이어가 2개 이상 DNN(Deep Neural Network)

 

 

대회에서 사용했던 데이터셋을 많이 가져다 씀.

-> MNIST ( 참고 : brunch.co.kr/@minwoo/25 )

-> CIFAR-10 ( 참고 : gruuuuu.github.io/machine-learning/cifar10-cnn/ ), CIFAR-100

=> CIFAR-10이 정보량이 더 많아서 MNIST보다는 정확성이 떨어짐.

 


Classification

특성들을 데이터로 넣는 게 아니라 이미지를 데이터로 넣음.
선형회귀가 여러개 있는 게 딥러닝.
들어온 이미지에 대한 예측.
잘했는지 못했는지 역시 계산 가능. Loss Function
이건 정량화된 게 아니므로 다른 Loss Function을 쓴다.

 

컴퓨터는 고양이 사진을 0~255 사이의 픽셀값으로 인식한다.
판떼기가 하나 있으면 흑백. 판떼기가 3개(RGB) 있으면 칼라 => 3 Channels을 이룬다.

illumination(조도)에 따라서도 고양이인 걸 인지할 수 있어야 하고 Deformation(변형)에 대한 훈련도 필요하며 다양한 사진으로 변화를 주면서 학습해야 한다. 


이미지가 들어왔을 때 머신의 학습의 결과로 이미지의 결과에 해당하는 라벨을 정확하게 예측해야 한다.
-> 이전까지는 모서리로 구분했는데 정확하지 않다.

Data-Driven Approach
많은 양의 데이터, 모든 경우의 수를 나타낼 수 있는 데이터로 학습을 시켜야 정확도가 올라감.
데이터를 확보하는 게 어려움. 개개인이 확보할 수 없음.

1. 이미지와 함께 라벨을 모은다 
2. 분류를 위한 학습을 시킴 
3. 새 사진에 적용하고 평가 


모델은 train 모델과 test 모델.


Nearest Neighbor
처음에 5만장의 데이터 집어넣고 학습 -> 그리고 나서 새로운 데이터 집어넣어서 예측... 그런데 5만장을 일일이 다 비교해서 유사도를 계산... 그 5만장 중 유사도가 가장 높은 것... (5만번 다 돌려야 하는데 엄청 느림. 요즘엔 잘 안 씀)

 


교차 검증 ( Cross-Validation )

용어 알아둘 것!
hyperparameter(= Heuristic Values) : 배움을 위해서라기보다 인간의 경험에 의해 선택되어져야 하는 값. 성능에 꽤 많은 영향을 미침.


DataSet
1) Training DataSet 
2) Validation DataSet 
3) Test DataSet 


validation은 학습은 안 됨. 그냥 모의고사임.
학습을 시키지는 않음. 학습 대상을 수정하지 않음! 하지만 Accuracy를 보고 학습을 더 시켜야겠다 learning rate를 낮춰야겠다 이런 걸 추측해서 다시 돌릴 수 있음. 하이퍼파라미터 튜닝의 용도로 쓰는 것.
Back Propagation 해서 가중치(Weight)를 수정하는 건 할 수 없음. 이건 Test에서 함.


5만개 문제 실컷 풀고 가서 실전에서 떨어지면 또 5만개 문제 또 풀어야 함. 그래서 모의고사를 봐야 하는 것.

Cross Validation은 일반적인 방법이 아님.
데이터가 턱없이 부족할 때 임시방편적으로 쓰는 방법이 Cross Validation
학습데이터(Training Data)를 돌려가면서 씀.

사실 데이터가 너무 적을 때는 딥러닝으로 돌리면 안 됨. 어쩔 수 없는 예외적인 상황에서 사용.

4 Epoch => 4번 돌림. epoch이 4.