<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>seokmin-yoon.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Mon, 05 Aug 2024 14:27:24 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. seokmin-yoon.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/seokmin-yoon" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[k8s VM Reboot Error : couldn't get current server API group list]]></title>
            <link>https://velog.io/@seokmin-yoon/k8s-VM-Reboot-Error-couldnt-get-current-server-API-group-list</link>
            <guid>https://velog.io/@seokmin-yoon/k8s-VM-Reboot-Error-couldnt-get-current-server-API-group-list</guid>
            <pubDate>Mon, 05 Aug 2024 14:27:24 GMT</pubDate>
            <description><![CDATA[<p>kubeadm 설치된 VM을 재부팅 했더니 다음과 같은 오류가 났다.</p>
<p><img src="https://velog.velcdn.com/images/seokmin-yoon/post/3541b264-cddb-4903-8b78-39d4670209f0/image.png" alt=""></p>
<p>처음에 kubectl get pod -A 명령 수행 시, 연결이 거절되었다는 응답을 확인했고
sudo으로 다시 수행해보았는데 couldn&#39;t get current server API group list 에러가 나서</p>
<p>swap 실행 여부를 확인해 보았다.</p>
<pre><code>swapon --show</code></pre><p>또는</p>
<pre><code>free -h</code></pre><p><img src="https://velog.velcdn.com/images/seokmin-yoon/post/1a003ce1-5736-46aa-8597-1e9f91240f42/image.png" alt=""></p>
<p>위와 같이 사용중인 swap 공간을 확인하였고 다음과 같은 명령으로 swap을 비활성화하였다.</p>
<pre><code>sudo swapoff -a</code></pre><p>그런 다음 명령을 수행 시, 정상정인 결과를 확인하였다.
<img src="https://velog.velcdn.com/images/seokmin-yoon/post/c8022b24-d0ed-46f0-9475-aa640d59578d/image.png" alt=""></p>
<p>재부팅 해도 swap 비활성화를 유지하고 싶으면 다음과 같은 설정을 하면 된다.</p>
<pre><code>sudo vi /etc/fstab</code></pre><p>내용 중에서 /swap.img ... 아래와 같이 주석 처리 후 저장한다.</p>
<pre><code>#/swap.img     none    swap    sw    0    0</code></pre><p>다시 재부팅 후 정상 작동을 확인하였다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Training YOLOv8 on a Custom Dataset in Colab]]></title>
            <link>https://velog.io/@seokmin-yoon/Training-YOLOv8-on-a-Custom-Dataset-in-Colab</link>
            <guid>https://velog.io/@seokmin-yoon/Training-YOLOv8-on-a-Custom-Dataset-in-Colab</guid>
            <pubDate>Mon, 29 Jul 2024 13:54:01 GMT</pubDate>
            <description><![CDATA[<h1 id="data-set-준비">Data Set 준비</h1>
<p>필자는 roboflow를 이용하여 데이터 셋을 만들었고, YOLOv5 PyToch 형식으로 내보내기 하였다.</p>
<p>그러면 아래와 같이 다운로드 코드를 확인 할 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/seokmin-yoon/post/2e4f23c1-fae8-41cf-aceb-02433a38b5b1/image.png" alt=""></p>
<h1 id="colab-code">Colab code</h1>
<h2 id="1-설치">1. 설치</h2>
<p>먼저 ultralytics를 설치하고 확인한다.</p>
<pre><code class="language-python">%pip install ultralytics</code></pre>
<pre><code class="language-python">import ultralytics
ultralytics.checks()</code></pre>
<h2 id="2-data-set-다운로드">2. Data Set 다운로드</h2>
<p>roboflow를 설치하고 roboflow에서 복사한 Jupyter 다운로드 코드를 붙여넣는다.</p>
<pre><code class="language-python">%pip install roboflow</code></pre>
<pre><code class="language-python">from roboflow import Roboflow
rf = Roboflow(api_key=&quot;api_key&quot;)
project = rf.workspace(&quot;my_workspace_name&quot;).project(&quot;project_name&quot;)
version = project.version(4)
dataset = version.download(&quot;yolov5&quot;)</code></pre>
<p>api key와 workspace, project name은 공개하지 않기 위해 수정하였다.</p>
<h2 id="3-logger-선택">3. Logger 선택</h2>
<p>필자는 comet ML을 선택하였다.</p>
<pre><code class="language-python">logger = &#39;Comet&#39; #@param [&#39;Comet&#39;, &#39;TensorBoard&#39;]

if logger == &#39;Comet&#39;:
  %pip install -q comet_ml
  import comet_ml; comet_ml.init()
elif logger == &#39;TensorBoard&#39;:
  %load_ext tensorboard
  %tensorboard --logdir .</code></pre>
<p>이때 Comet API key를 입력하라고 하는데 Comet ML 페이지에서 로그인 후 자신의 프로필을 누르면 API키를 아래와 같이 확인할 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/seokmin-yoon/post/5d1e00fc-78e5-4d13-acf0-599e69ab728b/image.png" alt=""></p>
<h2 id="4-train">4. Train</h2>
<p>mode를 train으로 설정하고 epochs는 100으로 설정하였다.</p>
<p>그리고 data는 자신의 data.yaml이 있는 곳의 경로로 설정해야 한다.</p>
<pre><code class="language-python"># Train YOLOv8s 100 epochs
!yolo task=detect mode=train model=yolov8s.pt data=&quot;your_path/data.yaml&quot; epochs=100 imgsz=640</code></pre>
<p>하지만 이렇게 수행하면 오류가 난다.</p>
<p><img src="https://velog.velcdn.com/images/seokmin-yoon/post/5d322fea-aa49-49b7-8303-425cf6bae223/image.png" alt=""></p>
<p>오류 내용을 확인해 보니 경로 문제인 것 같아서 data.yaml 파일을 확인해보았다.</p>
<p>확인해보니 train, val 경로가 잘못 작성 되어 있었다. 이 부분을 아래와 같이 수정해 주었다. </p>
<pre><code class="language-yaml">train: ../train/images
val: ../valid/images</code></pre>
<p>필자는 이렇게 수정하였지만 각자 다를 수 있으니 경로를 확인해 보아야 한다.</p>
<h2 id="5-test">5. Test</h2>
<p>mode를 predict으로 설정하고 source부분에 자신이 테스트하고 싶은 이미지의 경로로 설정하면 된다.</p>
<pre><code class="language-python"># Test
!yolo task=detect mode=predict model=/content/runs/detect/train2/weights/best.pt conf=0.25 source=your_image_path</code></pre>
<h1 id="참고-자료">참고 자료</h1>
<p><a href="https://blog.roboflow.com/how-to-train-yolov8-on-a-custom-dataset/">https://blog.roboflow.com/how-to-train-yolov8-on-a-custom-dataset/</a></p>
<p><a href="https://colab.research.google.com/github/ultralytics/ultralytics/blob/main/examples/tutorial.ipynb#scrollTo=bpF9-vS_DAaf">https://colab.research.google.com/github/ultralytics/ultralytics/blob/main/examples/tutorial.ipynb#scrollTo=bpF9-vS_DAaf</a></p>
]]></description>
        </item>
    </channel>
</rss>