NN(neural network) 신경망
위 그림은 신경망 기본모델 입니다.w는 가중치, b는 편향입니다. 입력(feature)과 출력은 데이터셋으로 알고있는 상황입니다. 뉴런에서 함수를 더하기로 정의합니다.그러면 출력은 y= xw+1 b가 될것입니다. 이 모델의 목표는 알고있는 y,x에 무작위 w값을 넣어보고 y값과 실제값을 비교한뒤 오차만큼 다시 w를 수정해서 y를 다시 출력해보고 최종적으로 제일 잘 맞는 w,b의 값을 찾는것 입니다. 그래서 모든 y,x에 맞는 식을 세우는것, 즉, 일반화 한다 생각하시면 될 것 같습니다.
하지만 모든 데이터들은 위와 같이 단순하게 일차원적이지 않습니다. 일상생활의 데이터들은 특징끼리 서로 연관되어있기도하고 여러가지 복합적입니다
마치 아주 복잡한 n차 다항식과 같습니다.
데이터셋을 예로 들어보겠습니다.
예) 집값(medv) 예측(정형데이터) 데이터셋입니다.y는 medv이고 x는 나머지 독립변수들입니다. 범죄율, 밀도, 공원여부, 인프라, 방개수, 연도, 세율, 교육 등 쓸모없는 특징등 고려할게 많습니다.
어느것이 중요한 변수인지, 데이터는 정규분포를 이루는지, 서로 상관이 있는 변수들은 있는지, 범위는 통일됐는지 알아보고 일부 변수만 선택(패턴추출)해서 선택한 모델에 학습시켜주는것을 머신러닝이라 합니다.
인공신경망(Artificial Neural Network)
인간의 두뇌에서 영감을 얻은 방식으로 데이터를 처리하도록 컴퓨터를 가르치는 방식을 인공신경망이라고 합니다. 인공신경망(ANN)은 일반 머신러닝과 다르게 변수를 다 넣고 컴퓨터가 알아서 특징을 추출하고 분류합니다.
그리고 레이어층을 많이 쌓아(비선형 함수 중첩) 예측 성능을 높힌것을 깊은신경망(deep neural network)이라 부릅니다.(DNN,딥러닝)
그리고 Convolution(합성곱)과 신경망을 합친것을 CNN(Convolutional Neural Network)이라 부릅니다.
Convolutional Neural Network Visualization by Otavio Good(CNN 시각화)
Neural Network 3D Simulation(얼마나 많은 계산이 필요한지 신경망 시각화)
딥러닝 역사
1943년 처음 등장, 1989년 딥러닝 개념, 성능 매우 안좋고 느림->신경망보다는 서포트벡터머신 같은 일반 머신러닝기법, 정형데이터는 머신러닝으로 충분하지만 이미지같이 비정형 데이터는 다소 무리가 있습니다.
현대 기가인터넷, 클라우드(빅데이터), cpu, gpu 하드웨어 기술 비약적으로 발달-> 2012년 이미지넷 대회에 딥러닝이 다시 등장합니다.
12년도에 압도적인 차이로 1위를 차지합니다. 12년 기점으로 CNN 기반 모델만 이용합니다. 발전속도가 빨라지면서 인간의 인식률을 넘어버렸습니다.
일반 머신러닝모델은 정형데이터를 다루는데는 충분하지만 컴퓨터 비전(비정형)을 다루는것은 인식률이 낮고 어느정도 한계가 있습니다.
10만장 데이터 131개 클래스 분류 svm,cnn,dnn비교 svm 정확도가 한참 떨어지는것을 확인할 수 있습니다.
Conv. layer와 Average Pooling을 번갈아 사용하고, Filter 사이즈를 처음에는 크게 했다가 갈수록 작게만들어서 성능이 잘나오면 나만의 CNN 모델이 됩니다.
하이퍼파라미터를 어떻게 설정하느냐, 혹은 레이어를 어떻게 쌓느냐에 따라 모델의 성능은 천차만별입니다.
전 세계의 딥러닝 대가,회사들이 자기들만의 CNN 구조에 이름을 붙여서 발표하고, Pre-trained model과 소스코드를 open 했습니다.(※ Pre-trained 모델이 있으면 transfer learning을 통해 전체 네트워크를 학습하는 것이 아니라 일부 네트워크만 내 데이터에 맞게 재학습 가능)
모델 벤치마크
모델이 더 좋은지 상대적으로 어떻게 판단할까요?
벤치마크로 사용할수 있는 영상 데이터 셋이 Imagenet입니다.
세계 최대 영상 데이터베이스, 2만2천 종류의 분류가 가능한 1500만장이 데이터, 컴퓨터 비전 연구하는 사람들의 벤치마크로 사용되고 있습니다.(2020년 기준)
ILSVRC(ImageNet Large Scale Visual Recognition Challenge)
이미지넷 영상기반으로 대규모 이미지 인식 대회로 컴퓨터 비전 분야의 세계적인 경진대회.
대부분 유명한 모델들은 이 대회 우승 or top ranking 모델입니다.
영상쪽으로는 키네틱스가 대표적입니다. 이 외에도 방대한 데이터셋들이 다양하게 있고 각 데이터셋마다 모델순위가 있습니다.
CNN기반 모델
이런식으로 레이어를 쌓는 방식에 따라 모델과 성능이 달라지게 됩니다.
vgg-net모델과 resnet모델입니다.
3d CNN (video)
앞서 살펴본 모델들은 2D이미지 관련 모델입니다.
2D Image에 time을 추가해 3D Convolution Network (3D CNN) 비디오 모델입니다.
원래 3D CNN은 3차원영상 즉, MRI에서 많이 다뤘습니다. 이미지들을 여러겹 겹쳐서 3차원 영상처럼 처리합니다.
30프레임 1초분량 좌측 영상 자체를 프레임별로 쪼개서 2D 이미지 30장을 쌓아 MRI의 뇌영상처럼 3차원 영상으로 처리합니다.
2D Convolution 하듯이 3D도 똑같이 합성곱을 진행합니다.
이 기본 모델로도 어느정도 분류가 됩니다.
하지만 이걸 그대로 쓰면 학습할 때 암묵적으로 시간과 공간을 대칭적으로 처리하는 계산에 문제가 되기때문에 다른 여러가지 방법들이 사용됩니다.
Two Stream Network
다른 방법으로는 two stream network이 있습니다.
spatial 정보와 temporal 정보는 성질이 다르기 때문에 별도의 네트워크를 따로 만들었습니다.
spatial Path 부분은 input video clip의 2D이미지를 Convolution Network에 통과시키면서
동시에 병렬 구조로 temporal Path 부분에서 모든 이미지를 사용하여 Optical Flow를 다른 Convolution Network에 통과시킨후 따로 얻은 feature map의 결과를 퓨전하는 구조를 가지고 있습니다.
옵티컬 플로우는 픽셀값의 변화를 벡터로 표현해 움직이는 방향을 측정하는걸 말합니다.
다음 포스팅에서 two stream network에서 발전한 slwofast 2019년도 SOTA모델을 살펴보겠습니다.
'영상처리 > 기초' 카테고리의 다른 글
convolution(합성곱) (83) | 2023.05.04 |
---|---|
Image Processing 기초 (141) | 2023.05.03 |
YOLOv8 imagesegmentation (50) | 2023.02.26 |
영상 요약해주는 Vision Transformer 모델 (30) | 2023.02.26 |
Vision Transformer(ViT) 리뷰 (16) | 2023.02.26 |