데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      APP 서비스 및 5G 성능 분석을 위한 영상/이미지 분석 기술 개발 - 연구 결과(3)

      hyeeeonc 23.11.07
      160 1 0
      DEVOTEE 요약
      SKT AI Fellowship 5기 12팀인 슼나무는 App 테스트 및 성능 분석 도구인 Object Detection Model 개발을 목표로 연구를 진행했습니다. 다양한 기기, 환경에서의 테스트 요청을 대비하기 위해 사용법이 상이한 기존 도구들의 한계를 극복하고자 했으며, 심지어 게임 엔진을 사용해도 이를 위한 App이 자동화 테스팅 도구로 테스트하는 문제를 해결하려 했습니다. 다양한 테스트 케이스에서 93%의 성공률을 기록하였으며, Object Detection Model을 사용한 앱 테스트는 성공적으로 마무리되었습니다.
      DEVOTEE 추천 블로그

      반갑습니다. SKT AI Fellowship 5기 12팀 슼나무입니다.


      벌써 올해가 마무리되어가는 순간이네요. 저희가 연구를 시작한지도 벌써 반 년 가까이 흐르고, 최종 발표까지 마무리되었습니다.

      이번 글을 통해 지금까지의 연구를 종합하고 정리해 보겠습니다.


      그 전에, 저희는 멘토님과 SKT AI Fellowship 운영진 분들, 그리고 SKT의 기술 자산 전문가분들과 함께 감사하게도 IPR 출원을 준비하고 있습니다.

      따라서 세부적인 내용을 모두 다룰 수 없음을 양해해 주시기 바랍니다.

      이를 바탕으로 SKT에서 개발하는 수많은 서비스가 더욱 원활히 테스트될 수 있기를 기대하며, 시작하겠습니다!


      1. 개요

      연구과정에서 말씀드렸던 것처럼, App의 업데이트는 필연적으로 테스트를 유발합니다. 의도한 대로 모든 기능들이 잘 작동하는지,

      혹시 버그는 없는지 개발 단계부터 출시 후까지 지속적으로 모니터링해야 하지요.

      이때 다양한 기기, 다양한 환경에서 수많은 테스트 요청사항이 발생하기 때문에 이를 돕는 많은 자동화 도구가 있습니다.

      하지만 각 도구마다 사용법도 상이하며, 심지어 Unity 등 게임 엔진을 사용하였을 때에는 App 자동화 테스팅 도구로 테스트하지 못한다는 문제점도 있습니다.

      따라서 저희는 상황과 환경에 구애받지 않고 어디에든 적용이 가능한, App 테스트 및 성능 분석 도구로서의 Obejct Detection Model을 만드는 것이 목표입니다.

      이때 해결해야 하는 문제를 다시 한번 정의하면 다음과 같습니다.


      첫째, App내 신규 기능 업데이트 시 학습 비용 최소화하기

      image.png

      과거 ifland 업데이트 내역


      App 등 대부분의 Product는 기존 버전보다 더 많은 기능 향상 및 사용자 편의 대폭 개선을 위해 Major Update를 시행합니다.

      보통 Major Update의 주기는 길지 않습니다.

      하지만 이때 발생한 문제를 해결하거나 작은 부분이라도 사용자 경험 향상이 가능한 부분을 반영한 Minor Update는 빈번하게 발생합니다.


      이때마다 모델은 새로운 App의 기능을 이해하고, 테스팅에 필요한 역할을 해야 합니다.

      그렇다면 매번 새로운 모델을 학습시키는 방식으로는 테스팅에 Detection Model을 사용하기 어렵습니다. 따라서 학습 비용 최소화를 고민해야 했습니다.


      둘째, App내 가상 물체를 정확하게 인식하기

      image.png

      App에는 각 App의 특색을 담은, 그림이나 3D 모델링으로 생성된 가상 세계 물체가 많이 사용됩니다. 당연히 모델은 학습 과정에서 이에 대한 정보를 학습하지 못했습니다.

      그런 상황에서도 App 테스팅에 문제가 없도록, 각 물체들을 정확히 인식하는 모델이 필요했습니다.


      셋째, App 내 물체가 존재하지 않는다는 정보도 인식하기

      image.png

      Object Detection Model은 대부분 “원하는 물체가 어디에 있는지” 라는 정보에 집중합니다. 하지만 테스팅에서는 물체가 존재하지 않는다는 사실이 중요한 경우가 많습니다.

      특정 물체가 노출되지 않아야 한다거나, 등장했던 물체가 사라져야 한다거나 하는 등 다양한 테스트 케이스가 존재하기 때문입니다.

      이러한 테스트를 문제없이 수행할 수 있는 모델이 필요했습니다.


      2. 연구 정리

      2.1 Object Detection Model

      image.png

      앱 특정 화면에서 원하는 요소(element)가 존재하는지 식별하고, 존재한다면 어떤 위치에 놓여있는지 확인하기 위해 Object Detection Model 를 사용하였습니다.

      특히 앱의 빈번한 업데이트를 고려하여, 새롭게 도입된 물체도 문제잆이 테스팅하는 모델을 만들기 위해 Few-shot & Zero-shot Learning based Model에 집중했습니다.


      2.1.1 CFOCNet

      image.png

      첫 번째로 고려한 모델은 바로 CFOCNet이라는 모델입니다.

      이는 Self attention 및 다양한 scale에서의 물체들과의 Matching 점수를 학습하고 집계하기 위해, 두 개의 연속된 Resnet 블록을 활용합니다.

      image.png

      Encoder는 쿼리 이미지와 참조 이미지의 특징을 추출하는 두 개의 스트림을 가지고 있으며, Matching algorithm을 통해 쿼리 이미지와 참조 이미지의 특징 정보를 합쳐 나타냅니다.

      Decoder는 가중치 합 메커니즘을 사용하여 인코더에서 생성된 각 scale 마다의 점수 맵들을 더합니다.

      이를 통해 네트워크는 다른 스케일의 매칭 점수를 자동으로 학습하고 집계할 수 있습니다.

      image.png

      최종적으로 출력되는 것은 Density Map으로, 여기서 reference로 준 물체의 위치와 개수를 확인하는 방식입니다.


      하지만 논문과 동일한 조건에서 COCO 데이터셋을 다운받고 생성한 모델뿐만 아니라,

      다양한 hyper-parameter를 시도하며 ifland를 통해 수입한 데이터셋을 도입해 fine tuning을 한 실험에서도 좋은 성과를 확인하지 못했습니다.

      해당 모델이 학습 단계에서 한 지역의 확률을 최대한 높이기 보다는, 여러 개의 확률을 지역적으로 높이는 경우가 많았기 때문에,

      현재 적용하려는 문제 상황과는 동떨어진 결과가 나온 것으로 판단하였습니다.


      2.1.2 OWL-ViT

      image.png

      OWL-ViT tutorial


      다음으로 고려한 모델은 OWL-ViT입니다. 이는 구글에서 개발한 모델로, ViT와 텍스트 인코더를 각각 사용하는 방식입니다.

      이 두 가지 모두 CLIP모델을 이용합니다.

      image.png

      CLIP의 모델 학습 방법


      CLIP의 경우 배치마다 (text, image) N개의 pair를 이용해 학습하는데

      pair로 주어진 데이터끼리의 cosine similarity는 최대화 시키고 (이미지의 Ti,Ii) 나머지 N^2 - N개의 pair의 경우에는 최소화 시키는 것으로 유사한 텍스트에 대해 이미지를 식별하게 만듭니다.


      하지만 이런 방법으로는 object classification은 가능해도 detection은 어렵습니다!

      image.png

      그래서 OWL-ViT의 경우에는 ViT의 토큰 풀 레이어를 faster rcnn의 물체탐지 레이어인 RPN과 클래스 탐지용 레이어인 linear projection로 바꾸어 사용합니다.

      그리하여 텍스트가 인풋으로 주어진 경우 텍스트가 인코더를 통과하여 embedding을 얻어내며,

      이 embedding을 Linear projection 레이어와 내적하여 가장 높은 logit을 가진 텍스트들이 detect 되는 방식입니다.


      저희는 인풋에 텍스트 대신 찾아야 할 이미지를 제공함으로써, 텍스트에 대한 query embedding 대신 이미지의 embedding을 얻어내어 사진에서 찾아내는 방식으로 사용하였습니다.

      하지만 OWL-ViT는 App도메인에 대해 최적화된 모델이 아니라, 실생활 데이터들을 기반으로 학습되었기 때문에 저희가 원하는 성능을 보이지 않았습니다.

      이를 보완하기 위해 추가 학습을 하려면 학습 비용이 많이 들고,

      가장 중요한 지점으로 인풋으로 제시한 이미지가 존재하지 않더라도 가장 높은 logit의 물체가 무조건 탐지된다는 OwlViT의 설계상 심각한 문제가 있었습니다.


      2.1.3 Sliding Window ViT

      Sliding Window는 물체의 크기를 고정하여, 크기에 대한 추론을 할 필요가 없도록 만들어 그만큼 추론의 정확도를 올리는 방식입니다.

      image.png

      • 먼저 위 사진의 “사람”과 같이, 탐지하고자 하는 물체의 사진을 제공합니다. 이때 모델은 사진을 통해 물체를 구분할 수 있는 특징(Attention)을 추출합니다.

      image.png

      • 다음으로 물체가 있는지, 있다면 어디에 있는지 확인해야 하는 이미지를 제공합니다. 모델은 미리 지정된 작은 네모 박스 크기로 전체 사진을 작게 잘라가면서, 앞서 추출한 물체의 특징을 가진 부분과 비교합니다.

      • 그 결과

        • “유사도가 미리 설정한 임계값 이상이기 때문에 물체가 존재하고,

        • 그 위치는 가장 큰 유사도를 보이는 네모 박스의 위치이다”

        라는 결과를 도출합니다.


      2.2 Self-Supervised Learning

      모델과 이를 작동시키는 인프라를 위와 같이 설정하였기 때문에 충분한 테스트 케이스 Coverage를 가질 수 있었으나,

      실환경에 적용하기에는 작은 물체를 탐지한다거나, 회전하면서 모양이 변한 물체를 탐지하는 등 원활하지 못한 케이스가 많았습니다.


      따라서 이를 개선하기 위해 학습을 도입하였습니다. 그런데 학습 과정에서 레이블링 등 학습 비용이 과도하게 요구된다면,

      App내 신규 기능 업데이트 시 학습 비용 최소화하기라는 목표를 달성할 수 없습니다. 그러므로 레이블링이 필요하지 않은, Self-Supervised Learning을 도입하였습니다.


      2.3.1 DINO Training

      Dino는 Knowledge-distilation 방식으로 큰 모델의 지식을 작은 모델에 학습시키며 Self-Supervised-learning을 이용한 방식입니다.

      image.png

      student network와 teacher network는 동일한 형태의 모델로, student 모델이 teacher 모델이 예측한 결과를 예측하는 방식입니다.

      두 모델의 예측값은 softmax 확률 값으로 나타나고 cross entrophy loss를 줄여가면서 서로의 예측값이 같아지도록 하는 것이 목표입니다.

      각 모델들의 인풋 이미지는 augment(회전, 색전환 등)된 이미지를 global view와 local view로 나눕니다.

      물체 전체의 이미지와 해당 물체의 특징(눈, 코, 얼굴형 등)만 담은 이미지라고 이해할 수 있겠습니다. teacher 모델은 예측을 할때 모든 view를 다 사용하며,

      student는 local view만 사용하여 학습합니다.

      image.png

      global view와 local view 예시

      그 결과 레이블링이 없더라도 물체의 전반적인 형태뿐만 아니라 세부적인 디테일까지 이해할 수 있어, 레이블링이 사실상 불가능한 환경에서 좋은 성능을 보장해야 한다는 저희의 요구사항을 만족합니다.


      2.3.2 MIM(Masked Image Modeling)

      MIM는 NLP의 self-supervised learning의 한 방법 중 하나인 MLM(Masked Language modeling)과 유사한 방법입니다.

      MIM은 이미지에 의도적으로 구멍을 내고, 구멍이 나지 않은 다른 부분들을 참조해 모델이 스스로 원본을 복원하도록 합니다.

      이를 통해 모델이 물체를 구성하는 픽셀들의 관계를 스스로 파악하도록 하는 것입니다.

      image.png

      저희는 Vision transformer 에 들어가는 16x16 패치 중 랜덤으로 N개의 패치를 마스킹하고 모델에 넣어, 마스킹된 패치를 재현하도록 학습하는 self-supervised learning을 사용했습니다.

      해당 방법으로 앱 환경에서의 raw video에 대해 self-supervised learning을 진행하면, 모델은 앱 화면에 대한 semantic 한 정보를 이해할 수 있을 것이라고 판단하였습니다.


      2.4 학습 결과 (Attention Map)

      image.png

      Self-Supervised Learning 이후 뭉쳐져 있던 픽셀이 확실히 분리되면서, 각 버튼과 물체를 선명하게 구분하고 있음을 확인할 수 있습니다.


      3. 사용 환경

      3.1 모델 학습

      image.png

      • 학습 대상 모델

        • 서버에 mount되어 현재 사용하는 모델의 버전을 명시합니다.

      • 동영상 업로드

        • 업데이트 후, 새로운 물체가 포함된 영상을 업로드 합니다.

      • 학습 상태

        • 다른 모델의 학습이 진행중인 경우, 또 다른 학습 실행이 불가능합니다. 이를 테스터에게 고지합니다.

      • 학습 실행

        • 모델의 버전명 , 학습 방법 을 명시합니다.

        • 앞서 설정한 모델과 영상으로 학습을 진행하라고 지시합니다.


      3.1 테스트 시나리오 작성

      테스트 시나리오 및 테스트 과정에 대한 자세한 내용은 연구과정에서 확인하실 수 있습니다. 추가된 사항은 다음과 같습니다.

      image.png

      • 학습이 도입되면서 다양한 영상으로 학습된 모델을 선택하여, 현재 테스트에 더욱 적절한 모델로 테스트를 진행할 수 있게 되었습니다. 이를 위한 Selector를 추가하였습니다.

      • 다양한 테스터님이 다양한 위치에서 다양한 단말과 App을 테스트하기 위해 Agent PC를 여러 대 사용할 수 있도록 서버를 개선하였습니다.

        이에 따라서 현재 모델 서버와 영상을 주고받고, 단말을 제어하는 Agent PC의 주소가 무엇인지 알려주어야 했고,

        이를 위해 Input field를 두 개 만들어 Agent PC의 주소를 전달하도록 하였습니다.

      image.png


      추가로, Mobile에서도 작동 가능하도록 하여, Agent PC에 단말을 연결만 해두었다면 테스트 실행 자체는 어디서든 모바일 환경에서도 실행할 수 있습니다.

      이를 통해 공간적으로 자유로운 테스팅이 되도록 노력했습니다.


      4. 결론

      4.1 성능 평가

      실제 QA 사용 테스트 케이스에서, 어려웠던 케이스를 많이 극복했습니다. 대표적인 케이스를 보여드리겠습니다.

      image.png

      이렇게 눈으로 찾아보기도 힘들 정도의 물체를 잘 인식할 뿐만 아니라,

      image.png

      object detection 태스크에서 모델이 찾기 어려워하는, 뒤집힌/회전하는 물체 등 역시 충분히 잘 찾아내는 것을 볼 수 있습니다.

      image.png

      전체 케이스에 대한 결과는 위와 같습니다. 중간 발표까지 극복하지 못했던 케이스를 추가로 해결하여, 93%의 Testcase Coverage를 달성했습니다.


      4.2 마무리하며

      SKT AI Fellowship은 우선 학생으로서, 학교에서는 접할 수 없었던 실무 경험뿐만 아니라 체계적인 기업의 연구 과정 및 개발 과정을 배울 수 있었던 너무 소중한 기회였습니다.

      효율적으로 협업을 진행하는 방법부터 시작하여 인프라를 설정하고, 자세한 계획과 이를 실천으로 옮기는 업무 과정을 직접 함께하면서 많이 배울 수 있었습니다.


      여러 대외활동들을 팀원들이 진행해보았지만, Fellowship만큼 체계적으로 현직자들과 프로젝트를 함께 진행할 수 있는 대외활동은 처음 경험해 보았습니다.

      다시 한번 해당 활동을 기획해주시고 이끌어주신 AI Fellowship 프로그램, 운영진, SKT께 감사드리고 싶습니다.


      그리고 인공지능이라는 분야에는 정말 다양한 연구 주제가 있고, 이 모든 것을 다 학습하고 트렌드를 파악하기는 시간상 여려운 경우가 많습니다.

      그렇지만 Fellowship에서 함께 연구한 Fellower들의 연구 과정을 팔로우업하며 트렌드를 파악하고 공부할 수 있는 귀중한 경험을 가질 수 있었습니다.


      또 매우 바쁜 현업을 병행하면서 최대한 저희를 서포트 해주고 프로젝트 진행, 특허 출원 등 다양한 방면으로 이끌어주신 멘토님들께 특히 정말 감사드리고 싶습니다.


      다시 한번 많이 도와주신 멘토님들께 너무 감사드리고, 운영자님들께도 감사의 인사를 전합니다. 마지막까지 감사했습니다. 이상 팀 슼나무였습니다!

      image.png

      image.png

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      hyeeeonc 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기