- 2023년 12월 8일 오후 12:37
- 조회수: 25053
REFERENCES
INFORMATION
- 2023년 12월 8일
- 오전 12시 ~
- 고려대학교 신공학관 218호
온라인 비디오 시청 (YouTube)

TOPIC
On-Line Video
OVERVIEW
청취자 후기

금일 세미나는 Segment Anything and its Adapter의 주제로 용원이형이 진행하였다. ChatGPT은 대형 언어 모델이라는 특징이 떠오르는데, 본 세미나에서는 image segmentation계의 ChatGPT인 SAM 모델을 위주로 설명한다.
가장 감명깊었던 점은 애매모호한 객체 인식(Ambiguous mask) 부분이었던 것 같다. image segmentation을 직접 다뤄본 경험은 없지만, 항상 이미지 객체를 segmentation할 때 드는 생각이 예를 들어 가방을 메고 있는 사람이 있다면 가방과 사람을 한번에 인식할 지, 가방만 따로 인식할 지 애매할 수 있겠다라는 생각을 했었다. 이에 대해서 SAM이 생성한 3개의 잠재 Mask와 실제 Mask 사이를 IoU Score 기반으로 명확히 segmentation하는 방법을 듣고 나니 가려운 부분이 해소되는 느낌이었다.
다른 데이터도 마찬가지겠지만 이미지 데이터의 경우 데이터 확보의 문제가 생각이 난다. 본 세미나에서도 1100만장의 입력 데이터, 1억 개 이상의 Mask(SA-1B)을 어떻게 확보했을까에 대한 의문을 던진다. 이에 대한 답변으로 3가지 stage(Assisted-manual, Semi-automatic, Fully-automatic)을 통해 데이터 생성이 가능했음을 보여준다.
Task-specific한 특징 추출을 위한 Adaptor 내용도 굉장히 흥미로웠다. Encoder 부분은 고정하고 Mask decoder만 재학습하는 구조에서 입력 이미지 내 미세한 패턴에 대한 특징을 추출하기 어렵다는 의문에 대한 답변이었다.
이미지 분석 분야를 잘 알지 못하는 입장에서 생길 수 있는 의문점들(ambiguous mask, 데이터 확보)을 명확하고 시원하게 해결해주는 세미나였던 것 같다. 기존의 ChatGPT와 SAM을 세 요소(Task, Model, Data)로 나누어 각각 비교하는 부분도 재밌었다. 유익한 세미나를 위해 고생하신 용원이형께 감사의 말을 전하며 세미나 후기를 마친다.

이번 세미나는 "Segment Anything and its Adapter"라는 주제로 진행되었다. 이미지 분할은 사진 또는 영상 내 특정 영역이 탐지하고자 하는 범주 중 어떤 범주에 속하는지 예측을 진행하는 것을 말하며 크게 semantic segmentation, instance segmentation, panoptic segmentation으로 분류된다. 그 중 semantic segmentation은 실제 값 사용 방식에 따라 크게 4가지로 분류될 수 있으며 weakly-supervised semantic segmentation은 boxplot, point 또는 범주 정보와 같은 상대적으로 작은 정보를 활용하여 semantic segmentation을 수행하는 것을 말한다.
본 세미나에서는 Segment Anything (SAM)에 대한 소개가 주를 이루고 있다. SAM 저자들은 이미지 분할을 위한 ChatGPT와 같은 근본 모델을 만들고 싶다는 관심에서부터 시작되었으며 어떤 task, model, data를 활용할 것인지에 대해 자세하게 소개되었다. 먼저 task는 원하는 객체만을 추출하기 위한 prompt segmentation이라는 문제를 정의하였으며 이는 입력 이미지와 prompt를 입력 받아 prompt가 설명하는 객체를 추출하는 문제를 말한다. 두 번째로 모델은 입력 이미지와 prompt에 대한 특징을 추출하는 서로 다른 encoder를 구성하였으며 원하는 객체를 추출할 수 있는 mask를 출력하는 mask decoder로 구성되어 있다. 마지막으로 data는 1,100만 장 입력 이미지와 이미지에 대한 10억 장 이상의 mask를 활용하였다. task, model, data에 관한 자세한 설명 중에서 Ambiguity를 해결하는 손실 함수에 대한 설명이 기억에 남는데, Mask Decoder에서 산출된 3개의 mask와 실제 mask 간에 계산된 IoU와 MLP를 통해 예측된 각 mask 별 IoU 간에 가장 차이가 적은 mask에 대한 손실 함수만을 학습에 사용함으로써 Ambiguity 문제를 해결하였다. 또한 텍스트 데이터를 처리하기 위해 CLIP 구조에서 사전 학습된 Text encoder를 사용하는데, 요즘 CLIP 구조를 정말 많이 활용하고 있음을 다시 한 번 느낄 수 있었다. 실험 결과에서는 SAM이 학습되지 않았던 데이터 셋에도 성능이 좋았으며, 특히 Edge detection도 훌륭하게 해내는 것으로 보아 이미지 데이터를 위한 ChatGPT라는 것을 다시 한 번 실감하였다. 또한, 배경과 관심 객체 사이 구별이 어려운 분야에서는 SAM이 정확한 결과를 출력하지 못하였지만 전이 학습을 진행하여 이러한 한계점을 개선하였다 (SAM-Adapter).
저번 주에 이어 이번 주도 이미지 분할과 관련된 주제여서 이해하는 데 수월했다. 전혀 모르고 있었던 연구를 새롭게 접할 수 있어서 굉장히 유익했고 좋은 세미나를 준비해준 용원이형에게 고마운 마음을 전하며 이상으로 세미나 후기를 마친다.

금일 세미나는 Segmentation 분야의 ChatGPT와 같은 Segment Anything “SAM”에 대한 내용을 다루었다.
SAM이 image segmentation의 ChatGPT라고 불리는 이유는 사용자가 이미지의 어느 부분에서 segmentation map을 얻고 싶은지에 대한 정보를 prompt로 넣어주면 이를 반영한 segmentation map을 생성해내기 때문이다. 그러나 실제 사용자가 제공하는 prompt만으로는 때로 어느 부분의 segmentation map을 구할지 명확하지 않은 즉 ambiguous한 상황들이 존재한다. 예를 들어 타조 이미지를 segmentation할 때 전신이 아니라, 머리 부분만 segmentation하고 싶은 경우도 있는 것처럼 말이다. 이러한 문제를 해결하기 위해 저자들은 서로 다른 예측 mask 3개를 생성하여 이를 실제 mask와의 IOU score를 계산하고, 그 중 가장 큰 IOU를 갖는 mask만 모델 학습에 활용한다.
더하여 SAM은 물체의 그림자 탐지 그리고 물체와 배경이 유사한 경우에는 segmentation을 수행하기 어려운데, 저자들은 이를 기존 SAM구조에서 mask decoder만 fine-tuning하여 해결하였다고 한다.
SAM에 대한 이야기는 논문 그리고 여러 소셜 미디어에서 접한적 있는데 이를 직접적으로 이해할 수 있어 너무 좋았다. 개인적으로는 ambiguous 문제를 해결하기 위한 저자들의 접근 방식이 흥미로웠다. 디퓨젼 모델 역시 때로 사용자의 prompt를 100% 반영하지 못하는 문제에 대한 여러 연구가 진행되고 있는데, 이와 유사한 문제를 해결한 것이라 느껴졌다. 유익한 세미나를 준비해주신 용원형에게 감사의 인사를 전하며 세미나 후기를 마친다.

이번 세미나는 Segmentation계 ChatGPT인 SAM에 대해 진행되었다. SAM은 10억개의 Mask에 대해 학습된 Segmentation 모델로, 세상에 거의 모든 이미지를 Segmentation 할 수 있는 일반화 능력을 갖고 있다. 이는 Prompt와 이미지를 입력 받아 원하는 객체를 Segmentation 해주는 형태를 갖는다. 따라서 모델은 Prompt Encoder와 Image Encoder로 구성된다. 각 Encoder는 MAE, CLIP 등을 활용한다고 한다. (개인적으로 Encoder를 거친 Image Embedding과 Prompt Embedding이 Mask로 Decoding되는 Decoder 부분이 와닿지 않았다.) 손실함수는 여러 Mask 후보군 중 가장 신뢰도가 높은 Mask에 대해서 학습한다. 이러한 원리는 학습 데이터를 자동으로 레이블링하는 과정에서도 동일한 원리가 쓰인다. 하지만 SAM은 Camouflaged Segmentation처럼 복잡한 이미지에 대해서는 어려울 수 있다. 이를 간단한 미세조정으로 극복한 것이 바로 SAM-Adapter이다. 이는 Encoder에 Adapter Module을 추가하고, Decoder만 미세조정함으로써 비교적 어려운 Task도 용이하게 수행할 수 있었다. Adapter Module을 추가하면서 어려운 이미지에 대한 정보를 추가적으로 학습했던 것으로 추정되며, Decoder를 미세조정하면서 특정 데이터에 맞도록 재조정된 효과를 얻은 것으로 보인다.
본 세미나를 통해 SAM에 대해서 상세하게 공부할 수 있었다. Decoder 부분의 상세과정을 제외하고는 어느정도 이해한 것 같으며, 꽤나 재밌게 청취하였다. 아마 Decoder가 와닿지 않는 이유는 Segmentation에 대한 기초 지식이 부족해서 그런 것 같다. (연구 열심히 해야겠다.) 더불어 이제는 Prompt를 받아 사용자가 원하는 형태의 Output을 구성하는 형태의 연구들이 많이 발전하는 것 같다. Diffusion도 그렇고, ChatGPT도 그렇고,,! 내 분야에서는 안 일어날 것 같지만, 조만간 일 것 같다. 유익한 세미나를 준비해준 조용원 연구원님께 고맙다는 말을 전하며 세미나 후기를 마친다.

이번 세미나에서는 조용원 연구원께서 ‘Prompt Segmentation’이라는 개념을 통해 Image Segmentation 문제에 접근하는 SAM과, SAM의 한계를 극복하기 위한 미세조정 방법인 SAM-Adapter에 대한 설명을 진행해주셨습니다.
사진/영상 내 특정 영역이 탐지하고자 하는 범주 중 어떤 범주에 속하는지 예측하는 Image Segmentation 방법은 크게 Semantic Segmentation, Instance Segmentation, Panoptic Segmentation의 세 가지 세부 분야로 나뉩니다. SAM은 그 중 Semantic Segmentation 방법 중 하나인 Weakly-supersied Semantic Segmentation 방법론을 응용하여, Image Segmentation 분야에서의 ChatGPT와 같은 근본 모델(Foundation Model)을 구현하고자 하는 의도에서 출발합니다.
Chat GPT는 Prompt를 입력받으면 이에 대한 응답을 생성하기 위해서 대형 트랜스포머 기반의 생성 모델을 사용하며, 학습을 위해 웹 텍스트 데이터를 활용합니다. SAM은 ‘Prompt Segmentation’이라는 Task를 수행하기 위해, 사전 학습된 Masked Autoencoder의 인코더, CLIP 방식으로 학습된 Text Encoder, 마스크 디코더를 결합하여 Model로 사용하고, 모델의 학습을 위해 세 단계의 데이터 엔진을 통해 만들어지는 1100만 장의 입력 이미지와 10억장 이상의 마스크를 Data로 사용합니다.
SAM의 Task인 ‘Prompt Segmentation’은, 입력 이미지와 Segmantation Prompt를 입력받았을 때, Prompt가 설명하는 객체만 추출할 수 있도록 하는 문제입니다. 추출하고 싶은 대상을 지정하는 Segmantation Prompt로는 특정 위치를 나타내는 Points, Bounding Boxes, 대략적인 mask, 그리고 추출을 원하는 대상을 설명하는 텍스트가 사용되는데, 이 부분이 Weakly-supervised Semantic Segmentation과 연결되는부분이라고 할 수 있습니다.
SAM에서 입력되는 Segmentation Prompt의 각 항목은 다음과 같이 인코딩됩니다. Point와 Bounding Box의 경우 Positional Embedding으로 처리가 됩니다. 텍스트의 경우 CLIP 방식으로 학습된 Text Encoder로, 추출을 원하는 부분에 대한 대략적인 마스크는 Convolution을 통한 연산으로 인코딩이 진행됩니다.
입력 이미지의 경우, Masked Autoencoder(MAE) 방식으로 사전학습된 인코더를 사용하여 인코딩합니다. Visual Transformer를 기반으로 하는 MAE는 입력 이미지의 25%만을 입력받아, 원본 이미지를 그대로 출력하도록 학습하는 모델인데요, 학습을 마친 MAE의 인코더를 통과한 표현 벡터는 입력 이미지에 대한 전반적인 특징을 포함합니다.
입력 이미지와 Segmentation Prompt는 각각 인코딩 과정을 거친 후 Mask Deocder에 입력됩니다. 이 때 입력된 Segmentation Prompt에 대한 정보에는 Self Attention을, 입력 이미지 정보와 Segmentation Prompt 정보에 대해서는 Image to Token Attention(입력 이미지 -> Segmentation Prompt), Token to Image Attention(입력 이미지 <- Segmentation Prompt)의 양방향 Attention을 적용하여 입력 이미지와 Segmentation Prompt의 특징을 융합합니다. 이후 융합된 특징에 대해서 Transposed Convolution을 통해 원본 사이즈로 복원하면서 여러 Mask를 생성하는 것이 Mask Decoder에서 하는 일입니다.
이 때 Segmentation Prompt(Points, Bounding Boxes, 대략적인 마스크, 텍스트)가 모호하게 입력되었다고 하더라도 타당한 Mask가 도출될 수 있도록 해야합니다. 이를 위해서 Mask Decoder에서 서로 다른 세 개의 마스크를 생성하고, 가장 큰 예측 IoU를 가진 마스크에 대한 손실함수만 모델 학습에 반영하여 해당 목적을 달성할 수 있도록 합니다.
학습에는 1100만 장의 이미지와 1억 개 이상의 마스크가 사용되었습니다. 이를 사람이 직접 레이블링하는 것은 한계가 있기 때문에, 본 논문에서는 3단계의 데이터 엔진을 제안합니다. 1단계인 Assisted-manual stage에서는 전문가가 특정 이미지에 대한 Point Prompt 및 마스크를 직접 생성합니다. 2단계인 Semi-automatic stage에서는 모델이 예측한 결과를 Prompt로 입력해 모델이 Mask를 예측하면, 전문가가 이를 보정합니다. 마지막 Fully-automatic stage에서는 사람의 개입 없이 마스크를 생성하며, 전체 1억 개 이상 마스크 중 99% 이상이 이 단계에서 생성되었습니다.
SAM의 경우 우수한 성능을 보이며, 인종/지역에 관계 없이 잘 작동합니다. Edge Detection을 학습하지 않았음에도 정확하고 자세하게 객체의 edge를 감지하는 인상적인 결과를 보입니다. 하지만 Shadow Detection, Camouflaged Object Detection과 같은 Task는 잘 수행하지 못하는 한계를 보입니다.
이런 한계를 극복하기 위해 등장한 것이 SAM-Adapter입니다. SAM은 가중치까지 모두 공개된 모델인데요, 이를 미세조정하여 SAM의 한계를 극복하고자 합니다. 기존 SAM의 입력 이미지를 인코딩하는 Image Encoder의 파라미터를 고정하고, Image Encoder의 레이어 사이에 Adapter를 추가합니다. 그리고 미세조정을 진행하는데, 이 때 학습의 대상은 Adapter들의 파라미터와 Mask Decoder의 파라미터입니다. 이를 통해 기존의 한계였던 Shadow Detection, Camouflaged Object Detection과 같은 상황에서도 정확하게 검출 대상을 검출할 수 있게 됩니다.
이미지 상에서 물체를 검출할 수 있는 Image Segmentation은 AI가 한 단계 더 나아가는 데에 있어서 매우 중요한 과업이라고 생각합니다. Image Segmentation에 대해서 막연하게 들어본 정도로만 알고있었지만, 조용원 연구원님의 세미나에서 처음 구체적으로 접하게 되었습니다. 벌써 많은 발전이 이루어졌다는 점에서, 또 최근 큰 영향을 미치고 있는 거대 생성형 AI와 같이 프롬프트 방식으로 접근할 수 있다는 점이 매우 인상적이었습니다. 그리고 최근 연구나 현업적용에 있어 적절한 데이터 확보는 중요하고, 따라서 해당 문제를 해결하기 위한 다양한 접근 방식들이 다양한 분야에서 많이 나타나고 있는데, 그런 점에서 Segment Anything 논문에서 제시하는 Data Engine 역시 그 시사점이 크다고 생각합니다. 앞으로도 관심을 갖고 지켜볼만한 재밌는 분야가 하나 더 늘어난 것 같습니다.
좋은 세미나 준비해주신 조용원 연구원께 감사의 말씀을 전합니다.

이번 세미나는 Segment Anything Model(SAM)에 대해서 진행되었다. ChatGPT의 이미지 버전이라고 하니 한번에 와닿았다. 그리고 지난 세미나를 듣고 Segment Anything에 대해서 궁금해지는 찰나 적절한 타이밍에 해당 방법론을 다루어서 굉장히 흥미롭게 세미나를 들을 수 있었다. 본 세미나에서 Task, Model, Data 측면으로 3가지로 나누어서 설명을 하였는데 Task는 이미지가 주어지고 Segmentation Prompt를 주고 Prompt가 설명하는 객체를 추출하는 문제로 구성하였다. 두번째로 모델 구조는 이미지와 Prompt를 받아들이는 각각의 인코더와 이를 출력하기 위한 디코더로 구성되었다. 이미지 인코더는 Masked Autoencoder(MAE)라는 사전 학습 방식을 사용하여 학습된 인코더를 사용했고 Prompt는 CLIP Text 인코더를 사용하였다. 마지막으로 데이터는 라이센스와 사생활 보호 처리가 완료된 이미지를 사용하였는데, 무작정 웹에서 데이터를 수집하는 것이 아니라 누구나 납득할 수 있는 과정으로 데이터를 수집하고 학습하였다는 점에서 앞으로의 AI 모델을 개발함에 있어서 정석을 보는 느낌이었다. 특히 모든 이미지에 대하여 Mask를 수작업으로 할 수는 없기 때문에 3단계에 걸쳐서 작업을 진행되었는데 마지막 Fully-automatic stage를 사용해 생성한 Mask 예시를 보니 놀라지 않을 수가 없었다. 다음으로 이러한 구성들로 학습이 어떻게 진행되는지 설명하였는데 Ambiguity 제거를 위하여 실제 IoU값과 예측 IoU의 값을 비교하고 선택하여 사용하는 부분은 직관적으로 잘 이해가되지 않아 논문을 읽어봐야겠다는 생각이 들었다. 결과 측면에서도 해당 논문에서는 인종/지역에 관계 없이 잘 작동하는지를 보여주었다. 지난 Tsui 교수님과 함께 했던 세미나에서 AI모델의 윤리적인 문제를 다룬 Coded Bias라는 영화가 언급된적이 있었는데 AI 모델이 점차 발전되고 상용화됨에 따라서 다양한 부분이 고려되어야 하고 실제로 많은 연구자들이 이러한 고민을 하고 있다는것을 처음으로 논문을 통해 확인할 수 있었다. 다음으로 SAM-Adapter를 소개하였는데 인코더를 고정해두고 인코더 Layer 사이 사이에 새로운 Layer를 추가하는 방식은 처음보는 것이여서 굉장히 신선하게 다가왔다. SAM-Adapter의 결과는 사람의 눈으로도 구별이 쉽지 않은 사진을 잘 구별하는 것으로 성능이 굉장히 놀라웠다. Segmentation 관련 연구를 직접 수행한적이 없기에 생소한 분야였지만 활용가능성이 높고 정말 재밌는 분야인것 같다. 세미나 내용을 100% 완전히 다 이해하지는 못하였지만 개괄적으로 어떻게 동작하는지, 그리고 어떤 흐름으로 연구가 되었는지에 대해서 알수 있어서 굉장히 유익하였다. 이처럼 흥미로운 세미나를 준비해준 조용원 연구원에게 고맙다는 인사를 전하며 이상으로 세미나 후기를 마친다.

SAM과 SAM-Adapter에 관한 세미나를 청취하였다. SAM은 Meta에서 ChatGPT와 같은 근본 Image Segmentation 모델 역할을 기대하며 만든 것으로, Prompt segmentation task를 기반하여 학습한 모델이다. 여기서, Prompt segmentation은 여러 형태로 주어진 Weak label들과 Text 문구, 이미지들이 모델에 입력되어 입력된 데이터에 대응되는 Segmentation mask를 학습하는 것이다. 모델을 잘 학습시키기 위해서는 이에 대응되는 모델 구조와 많은 양의 데이터가 필요로 하는데, 본 세미나에서 자세히 다루고 있다.
다음으로 SAM-Adapter에 관한 내용도 청취하였다. SAM-Adapter는 SAM이 분간하기 어려운 Task들을 풀고자 추가적으로 미세 조정한 모델이다. SAM이 입력 받아 왔던 Prompt 요소들중에서 입력 이미지만 유지하고 나머지 요소들은 제외하며, encoder는 freeze한 상태로 mask decoder 부분만을 미세 조정학습한다. 그 이후에는 배경과 관심 객체가 매우 흡사하여도 관심 객체만을 잘 탐지해내는 성능을 가지게 되었다.
좋은 세미나를 준비하느라 고생하신 용원이 형에게 감사의 말씀을 전하며 세미나 후기를 마치도록 한다.