- 2020년 8월 3일 오전 6:45
- 조회수: 3656
INFORMATION
- 2020년 8월 7일
- 오후 1시 ~
- 고려대학교 신공학관 218호
TOPIC
OVERVIEW
발표자 후기
오늘은 “Basic CNN & Image Segmentation”이라는 주제로 세미나를 진행하였다. CNN은 작년 입학 시점부터 최근까지 자주 등장하는 세미나 주제로 대단히 친숙한 주제이다. 하지만 작년 처음 CNN을 접했을 때 이해가 잘 되지 않았던 부분이 많았고 CNN을 이용한 어플리케이션을 연구주제로 잡고 있었으면서도 반년은 제대로 감을 잡지 못했던 것 같다. 공부라는 것이 순간의 깨달음으로 인한 이해가 중요한데 이러한 예제 포인트가 좀 사람마다 다른 것 같고 이때문에 소중한 공부시간을 소비할 수 있구나 하고 느꼈었다. 그래서 기초적인 부분을 다루기에는 조금 늦은 1학기가 끝난 시점의 세미나이기는 하지만 CNN을 공부하면서 순간적인 깨달음을 얻었던 포인트를 공유해서 이제 본격적으로 CNN 공부를 시작하는 분들께는 또 다른 영감을 줄 수 있었으면 하는 마음으로 세미나를 진행했다. CNN은 기본적으로 이미지의 특징을 추출하는 Convolution Layer와 일반적인 Neural Network의 조합으로 이루어져 있다. 이 가운데 Convolution Layer가 CNN의 핵심이라고 할 수 있는데, 이 부분이 너무 당연하여 많은 설명 논문이나 블로그 등에서 이미지의 특징 추출한다고 설명하고 지나간다. 이번 세미나는 이 부분을 조금 더 자세히 들여다보고자 진행했다. “CNN은 Filter를 사용한 합성곱을 통해 Input 이미지가 사용자가 찾고자 하는 특징(일반적으로 형태)를 가지고 있는지를 문제은행식으로 뽑아내는 역할을 한다. 그리고 이 문제은행에서 기계적으로 풀어낸 결과를 1열로 다시 풀어내서 CNN 구조의 후속 단에 이어지는 Neural Network에 입력하여 정답을 분류한다” 바로 이부분을 말이다. 결국 이 부분을 어떻게 하면 더 이해하기 쉽게 설명할 수 있을까 하고 고민하고 예제를 만들었는데 생각보다 예제 수가 적었고, 예시도 조금은 적절하지 못한 것이 있어서 조금은 아쉬움이 드는 세미나였다. 그래도 들어주는 연구원들에게 조금이라도 도움이 되었으면 좋겠다는 기대감으로 후기를 마친다. DMQA 연구원분들 앞으로도 건승하세요~
청취자 후기
금일 세미나는 승호형이 CNN 기초와 image segmentation 기초를 주제로 발표하였다. Image segmentation은 의료 이미지 분석, 자율 주행 등 다양한 분야에 적용될 수 있는 컴퓨터 비전 연구분야이다. 이번 세미나에서 다룬 2개의 논문은 초기 딥러닝 기반 image segmentation 모델인 FCN과 SegNet이였다. FCN은 마지막 conv layer에서 feature을 원본 이미지 사이즈로 upsampling하는 과정에서 정보가 많이 손실되어 이미지가 뭉개지는 것을 방지하기 위해 이전 conv layer에서 여러번 upsampling한 결과를 더하여 최종 output을 만든다. SegNet의 경우 Convolutional Autoencoder 구조로, deconvolution 과정에서 encoder에서 convolution이 발생한 위치를 기억하여 deconvolution시에 이를 반영하는 방식으로 축소된 feature을 효율적으로 복원할 수 있다. Image segmentation은 최근까지도 연구가 활발하게 되고 있는 분야이고 FCN 이후 우수한 성능을 보이는 모델들이 많이 등장했다. 적용 가능한 분야가 무궁무진한 만큼 최신 모델까지 공부를 해두면 좋을 것 같다는 생각이 드는 세미나였다.
오늘 세미나에서는 이미지 데이터 분석에 사용되는 Convolutional neural network (CNN) 작동원리와 classification & segmentation에 대한 개념과 차이점을 다루었다. 한 이미지에 대한 정답을 예측할 수 있는 Classification (분류) 문제에 가 있고, 그 이미지 내 여러 정답이 있을 경우 각 Pixel마다 정답을 예측하는 Segmentation이 있다. Segmentation 기법은 현재 개인적으로 진행중인 리비전에 추가실험으로 계획하여 유심히 듣고 있었는데 아이디어를 정립할 수 있었다. 오늘 발표자료를 보고 승호형이 준비하는 데 많은 노력을 기울였을 거라는 점이 와닿았다. 꼭 오늘 발표용이 아니고 CNN 대한 디테일 버전의 설명자료로 활용할 수 있을 것 같다. 감사합니다 !
2012년 Convolutional Neural Networks (CNN)의 재등장으로 이미지 분석 분야는 새로운 길이 열렸다고 해도 과언이 아니다. CNN은 무수히 많은 파라미터와 커널의 사용으로 입력 이미지의 특징을 추출하고, 추출한 특징을 입력 변수로 하여 원하는 문제를 해결하는 알고리즘이라고 할 수 있다. 또한, 기존에 Deep Neural Network를 이용해 다수의 출력 변수를 예측하는 Encoder-Decoder 구조의 모형을 CNN으로 대체하여 픽셀 별 분류를 진행하는 Image segmentation 분야 역시 많은 발전이 이루어져왔다. 세미나 내용에는 Image segmentation 분야의 한 알고리즘인 SegNet에 관한 내용도 존재했었다. CNN의 커널(필터)의 역할에 대해 자세한 설명과 더불어 Pooling indices를 활용한 Decoder에 대한 설명을 해주어 본인의 의문점을 해결해준 세미나였다. DMQA&HCAI 연구원들이 금일 세미나 주제였던 Image classification&segmentation에 많은 관심을 가질 수 있었으면 좋겠다.
이번 세미나는 "Basic CNN & Image Segmentation"이라는 주제로 진행되었습니다. 인공지능이 사람을 대체해 나가기 위해 인공지능 모델들은 사람들의 다양한 특성을 흉내 내는 형태로 발전되어 왔습니다. 그중에서도 CNN은 인간의 시각에 대한 특성을 대체하는 모델로 인공지능 분야 중에서도 가장 연구가 많이 진행된 모델이라고 할 수 있습니다. 기본적인 CNN은 입력값으로 주어진 사진인 어떤 사진인지 구분해주는 분류 문제에 활용됩니다. 하지만 정교한 과제들을 수행하기 위해서는 단순히 사진의 범주를 맞추는 것 외에 사진의 어느 부분이 해당 범주에 속하는지에 대한 구분이 필요합니다. Segmentation은 사진의 픽셀 단위로 어느 범주에 속하는지에 대해 알려주며 이를 통해 조금 더 정교한 과제들을 수행할 수 있게 됩니다. 이번 세미나에서는 segmentation의 대표적인 모델인 FCN과 SegNet이 소개되었습니다. FCN은 모델의 끝부분이 fully connected layer로 구성된 기존의 CNN과 다르게 모든 층이 convolution filter로 연결되어 있습니다. FCN은 입력값의 정보를 추출한 후 해당 정보로 다시 원래 입력값의 크기로 복원하여 각 픽셀로 속한 범주에 대해 예측하게 됩니다. 입력값의 정보를 추출하면서 정보가 많이 손실되기 때문에 FCN에서는 모델의 앞쪽 부분에 사용되었던 층의 정보를 사진을 복원할 때 더해줍니다. 이와 같은 구조를 사용했을 때 실험적으로 성능이 더 향상됨을 보여줍니다. SegNet은 FCN과 유사하지만, 입력값의 정보를 추출하는 과정에서 해당 정보가 어느 곳으로부터 왔는지에 대해 기억하고 있습니다. 기억하고 있는 정보를 사진을 복원할 때 사용하여 정보의 손실을 막아주게 됩니다. 세미나의 후반부에서는 이미지와 관련된 연구 중 자율주행 자동차에 관한 발표가 이어졌습니다. 컴퓨터 비전을 이용한 자율주행차 연구 중 사람의 원근감을 인식하는 방법에서 영감을 얻은 stereo vision이 좋은 성능을 내고 있다는 내용이 소개되었습니다. CNN은 많은 곳에서 사용되는 모델인 만큼 오늘 세미나를 통해서 한 번 더 정리할 수 있어서 유익한 시간이었습니다. 또한 segmenation과 관련된 모델들에 대해서도 다시 한번 공부하고 앞으로의 연구에 적용해 보고자 합니다.
금일 오픈 세미나는 CNN 기초와 image Segmentation을 주제로 승호형이 진행해주었다. 크게 두 가지 파트 CNN 기초, image Segmentation으로 나누어 진행해주셨다.
[CNN 기초]
CNN은 이미지 분석을 진행하는 대부분의 딥러닝 기법에 활용되는 모델이다. 이미지의 특징을 Convolution 연산으로 뽑아낸 뒤, 뽑아진 특징을 토대로 이미지 분석을 진행하는 것이 CNN인 것으로 간단한 개념 정도는 이해하고 있었으나, 오늘 세미나를 통해 Convolution, Filter, Kernel, Pooling, Padding에 대한 구체적인 개념과 사용 목적에 대해 이해할 수 있어 좋았다. 특히 오늘 세미나가 좋았던 점은 재미있는 도입 부분과 구체적인 발표 자료였다. 개인적으로 Filter의 역할을 설명하는 발표 장표가 마음에 들었다. 필터가 이미지 특징을 뽑아낸다는 역할을 맡고 있는 것은 알고 있었으나, 구체적으로 필터가 어떤 과정을 통해 특징을 뽑아내는지 알 수 있어 좋았다. 또한, softmax에 대한 역할을 한번 더 이해할 수 있어서 좋았는데, softmax는 인공신경망이 출력해주는 값을 확률로 변환해줄뿐만 아니라 지수변환을 통해 확률간 크고 작음의 차이를 더욱 선명하게 해준다. 이 외에 Multi-class와 Multi-label의 차이 또한 세미나를 통해 이해할 수 있었다.
[Image Segmentation]
'CNN 기초' 부분에서 Multi-label 개념을 설명한 뒤 이미지 내 픽셀 단위의 예측을 통해 어떤 분석을 추가적으로 할 수 있을지 설명하며, Image segmentation에 대한 설명이 시작되었다. segmentation은 이미지 내 사물들의 위치를 파악할 수 있을뿐만 아니라, 구체적인 위치 영역까지 픽셀 단위로 판별하는 것을 말하며 이를 수행할 수 있는 모델 두 개(FCN,SegNet)를 설명해주셨다. 기존 이미지 분류 task는 모델 마지막 부분에 Fully connected layer를 설정하여 이미지 범주 확률을 구하게 되지만 Segmentation 목적은 이미지 픽셀별 예측이므로 마지막까지 이미지 내 위치정보를 손실해서는 안된다. 이를 위해, Fully connected layer를 convolution 연산으로 수행할 수 있게끔 변형하며, 이것을 Convolutional upsampling이라 한다. 하지만 Up-sampling이 온전하게 이미지 위치 정보를 보존하지 못하기에, 오늘 세미나에서 소개했던 FCN 모델은 Convolution output들을 더해 위치 정보를 보존하고, SegNet 경우 Max-pooling 과정을 Pooling indices를 보존한 채 진행하여 성능을 향상시킨 알고리즘이다.
CNN 기초와 Segmentation 기초, 구현 아이디어를 오늘 세미나를 통해 자세하게 들을 수 있었다.
외부 인원도 많이 옴에도 불구하고 긴장하지 않고, 위트있게 세미나를 준비해준 승호형에게 감사의 말씀을 전하고 싶다.
금일 세미나는 CNN 기초 원리 및 Image segmentation 를 주제로 승호형이 발표해주었다. CNN의 기본적인 학습 구조는 두가지로 나뉘었다. 첫번째는 이미지가 입력되면 이미지의 특성을 추출하기 위한 Convolution layer 부분과 두번째는이미지로부터 입력된 특성을 이용해 분류 문제를 풀기 위한 Fully Connected layer 부분이었다. CNN에서 알아두어야할 정의와 연산 방식에 대해서 차근차근 설명해주셨고, 자료에서 청취자들의 이해를 돕기 위해 많이 신경쓰신 것이 느껴졌다. 세미나 주제를 처음 접했을 때 CNN 기초 원리 설명에서 Image segmentation으로 어떻게 이어질지 궁금했는데 Image segmentation은 이미지 내 각 Pixel마다 클래스를 예측하는 알고리즘이였다. 해당 알고리즘에 대표적인 모델로 FCN과 SegNet을 설명해주었고 개인적으로 SegNet 모델이 흥미로웠다. 이미지 내 픽셀들의 위치 정보를 잃지 않는 선에서 Image segmentation을 해보자는 접근 방식으로 학습하는 과정에서 이전 정보를 이용하여 최종적인 결과물을 도출한다는 것이 흥미로웠다. 그리고 Image segmentation에 대한 사전 지식 없이도 발표 내 시각화 자료를 통해 해당 모델이 어떠한 방식으로 학습되는지 이해할 수 있었다. 세미나 청취자들의 이해를 돕기위해 많은 준비를 했다는 것이 크게 느껴졌고, 오늘도 세미나를 준비해주신 승호형에게 감사하다고 전하고 싶다.
금일 세미나는 승호오빠가 ‘Basic CNN & Image Segmentation’이라는 주제로 진행하였다. CNN은 인접 픽셀간 상관관계를 반영하여 특징을 추출한다는 가설에서 이미지 분석에 적합하다 알려져 있다. 특히 우리 연구실에서는 CNN을 기반으로 공정에서 발생하는 문제에 접목시킨 사례가 있어 익숙한 알고리즘이었음에도 불구하고 오늘 세미나를 통해 CNN구조에 대한 이해, convolution연산에 대한 이해를 다시금 되새길 수 있어 반가운 마음으로 세미나를 들을 수 있었다. 특히, CNN의 파라미터 관점에서 구조를 이해할 수 있는 기회였다. 초기 이미지 분석 문제는 단순 classification문제였지만, 최근에는 다중 class를 효율적으로 탐지하기 위한 multi-label classification문제 더 나아가 해당 class의 위치정보를 도출할 수 있는 localization문제인 object detection, image segmentation등이 활발하게 연구되고 있다. 금일 소개된 image segmentation은 최종적으로 output의 channel이 각 class에 할당되는 확률로 구성이 된다. Image segmentation을 수행하기 위해 convlayers를 통해 이미지 정보를 효과적으로 추출한 후 up sampling을 통해 원크기로 원복하는 프로세스로 구성된다. 초기 FCN은 단순 upsampling, layer별 feature map정보를 활용하고자 했다면, 이후 제안된 SegNet은 encoder-decoder로 구성되어 구조적으로 대칭되도록 모델링되었으며 up sampling과정에서 pooling indices를 활용해 위치정보를 활용한 decoding방식을 제안했다. 금일 세미나를 통해 전반적인 이미지 처리에 대한 연구를 리뷰할 수 있었다. 연구미팅을 통해 승호오빠의 연구 진행상황에 대해서도 항상 흥미롭게 들었었는데, wafer bin map이미지를 활용한 현재 연구도 잘 마무리되길 응원하며 세미나 후기를 마친다!
CNN은 컴퓨터 비전 분야에서 많이 쓰이는 딥러닝 구조이다. 2차원 혹은 3차원의 이미지의 RGB 혹은 gray scale 픽셀 값과 인접한 픽셀의 값으로부터 합성곱을 통해 이미지의 특성을 추출한다. 금일 세미나는 CNN을 통해서, 가장 기본적인 Single Image Classification에서 부터, Multi Class Classification, Segmentation 까지 전반적으로 소개하는 시간이었다. 특히, Semantaic Segmentation 알고리즘의 시초격이라 불리는 FCN이 왜 중요한지 알게되었다. 1*1 convolution을 통해 이미지의 크기에 상관없이 채널수를 자유롭게 줄이거나 늘릴수있고, 연산량을 효율적으로 줄일 수 있다는 것이었다. 그리고 SegNet에서 어떻게 Pooling으로 인한 위치 정보 손실 Upsampling할 때 복원하는 지 알게 되었다.
최근 연구미팅을 준비하며 FCN, Unet 등 Semantic Segmentaion 알고리즘을 접할 기회가 많았다. 하지만 각 알고리즘의 특색을 정확히 알지는 못했었는데, 이번 세미나를 통해 Segmentation 알고리즘의 아이디어가 각각 어떤 것인지 알 수 있었다.
이번 세미나는 특히 외부 방문객들을 포함하여 대단히 큰 규모로 진행되었다. 사람마다 기존에 알고있던 CNN 쪽 도메인 지식이 상당히 천차만별이라 모두가 쉽게 이해할 수 있는 세미나를 준비하기란 쉽지 않다. 그럼에도 불구하고, 승호형은 오늘 Seminar를 되게 재밌고 쉽게 풀어나가셨다. 고생하신 승호형께 감사의 말씀을 드린다.
Semantic Segmentation은 input 이미지 내에 있는 각 pixel에 대응되는 클래스를 알아내는 분류 문제다. 금일 소개 된 Semantic Segmentation 아키텍쳐 종류는 앞에 encoder 뒤에 decoder가 붙어있는 모양새를 지니게 되는데, 이때 encoder는 VGG/ResNet 같은 pre-trained CNN 베이스 분류모델을 쓰며, decoder는 encoder로부터 나온 낮은 차원의 representation을 다시 본래 픽셀 공간크기로 mapping해주는 구조를 띤다. 하지만, FC layer와는 별개로 segmentation에 CNN을 사용할 때의 주요 문제 중 하나는 layer를 pooling하는 것이다. Pooling을 하면 위치 정보를 다소 희생시키면서 receptive field가 넓힐 수가 있다. 하지만, sementic segmentation은 정확한 class mapping을 필요로 하므로 이러한 '위치' 정보를 보존할 필요가 있다. 이를 위해 2014년도 CVPR에 나온 FCN(Fully Convolutional Network)은 pre-trained CNN 모델 뒷단의 fully connected layer를 삭제하고 1x1 convolutional layer를 대신 사용하였으며, pooling으로 소실될 '위치'정보를 보존하기 위해 skip connection을 통해 앞단의 feature map을 사용한다. 2015년에 나온 SegNet은 1x1 convoluational layer를 사용하지 않고, 일반적인 convolution layer의 decoder를 사용하되 이때, encoder 단의 max pooling 위치를 기억해두었다가, 추후 decoder에서 unpooling을 할 때 해당 위치 정보를 사용하는 방식으로 위치정보 소실을 방지하였다. 당연한 말이지만, NN을 사용하는 어느 분야를 막론하고 input 정보로부터 representation 생성해낼 때, bottle neck 구조(혹은 깊어지고 길어지는 구조)를 사용함에 따라 소실되는 정보를 방지하고 또 그 정보들 중 어떤 것이 중요한지 모델이 학습을 하는 것이 큰 공통점으로 보인다. 청중의 분포가 다양함에도 불구하고 훌륭한 발표를 보여준 승호형에게 많이 배우고 간다.
금일 세미나는 “CNN 기초 원리 및 Image Segmentation”을 주제로 진행되었다. Convolution Neural Network(CNN)와 Image Segmentation의 크게 두 가지 주제로 진행된 세미나였다.
우선 CNN은 크게 Convolution Layer, Neural Network의 두 가지 구조가 결합되어 있는 형태이다. Convolution Layer를 통과하면서 인풋 이미지가 들어왔을 때 여러가지 필터와 Padding, Activation, 등을 활용하여 해당 이미지의 특징을 추출하게 된다. 그 후에는 Fully Connected Layer를 통과하면서 추출된 feature 값들을 우리가 원하는 형태의 출력값으로 변환하는 과정을 거친다.
Image Segmentation은 특정 사진 내에 사람, 컵, 컴퓨터, 지갑 등과 같이 특정 아이템들의 위치를 함께 표시해주는 것이다. CNN은 전체 이미지에 대한 정보를 기반으로 하나의 레이블을 예측하는 반면 Image Segmentation은 한 이미지 내의 픽셀들에 대한 레이블을 예측하는 분류 방법이라는 점에서 차이를 갖고 있다. Image Segmentation에서 활용되는 두 가지 모델인 Fully Convolutional Network(FCN)과 SegNet에 대한 설명을 구체적으로 들어볼 수 있었다. FCN은 이전 convolution 연산을 진행한 후의 정보를 기반으로 기존 크기로 복원시키는 방식이다. 반면에, SegNet은 좌우 대칭의 형태로 모델을 구성한 것으로, pooling indices를 기억하여 이를 활용하여 크기를 복원시키면서 분류 성능을 향상시키는 방식을 채택하고 있다.
오늘 세미나 내용을 통하여 CNN에 대하여 다시 개념을 다지고 더욱 이해도를 높일 수 있는 의미있는 시간이었다고 생각한다. 또한, CNN에서 더욱 확장하여 Image Segmentation와 구체적인 모델들이 학습되는 방식까지도 쉽게 이해할 수 있었다. 다양한 분야에서 활용되고, 앞으로도 자주 활용하게 될 CNN에 대하여 다시 공부할 수 있어 뜻 깊었고, 내가 알고 있다고 생각하는 기초 개념들을 매번 다시 공부하고 다지면서 나아가는 것이 중요함을 다시 느낄 수 있는 시간이었다.
금일 세미나에서는 CNN의 기본 + Image Segmentation에 대한 내용을 청취했다. CNN은 원래 이미지를 분석하기 위해 제안되었던 알고리즘이며 최근에는 시계열, 텍스트 등 다양한 비정형 데이터에도 많이 적용되어 뛰어난 성능을 입증했다. 최근 tensorflow, pytorch 등 알고리즘이 쉽게 구현되어 있는 패키지가 많이 배포되어 있어 CNN에 대해 대강 알고 있어도 간단한 task에는 적용할 수 있다. 초반에 딥러닝을 공부했을 때 경험했던 실수이기도 한데, 이런식으로 코딩 및 적용만 하다보면 나중에는 원리도 제대로 모르고 계속 사용만 하게 되는 것 같다. 그런 의미에서 오늘 세미나는 CNN을 구성하는 각 모듈의 컨셉적인 부분들을 하나하나 설명하는데 있어서 큰 의미가 있었다고 느꼈다.
주로 CNN의 목적은 '이미지에서의 특징 추출'이라고 하는데 개인적으로는 '이미지 분류를 위한 특징 추출'이 더 정확한 용어라고 생각한다. 비젼 분야에서 이미지에 특정 필터를 적용하면 사진을 편집하듯이 색이 바뀌거나, 블러 처리가 된다거나, 음영이 반대된다거나 하는 변형이 일어난다. CNN 입장에서는 '이미지를 분류하기에 좋은 변형'을 만들기 위한 필터가 필요한 것이고 이를 네트워크 학습을 통해서 찾아가는 것이다. 이전에 여러 자료들을 찾아보면서 정리했던 내용이었는데 오랜만에 세미나를 통해서 다시 한번 상기하고, CNN 기본 컨셉, 원리, 구조 등에서 생각해 볼 수 있었던 시간이었다. 특히 세미나 자료에 많은 공을 들인 흔적이 많이 보여서 세미나 발표를 해준 승호형에게 더욱 감사하다.
이번주 세미나는 승호형이 ‘CNN 기초 원리 및 Image Segmentation’ 이라는 주제를 가지고 진행하였다. 먼저 CNN은 크게 Convolution Layer와 Neural Network구조로 나뉜다. Convolution Layer에서는 input으로 들어온 이미지를 필터를 통해 convolution을 진행한다. 필터는 이미지의 특징을 뽑아내는 도구이며 이미지의 정보를 잃지 않기 위해 padding과 pooling을 진행한다. 이렇게 추출 된 feature들을 가지고 fully connected layer를 거치게 된다. Fully connected layer의 마지막에 softmax를 취하게 되면 확률 값을 얻게 되며 확률 값이 classification과 같은 문제에서는 확률이 높은 class에 해당한다고 분류하게 된다. 하지만 이러한 classification에도 한계점이 존재하는데 한계점은 한 장의 사진에 여러 물체가 있으면 classification하기에 어렵고 이를 해결하기위해 Image segmentation이 등장했다. Segmentation은 단일 픽셀 마다 하나의 label을 부여하여 input 이미지 픽셀 수와 똑 같은 수의 label을 갖게 하는 분류이다. 이를 통해 어떤 물체가 어디에 위치해 있는지 보다 정확하게 알 수 있다. 이번 세미나를 듣고 CNN에 대해 다시 복습할 수 있어서 좋은 기회였고 CNN에 대해 자세하게 설명해준 승호형에게 감사하다는 말을 전하고 싶다.
Convolutional Neural Network (CNN)의 기초와 Image Segmentation 모델 중에서 Fully Convolutional Network (FCN)에 대한 세미나였다. 요새는 당연하게 응용부터 하는지라 기초를 놓치기 쉬운데 오늘 세미나에서 그런 부분들을 상세하게 짚어주어서 좋았다. 과거에는 CNN encoder를 통과하여 얻어진 spatial feature map들을 1차원의 벡터로 편 이후, Multi-Layer Perceptron (MLP)을 쌓아 분류를 진행했다. 하지만 이런 경우 feature map들의 locality가 무너지는 단점이 존재하고, 이를 개선하기 위해 Global Average/Max Pooling을 이용한 정보 보존 등의 방법이 제안되었다. 또한 계산의 효율성을 위해 벡터화 작업을 feature map size 크기 k 만큼의 k by k filter를 사용하기도 한다. FCN은 SegNet, U-Net, DeepLab-v* 등 많은 이미지 세그멘테이션 모델들의 구조에 영향을 주었고, 한 번쯤 읽어보면 좋은 논문이라고 생각한다. 몇 가지 아쉬운 점이 있다면 이 분야에서 다소 혼용되는 용어들이 많은데, 사전에 명확히 정의해주었더라면 많은 사람들이 이해하기 수월했을 것이란 생각이 든다.
오늘은 CNN(Convolutional neural networks) 기본원리와 Segmentation에 대한 설명을 중심으로 세미나가 진행되었다. CNN의 큰 구조를 중심으로 그 안에 들어가는 입력 데이터 형태, 이미지를 요약하는 Convolutional Filter, 마지막에 이미지 분석 Task를 수행할 수 있는 Neural network에 대해 하나, 하나 자세한 설명이 이어졌다. 그 이후에 CNN으로 분석하는 이미지 Task 중 하나인 Segmentation에 대한 설명이 진행되었다. Segmentation은 이미지 내 Pixel 각각 하나가 어떤 class에 속하는지 분류하는 문제이다. 일반적인 Image Classification은 이미지 내에 특정 class가 존재하는지 아닌지를 판단하는 것이라면 Segmentation은 그 이미지를 구성하고 있는 pixel 단위당 특정 class가 맞는지를 판단하게 되는 것이다. 결국 Segmentation은 일반적인 Image Classification 문제보다 분석해야 하는 수가 더 많기 때문에 풀기 어려운 문제가 된다. 이번 세미나에서는 CNN과 Segmentation에 대한 기본적인 원리를 공부할 수 있어서 좋았다. 개인적으로는 뒷부분에 Segmentation 알고리즘이 발전해 온 흐름에 대해 다시 한번 알고 갈 수 있어서 좋았다. Segmentation을 수행하면서 pixel별 위치정보가 손실되지 않기 위해 할 수 있게 여러 개 Conv Feature를 결합한 FCN과 Encoder-Decoder 구조로 원래 입력 크기대로 복원하며 분석하는 SegNet에 대한 기본적인 설명을 들을 수 있었고 Segmentation 알고리즘의 발전 흐름을 한번 더 알 수 있었다. 좋은 세미나를 준비해 준 승호형에게 감사함을 표한다.
이번주 세미나는 승호가 'CNN 기초 원리 및 Image Segmentation'이라는 주제를 가지고 발표하였다. 대부분 딥러닝의 기초에 대해서는 러프하게 보고 API 사용하듯이 사용하는게 일반적이다. 그러다보니 실제로 DNN, CNN, RNN, Attention등에 대해서 어떻게 돌아가는지 내부에 대해서 막연히 알고 모델링을 하는 것에 조금 막연하다 생각이 스스로가 생각이 많이 들곤 하였다. 이번 세미나에서 필터가 채를 이용하여 필요한것을 거르듯이 이미지에서의 특징을 걸러내주는 도구이며 Padding을 이용해서 edge나 모서리 부분의 정보 손실을 막아주고 Pooling 레이어를 이용하여 정보를 응축시켜주는 역할에 대해서 다시 한번 하나씩 자세한 과정을 담은 슬라이드를 통해서 이해를 할수 있고 이 정보들을 결국 응축해서 1차원으로 데이터를 만들고 이를 Fully Connected Layer들을 이용하여 분류나 이미지 정보를 가지고 목적에 맞는 후속 작업을 진행할 수 있다. 여기서 더 나아가 Segmentation은 픽셀 단위로 라벨을 부여한 데이터로 학습하여 이미지속에 어떤 물체의 영역과 종류를 알고자하는 영역의 것으로 시작점이었던 FCN부터 Unet 등 Segmentaion의 대한 개념 또한 짚어줘서 좋았다. 자료에 공을 많이 들인 흔적이 보이는 슬라이드와 더불어 다른 세미나보다 많은 사람 앞에서 경직되지 않고 즐겁게 발표해준 승호에게 감사하다는 말을 전하고 싶다.
금일 세미나는 "CNN기초원리 및 Image Segmentation"이라는 주제로 진행 되었다. CNN은 Convolution layer와 Neural network라는 2개의 구조가 합쳐져서 불려지는 이름이다. Convolution layer에서의 역활은 input으로 들어온 이미지를 Filter(Kernel)을 이용하여 어떤 필더에 맞는 특징을 뽑아내는 것이며 옛날에는 임의로 필터를 구성하였다면 현재는 굉장히 많은 필터를 랜덤하게 만들어 이미지들의 특징을 뽑아낸다. 필터를 통해 나온 특징들을 pooling 기법을 이용하여 (max, average) 더 특징적인 데이터만 뽑아낼 수 있는데 최근에는 해당 기법을 사용하면 정보를 많이 잃어버리기 때문에 사용하지 않기도 한다. 이렇게 나온 데이터를 neural network를 거쳐 softmax를 통하여 확률로 해당 이미지의 label을 구분할수 있게 해준다. 기존 classification 방법은 여러개의 물체가 같이 있으면 한계가 발생하기 때문에 이를 발전시켜서 segmentation이 나오게 되었다. 이 방법은 하나의 이미지에서 여러개의 물체등이 있을경우 이를 구분하여 각각에 label을 다는 것이다. 이 방법을 통해 해당 물체가 어디에 있는지 얼마나 많은 물체들이 있는지 판단 할 수 있게된다. segmentation을 진행하면서 위치정보를 손실하지 않기 위해 FCN (이전의 convoultion의 정보를 가져와 합치는것)등의 기본적인 방법등에 대해 알게되어서 매우 좋았다. 좋은 세미나를해준 승호에게 감사를 표한다.
이번 세미나는 백승호연구원이 "CNN 기초 원리 및 Image Segmentation"에 대해서 발표하였다.
많은 사람들이 CNN에 대해서 배우고 이후 적용을 하고 있다.
하지만 정작 Convolution, Filter, Padding, Stride, Pooling 등 개념에 대해서 깊이 깨닫고 쓰기보다는 Network을 구성하는 hyper parameter의 하나로만 생각을 하고 쓰는 경우가 많고 점점 기저에 깥린 개념을 잊을 때가 많았던 것 같다.
또한 최근에 CNN은 Convolution Layer와 Neural Network Layer로 나뉘어 있으며 각 Layer가 어떤 역할을 하는지 어떤 weight를 업데이트하는지에 대해서도 의미를 생각해본 적이 적었던 것 같다.
이번 세미나를 통해 다시 기초를 다지고 Neural Network을 공부할 때 좀 더 의미를 생각해가며 할 수 있도록 새롭게 마음을 다지게 되었다.
또한 내가 관심을 가지고 있는 Image Segmentation이 어떻게 발전하고 있고 특징이 무엇인지도 다시 알 수 있게 되었다.
승호야.. 고생했어! 고마워!
이번 세미나에선 이미지 데이터 분석에 쓰이는 Convolutional Neural Network(CNN) 모델의 작동원리가 소개됐다. CNN은 각기 다른 가중치를 가진 복수의 필터로 이미지를 훑어 우리가 원하는 특징에 맞게 이미지를 요약하는 1단계(Convolution layer)와, 여기에 활성화 함수를 적용해 분류하는 2단계(Neural network)로 나눌 수 있다. 컨볼루션 과정에서 스트라이드(필터의 움직임 간격), 활성화 함수, 패딩(가장자리 처리) 여부 등을 어떻게 설정하느냐에 따라 성능이 달라진다.
CNN은 기본적으로 '해당 이미지가 A냐 B냐'와 같은 분류 문제에 쓰여왔다. 하지만 이를 차용해, 해당 이미지 중 정확히 어느 부분이 A, B에 해당하는지 픽셀 단위로 분할해내는 Segmentation 문제도 해결할 수 있게 됐다. 세그멘테이션 문제를 풀기 위한 주요 모델로는 FCN, SegNet이 있다. 이중 SegNet은 pooling 전 필터의 특징을 가장 많이 가진 부분을 기억해 이를 다시 그 위치에 복원하는 방식을 채택해 FCN보다 정확도가 높은 것으로 나타나고 있다.
개인적으로는 세미나 주제에 대한 사전지식이 부족하다 보니, 발표자께서 열심히 준비하신 내용을 꼼꼼히 소화하지 못한 점이 아쉬웠다. 하지만 앞으로 이미지 분석 연구를 위해 어떤 개념들을 공부해야 하는지 큰 틀을 잡을 수 있어 유익했다.
금일 세미나는 승호형이 CNN 기초 원리 및 Image Segmentation의 주제로 발표해주었다. 우선 준비한 주제의 이해를 돕기위해 CNN의 전반적인 모델 구조부터 기초 원리를 먼저 설명해주었다. CNN은 수식이나 줄글보다는 그림을 통해 직관적으로 이해하는 것이 좋은데 차근차근 직관적인 이미지를 통해 잘 설명해주어 좋았다. 오늘 승호형이 설명해 준 내용을 정리하자면 다음과 같다. 단순하게 이미지형태의 데이터를 바로 Fully Connected Network로 학습을 시킨다면, 3차원(rgb 채널 포함)의 이미지 데이터를 1차원으로 평면화시켜야 한다. 이러한 과정에서 공간 정보가 손실되고, 결과적으로 학습이 비효율적이고 정확도가 떨어지게 된다. 이러한 문제를 해결하기 위해 이미지 데이터의 공간 정보를 유지한 상태로 학습이 가능토록 한 모델이 CNN이다. CNN의 큰 구조를 설명하자면, Convolution Layer를 통해 이미지의 공간 정보를 유지하여 특징을 추출하고 마지막 부분에 Fully Connected Layer를 추가하여 분류 문제를 풀어내는 구조이다.
CNN에 대한 충분한 이해를 돕고 설명을 이어나간 Image Segmentation 파트는 FCN과 SegNet 위주로 이루어 졌다. 먼저 FCN은 Semantic Segmentation 모델로 이미지 분류에서 높은 성능을 보인 모델들을 목적에 맞게 변형시킨 모델이다. 간략히 말하자면 Network의 얕은 층의 local한 정보와 깊은 층의 global한 정보를 결합하여 더욱 기존의 가장 깊은 층만을 고려했던 모델에 비해 Segmantation 결과를 크게 끌어 올린 모델이다. 다음으로 SegNet은 Encoder와 Decoder로 구성된 모델이다. input image가 Encoder에 입력이 되면 Decoder를 통해 Segmentation 결과가 나오도록 모델이 구성되어 있다. SegNet의 특이한 점은 Encoder의 Max Pooling Index들을 재사용을 통해 Decoder에서 upsampling 과정에서 위치정보 손실을 줄이는 점에 있다.
image 관련 연구의 기초적인 부분을 다시 되새길 수 있어 좋았고, 쉬운 비유를 통해 잘 설명해 준 승호형에게 다시 한번 감사를 표한다.