<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>ed-_-b9.log</title>
        <link>https://velog.io/</link>
        <description>가까운 듯 먼 AI를 이해하는 과정</description>
        <lastBuildDate>Thu, 01 Feb 2024 19:16:51 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>ed-_-b9.log</title>
            <url>https://velog.velcdn.com/images/ed-_-b9/profile/0afd56a6-fb9b-41ef-b5fa-16bec2fb341e/image.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. ed-_-b9.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/ed-_-b9" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[프로젝트 팀원 의견 충돌 : 조율(1)]]></title>
            <link>https://velog.io/@ed-_-b9/%EC%9D%98%EA%B2%AC-%EC%B6%A9%EB%8F%8C%ED%95%A0-%EB%95%8C-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%B2%98%EB%A6%AC%ED%96%88%EA%B3%A0-%EC%95%84%EC%89%AC%EC%9A%B4-%EC%A0%90</link>
            <guid>https://velog.io/@ed-_-b9/%EC%9D%98%EA%B2%AC-%EC%B6%A9%EB%8F%8C%ED%95%A0-%EB%95%8C-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%B2%98%EB%A6%AC%ED%96%88%EA%B3%A0-%EC%95%84%EC%89%AC%EC%9A%B4-%EC%A0%90</guid>
            <pubDate>Thu, 01 Feb 2024 19:16:51 GMT</pubDate>
            <description><![CDATA[<p>대학원 한 연구실의 랩장(팀장)이 되기 전까지는 원래 듣기보다는 학부 및 외부 프로젝트 및 과제 모든 면에서 팀장을 많이 하다보니까 의견을 듣기 보다는 말하는 입장이었다. 하지만, 연구실에서 랩장이 되면서 내가 아는 사실은 팩트 기반으로 전달하기 위해서 누군가의 의견을 묻고, 이해해보려고했다. 현재 하나의 예시를 들어보고자 한다.</p>
<p>어느 순간부터 누군가의 의견을 접하는게 거부감이 없어졌고, 의견 충돌이 나는 두 사람 혹은 2~3 그룹의 내용을 종합하기 시작했다. 논문 성과 및 결과는 너무 드러나는 결과를 보여주기때문에 해당 내용에 대해서 의견 다툼 및 조율이 필요없었다. 다만, 우리 연구실 주제가 Software architecture기반으로 회의하는 경우가 많다. 그러다보니 더 많은 기술이 개발이 될때 이후 개발 과정 및 기능을 염두에 두고 회의를 해야하는 경우가 많았다. architecture 자체 개념을 알고 서로 생각하는 결론이 다르다는 사실은 우리가 결론을 내기까지 많은 시간을 소요하고있었다.</p>
<p>오늘은 이전 구축해두었던 architecture에 대한 개선 사항을 누군가 의견을 제출하였다. 좋은 과정이라고 생각했다. 왜냐하면, 처음부터 설계된 architecture가 100%라는 생각을 하진않았기 때문이다. </p>
<h3 id="a그룹">A그룹</h3>
<ul>
<li><p>기존 architecture는 해당 서비스(기능) 중 특정 기능이 AI로 real-time 능력에 부하를 걸 수 있기 때문에 서비스(기능)을 더 쪼개야한다.
=&gt; 동의. 단, 근거는 충분한가?</p>
</li>
<li><p>Yolo 라이센스 특성상 소스 자체를 Open-source로 만들어야하기때문에 이를 신중하게 설계해야한다.
=&gt; 동의</p>
</li>
</ul>
<h3 id="b그룹">B그룹</h3>
<ul>
<li>기존 architecture는 그걸 모두 고려해서 만든거다.
=&gt; 동의</li>
</ul>
<p>Q. 현재 설계된 architecture 구조에서 A그룹에서 제안한 방법으로 쪼갠다고 되는 문제인가? 쪼개는 것은 좋으나 기능을 재활용할 수 있어야한다. 그리고 현재 설명했던 구조또한 B그룹 즉, 이전에 설계한 기존 architecture와 다르다고 표현한 부분이 무엇인가?</p>
<p>A. 재활용을 하기 위해서 해당 방향으로 흘러가야한다.
B. 현재 우리 연구실이 사용하고 있는 플랫폼 자체를 알지못해서 하는 소리다.</p>
<p>A그룹의 의견에 대해서 더 추가적인 정보가 필요했다고 판단하여 그렇다면 설계하기 위해서 블럭 단위로 설명했는데 풀어서 말해달라고 추가 질문을 이어갔다.</p>
<p>A. 블럭은 결국 서비스(기능)들이 뭉쳐있는 상황이다.</p>
<p>현재까지 계속 언성이 높아지고있다고 판단이 들었고, 이말을 듣자마자 결단을 내렸다. real-time에 대해서 기존과는 다른게 없다. 다르게 그림을 그리고 설명을 하고자해서 생기는 문제이다. 다만, 기존에서 쪼개고 안쪼개는 내용은 논문을 좀더 찾아보자. 현재는 우리 머리속에 있는 말이 정답이라고 생각하기때문에 결론이 나지않거나 타협하고 지나갈 확률이 높다.</p>
<p>해당 말을 하고 상황에서 벗어날 수 있었다.</p>
<h2 id="아쉬운-점">아쉬운 점</h2>
<p>조금 더 그들이 중점적으로 말하고자하는 바를 먼저 말하게 하고, 정확한 정보 전달을 서로 하기위해서 안건을 제출하고 서로 준비할 시간을 주었으면 어땠을까?라는 생각이 든다. 물론 모든 순간이 그렇게 준비할 시간이 있을정도로 안될 수 있다. 그 경우에는 말하고자하는 바를 &quot;현재의 부분은 ~~ 이렇다. 제안하고자 하는 방향은 이 부분에서 바꾸고자 한다.&quot; 라는 식으로 진행해보고자 한다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[차량 AI - segmentation]]></title>
            <link>https://velog.io/@ed-_-b9/%EC%B0%A8%EB%9F%89-AI-segmentation</link>
            <guid>https://velog.io/@ed-_-b9/%EC%B0%A8%EB%9F%89-AI-segmentation</guid>
            <pubDate>Wed, 31 Jan 2024 15:12:40 GMT</pubDate>
            <description><![CDATA[<h1 id="segmentation이란">segmentation이란?</h1>
<p>object detection과 다르게 도로에 레이블을 지정하기 위해 경계 상자를 사용하지 않는다는 차이점이 존재한다.</p>
<p><img src="https://velog.velcdn.com/images/ed-_-b9/post/8946efd6-00e8-4c17-86f2-c63c736058c3/image.jpeg" alt=""></p>
<p>detection은 카테고리가 어떤 boundary내에서 이루어 진다면 segmentation은 all pixel에 카테고리를 정해준다. sematic segmentation은 같은 클래스의 instance를 구별하지 않는다는 것이고, instance segmentation은 class뿐만 아니라 instance도 구별하는 것이다.</p>
<p><img src="https://velog.velcdn.com/images/ed-_-b9/post/8d1701ed-2a8f-416b-b7c7-7fdad685a1ff/image.png" alt="">
원핫 인코등으로 class via에 대해 출력 채널을 만들어서 segmentation map을 위와 같이 생성한다.</p>
<p>⇒ output으로 각 픽셀 별 어느 class에 속하는지 나타내는 label을 나타낸 segmentation map을 만듭니다.</p>
<p>segmentation은 기본적으로 encoder(downsampling)과 decode(upsampling) 구조를 가진다.</p>
<h1 id="segmentation-세부기술-설명">segmentation 세부기술 설명</h1>
<p><img src="https://velog.velcdn.com/images/ed-_-b9/post/ed1533a9-c880-477f-b36f-857763cd43b4/image.png" alt=""></p>
<h2 id="semantic-segmentation"><strong>Semantic Segmentation</strong></h2>
<p>class id : car, person, road와 같은 레이블을 사용하여 이미지의 각 픽셀 단위에서 레이블을 지정하는 작업을 포함한다. 즉, Pixel이 어떤 class에 속하는지에 대해서만 관심이 있습니다.</p>
<p>그렇다면 실차에서 적용하기 위해서 생각을 해보자. 차선을 찾는 것에만 특정 개발팀에서 관심이 존재한다면, semantic segmentation 기술을 채택하면 될 것이다.</p>
<h2 id="instance-segmentation">Instance Segmentation</h2>
<p>일반적으로 RGB image를 입력으로 사용합니다. 그리고 관심 있는 객체를 찾은 객체에 대해 pixel wise classfication을 진행합니다. 객체 당 색상을 다르게 지정해서 구별하기 쉽게 확인할 수 있게 해준다. 보행자 탐지에 관심이 있는 부서는 다음과 같이 해당 기술을 채택해서 instance label이 frame에서 튀어나오면 급정지를 진행시키는 개발도 진행할 수 있을 것이다.</p>
<h2 id="panoptic-segmentation">Panoptic segmentation</h2>
<p>semantic과 instance segmentation기술을 결합해서 이미지의 모든 픽셀에 클래스 레이블과 인스턴스 ID가 할당되는 것으로 확인할 수 있다. 복잡하게 처리해야하는 다른 개발부서에서는 다음과 같이 instance, panoptic segmentation 기술을 접목해야할 것이다.</p>
<h1 id="평가">평가</h1>
<h2 id="pixel-accuracy">pixel accuracy</h2>
<p><strong>prediction map을 class별로 평가하는 경우</strong>에는 <strong>binary classification</strong>으로 생각해 pixel 및 channel 별로 평가한다. <strong>pixel별 image classification 문제로 평가하는 경우</strong>에는 <strong>pixel별로 정답 class를 맞추었는지</strong>의 여부, 즉 True/False를 구분한다.</p>
<p>출처 : <a href="https://www.slideshare.net/SebastianRaschka/nextgen-talk-022015#34">https://www.slideshare.net/SebastianRaschka/nextgen-talk-022015#34</a></p>
<h2 id="mean-intersection-over-union">Mean Intersection-over-Union</h2>
<p>Mask도 일종의 region임을 생각했을 때 segmentation 문제에서는 ground truth와 prediction region 사이의 IoU를 계산한다.!</p>
<h1 id="segmentation-적용-사례">segmentation 적용 사례</h1>
<p>segmentation을 이용해서 drivable area, instance segmentation, adjacent lane, lane markings가 존재한다.
<img src="https://velog.velcdn.com/images/ed-_-b9/post/5b3bdbf9-eb23-42c0-a242-b3e272fc9a28/image.png" alt=""></p>
<p>현재 우리가 구현하고있는 ROS 차에서는 drivable area, lane marking을 이용해서 주행을 하려고 개발 단계에 있다. 단, segmentation을 진행하려면 object detection할 때처럼 CPU를 통해서 하는게 아니라 GPU의 보조가 존재해야한다. 특히 CUDA가 없는 PC에서 돌리려고 할 때 에러 프레임과 함께 작동하기가 어려웠다.</p>
<h2 id="how-to-control-car-adopting-segmentation-pixel-output">How to control car adopting Segmentation pixel output</h2>
<blockquote>
<p><strong>분할 마스크를 어떻게 사용합니까?</strong> 결국 카메라 2의 픽셀(100, 100)이 도로라는 정보는 직접적인 도움이 되지 않으므로 이를 3D 또는 이와 유사한 것으로 변환해야 합니다.
출처 : 해당 블로그</p>
</blockquote>
<p>CVPR 2022년에 Panoptic BEV라는 기술을 선보였는데, 해당 기술은 Bird-eye View를 사용하는 방법이었다.</p>
<p><img src="https://velog.velcdn.com/images/ed-_-b9/post/20ee9201-343e-4a99-8ee6-326641018e85/image.webp" alt=""></p>
<p>Panoptic Bird Eye View 알고리즘( 출처 )</p>
<h1 id="reference">Reference</h1>
<p>segmentation 기술 소개 : <a href="https://www.thinkautonomous.ai/blog/image-segmentation-use-cases/">https://www.thinkautonomous.ai/blog/image-segmentation-use-cases/</a></p>
<p>차량에서 segmentation 적용 :  <a href="https://www.thinkautonomous.ai/blog/image-segmentation-use-cases/">https://www.thinkautonomous.ai/blog/image-segmentation-use-cases/</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[자율주행 개발을 접하다...]]></title>
            <link>https://velog.io/@ed-_-b9/%EC%9E%90%EC%9C%A8%EC%A3%BC%ED%96%89-%EA%B0%9C%EB%B0%9C%EC%9D%84-%EC%A0%91%ED%95%98%EB%8B%A4</link>
            <guid>https://velog.io/@ed-_-b9/%EC%9E%90%EC%9C%A8%EC%A3%BC%ED%96%89-%EA%B0%9C%EB%B0%9C%EC%9D%84-%EC%A0%91%ED%95%98%EB%8B%A4</guid>
            <pubDate>Wed, 31 Jan 2024 14:10:56 GMT</pubDate>
            <description><![CDATA[<h3 id="lks-lane-keeping-system">LKS (Lane keeping system)</h3>
<p>현재 구현되어있는 차량에서의 기능으로는 LKAS (Lane keeping Assist system)을 사용하고 있지만, 현재 우리가 전동차를 통해서 구현한 내용은 LKS (Lane keeping system)입니다.</p>
<p>단, 우리 시스템에서 현재 아직까지는 Route Planner가 존재하지않습니다. 물론 부족한 점도 많겠지만, 현재 구현되고 있는 코드는 AI model에서 추론된 결과를 바탕으로 모터 제어까지 시키는 형태이다.</p>
<p><img src="https://velog.velcdn.com/images/ed-_-b9/post/7ce3c630-4710-4508-9fea-cae4edf94081/image.png" alt="">이미지 출처 : <a href="https://www.autocar.co.uk/opinion/tester%E2%80%99s-notes/matt-prior-why-lane-keeping-assist-systems-need-rethink">https://www.autocar.co.uk/opinion/tester%E2%80%99s-notes/matt-prior-why-lane-keeping-assist-systems-need-rethink</a></p>
<h3 id="route-plannerglobal-path-planner란">Route Planner(Global Path Planner)란?</h3>
<ul>
<li>출발지에서 목적지까지 이동하는 기능이며, 요즘 모든 차량에서는 GPS와 지도를 활용하여 Route를 계획하는 Navigation 시스템을 장착한다.</li>
<li>단, 우리의 주행 가능한 맵은 실내이며, 실제 자율주행 차량에서 발생할 수 있는 많은 경로 생성 기반이 아닌 매우 정적이라는 단점이 있기 때문에 GPS를 이용한 Route Planner를 사용할 시에 어떠한 장점이 존재할지는 미지수이다.</li>
<li>그래서 우리는 키보드 key를 입력받으면, 현재 위치가 출발지이고, 목적지에 대해서는 키보드 인터럽트를 발생시켜서 발생시키는 시점 및 위치를 도착지라고 정리했다.</li>
</ul>
<h3 id="behavior-decision-making">Behavior Decision making</h3>
<ul>
<li>주변 교통 환경을 적절하게 사용하여 rule based로 구현되어있다. 실차에서는 Diving Behavior에는 안전감, 승차감 사람의 심리 및 편안함등을 고려하여 개발하여야한다. </li>
<li>이전에 팀원들에게 언급했지만, 현재에서 우리는 정적인 맵에서 정적 물체를 탐지하여 회피하는 정도의 구현을 목표로 하고있습니다. 그렇기때문에 물체 인식 모델(ex. yolo v~. detection model)을 이용해서 어떠한 물체가 탐지되면, 정지할지, 왼쪽 회피할지, 오른쪽 회피할지, speed값을 변화해서 전진시킬지에 대해서 결정해준다. 세부적으로 어떻게 회피하는지는 여기에선 언급하지않는다.</li>
</ul>
<p>우리가 나아가야할 부분에 대해서 고민을 많이 하는 과정 속 몇 개의 논문을 찾아봤다. 밑에 나와있는 IEEE 논문은 고민만 하고 있던 나에게 좋은 영감을 주었다.</p>
<p><a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;arnumber=8715479">https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;arnumber=8715479</a></p>
<p>논문을 확인하고, 우리가 구동할 수 있는 수준에 맞게 방법론 2개를 설명하고자한다.</p>
<p>&lt;방법은 2가지이다.&gt;</p>
<ul>
<li>방법 1. overtaking → passing</li>
<li>방법 2. Lane change → Lane change</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Docker와 ROS2의 만남]]></title>
            <link>https://velog.io/@ed-_-b9/Docker%EC%99%80-ROS2%EC%9D%98-%EB%A7%8C%EB%82%A8</link>
            <guid>https://velog.io/@ed-_-b9/Docker%EC%99%80-ROS2%EC%9D%98-%EB%A7%8C%EB%82%A8</guid>
            <pubDate>Wed, 31 Jan 2024 13:59:30 GMT</pubDate>
            <description><![CDATA[<p>docker 설치하기 이전에 설치될 수 있었던 데이터들을 미리 제거하고 설치를 하는 과정이다.</p>
<pre><code class="language-bash">sudo apt install gnome-terminal</code></pre>
<pre><code class="language-bash">sudo apt remove docker-desktop</code></pre>
<pre><code class="language-bash">rm -r $HOME/.docker/desktop
sudo rm /usr/local/bin/com.docker.cli
sudo apt purge docker-desktop</code></pre>
<h3 id="http-setting">HTTP setting</h3>
<pre><code class="language-bash">sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release</code></pre>
<h3 id="add-gpg-key">add GPG key</h3>
<pre><code class="language-bash">sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg</code></pre>
<h3 id="저장소-설정">저장소 설정</h3>
<pre><code class="language-bash">echo \
  &quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable&quot; | sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null</code></pre>
<pre><code class="language-bash">sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin</code></pre>
<pre><code class="language-bash">sudo docker run hello-world</code></pre>
<p>아래와 같이 나오면 설치가 성공한 것이다.</p>
<p><img src="https://velog.velcdn.com/images/ed-_-b9/post/49279eb0-0343-4b03-bafe-cc2f84edb754/image.png" alt=""></p>
<h1 id="install-docker-desktop-on-ubuntu"><strong>Install Docker Desktop on Ubuntu</strong></h1>
<p><a href="https://docs.docker.com/desktop/install/ubuntu/">https://docs.docker.com/desktop/install/ubuntu/</a></p>
<pre><code class="language-bash">gpg --generate-key</code></pre>
<pre><code class="language-bash">sudo apt-get update</code></pre>
<p>해당 url에서 DEB package 클릭하면, 다음과 같이 .deb파일을 다운받을 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/ed-_-b9/post/76178585-9f3f-4d95-ad12-bd75db88da5c/image.png" alt=""></p>
<pre><code class="language-bash"># sudo apt-get install ./docker-desktop-&lt;version&gt;-&lt;arch&gt;.deb
sudo apt-get install ./docker-desktop-4.26.1-amd64.deb</code></pre>
<pre><code class="language-bash">systemctl --user start docker-desktop</code></pre>
<pre><code class="language-bash">systemctl --user enable docker-desktop</code></pre>
<p>이렇게 명령어를 작성해주면, docker desktop.exe 파일을 실행할 수 있다.</p>
<p>하지만, login을 눌러도 로그인이 되지않는 현상을 확인할 수 있다.</p>
<h1 id="enable-login">enable Login</h1>
<p><a href="https://docs.docker.com/desktop/get-started/">https://docs.docker.com/desktop/get-started/</a></p>
<pre><code class="language-bash">gpg --generate-key</code></pre>
<p>위의 명령어를 작성할 때 아래와 같은 예시로 입력해줘야한다. 모든 정보를 입력하면 다음과 같은 그림처럼 나오게 된다.</p>
<p>나의 경우,</p>
<p>real name : ...</p>
<p>Email address : <a href="mailto:...@gmail.com">...@gmail.com</a> 이라고 입력했다.</p>
<pre><code class="language-bash">...
GnuPG needs to construct a user ID to identify your key.

Real name: Molly
Email address: molly@example.com
You selected this USER-ID:
   &quot;Molly &lt;molly@example.com&gt;&quot;

Change (N)ame, (E)mail, or (O)kay/(Q)uit? O
...
pubrsa3072 2022-03-31 [SC] [expires: 2024-03-30]
 &lt;generated gpg-id public key&gt;
uid          Molly &lt;molly@example.com&gt;
subrsa3072  2022-03-31 [E] [expires: 2024-03-30]</code></pre>
<pre><code class="language-bash"># pass init &lt;your_generated_gpg-id_public_key&gt;
pass init ... &#39;...@gmail.com&#39;</code></pre>
<p>위의 명령어를 치면, 다음과 같은 명령의 결과가 출력된다.</p>
<pre><code class="language-bash">mkdir: created directory &#39;/home/.../.password-store/&#39;
Password store initialized for ... &#39;...@gmail.com&#39;</code></pre>
<p>다시 docker desktop으로 이동해서 docker 로그인을 하자.</p>
<h1 id="test-for-docker-ros2">Test for Docker-ros2</h1>
<p><a href="https://docs.ros.org/en/humble/How-To-Guides/Run-2-nodes-in-single-or-separate-docker-containers.html">https://docs.ros.org/en/humble/How-To-Guides/Run-2-nodes-in-single-or-separate-docker-containers.html</a></p>
<pre><code class="language-bash">docker pull osrf/ros:humble-desktop</code></pre>
<pre><code class="language-bash">docker run -it osrf/ros:humble-desktop
root@&lt;2136876316&gt;:/#</code></pre>
<pre><code class="language-bash">root@&lt;2136876316&gt;:/# ros2 pkg list</code></pre>
<pre><code class="language-bash">root@&lt;2136876316&gt;:/# ros2 pkg executables</code></pre>
<pre><code class="language-bash">root@&lt;2136876316&gt;:/#  ros2 run demo_nodes_cpp listener &amp;
ros2 run demo_nodes_cpp talker</code></pre>
<h2 id="run-two-container">run two container</h2>
<p>one terminator</p>
<pre><code class="language-bash">docker run -it --rm osrf/ros:humble-desktop ros2 run demo_nodes_cpp talker</code></pre>
<p>other terminator</p>
<pre><code class="language-bash">docker run -it --rm osrf/ros:humble-desktop ros2 run demo_nodes_cpp listener
```![](https://velog.velcdn.com/images/ed-_-b9/post/0805345d-141d-4043-9165-f076a2a3c593/image.png)</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[RAM 용량 확인 및 swap 증가]]></title>
            <link>https://velog.io/@ed-_-b9/RAM-%EC%9A%A9%EB%9F%89-%ED%99%95%EC%9D%B8-%EB%B0%8F-swap-%EC%A6%9D%EA%B0%80</link>
            <guid>https://velog.io/@ed-_-b9/RAM-%EC%9A%A9%EB%9F%89-%ED%99%95%EC%9D%B8-%EB%B0%8F-swap-%EC%A6%9D%EA%B0%80</guid>
            <pubDate>Wed, 31 Jan 2024 13:54:36 GMT</pubDate>
            <description><![CDATA[<p>ROS2, AI 추론이 동시에 사용하기 때문에 모델을 경량화시키지않는다면, 우리가 제공하는 교육 코드는 많은 메모리 사용을 하게 된다. 이러한 문제 중에서 가장 큰 문제는 다음과 같았다. 모든 노드를 동작시키면서 구글 크롬을 실행시키는 과정 속에서 PC가 멈추는 현상이었다. 이러한 상황에서 PC 멈춤 현상을 해결하고자 했다. 이러한 방법 중 하나는 이후 서술하도록 하겠다.</p>
<p>Swap 메모리는 하드디스크 또는 SSD에 할당된 영역으로, RAM이 부족할 때 RAM 처럼 사용되는 공간이다.</p>
<p>RAM이 부족하면 프로그램이 종료되기 때문에 이런 상황에서 Swap 메모리를 사용하여 프로그램이 종료되지 않을 수 있다.</p>
<p>아래의 명령어 실행을 통해서</p>
<pre><code class="language-bash">free -h</code></pre>
<pre><code class="language-bash">sudo swapon --show</code></pre>
<p>만약 아무것도 나오지않으면, swap에 대한 설정은 없다고 판단해야한다.</p>
<p>‘sudi swapon —show’에서 정보가 추출되면, 아래의 명령어를 입력 후 실행시켜야한다. 단, 그렇지않은 경우에는 바로 아래의 명령어는 제외시킨다.</p>
<pre><code class="language-bash">sudo swapoff -v /swapfile</code></pre>
<pre><code class="language-bash">sudo fallocate -l 4G /swapfile</code></pre>
<p>swap memory의 크기를 4G로 변경시킨다.</p>
<h2 id="swap-활성화">swap 활성화</h2>
<pre><code class="language-bash">sudo chmod 600 /swapfile</code></pre>
<pre><code class="language-bash">sudo mkswap /swapfile</code></pre>
<pre><code class="language-bash">sudo swapon /swapfile</code></pre>
<p>이런 과정이 조금의 영향을 미칠 수 있다. 하지만, 요즘 다시 램 스펙 관련 관심도가 급상승하고 있다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Camera Calibration]]></title>
            <link>https://velog.io/@ed-_-b9/Camera-Calibration</link>
            <guid>https://velog.io/@ed-_-b9/Camera-Calibration</guid>
            <pubDate>Wed, 31 Jan 2024 13:43:41 GMT</pubDate>
            <description><![CDATA[<p>카메라의 파라미터(parameters)를 추정하는 과정을 카메라 캘리브레이션</p>
<p>3차원 점들이 영상에 투영된 위치를 구하거나 역으로 영상좌표로부터 3차원 공간좌표를 복원할 때에는 이러한 내부 요인을 제거해야만 정확한 계산이 가능</p>
<p>내부 요인의 파라미터 값을 구하는 과정 = camera calibration</p>
<p><img src="https://velog.velcdn.com/images/ed-_-b9/post/6ae1474a-9f42-4ff2-9618-71def6c38f16/image.jpeg" alt=""><img src="https://velog.velcdn.com/images/ed-_-b9/post/474aef1c-8035-49e7-8fff-edc348031039/image.jpeg" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Human Pose Estimation]]></title>
            <link>https://velog.io/@ed-_-b9/Human-Pose-Estimation</link>
            <guid>https://velog.io/@ed-_-b9/Human-Pose-Estimation</guid>
            <pubDate>Thu, 01 Dec 2022 00:12:38 GMT</pubDate>
            <description><![CDATA[<p>Pose estimation은 영상 속에서 human object 자세(pose)를 추정하는 것입니다. 사람의 자세를 구성하는 주요 관절을 key point or joint라고 한다. 그래서 특정 pose를 만들어내는 key-points들을 찾아내는 task입니다.</p>
<p>✅ Key-points detection, Pose recognition</p>
<aside>
💡 <활용 분야/산업>

<ul>
<li>animation 제작</li>
<li>게임, 아바타 동작(=meta bus)</li>
<li>스포츠 영상 분석을 통한 서비스</li>
<li>medical assistance</li>
<li>CCTV</aside>

</li>
</ul>
<p>Marker vs Markerless system을 사용한다.</p>
<ul>
<li>Markerless system은 RGB camera or depth camera를 이용하여 마커 없이 신체 joint 위치 추정할 수 있게 하는 시스템입니다. 그렇다면 축구장에서 반자동 오프사이드 판단 AI는 markerless system으로 마커없이 신체의 관절 포인트를 추정한다.</li>
</ul>
<p>How? Input image상에서 key points의 x,y 좌표값 예측을 하는 과정이다.</p>
<p>입력 이미지 : RGB image
 / output : 사람의 Bounding Box와 탐지하고자 하는 point 좌표(x,y)</p>
<h1 id="single-person-pose-estimation">Single person pose estimation</h1>
<p>말 그대로 입력 이미지 내 사람이 한명만 존재하는 경우를 나타냅니다. </p>
<h2 id="direct-regression">Direct regression</h2>
<ul>
<li>관절 별 좌표를 예측하는 것</li>
</ul>
<p>bounding box를 사용해 사람이 존재하는 영역만 추출한다. ex. Bounding Box(x,y,w,h) = (120,150,200,300)</p>
<p>관졀별 좌표는 추출 전에 이미지내 좌표를 뽑아내기 때문에 BB에서 사람 영역만 뽑아내서 변환된 이미지 속의 좌표와는 다르기 때문에 변환이 필요합니다. 앞서 pre-processing한 내용에서 나온 산출 input 결과물을 가지고 CNN와 NN를 feature extractor로 사용해서 representation vector를 산출합니다. 산출된 벡터를 FC layer에 입력하여 관절별 예측 값을 산출할 수 있습니다.</p>
<p>(2k:k개의 관절별[x,y]처럼 1개의 관절에서 x,y 2개의 값을 가지고 있기때문에)</p>
<p>산출 예측값과 실제값의 차이가 발생하는데, MSE와 같은 loss_func을 이용해서 back propagation을 통해서 학습하고, 각 parameter에 반영해서 학습하는 방향이다.</p>
<p>앞에서 산출된 예측 관절 위치를 실제 이미지 내 위치로 역변환을 시킵니다. 이렇게 예측한 값은 정확하게 큰 이미지를 보면서 예측한 것이 아니라서 정교함이 좀 떨어진다는 결과가 나타날 가능성이 매우 높습니다. 그래서 예측한 값 근처로 BB를 다시 그린 다음에 crop해서 다시 CNN을 거치게 시킵니다.</p>
<ul>
<li>실제 이미지 내에서 왼쪽 어깨 예측값과 오른쪽 엉덩이 예측값 사이 거리를 계산하고 실제 이미지에 예측한 관절 위치를 중심으로 하는 BB 생성한다. 예를 들어서 BB의 너비와 높이는 <code>델타(왼쪽 어깨 예측값과 오른쪽 엉덩이 예측값 사이 거리)</code></li>
</ul>
<h2 id="heatmap-based-estimation">Heatmap based estimation</h2>
<p>(2015) Efficient Object Localization Using Convolutional Networks(CVPR)</p>
<p>Heatmap[loc = (x,y)] // GT좌표 (x,y)를 Model로 하는 가우시안 분포 Heat map방식을 이용한다.</p>
<p>output을 x,y좌표 대신 heatmap을 통해 상대적인 빈도, 확률 값으로 가져가도록 한다. input image의 여러 pose로 인해 생기는 다양성을 잘 포용하도록 한다. 좌표 기반 방법론보다 높은 성능을 얻어냈다.</p>
<ul>
<li>특정 관절이 존재할 만한 곳은 heatmap 형태로 출력하는 것</li>
</ul>
<h1 id="multi-person-pose-estimation">Multi person pose estimation</h1>
<p>입력 이미지 내 사람이 두 명 이상 존재하는 경우로 AI 심판이 파악해야하는 추정 방식이다.</p>
<p><img src="https://velog.velcdn.com/images/ed-_-b9/post/6e26e5a0-9942-42c8-b8d4-5fe43520ad82/image.jpeg" alt=""></p>
<h3 id="top-down-approach">Top-down approach</h3>
<p>사람을 우선적으로 dectecting한 후 탐지 결과내에서 관절 별 좌표를 예측하는 방식</p>
<h3 id="mask-r-cnn-동작">Mask R-CNN 동작</h3>
<p>1) 객체가 있을만한 영역탐지(BB regression)</p>
<p>2) 탐지한 영역 내 어떠한 범주가 있는지 예측(classfication)</p>
<p>3) 상자 내 픽셀이 탐지한 범주인지 아닌지 분류(segmentation, pixel wise classfication)</p>
<p>Mask R-CNN basic architecture에 human pose estimation에 해당하는 내용 추가한다. </p>
<p>input image → feature extractor에서 image 특징을 추출하여 RPN를 통해서 어디가 객체가 있을지에 대한 정보를 알려준 후보군에서 Bounding box regression &amp; classfication을 진행합니다. 이러한 분류한 객체 pixel에 binary class segmentation에서 속하는지 아닌지를 예측하게 됩니다. 그리고 추가된  human pose estimation에서 관절별 좌표를 가지고 해당하는 픽셀이 관절에 속하는지 예측하게 됩니다.</p>
<p><code>&lt;손실함수&gt;</code></p>
<p>$$
Loss = Loss_{RPN(reg)} + Loss_{RPN(classfi)} + Loss_{BB(reg)} + Loss_{BB(classfi)} + LOSS_{segment} + Loss_{humanpose}
$$</p>
<p>⇒ Multi- task learning</p>
<h3 id="bottom-up-approach">Bottom-up approach</h3>
<p>탐지하고자 하는 관절에 대한 위치 예측 후 사람별로 나누는 과정입니다.</p>
<h3 id="human-pose-estimation-평가지표">Human pose estimation 평가지표</h3>
<p>Percent of Detected Joints(PDJ)</p>
<blockquote>
<h3 id="기존-hpe-적용-사례">기존 HPE 적용 사례**</h3>
</blockquote>
<ol>
<li><p>AI-based app(자세 교정) / hand-pose(수화)</p>
<ul>
<li>Zenia(요가)</li>
<li>골프픽스(골프)</li>
</ul>
</li>
<li><p>Athlete pose detection</p>
</li>
<li><p>Motion tracking for gaming</p>
</li>
<li><p>Infant Motion Analysis</p>
</li>
<li><p>Fall detection</p>
<ul>
<li>Markerless로 pose estimation으로 인명 피해를 최소화하는 방식이다</li>
</ul>
</li>
<li><p>Motion Transfer &amp; Augmented Reality</p>
<h1 id="reference">Reference</h1>
</li>
</ol>
<p>[AI 콜로퀴움] Human Pose Estimation 기술의 발전과 미래 (이경무 교수) : <a href="https://www.youtube.com/watch?v=GBpnsFfLt2Q">www.youtube.com/watch?v=GBpnsFfLt2Q</a></p>
<p><a href="https://eehoeskrap.tistory.com/505">https://eehoeskrap.tistory.com/505</a></p>
<p><a href="https://www.youtube.com/watch?v=w39bjQxm1eg">https://www.youtube.com/watch?v=w39bjQxm1eg</a></p>
<p><a href="https://www.youtube.com/watch?v=GBpnsFfLt2Q">[서울대 AI 콜로퀴움] Human Pose Estimation 기술의 발전과 미래(이경무 교수)</a></p>
<p><a href="https://youtu.be/M6iB3JGKvqU">[2022-S-3] Human Pose Estimation을 이용한 보행 장애 진단 시스템</a></p>
<p><a href="https://youtu.be/KWBziBxC_sM">Human action recognition running on PC and Nvidia Jetson TX2</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[월드컵 기간에 바라보는 AI 심판?]]></title>
            <link>https://velog.io/@ed-_-b9/%EC%9B%94%EB%93%9C%EC%BB%B5-%EA%B8%B0%EA%B0%84%EC%97%90-%EB%B0%94%EB%9D%BC%EB%B3%B4%EB%8A%94-AI-%EC%8B%AC%ED%8C%90</link>
            <guid>https://velog.io/@ed-_-b9/%EC%9B%94%EB%93%9C%EC%BB%B5-%EA%B8%B0%EA%B0%84%EC%97%90-%EB%B0%94%EB%9D%BC%EB%B3%B4%EB%8A%94-AI-%EC%8B%AC%ED%8C%90</guid>
            <pubDate>Wed, 30 Nov 2022 15:24:46 GMT</pubDate>
            <description><![CDATA[<p>2022년 카타르 월드컵이 한창 진행되고 있다. 지난 11월 22일에 아르헨티나는 사우디아라비아와 조별리그를 진행하였지만 패배를 했다. 오프사이드로 인해서 골 취소, 공 소유권 뺏기는 등으로 인하여 해당 결과가 발생했다. 그렇다면 2018년도와 2022년도 월드컵이 다른 점이 무엇이 있길래 오프사이드 기준이 심해진걸까? 해당 질문에 대한 해답은 AI 심판, AI가 판단하는 오프사이드 파악에 있다.</p>
<h4 id=""><img src="https://velog.velcdn.com/images/ed-_-b9/post/7b5a22eb-34a3-4e33-a4fa-626e8ede9ef0/image.jpeg" alt=""></h4>
<p>출처 : <a href="http://www.ainet.link/7282">http://www.ainet.link/7282</a></p>
<p>SAOT(반자동 오프사이드 판독 기술, Semi-Automated Offside Technology)은 AI 오프사이트 판단 심판이라고 불리는 기술이다. 사실 이 기술에 대한 이해를 하기 위해서는 VAR 기술이 있을 것이다. 그 전으로 돌아가면 부심판이라는 제도가 있는데 심판은 필드에서 함께 뛰지만 부심은 경기장 바로 앞에서 라인을 따라서 함께 뛰면서 오프사이드 및 반칙을 판단한다. 어떤 기술, 제도여도 사실 최종 결정은 주심(심판텍스트)의 몫이다. </p>
<p>부심 → VAR → SAOT기술까지 많은 발전을 이루고 있다. 경기장 위에서 설치된 특수 카메라들은 선수들의 신체 부위 29곳, 축구공(’Al Rihla’)에는 초당 500번 데이터를 기록하는 IMU를 달아 패스 순간 포착한다. VAR 사용할 때보다 심판이 직접 보는 판정시간이 줄어들어서 기존 VAR 문제점을 보완했다.</p>
<p><img src="https://preview.thenewsmarket.com/Previews/ADID/StillAssets/800x600/618232.jpg" alt="출처 : [https://news.adidas.com/football/adidas-reveals-the-first-fifa-world-cup--official-match-ball-featuring-connected-ball-technology/s/cccb7187-a67c-4166-b57d-2b28f1d36fa0](https://news.adidas.com/football/adidas-reveals-the-first-fifa-world-cup--official-match-ball-featuring-connected-ball-technology/s/cccb7187-a67c-4166-b57d-2b28f1d36fa0)"></p>
<p>출처 : <a href="https://news.adidas.com/football/adidas-reveals-the-first-fifa-world-cup--official-match-ball-featuring-connected-ball-technology/s/cccb7187-a67c-4166-b57d-2b28f1d36fa0">https://news.adidas.com/football/adidas-reveals-the-first-fifa-world-cup--official-match-ball-featuring-connected-ball-technology/s/cccb7187-a67c-4166-b57d-2b28f1d36fa0</a></p>
<ol>
<li><p>최첨단 카메라 트래킹 기술을 통해서 공과 선수들의 움직임을 실시간으로 파악</p>
<p> multi-object tracking : <a href="https://www.youtube.com/watch?v=QtAYgtBnhws">https://www.youtube.com/watch?v=QtAYgtBnhws</a></p>
<p> Auto-Tracking PTZ camera : <a href="https://www.youtube.com/watch?v=A8V2OC6y-MM">https://www.youtube.com/watch?v=A8V2OC6y-MM</a></p>
<p> <strong>객체 추적 연동 다중 PTZ 카메라 제어 기반 객체 중심 다각도 영상 획득 기술 :</strong> <a href="https://ettrends.etri.re.kr/ettrends/159/0905002124/0905002124.html">https://ettrends.etri.re.kr/ettrends/159/0905002124/0905002124.html</a></p>
<p> 객체 추적 기반의 다중 Pan-Tilt-Zoom(PTZ) 카메라를 통해서 객체 중심으로 다각도 영상을 획득할 수 있어졌다</p>
</li>
<li><p>인체 모션 인식 기술을 통해서 29개의 데이터 포인터로 나눠서 각 선수들의 관절 움직임 인식</p>
</li>
<li><p>관성 측정 센서를 통해서 오프사이드 판정 시점에서 선수가 패스하는 순간에 정확하게 파악 후 오프사이드 위치 두 선수의 위치 비교</p>
</li>
</ol>
<p><img src="https://velog.velcdn.com/images/ed-_-b9/post/4d286217-6f22-46b8-bd95-95024a051415/image.jpeg" alt=""></p>
<ol start="4">
<li>이 모든 결과가 심판에게 전달되고나면 SAOT가 파악한 결과 데이터를 3d 애니메이션을 통해서 표현하는 방식으로 팬들의 이해를 도와준다.</li>
</ol>
<p><img src="https://velog.velcdn.com/images/ed-_-b9/post/495e0c52-e26c-4a15-9fa7-c21b35fb37ae/image.jpeg" alt=""></p>
<p><a href="https://www.youtube.com/watch?v=MxpI9GKizZE">https://www.youtube.com/watch?v=MxpI9GKizZE</a></p>
<p><a href="https://www.youtube.com/watch?v=WycjDx6giVE">https://www.youtube.com/watch?v=WycjDx6giVE</a></p>
<p><a href="http://www.ainet.link/7282">http://www.ainet.link/7282</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Vision-Language[multimodal]]]></title>
            <link>https://velog.io/@ed-_-b9/Vision-Languagemultimodal</link>
            <guid>https://velog.io/@ed-_-b9/Vision-Languagemultimodal</guid>
            <pubDate>Wed, 23 Nov 2022 10:02:56 GMT</pubDate>
            <description><![CDATA[<p>Multimodal task들에 대해서 보다보면 인류 즉 인간이 어떠한 물체라는 것을 이해하기 위해서 시각 미각 촉각 문자까지 여러 개념을 통합해서 인식을 합니다. 그래서 처음 인식하고 나서는 그거에 대한 일부분만 봐도 이게 어떤 촉각이었고 미각은 어땠고 어떠한 설명이 가능한지에 대한 부가적인 정보들을 손쉽게 인식할 수 있다.</p>
<p>각 modality에 적합한 DL 구조를 사용해서 특정 벡터를 추출하는 과정으로</p>
<p>모달을 통합하는 방식에서는 feature concat, ensemble classifier 방법 존재하고</p>
<p>concat을 해서 transformer 계열까지 적용하는 방향성을 발전시키고 있는 것으로 보여진다.</p>
<h2 id="multimodal-representation">multimodal representation</h2>
<p>모탈리티의 정보를 결합해 생성하는 represenation은 어떻게 생성이 될까?</p>
<p>⇒ Heterogeneity gap 문제라고 합니다(각 모달리티 표현이 상이하다는 문제를 의미합니다. 이미지 사진과 글이 pair한 데이터가 있다고 할때, 이미지 사진에 대한 것은 image space, 글에 대한 것은 text space에 각각 매핑을 시켰을때 쌍을 이루는 데이터가 상이한 representation을 가지는 것을 의미합니다)</p>
<aside>
✅ 서로 다른 모달리티의 heterogeneity gap을 줄여 ‘common subspace’에 representation vector를 mapping해야합니다.
⇒ gap을 줄일 수 있는 방법은 무엇이 있을까?

</aside>

<ul>
<li>joint presentation ⇒ concat / additive approach / multiplicative approach</li>
<li>coordinated representation ⇒ cross-modal ranking / 유클리드 거리 계산법</li>
<li>encoder-decoder ⇒ image 모달리티를 text 모달리티의 representation space에 매핑하는 방식이다. encoder : source 모달리티 → latent vector / decode : latent vector → target 모달리티 [VG, VC…]</li>
</ul>
<h1 id="multimodal에-대한-기업-및-연구자들의-관심">multimodal에 대한 기업 및 연구자들의 관심</h1>
<p><strong>구글</strong>은 텍스트-이미지 Diffusion Model인 <strong>Imagen<code>[VG]</code></strong>을 공개했고, <strong>카카오브레인의 minDALL-E<code>[VG]</code></strong>는 DALL-E와 비슷하고, LG AI 연구원은 텍스트와 이미지 간 양방향 사고가 가능한 <strong>엑사원</strong>을 진행하고 있고, <strong>intel과 카네기멜론 대학</strong>이 만든 <strong>WebQA<code>[VQA]</code></strong>는 웹상의 데이터와 이미지를 학습한 모델을 이용해서 사용자 질문에 대한 답을 찾아주는 서비스입니다.</p>
<p><a href="https://www.etnews.com/20220428000098">https://www.etnews.com/20220428000098</a></p>
<h2 id="멀티모달을-연구를-하게-된다면-추후-부작용">멀티모달을 연구를 하게 된다면 추후 부작용</h2>
<ul>
<li><p>인간의 의사 결정에 도움을 줄 수는 있지만 개인정보에 대한 법률 개선</p>
</li>
<li><p>AI에 의해서 만들어진 창작물로 인한 문제가 발생했을 때 누가 책임을 질 것인지 - 모델을 만든 연구자, 모델을 쓴 기업등,,</p>
</li>
</ul>
<p>이 부분에 대해서는 아마도 테슬라와 같은 자율주행 회사와 같은 문제로 넘어가지않을까싶다. 단계적인 접근이 필요할 거 같고, 그에 대한 이해도 또한 필요할 거 같다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[CNN과 Transformer의 다른점]]></title>
            <link>https://velog.io/@ed-_-b9/CNN%EA%B3%BC-Transformer%EC%9D%98-%EB%8B%A4%EB%A5%B8%EC%A0%90</link>
            <guid>https://velog.io/@ed-_-b9/CNN%EA%B3%BC-Transformer%EC%9D%98-%EB%8B%A4%EB%A5%B8%EC%A0%90</guid>
            <pubDate>Wed, 16 Nov 2022 17:29:39 GMT</pubDate>
            <description><![CDATA[<h2 id="기존-cnn-방식과-transformer방식의-차이는-무엇일까">기존 CNN 방식과 transformer방식의 차이는 무엇일까?</h2>
<p><code>CNN</code>은 input image의 공간정보를 유지한 채 학습을 합니다. 그리고 image 전체의 정보를 압축하기 위해 여러 개의 layer를 통과시킵니다. 그리고 <code>transformer</code>는 하나의 layer로 전체 Image 정보 압축합니다.</p>
<p>⇒ 멀리 떨어져있는 정보를 통합하기 위해서 여러 레이어를 통과해야하지만, transformer의 self attention 하나의 레이어만 거쳐도 멀리 떨어져있는 정보들을 통합시킬 수 있습니다.</p>
<p>image (112x150x3)를 python에서 다루려면 (112x150x3) tensor를 다룬다. tensor를 ANN에 적용하려면 tensor를 vector형태로 flatten해줘야한다. 왜냐하면 ANN은 tensor를 input으로 받지않는다.</p>
<h3 id="inductive-bias">Inductive bias</h3>
<p>새로운 데이터에 대해 좋은 성능을 내기 위해 모델에 사전적으로 주어지는 가정</p>
<ul>
<li>Transformer (⇒ inductive bias가 작고, model의 자유도가 높다)</li>
</ul>
<p>1차원 벡터로 만든 후 self attention(2차원의 지역적인 정보 유지가 어렵다)</p>
<ul>
<li><p>weight는 input에 따라 유동적으로 변함</p>
</li>
<li><p>CNN</p>
<p>  2차원의 지역적인 특성 유지를 하며 학습 후 weight 고정한다.</p>
</li>
</ul>
<h2 id="cnn">CNN</h2>
<hr>
<ul>
<li>conv filter를 사용한다. ⇒ 지역정보 유지 가능</li>
<li>학습 후 고정된 weight를 사용한다.</li>
</ul>
<h2 id="transformer">Transformer</h2>
<hr>
<ul>
<li>embedding에 의해 vector 변환 후 self attention 사용한다. ⇒ 지역정보 유지 어렵다. 그래서 CNN에 비해 inductive bias가 약하다</li>
<li>학습 후에도 input vector에 따라 weight 달라진다.</li>
<li>하지만 예측은 잘하는데 dataset이 커야한다.</li>
</ul>
<p>Self Attention의 경우 단순히 encoder와 decoder 사이의 상관관계를 넘어 데이터 내의 상관관계를 바탕으로 특징을 추출하게 된다. 이러한 기술을 바탕으로 Computer Vision에서 자주 사용되는 <strong>CNN에 비해 Transformer는 멀리 떨어진 두 정보를 쉽게 얻어낼 수 있다는 점이 장점</strong>이다. 더불어 Inductive bias(새로운 데이터에 대해 좋은 성능을 내기 위해 모델에 사전적으로 주어지는 가정) 관점에서 CNN은 지역적인 정보를 중요하게 생각하고 Transformer는 지역적인 정보를 상대적으로 덜 중요하게 여기면서 모델의 자유도를 높이게 된다.</p>
<h2 id="transformer-in-computer-vision">Transformer in Computer vision</h2>
<h3 id="논문의-변천사-확인하기">논문의 변천사 확인하기</h3>
<ul>
<li>Non-local nerual network(Wang et al., 2018)</li>
<li>Stand-alone self attention in vision model(Ramachandran et al., 2019)</li>
<li>Vision Transformer(Dosovitskiy et al.,2020)</li>
<li>Data efficient image Transformer(Touvron et al.,2020)
→ 학습 데이터가 충분하지 않을 경우 CNN 모델보다 성능이 감소 할 수 있다. 이를 해결하기 위해 Facebook에서 Data efficient image Transformer를 공개하였고 knowledge distillation과 data argumentation을 활용하여 기존 Transformer의 한계를 일부 해결하였다.</li>
<li>TransGAN(Jiang et al.,2021)
...더 많은 논문들이 있다. 최근의 VL task에 관심이 생기면서 관련된 논문을 읽고있었는데, OSCAR 논문도 재밌게 읽었다.</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>