<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>빗자루검 블로그</title>
    <link>https://yongeekd01.tistory.com/</link>
    <description>IT 정보, AI 딥러닝, 개발 자료, 코딩 블로그</description>
    <language>ko</language>
    <pubDate>Wed, 15 Apr 2026 01:24:44 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>빗자루검</managingEditor>
    <image>
      <title>빗자루검 블로그</title>
      <url>https://tistory1.daumcdn.net/tistory/6003218/attach/4856022c8d4c42fc832b56f87e9e7e99</url>
      <link>https://yongeekd01.tistory.com</link>
    </image>
    <item>
      <title>OpenAI 오픈소스 모델 출시(허깅스페이스, 120B,20B 모델공개)</title>
      <link>https://yongeekd01.tistory.com/228</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오픈 AI가 그동안 사실상 오픈이 아니었죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마도 다른 오픈 모델들이 계속 출시 되면서 위기감을 느꼈느지 드디어 오픈 소스모델을 선보였습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성능은 고가모델은 아니고 대충 중간정도 모델을 기준으로 gpt-oss라는 이름을 붙인거 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;허깅페이스에 설명된 내용중 일부를 축약하면 다음과 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 오픈 모델 종류&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gpt-oss-120b&amp;mdash;&amp;nbsp;단일&amp;nbsp;H100&amp;nbsp;GPU에&amp;nbsp;맞는&amp;nbsp;생산,&amp;nbsp;일반&amp;nbsp;용도,&amp;nbsp;고도&amp;nbsp;추론&amp;nbsp;사용&amp;nbsp;사례(5.1B&amp;nbsp;활성&amp;nbsp;매개변수가&amp;nbsp;있는&amp;nbsp;117B&amp;nbsp;매개변수) &lt;br /&gt;gpt-oss-20b&amp;mdash;&amp;nbsp;낮은&amp;nbsp;지연&amp;nbsp;시간과&amp;nbsp;로컬&amp;nbsp;또는&amp;nbsp;특수&amp;nbsp;사용&amp;nbsp;사례(3.6B&amp;nbsp;활성&amp;nbsp;매개변수가&amp;nbsp;있는&amp;nbsp;21B&amp;nbsp;매개변수)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;돌려보려면 120b는 RAM 80G, 20b는 16G RAM이 있는 GPU면 가능하다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 특징&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;- Apache 2.0 라이선스, 특허 위험 없이 자유롭게 구축할 수 있습니다. 실험, 사용자 정의 및 상업적 배포에 이상적입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;- 특정 사용 사례와 지연 시간 요구 사항에 따라 추론 노력(낮음, 중간, 높음)을 쉽게 조정할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;- 모델의 추론 과정에 대한 완전한 접근 권한을 확보하여 디버깅을 용이하게 하고 출력 결과에 대한 신뢰도를 높입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;- 매개변수 미세 조정을 통해 특정 사용 사례에 맞게 모델을 완벽하게 사용자 지정할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;- 에이전트 기능, 함수 호출, 웹 브라우징 , Python 코드 실행 및 구조화된 출력을 위해 모델의 기본 기능을 사용합니다 . &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 기본 MXFP4 양자화: 모델은 MoE 계층에 대해 기본 MXFP4 정밀도로 훈련되어 gpt-oss-120b단일 H100 GPU에서 실행되고 gpt-oss-20b모델은 16GB 메모리 내에서 실행됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://huggingface.co/collections/openai/gpt-oss-68911959590a1634ba11c7a4&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://huggingface.co/collections/openai/gpt-oss-68911959590a1634ba11c7a4&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1754444155733&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;gpt-oss - a openai Collection&quot; data-og-description=&quot;Open-weight models designed for powerful reasoning, agentic tasks, and versatile developer use cases.&quot; data-og-host=&quot;huggingface.co&quot; data-og-source-url=&quot;https://huggingface.co/collections/openai/gpt-oss-68911959590a1634ba11c7a4&quot; data-og-url=&quot;https://huggingface.co/collections/openai/gpt-oss-68911959590a1634ba11c7a4&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/2WLtB/hyZuAtiJnj/Tgf0qx4w4ZeJwKcKbUvjd0/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648,https://scrap.kakaocdn.net/dn/wFA3F/hyZuDjfY4p/UtUho3iGdRHtU4luPfG9lK/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648&quot;&gt;&lt;a href=&quot;https://huggingface.co/collections/openai/gpt-oss-68911959590a1634ba11c7a4&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://huggingface.co/collections/openai/gpt-oss-68911959590a1634ba11c7a4&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/2WLtB/hyZuAtiJnj/Tgf0qx4w4ZeJwKcKbUvjd0/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648,https://scrap.kakaocdn.net/dn/wFA3F/hyZuDjfY4p/UtUho3iGdRHtU4luPfG9lK/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;gpt-oss - a openai Collection&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Open-weight models designed for powerful reasoning, agentic tasks, and versatile developer use cases.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;huggingface.co&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코딩 벤치 마크 결과를 보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;545&quot; data-origin-height=&quot;439&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qIuZb/btsPIHiD9bO/l4isfPW7aSZ1KbvhHWFWyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qIuZb/btsPIHiD9bO/l4isfPW7aSZ1KbvhHWFWyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qIuZb/btsPIHiD9bO/l4isfPW7aSZ1KbvhHWFWyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqIuZb%2FbtsPIHiD9bO%2Fl4isfPW7aSZ1KbvhHWFWyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;545&quot; height=&quot;439&quot; data-origin-width=&quot;545&quot; data-origin-height=&quot;439&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 좋은 결과가 나오는 벤치 마크를 사용했겠지만 나쁘지 않네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 튜닝 모델이 쏟아져 나오겠지요?&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>오른AI#오픈소스#GPT</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/228</guid>
      <comments>https://yongeekd01.tistory.com/228#entry228comment</comments>
      <pubDate>Wed, 6 Aug 2025 11:04:41 +0900</pubDate>
    </item>
    <item>
      <title>vscode에서 launch.json을 이용하여 프로젝트 하위 폴더 파일 디버깅하기(subfolder 지정)</title>
      <link>https://yongeekd01.tistory.com/227</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;vscode는 F5를 눌러서 기본적으로 디버깅을 할때 프로젝트 생성 폴더를 Root로 사용합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇다보니 프로젝트 루트에 있는 파일들은 디버깅하기 쉬워도 다른 폴더의 파일을 디버깅하려면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 워킹 디렉토리가 변경되지 않아서 상대경로 문제가 많이 발생하는 골치아픈 일이 생깁니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 다중 폴더 구성&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 폴더가 구성되어 있고 base_a.py를 디버깅한다면 그냥 평소대로 하면 되겠지만&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;185&quot; data-origin-height=&quot;102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOGR4Y/btsPECumcOq/KdjK9LMwzgBhNpl6Bt8Fak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOGR4Y/btsPECumcOq/KdjK9LMwzgBhNpl6Bt8Fak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOGR4Y/btsPECumcOq/KdjK9LMwzgBhNpl6Bt8Fak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOGR4Y%2FbtsPECumcOq%2FKdjK9LMwzgBhNpl6Bt8Fak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;252&quot; height=&quot;139&quot; data-origin-width=&quot;185&quot; data-origin-height=&quot;102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sub01 폴더 아래에 있는 sub01_a.py를 디버깅하려면 좀 복잡해집니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;base폴더 아래에 생성된 launch.json을 사용하기 때문이죠.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Visual Studio Code (VS Code)에서 base/sub01 같은 프로젝트 구조를 가지고 있고, 프로젝트는 base 위치에서 생성했지만 실제 디버깅은 sub01 폴더 내의 파일을 기준으로 하고 싶을 때 launch.json을 설정하는 방법을 알려드리겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. launch.json 파일 생성 또는 수정&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VS Code에서 디버그 뷰 (Ctrl+Shift+D 또는 사이드바의 벌레 아이콘)로 이동합니다. 아직 launch.json 파일이 없다면, &quot;launch.json 파일 생성&quot; (Create a launch.json file) 또는 톱니바퀴 아이콘을 클릭하여 생성합니다. Python 프로젝트의 경우 &quot;Python&quot;을 선택하면 기본 템플릿이 생성됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미 launch.json 파일이 있다면, 해당 파일을 엽니다. 이 파일은 보통 .vscode 폴더 안에 있습니다 (base/.vscode/launch.json)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1a1a1a; color: #d8dee9;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;// Use IntelliSense to learn about possible attributes.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;// Hover to view descriptions of existing attributes.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;// For more information, visit: &lt;a href=&quot;https://go.microsoft.com/fwlink/?linkid=830387&quot;&gt;https://go.microsoft.com/fwlink/?linkid=830387&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;version&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;0.2.0&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;configurations&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: [&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;Python: sub folder file debuging&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;//아무거나 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;type&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;python&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;request&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;launch&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;//&quot;program&quot;: &quot;${file}&quot;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;program&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;${workspaceFolder}/&lt;span style=&quot;background-color: #1a1a1a; color: #e394dc; text-align: start;&quot;&gt;sub01&lt;/span&gt; /sub01_a.py.py&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;//디버깅할 파일 이름 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;cwd&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;${workspaceFolder}/sub01&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;//이부분이 중요, 서브폴더 yolo9 폴더를 작업 디렉토리로 설정합니다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;console&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;integratedTerminal&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;args&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; : [&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;--p1&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;abc&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;],&amp;nbsp; //필요한 파라메터를 정의해 줍니다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;justMyCode&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: true&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 sub01_a.py 파일을 편집하면서 F5로 실행하면 직접 디버거가 해당 폴더를 root 폴더로 동작하게 되어&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상대경로 문제는 해결되게 됩니다.&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>vscode#디버깅#하위폴더#launch.json</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/227</guid>
      <comments>https://yongeekd01.tistory.com/227#entry227comment</comments>
      <pubDate>Wed, 30 Jul 2025 17:06:04 +0900</pubDate>
    </item>
    <item>
      <title>Deepface로 얼굴 속성 분석하기 (얼굴, 성별, 나이, 인종, 감정 인식)</title>
      <link>https://yongeekd01.tistory.com/226</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;페이스북 인공지능 팀에서 만든 deepface는 벌써 나온지 꽤 시간이 흘렀습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초기에 페북에서 사용자 사생활 침해가 어쩌고 하면서 말이 많았었죠.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어쨌던 저쨌던 기술 자체는 상당이 유용한 건 사실입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬 패키지로도 제공되고 있어 사용도 간단하죠.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주요 기능은 크게 &lt;b&gt;얼굴 속성 분석&lt;/b&gt;과 &lt;b&gt;얼굴 인식&lt;/b&gt;으로 나눌 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DeepFace.analyze() 함수를 통해 이미지나 영상 속 인물의 여러 가지 속성을 한 번에 검출할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 깃허브 저장소는 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/serengil/deepface&quot;&gt;https://github.com/serengil/deepface&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1752742094615&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - serengil/deepface: A Lightweight Face Recognition and Facial Attribute Analysis (Age, Gender, Emotion and Race) Library&quot; data-og-description=&quot;A Lightweight Face Recognition and Facial Attribute Analysis (Age, Gender, Emotion and Race) Library for Python - serengil/deepface&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/serengil/deepface&quot; data-og-url=&quot;https://github.com/serengil/deepface&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bOWfnv/hyZjvUBIeX/fkLODU3bf6CQ2Co236XF0k/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_133_1038_202,https://scrap.kakaocdn.net/dn/cHkihD/hyZjt3Aw3E/RhPp7PFBrUkv8CIF9CwPQ1/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_133_1038_202&quot;&gt;&lt;a href=&quot;https://github.com/serengil/deepface&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/serengil/deepface&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bOWfnv/hyZjvUBIeX/fkLODU3bf6CQ2Co236XF0k/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_133_1038_202,https://scrap.kakaocdn.net/dn/cHkihD/hyZjt3Aw3E/RhPp7PFBrUkv8CIF9CwPQ1/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_133_1038_202');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - serengil/deepface: A Lightweight Face Recognition and Facial Attribute Analysis (Age, Gender, Emotion and Race) Library&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A Lightweight Face Recognition and Facial Attribute Analysis (Age, Gender, Emotion and Race) Library for Python - serengil/deepface&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 1. 얼굴 속성&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 나이 (Age): 20대, 30대 등 예측&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 성별 (Gender): 'Man' 또는 'Woman'으로 예측&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 감정 (Emotion): 'angry'(화남), 'fear'(두려움), 'neutral'(중립), 'sad'(슬픔), 'disgust'(역겨움), 'happy'(행복), 'surprise'(놀람)의 7가지 감정 분석&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 인종 (Race): 'asian'(아시아인), 'white'(백인), 'middle eastern'(중동인), 'indian'(인도인), 'latino'(라틴계), 'black'(흑인) 등으로 예측&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 얼굴 인식&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 얼굴 검증 (Verification): DeepFace.verify()&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;두 개의 얼굴 사진이 동일 인물인지 아닌지 1:1로 비교하고 판단&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;- 얼굴 찾기 (Find): DeepFace.find()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지정된 이미지 속 얼굴과 데이터베이스(폴더)에 있는 여러 이미지들을 비교하여 가장 유사한 얼굴들을 찾아냄&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;- 얼굴 표현 (Representation): DeepFace.represent()&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;얼굴 이미지를 벡터(Embedding)로 변환, 빠르고 효율적인 얼굴 비교 및 검색에 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 패키지 설치&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pip&amp;nbsp;instll&amp;nbsp;deepface &lt;br /&gt;pip&amp;nbsp;install&amp;nbsp;tf-keras &lt;br /&gt;&lt;br /&gt;코드를 실행하면 사용하면 자동으로 다음 학습모델을 다운로드 받습니다.&amp;nbsp; &lt;br /&gt;age_model_weights.h5 &lt;br /&gt;gender_model_weights.h5 &lt;br /&gt;race_model_single_batch.h5 &lt;br /&gt;facial_expression_model_weights.h5&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 간단한 예제 코드&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사진 이미지를 입력하여 얼굴을 분석 해 보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;얼굴을 찾고 각 정보를 찾아서 박스아래 표시합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1a1a1a; color: #d8dee9;&quot;&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;cv2&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;deepface&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;DeepFace&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #efb080;&quot;&gt;analyze_and_draw_faces&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;input_image_path&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;output_image_path&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;):&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 이미지 읽기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;cv2&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;imread&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;input_image_path&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;is&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;None&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;이미지를 불러올 수 없습니다.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;return&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴 분석&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;results&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;DeepFace&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;analyze&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;img_path&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;input_image_path&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;actions&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'age'&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'gender'&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'race'&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'emotion'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;enforce_detection&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;False&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 여러 얼굴이 있을 경우 리스트로 반환됨&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;isinstance&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;results&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;list&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;results&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;results&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;results&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;region&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'region'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;w&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;h&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;region&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'x'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;region&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'y'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;region&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'w'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;region&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'h'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴 박스 그리기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 밝은 파란색(BGR: 255, 200, 100)으로 얼굴 박스 그리기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;cv2&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;rectangle&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, (&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;), (&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;w&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;h&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;), (&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;255&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;200&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;), &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# gender 확률에서 높은 값을 선택하고, 소수점 2자리까지 표시&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;gender_dict&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'gender'&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, {}&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;isinstance&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;gender_dict&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;dict&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;gender_label&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;max&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;gender_dict&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;gender_dict&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;gender_prob&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;gender_dict&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;gender_label&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;gender_str&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;{&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;gender_label&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;}({&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;gender_prob&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;:.2f})&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;gender_str&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'gender'&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;''&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;))&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;age&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'age'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;emotion&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;max&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'emotion'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'emotion'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.get&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;race&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;max&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'race'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'race'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.get&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;gender: {&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;gender_str&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;} &amp;nbsp;age: {&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;age&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;race: {&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;race&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;} &amp;nbsp;emotion: {&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;emotion&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;}&quot;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 텍스트를 얼굴 박스의 왼쪽 아래에 약간 공간을 두고 출력&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;text_lines&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;split&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;font&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;cv2&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;FONT_HERSHEY_SIMPLEX&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;font_scale&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;0.5&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;thickness&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;128&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;255&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;) &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 밝은 빨강색 (BGR: 0, 128, 255)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 각 줄의 높이 계산 (폰트 크기와 두께에 따라)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;text_width&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;text_height&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;), &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;baseline&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;cv2&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;getTextSize&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;text_lines&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;font&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;font_scale&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;thickness&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;line_height&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;text_height&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;baseline&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 텍스트 시작 위치 계산 (박스 왼쪽 아래에서 약간 띄움)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;text_x&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;x&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;text_y&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;h&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;line_height&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 박스 아래에서 10px 띄우고 첫 줄 높이만큼 더함&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;line&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;enumerate&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;text_lines&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;cv2&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;putText&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;line&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;text_x&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;text_y&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;line_height&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;),&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;font&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;font_scale&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;thickness&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;cv2&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;LINE_AA&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 결과 이미지 저장&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;cv2&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;imwrite&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;output_image_path&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;분석 결과가 {&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;output_image_path&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;}에 저장되었습니다.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;#&amp;nbsp; 사용법&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;analyze_and_draw_faces&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;./images/m_news_zum_com_img008.jpg&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;m_news_zum_com_img008_out.jpg&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과를 확인해 볼까요??&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;518&quot; data-origin-height=&quot;532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brbjXb/btsPnfmMKkv/rD6b7llqTjNSu32vvNGrZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brbjXb/btsPnfmMKkv/rD6b7llqTjNSu32vvNGrZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brbjXb/btsPnfmMKkv/rD6b7llqTjNSu32vvNGrZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrbjXb%2FbtsPnfmMKkv%2FrD6b7llqTjNSu32vvNGrZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;518&quot; height=&quot;532&quot; data-origin-width=&quot;518&quot; data-origin-height=&quot;532&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPU를 돌리지 않아도 1,2 fps 정도의 프레임 처리는 가능하겠네요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기저기 쓸데가 많아 보입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>deepface#얼굴인식#감정인식#나이인식#인종#성별인식</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/226</guid>
      <comments>https://yongeekd01.tistory.com/226#entry226comment</comments>
      <pubDate>Thu, 17 Jul 2025 17:53:47 +0900</pubDate>
    </item>
    <item>
      <title>구글 mediapipe API를 이용하여 얼굴 인식 및 face landmark 그리기</title>
      <link>https://yongeekd01.tistory.com/225</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. mediapipe 개요&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://mediapipe-studio.webapps.google.com/home&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://mediapipe-studio.webapps.google.com/home&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Mediapipe 패키지는 Google에서 개발한 오픈소스 프레임워크로, 주로 기계 학습 모델을 활용한 멀티모달(다중 모드) 지각 인식을 위한 솔루션을 제공합니다. 즉, 이미지, 비디오, 오디오 등의 다양한 데이터를 입력으로 받아 사람의 얼굴, 손, 몸 등의 특징을 실시간으로 감지하고 추적하는 데 특화되어 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;실시간 처리:&lt;/b&gt; 매우 낮은 지연 시간으로 작동하도록 설계되어 실시간 애플리케이션에 적합합니다. 웹캠 피드, 스마트폰 카메라 등에서 직접 데이터를 처리할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;크로스 플랫폼 지원:&lt;/b&gt; 데스크톱(Linux, macOS, Windows), 모바일(Android, iOS), 웹 등 다양한 플랫폼에서 사용할 수 있도록 지원합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;다양한 솔루션 제공:&lt;/b&gt; 얼굴 감지, 얼굴 랜드마크, 손 랜드마크, 자세 추정, 객체 감지 등 다양한 사전 훈련된 솔루션을 제공하여 개발자가 복잡한 모델을 직접 구축할 필요 없이 쉽게 활용할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;그래프 기반 아키텍처:&lt;/b&gt; 데이터를 처리하는 파이프라인을 그래프 형태로 구성하여 유연하고 확장 가능한 솔루션 개발을 가능하게 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;경량화된 모델:&lt;/b&gt; 모바일 및 임베디드 장치에서도 효율적으로 작동하도록 최적화된 경량화된 모델을 사용합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 주요 솔루션&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Mediapipe는 다양한 사전 구축된 솔루션을 제공하며, 대표적인 몇 가지는 다음과 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;MediaPipe Face Detection (얼굴 감지):&lt;/b&gt; 이미지나 비디오에서 얼굴의 위치를 감지합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;MediaPipe Face Mesh (얼굴 메시):&lt;/b&gt; 468개의 3D 얼굴 랜드마크를 감지하여 얼굴 표정, 움직임 등을 정밀하게 추적합니다. AR(증강 현실) 필터나 가상 메이크업 등에 활용될 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;MediaPipe Hands (손 랜드마크):&lt;/b&gt; 손의 21개 3D 랜드마크를 감지하여 손가락 움직임, 제스처 등을 인식하는 데 사용됩니다. 가상 현실 상호작용, 수화 인식 등에 활용될 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;MediaPipe Pose (자세 추정):&lt;/b&gt; 사람의 몸에서 33개의 3D 랜드마크를 감지하여 전신 자세를 추정합니다. 피트니스 트래킹, 재활 치료, 동작 분석 등에 활용될 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;MediaPipe Holistic (홀리스틱):&lt;/b&gt; 얼굴, 손, 자세 랜드마크를 동시에 감지하여 전반적인 사람의 행동 및 상호작용을 이해하는 데 도움을 줍니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;MediaPipe Objectron (객체 감지):&lt;/b&gt; 3D 객체를 감지하고 그 포즈를 추정합니다. 일상적인 물체의 크기, 방향 등을 파악하는 데 사용됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;MediaPipe Selfie Segmentation (셀카 분할):&lt;/b&gt; 이미지에서 사람과 배경을 분리하여 셀카 애플리케이션에서 배경 변경 등의 기능을 구현할 수 있도록 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예전에는 여러 모델을 구축하여 각각 전처리 후처리를 통해 만드는 수고가 있었는데 정형화된 비젼 기능은 그냥 가져다가 쓰기만 하면 되는것이 아주 편리합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. mediapipe를 이용한 얼굴인식과 페이스랜드마크 그리기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서는 streamlit을 이용하여 파일을 업로드 하고 해당 파일에서 얼굴을 찾고 페이스랜드마크를 순서대로 그려 보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1a1a1a; color: #d8dee9;&quot;&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;streamlit&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;st&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# streamlit 라이브러리 임포트(웹앱 UI용)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;PIL&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;Image&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;ImageDraw&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# PIL 라이브러리에서 이미지 처리 및 그리기 기능 임포트&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;numpy&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;np&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# numpy 라이브러리 임포트(배열 및 수치 연산용)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# mediapipe는 pip install mediapipe로 설치 필요&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;mediapipe&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;mp&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# mediapipe 라이브러리 임포트(얼굴 검출 및 랜드마크용)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;mp_face_detection&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;mp&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;solutions&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.face_detection &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# mediapipe의 얼굴 검출 모듈 할당&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;mp_face_mesh&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;mp&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;solutions&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.face_mesh &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# mediapipe의 얼굴 랜드마크(메쉬) 모듈 할당&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 각 기능별 샘플 함수 예시&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #efb080;&quot;&gt;detect_face&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;image_np&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;): &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴 검출 함수 정의&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;mp_face_detection&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.FaceDetection&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8c762;&quot;&gt;model_selection&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #f8c762;&quot;&gt;min_detection_confidence&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;0.5&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face_detection&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴 검출기 초기화&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;results&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face_detection&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.process&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;image_np&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 이미지에서 얼굴 검출 수행&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;results&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 결과 반환&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #efb080;&quot;&gt;detect_face_mesh&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;image_np&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;): &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴 랜드마크 검출 함수 정의&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;mp_face_mesh&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.FaceMesh&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #f8c762;&quot;&gt;static_image_mode&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #f8c762;&quot;&gt;max_num_faces&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #f8c762;&quot;&gt;refine_landmarks&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face_mesh&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴 메쉬 검출기 초기화&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;results&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face_mesh&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.process&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;image_np&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 이미지에서 얼굴 랜드마크 검출 수행&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;results&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 결과 반환&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;st&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;사진 업로드 및 얼굴 랜드마크 오버레이 웹앱&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 웹앱 타이틀 표시&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;uploaded_file&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;st&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;file_uploader&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;사진을 업로드하세요&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=[&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;jpg&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;jpeg&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;png&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;])&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 파일 업로더 위젯 생성(이미지 파일만 허용)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;uploaded_file&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;is&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;None&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 파일이 업로드된 경우&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;Image&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;uploaded_file&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;convert&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;RGB&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 업로드된 이미지를 열고 RGB로 변환&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;st&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;subheader&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;원본 사진&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 원본 사진 섹션 제목 표시&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;st&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;caption&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'업로드한 사진'&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;use_container_width&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 업로드한 이미지 표시&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴 검출&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face_results&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;detect_face&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;np&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴 검출 함수 호출(이미지를 numpy 배열로 변환)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;overlay_img_face&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;copy&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴 박스를 그릴 이미지 복사본 생성&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face_results&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.detections: &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴이 검출된 경우&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;ImageDraw&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;Draw&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;overlay_img_face&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 이미지에 그리기 위한 객체 생성&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;detection&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face_results&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.detections: &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 검출된 얼굴마다 반복&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;bboxC&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;detection&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.location_data.relative_bounding_box &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴의 상대적 바운딩 박스 정보 추출&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;x1&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;bboxC&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.xmin &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 바운딩 박스 좌상단 x좌표 계산&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;y1&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;bboxC&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.ymin &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 바운딩 박스 좌상단 y좌표 계산&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;x2&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;bboxC&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.xmin &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;bboxC&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.width) &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 바운딩 박스 우하단 x좌표 계산&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;y2&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;bboxC&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.ymin &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;bboxC&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.height) &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 바운딩 박스 우하단 y좌표 계산&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;rectangle&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;x1&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;y1&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;x2&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;y2&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;outline&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;255&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;), &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴 위치에 빨간색 사각형 그리기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;st&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;subheader&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;얼굴 검출 결과&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴 검출 결과 섹션 제목 표시&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;st&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;overlay_img_face&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;caption&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'얼굴이 표시된 사진'&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;use_container_width&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴 박스가 표시된 이미지 출력&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴이 검출되지 않은 경우&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;st&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;warning&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;얼굴을 찾을 수 없습니다. 다른 사진을 시도해보세요.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 경고 메시지 표시&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴 랜드마크 검출&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face_mesh_results&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;detect_face_mesh&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;np&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;array&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴 랜드마크 검출 함수 호출&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;overlay_img_mesh&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;copy&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 랜드마크를 그릴 이미지 복사본 생성&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face_mesh_results&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.multi_face_landmarks: &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴 랜드마크가 검출된 경우&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;ImageDraw&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;Draw&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;overlay_img_mesh&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 이미지에 그리기 위한 객체 생성&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face_landmarks&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face_mesh_results&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.multi_face_landmarks: &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 검출된 얼굴마다 반복&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;lm&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face_landmarks&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.landmark: &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 각 얼굴의 랜드마크 포인트마다 반복&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;lm&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.x &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 랜드마크 x좌표 계산&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;lm&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.y &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 랜드마크 y좌표 계산&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;draw&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;ellipse&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;), &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;fill&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;255&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 해당 위치에 초록색 점(원) 그리기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;st&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;subheader&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;얼굴 랜드마크 오버레이&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴 랜드마크 오버레이 섹션 제목 표시&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;st&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;image&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;overlay_img_mesh&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;caption&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'랜드마크가 표시된 사진'&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;use_container_width&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 랜드마크가 표시된 이미지 출력&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴 랜드마크가 검출되지 않은 경우&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;st&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;warning&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;얼굴 랜드마크를 찾을 수 없습니다.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 경고 메시지 표시&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 결과 확인&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;377&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7Qn2m/btsPlGq4Xfy/xuJLakau4DCCk23okA0u21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7Qn2m/btsPlGq4Xfy/xuJLakau4DCCk23okA0u21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7Qn2m/btsPlGq4Xfy/xuJLakau4DCCk23okA0u21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7Qn2m%2FbtsPlGq4Xfy%2FxuJLakau4DCCk23okA0u21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;377&quot; height=&quot;720&quot; data-origin-width=&quot;377&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vb3Bg/btsPkmN3gy0/nTSuOAWEG7QGrYivncKEk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vb3Bg/btsPkmN3gy0/nTSuOAWEG7QGrYivncKEk1/img.png&quot; data-origin-width=&quot;363&quot; data-origin-height=&quot;560&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.5795%; margin-right: 10px;&quot; data-widthpercent=&quot;50.16&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vb3Bg/btsPkmN3gy0/nTSuOAWEG7QGrYivncKEk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fvb3Bg%2FbtsPkmN3gy0%2FnTSuOAWEG7QGrYivncKEk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;363&quot; height=&quot;560&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcsieh/btsPlhd6BQ7/hLvgRITHnBC6nOLCcmXhBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcsieh/btsPlhd6BQ7/hLvgRITHnBC6nOLCcmXhBk/img.png&quot; data-origin-width=&quot;360&quot; data-origin-height=&quot;559&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.2577%;&quot; data-widthpercent=&quot;49.84&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcsieh/btsPlhd6BQ7/hLvgRITHnBC6nOLCcmXhBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbcsieh%2FbtsPlhd6BQ7%2FhLvgRITHnBC6nOLCcmXhBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;360&quot; height=&quot;559&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>미디어파이프#구글#mediapipe#얼굴인식#랜드마크#face landmark#파이썬</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/225</guid>
      <comments>https://yongeekd01.tistory.com/225#entry225comment</comments>
      <pubDate>Wed, 16 Jul 2025 17:30:06 +0900</pubDate>
    </item>
    <item>
      <title>OpenCV, 알고리즘 기반의 정면 얼굴 탐지 모델(딥러닝x, 사용예제)</title>
      <link>https://yongeekd01.tistory.com/224</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. Haar Cascade 분류기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenCV에서 제공하는 사전 학습된 정면 얼굴 탐지 모델은 2001년에 발표된 &lt;b&gt;Viola-Jones 알고리즘&lt;/b&gt;에 기반합니다. 이 알고리즘은 딥러닝 모델에 비해 속도가 매우 빠르고 가벼워 저사양 시스템에서도 실시간으로 작동하는 장점이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Haar&amp;nbsp;Cascade&amp;nbsp;모델은&amp;nbsp;미리&amp;nbsp;정의된&amp;nbsp;명암&amp;nbsp;패턴(하르&amp;nbsp;특징)을&amp;nbsp;사용해,&amp;nbsp;빠르고&amp;nbsp;효율적인&amp;nbsp;단계별&amp;nbsp;검사를&amp;nbsp;통해&amp;nbsp;얼굴을&amp;nbsp;찾아내는&amp;nbsp;방식입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&amp;nbsp;2.&amp;nbsp;주요&amp;nbsp;특징&amp;nbsp;&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(1) 하르 특징 (Haar-like Features) &lt;br /&gt;&amp;nbsp;이미지의&amp;nbsp;명암&amp;nbsp;패턴을&amp;nbsp;이용해&amp;nbsp;얼굴의&amp;nbsp;특징을&amp;nbsp;찾아냅니다.&amp;nbsp; &lt;br /&gt;&amp;nbsp;예를&amp;nbsp;들어,&amp;nbsp;눈&amp;nbsp;영역은&amp;nbsp;뺨보다&amp;nbsp;어둡고,&amp;nbsp;코의&amp;nbsp;양옆은&amp;nbsp;코보다&amp;nbsp;어둡다는&amp;nbsp;등의&amp;nbsp;특징을&amp;nbsp;사각형&amp;nbsp;필터로&amp;nbsp;잡아내는데&amp;nbsp;수많은&amp;nbsp;종류의&amp;nbsp;하르&amp;nbsp;특징&amp;nbsp;필터가&amp;nbsp;이미지&amp;nbsp;전체를&amp;nbsp;훑으며&amp;nbsp;얼굴의&amp;nbsp;특징과&amp;nbsp;일치하는&amp;nbsp;영역을&amp;nbsp;찾습니다. &lt;br /&gt;&lt;br /&gt;(2)&amp;nbsp;적분&amp;nbsp;영상&amp;nbsp;(Integral&amp;nbsp;Image) &lt;br /&gt;&amp;nbsp;수많은&amp;nbsp;하르&amp;nbsp;특징을&amp;nbsp;이미지&amp;nbsp;전체에&amp;nbsp;대해&amp;nbsp;매우&amp;nbsp;빠르게&amp;nbsp;계산하기&amp;nbsp;위한&amp;nbsp;기술입니다.&amp;nbsp; &lt;br /&gt;&amp;nbsp;이미지의&amp;nbsp;픽셀&amp;nbsp;합을&amp;nbsp;미리&amp;nbsp;계산해&amp;nbsp;둠으로써,&amp;nbsp;특정&amp;nbsp;영역의&amp;nbsp;픽셀&amp;nbsp;합을&amp;nbsp;단&amp;nbsp;몇&amp;nbsp;번의&amp;nbsp;연산으로&amp;nbsp;구할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;하여&amp;nbsp;계산&amp;nbsp;속도를&amp;nbsp;획기적으로&amp;nbsp;높입니다. &lt;br /&gt;&lt;br /&gt;(3)&amp;nbsp;에이다부스트&amp;nbsp;(AdaBoost) &lt;br /&gt;&amp;nbsp;수많은&amp;nbsp;하르&amp;nbsp;특징&amp;nbsp;중에서&amp;nbsp;얼굴을&amp;nbsp;구별하는&amp;nbsp;데&amp;nbsp;가장&amp;nbsp;효과적인&amp;nbsp;특징들을&amp;nbsp;선별하고,&amp;nbsp;이들을&amp;nbsp;조합하여&amp;nbsp;하나의&amp;nbsp;강력한&amp;nbsp;얼굴&amp;nbsp;탐지기를&amp;nbsp;만드는&amp;nbsp;알고리즘입니다. &lt;br /&gt;&lt;br /&gt;(4)&amp;nbsp;분류기&amp;nbsp;폭포&amp;nbsp;(Cascade&amp;nbsp;of&amp;nbsp;Classifiers) &lt;br /&gt;&amp;nbsp;효율성을&amp;nbsp;극대화하기&amp;nbsp;위해&amp;nbsp;간단하고&amp;nbsp;빠른&amp;nbsp;분류기부터&amp;nbsp;시작하여&amp;nbsp;여러&amp;nbsp;단계의&amp;nbsp;분류기를&amp;nbsp;폭포처럼&amp;nbsp;연결합니다.&amp;nbsp; &lt;br /&gt;&amp;nbsp;초기&amp;nbsp;단계에서&amp;nbsp;얼굴이&amp;nbsp;아님이&amp;nbsp;명확한&amp;nbsp;영역은&amp;nbsp;빠르게&amp;nbsp;탈락시키고,&amp;nbsp;모든&amp;nbsp;단계를&amp;nbsp;통과한&amp;nbsp;영역만을&amp;nbsp;최종적으로&amp;nbsp;얼굴로&amp;nbsp;판단합니다 &lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 모델은 haarcascade_frontalface_default.xml 파일에 그 정보가 담겨 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 저장소는 다음과 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/opencv/opencv/tree/master/data/haarcascades&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/opencv/opencv/tree/master/data/haarcascades&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1752642385040&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;opencv/data/haarcascades at master &amp;middot; opencv/opencv&quot; data-og-description=&quot;Open Source Computer Vision Library. Contribute to opencv/opencv development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/opencv/opencv/tree/master/data/haarcascades&quot; data-og-url=&quot;https://github.com/opencv/opencv/tree/master/data/haarcascades&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/biQIMO/hyZnzAOu99/YsCWgFKkuUxHtOYonEFEi0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bfGoaN/hyZnmn1IlF/at7DbGWBp509bTK2H7w31K/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/opencv/opencv/tree/master/data/haarcascades&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/opencv/opencv/tree/master/data/haarcascades&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/biQIMO/hyZnzAOu99/YsCWgFKkuUxHtOYonEFEi0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bfGoaN/hyZnmn1IlF/at7DbGWBp509bTK2H7w31K/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;opencv/data/haarcascades at master &amp;middot; opencv/opencv&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Open Source Computer Vision Library. Contribute to opencv/opencv development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3. 딥러닝과의 차이점&amp;nbsp;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-sheets-baot=&quot;1&quot; data-sheets-root=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;구분&lt;/td&gt;
&lt;td&gt;Haar Cascade (전통 머신러닝)&lt;/td&gt;
&lt;td&gt;딥러닝 (CNN 기반)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;특징 추출&lt;/td&gt;
&lt;td&gt;개발자가 직접 설계한 하르 특징(명암 패턴) 사용&lt;/td&gt;
&lt;td&gt;인공신경망이 데이터(수많은 이미지)를 스스로 학습하여 특징 추출&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;정확도&lt;/td&gt;
&lt;td&gt;정면 얼굴, 조명이 좋은 환경에서는 준수한 성능. 하지만 가려짐, 다양한 각도, 표정 변화에 취약&lt;/td&gt;
&lt;td&gt;가려지거나, 측면이거나, 다양한 조명과 표정에서도 훨씬 높은 탐지 정확도를 보임&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;속도/무게&lt;/td&gt;
&lt;td&gt;매우 빠르고 가벼움. 저사양 CPU에서도 실시간 처리 가능&lt;/td&gt;
&lt;td&gt;상대적으로 느리고 무거움. GPU 연산이 권장됨 (최근 경량화 모델도 많아짐)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;데이터 의존성&lt;/td&gt;
&lt;td&gt;비교적 적은 양의 데이터로도 학습 가능&lt;/td&gt;
&lt;td&gt;대규모 데이터셋이 필수적&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 이용한 사용 예제는 아래 참고.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/223&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yongeekd01.tistory.com/223&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1752642627865&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Openai API를 이용하여 web 검색 하기 + 결과에서 얼굴이 있는 이미지만 저장하기(Web search, Responses API&quot; data-og-description=&quot;openai API를 사용해서 web search를 수행할 수 있습니다. API가 워낙에 잘 되어 있어서 몇줄 되지도 않네요. 그냥 그것만 하면 재미 없으니까 후처리를 좀 추가해 보겠습니다. 1. Web Search Tools 이란? opena&quot; data-og-host=&quot;yongeekd01.tistory.com&quot; data-og-source-url=&quot;https://yongeekd01.tistory.com/223&quot; data-og-url=&quot;https://yongeekd01.tistory.com/223&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/BMO3M/hyZjsi6X98/20EEKy0gZOPR5d04y63E91/img.png?width=800&amp;amp;height=437&amp;amp;face=8_12_758_362,https://scrap.kakaocdn.net/dn/msEmK/hyZnc6LNdC/ZPk2GCUYXwat5UXLQMVP21/img.png?width=800&amp;amp;height=437&amp;amp;face=8_12_758_362,https://scrap.kakaocdn.net/dn/eWIaW/hyZjx5Qnv8/d4FC51etvC6giJgogGZVCK/img.jpg?width=700&amp;amp;height=700&amp;amp;face=0_0_700_700&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/223&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yongeekd01.tistory.com/223&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/BMO3M/hyZjsi6X98/20EEKy0gZOPR5d04y63E91/img.png?width=800&amp;amp;height=437&amp;amp;face=8_12_758_362,https://scrap.kakaocdn.net/dn/msEmK/hyZnc6LNdC/ZPk2GCUYXwat5UXLQMVP21/img.png?width=800&amp;amp;height=437&amp;amp;face=8_12_758_362,https://scrap.kakaocdn.net/dn/eWIaW/hyZjx5Qnv8/d4FC51etvC6giJgogGZVCK/img.jpg?width=700&amp;amp;height=700&amp;amp;face=0_0_700_700');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Openai API를 이용하여 web 검색 하기 + 결과에서 얼굴이 있는 이미지만 저장하기(Web search, Responses API&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;openai API를 사용해서 web search를 수행할 수 있습니다. API가 워낙에 잘 되어 있어서 몇줄 되지도 않네요. 그냥 그것만 하면 재미 없으니까 후처리를 좀 추가해 보겠습니다. 1. Web Search Tools 이란? opena&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yongeekd01.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/224</guid>
      <comments>https://yongeekd01.tistory.com/224#entry224comment</comments>
      <pubDate>Wed, 16 Jul 2025 14:10:50 +0900</pubDate>
    </item>
    <item>
      <title>Openai API를 이용하여 web 검색 하기 + 결과에서 얼굴이 있는 이미지만 저장하기(Web search, Responses API, opencv)</title>
      <link>https://yongeekd01.tistory.com/223</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;openai API를 사용해서 web search를 수행할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;API가 워낙에 잘 되어 있어서 몇줄 되지도 않네요. 그냥 그것만 하면 재미 없으니까 후처리를 좀 추가해 보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. Web Search Tools 이란?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;openai api에는 몇가지 tools을 사용할 수 있는 방법을 제공하고 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그중 web search tool을 사용하겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;651&quot; data-origin-height=&quot;479&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JYaOC/btsPknrpRJK/JjZ1ukJ0Ffda2bJhlUkp61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JYaOC/btsPknrpRJK/JjZ1ukJ0Ffda2bJhlUkp61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JYaOC/btsPknrpRJK/JjZ1ukJ0Ffda2bJhlUkp61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJYaOC%2FbtsPknrpRJK%2FJjZ1ukJ0Ffda2bJhlUkp61%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;651&quot; height=&quot;479&quot; data-origin-width=&quot;651&quot; data-origin-height=&quot;479&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상세는 아래에서.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://platform.openai.com/docs/guides/tools?api-mode=responses&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://platform.openai.com/docs/guides/tools?api-mode=responses&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. response 정보 확인하기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(API key 등록은 OPENAI_API_KEY라는 이름으로 먼저 환경변수에 등록해놓아야 합니다. 키 발급방법은 패스)&lt;/p&gt;
&lt;div style=&quot;background-color: #1a1a1a; color: #d8dee9;&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;openai&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;OpenAI&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# OpenAI API를 사용하기 위한 패키지&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# OpenAI 클라이언트 객체 생성&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;client&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;OpenAI&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;()&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# GPT-4.1 모델을 사용하여 웹 검색 프리뷰 도구로 질의 실행&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;client&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;responses&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;create&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;model&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;gpt-4.1&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 사용할 모델 지정&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;tools&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=[&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;type&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;web_search_preview&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 웹 검색 프리뷰 도구 사용&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;금발의 연예인 사진을 찾아줘&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 검색할 내용 입력&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;output_text&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;응답은 chatgpt의 설명과 함께 찾아낸&amp;nbsp; url이 한덩어리의 text로 되어 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제대로 사용하기 위해서는 문자열을 적당히 파싱해야 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;응답을 한번 보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;금발&amp;nbsp;헤어스타일로&amp;nbsp;주목받은&amp;nbsp;여러&amp;nbsp;연예인들의&amp;nbsp;사진을&amp;nbsp;소개해&amp;nbsp;드리겠습니다. &lt;br /&gt;&lt;br /&gt;**블랙핑크&amp;nbsp;로제** &lt;br /&gt;로제는&amp;nbsp;금발로&amp;nbsp;변신한&amp;nbsp;후&amp;nbsp;더욱&amp;nbsp;화려한&amp;nbsp;미모를&amp;nbsp;뽐내며&amp;nbsp;팬들의&amp;nbsp;찬사를&amp;nbsp;받았습니다.&amp;nbsp;([insight.co.kr](&lt;a href=&quot;https://www.insight.co.kr/news/233198?utm_source=openai))&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.insight.co.kr/news/233198?utm_source=openai))&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;**에스파&amp;nbsp;윈터** &lt;br /&gt;윈터는&amp;nbsp;흑발과&amp;nbsp;금발&amp;nbsp;모두&amp;nbsp;잘&amp;nbsp;어울리는&amp;nbsp;'톤파괴자'로&amp;nbsp;알려져&amp;nbsp;있으며,&amp;nbsp;금발로&amp;nbsp;신비로운&amp;nbsp;매력을&amp;nbsp;발산합니다.&amp;nbsp;([allurekorea.com](&lt;a href=&quot;https://www.allurekorea.com/2022/08/08/%EC%85%80%EB%9F%BD%EB%93%A4%EC%9D%98-%ED%9D%91%EB%B0%9Cvs%EA%B8%88%EB%B0%9C-%EB%85%BC%EC%9F%81/?utm_source=openai))&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.allurekorea.com/2022/08/08/%EC%85%80%EB%9F%BD%EB%93%A4%EC%9D%98-%ED%9D%91%EB%B0%9Cvs%EA%B8%88%EB%B0%9C-%EB%85%BC%EC%9F%81/?utm_source=openai))&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;**전소미** &lt;br /&gt;전소미는&amp;nbsp;금발로&amp;nbsp;염색한&amp;nbsp;후&amp;nbsp;바비인형&amp;nbsp;같은&amp;nbsp;비주얼로&amp;nbsp;화제를&amp;nbsp;모았습니다.&amp;nbsp;([news-ade.com](&lt;a href=&quot;https://news-ade.com/star-ade/article/142403/?utm_source=openai))&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://news-ade.com/star-ade/article/142403/?utm_source=openai))&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;**트와이스&amp;nbsp;사나** &lt;br /&gt;사나는&amp;nbsp;금발로&amp;nbsp;변신하여&amp;nbsp;더욱&amp;nbsp;상큼한&amp;nbsp;매력을&amp;nbsp;선보였습니다.&amp;nbsp;([insight.co.kr](&lt;a href=&quot;https://www.insight.co.kr/news/233198?utm_source=openai))&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.insight.co.kr/news/233198?utm_source=openai))&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;**소녀시대&amp;nbsp;태연** &lt;br /&gt;태연은&amp;nbsp;다양한&amp;nbsp;금발&amp;nbsp;스타일을&amp;nbsp;시도하며&amp;nbsp;우아한&amp;nbsp;미모를&amp;nbsp;뽐냈습니다.&amp;nbsp;([news-ade.com](&lt;a href=&quot;https://news-ade.com/star-ade/article/142403/?utm_source=openai))&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://news-ade.com/star-ade/article/142403/?utm_source=openai))&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;이러한&amp;nbsp;연예인들의&amp;nbsp;금발&amp;nbsp;변신은&amp;nbsp;각자의&amp;nbsp;매력을&amp;nbsp;한층&amp;nbsp;더&amp;nbsp;돋보이게&amp;nbsp;하며&amp;nbsp;팬들의&amp;nbsp;큰&amp;nbsp;사랑을&amp;nbsp;받고&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. url 파싱&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;응답 문자열에서 url만 잘래내서 배열로 저장합니다.&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1a1a1a; color: #d8dee9;&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# URL 추출&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 정규식을 사용하여 'https://' 부터 '?utm_source=openai' 전까지의 URL을 찾습니다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;url_pattern&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;re&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;compile&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'https://[&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;\s&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;\)&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #f8c762;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;found_urls&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;url_pattern&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;findall&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;output_text&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# UTM 소스를 제거하여 순수 URL만 추출합니다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;cleaned_urls&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.split&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'?utm_source=openai'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;found_urls&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;추출된 URL 목록:&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;cleaned_urls&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추출된&amp;nbsp;URL&amp;nbsp;목록: &lt;br /&gt;&lt;a href=&quot;https://www.insight.co.kr/news/233198&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.insight.co.kr/news/233198&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://www.allurekorea.com/2022/08/08/%EC%85%80%EB%9F%BD%EB%93%A4%EC%9D%98-%ED%9D%91%EB%B0%9Cvs%EA%B8%88%EB%B0%9C-%EB%85%BC%EC%9F%81/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.allurekorea.com/2022/08/08/%EC%85%80%EB%9F%BD%EB%93%A4%EC%9D%98-%ED%9D%91%EB%B0%9Cvs%EA%B8%88%EB%B0%9C-%EB%85%BC%EC%9F%81/&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://news-ade.com/star-ade/article/142403/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://news-ade.com/star-ade/article/142403/&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://www.insight.co.kr/news/233198&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.insight.co.kr/news/233198&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://news-ade.com/star-ade/article/142403/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://news-ade.com/star-ade/article/142403/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 사이트에서 이미지 다운로드 및 얼굴 찾기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다운로드는 requests를 이용하고&amp;nbsp; 얼굴찾기는 opencv에서 제공되는 사전 학습된 얼굴 탐지 모델을 사용합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델파일은 먼저 내려받아서 파이썬 파일이 있는 폴더에 같이 저장해놓으면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델파일 위치 :&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalface_default.xml&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalface_default.xml&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지 중 특정 크기 이상, 얼굴을 포함한 이미지만 저장하고 얼굴이 없는 이미지는 따로 저장하도록 구현하였습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 최종 코드 입니다 .&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1a1a1a; color: #d8dee9;&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;openai&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;OpenAI&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# OpenAI API를 사용하기 위한 패키지&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;os&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 파일 및 디렉토리 관리(경로, 폴더 생성 등)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;re&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 정규표현식(문자열 검색 및 추출)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;io&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 파일 및 스트림 입출력 처리&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;requests&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# HTTP 요청(웹 페이지, 이미지 등 다운로드)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;urllib&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;parse&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;urlparse&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;urljoin&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# URL 파싱 및 결합&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;bs4&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;BeautifulSoup&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# HTML 파싱 및 웹 크롤링&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;PIL&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;Image&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 이미지 파일 처리 및 변환&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;cv2&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# OpenCV 라이브러리(이미지 처리, 얼굴 인식 등)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;numpy&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;np&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 수치 연산 및 배열 처리&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# OpenAI 클라이언트 객체 생성&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;client&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;OpenAI&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;()&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# GPT-4.1 모델을 사용하여 웹 검색 프리뷰 도구로 질의 실행&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;client&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;responses&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;create&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;model&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;gpt-4.1&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 사용할 모델 지정&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;tools&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=[&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;type&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;web_search_preview&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 웹 검색 프리뷰 도구 사용&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;금발의 연예인 사진을 찾아줘&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 검색할 내용 입력&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;output_text&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 사전 학습된 얼굴 탐지 모델 로드&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴 탐지 모델 파일 다운로드&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# &lt;a href=&quot;https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalface_default.xml&quot;&gt;https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalface_default.xml&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# (링크를 마우스 오른쪽 버튼으로 클릭하여 '다른 이름으로 링크 저장')&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 다운로드한 haarcascade_frontalface_default.xml 파일을 파이썬 스크립트(.py)가 있는 동일한 폴더에 저장하기&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face_cascade_path&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'haarcascade_frontalface_default.xml'&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;os&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;exists&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face_cascade_path&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;오류: '{&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face_cascade_path&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;}' 파일을 찾을 수 없습니다.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;스크립트와 같은 폴더에 모델 파일을 다운로드해주세요.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;exit&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face_cascade&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;cv2&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;CascadeClassifier&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face_cascade_path&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# URL 추출&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 정규식을 사용하여 'https://' 부터 '?utm_source=openai' 전까지의 URL을 찾습니다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;url_pattern&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;re&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;compile&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;r&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'https://[&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;\s&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;\)&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #f8c762;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;found_urls&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;url_pattern&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;findall&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;output_text&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# UTM 소스를 제거하여 순수 URL만 추출합니다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;cleaned_urls&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.split&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'?utm_source=openai'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;found_urls&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;추출된 URL 목록:&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;cleaned_urls&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 이미지 다운로드 폴더 생성&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 저장할 폴더 2개 생성&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face_folder&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'images'&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴 있는 이미지 폴더&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;noface_folder&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'noface'&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴 없는 이미지 폴더&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;os&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;makedirs&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face_folder&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;exist_ok&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;os&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;makedirs&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;noface_folder&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;exist_ok&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 각 URL을 순회하며 이미지 다운로드&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;page_url&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;cleaned_urls&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;try&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 파일명에 사용할 사이트 이름 추출 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;site_name&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;urlparse&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;page_url&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.netloc.replace&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'.'&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'_'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;image_counter&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 각 사이트마다 카운터 초기화&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 페이지에서 이미지 다운로드 시작 알림 출력&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;[{&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;page_url&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;}] 페이지에서 이미지 다운로드를 시작합니다...&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# User-Agent 헤더 설정 (크롤링 차단 방지용)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;headers&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'User-Agent'&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 해당 페이지 요청 및 응답 받기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;requests&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;page_url&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;headers&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;headers&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;timeout&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;raise_for_status&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 요청 실패 시 예외 발생&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# BeautifulSoup을 사용하여 HTML 파싱&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;soup&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;BeautifulSoup&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'html.parser'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 모든 &amp;lt;img&amp;gt; 태그 추출&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img_tags&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;soup&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;find_all&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'img'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 이미지 태그가 없으면 안내 후 다음 URL로&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img_tags&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot; -&amp;gt; 이 페이지에서 이미지를 찾을 수 없습니다.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;continue&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 각 이미지 태그 순회&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img_tag&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img_tags&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img_url&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img_tag&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.get&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'src'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 이미지 URL 추출&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img_url&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;continue&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# src 속성이 없으면 건너뜀&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 상대경로일 경우 절대경로로 변환&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img_url&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;urljoin&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;page_url&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img_url&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# base64 등 data URI 형식은 건너뜀&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img_url&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.startswith&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'data:image'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;continue&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img_url&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.startswith&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'//'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img_url&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'https:'&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img_url&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;try&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 이미지 다운로드 요청&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img_response&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;requests&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img_url&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;headers&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;headers&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;stream&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;timeout&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img_response&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;raise_for_status&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img_data_bytes&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img_response&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 이미지 바이너리 데이터&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# PIL을 사용하여 이미지 열기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;Image&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;io&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;BytesIO&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img_data_bytes&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;size&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 이미지 크기 추출&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;&amp;gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;and&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;&amp;gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 2. 이미지를 OpenCV가 처리할 수 있는 형태로 변환&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;image_stream&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;np&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;frombuffer&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img_data_bytes&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;np&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;uint8&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;image_for_cv&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;cv2&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;imdecode&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;image_stream&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;cv2&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;IMREAD_COLOR&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 흑백으로 변환하여 탐지 성능 향상&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;gray&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;cv2&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;cvtColor&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;image_for_cv&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;cv2&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;COLOR_BGR2GRAY&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 3. 얼굴 탐지 수행&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# scaleFactor: 이미지 크기를 얼마나 줄일지 (1.1 = 10%)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# minNeighbors: 얼마나 많은 이웃 사각형이 겹쳐야 얼굴로 인정할지&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;faces&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face_cascade&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;detectMultiScale&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;gray&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;scaleFactor&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;1.1&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;minNeighbors&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;minSize&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;30&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;30&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 파일 확장자 결정&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;original_filename&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;os&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;basename&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;urlparse&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img_url&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.path&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;_&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;extension&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;os&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;splitext&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;original_filename&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;extension&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;extension&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'.jpg'&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 새 파일 이름 생성&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;new_filename&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; f&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;{&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;site_name&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;}_img{&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;image_counter&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;:03d}{&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;extension&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;}&quot;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# ⭐ 얼굴 유무에 따라 저장 경로 분기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;len&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;faces&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴이 있으면 'images' 폴더에 저장&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;filepath&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;os&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face_folder&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;new_filename&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot; -&amp;gt; 얼굴 {&lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;len&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;faces&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;)}개 검출! '{&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;face_folder&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;}' 폴더에 저장합니다.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 얼굴이 없으면 'noface' 폴더에 저장&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;filepath&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d1d1d1;&quot;&gt;os&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #aa9bf5;&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;noface_folder&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;new_filename&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot; -&amp;gt; 얼굴 없음. '{&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;noface_folder&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;}' 폴더에 저장합니다.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 파일 저장&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;filepath&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;'wb'&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;f&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;write&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;img_data_bytes&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot; -&amp;gt; {&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;new_filename&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;} 저장 완료 (크기: {&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;}x{&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;})&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;image_counter&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ebc88d;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 파일이 저장되었으므로 카운터 증가&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot; -&amp;gt; 크기 작음({&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;}x{&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;}). 건너뛰기&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;except&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;Exception&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;# 이미지 다운로드, 처리 중 오류 발생 시 건너뛰기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;pass&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;except&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;Exception&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #83d6c5;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;페이지 접속 또는 처리 실패: {&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;page_url&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;} ({&lt;/span&gt;&lt;span style=&quot;color: #94c1fa;&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;})&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;모든 작업이 완료되었습니다.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 결과 확인&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 결과를 확인해 보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;금발의 연예인 사진 중 얼굴이 있는 것만 잘 저장이 되었을까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;856&quot; data-origin-height=&quot;468&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ekZOXk/btsPkIhMihu/wcHWgW3BXIi7rF6s9KSDuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ekZOXk/btsPkIhMihu/wcHWgW3BXIi7rF6s9KSDuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ekZOXk/btsPkIhMihu/wcHWgW3BXIi7rF6s9KSDuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FekZOXk%2FbtsPkIhMihu%2FwcHWgW3BXIi7rF6s9KSDuk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;856&quot; height=&quot;468&quot; data-origin-width=&quot;856&quot; data-origin-height=&quot;468&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;금발 연예인 키워드로 사이트를 먼저 찾고 얼굴이 있는 것들을 저장하니 사이트 안에 있는 다른 이미지들도 같이 저장되어 몇개 불필요한 사진도 있네요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대충 잘 돌아가는 듯 합니다. ^^&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>api#openai#얼굴찾기#웹검색#web search#사진저장</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/223</guid>
      <comments>https://yongeekd01.tistory.com/223#entry223comment</comments>
      <pubDate>Wed, 16 Jul 2025 10:20:56 +0900</pubDate>
    </item>
    <item>
      <title>Openai API 가격정책 및 플래그쉽 모델 정보 (Chatgpt)</title>
      <link>https://yongeekd01.tistory.com/222</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Openai&lt;/span&gt;&lt;span&gt;는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;정말&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;복잡한&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;가격&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;정책을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사용하고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;있습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;모델&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;특성별&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;속도별&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;입출력&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;데이터&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;타입지원별&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;등등&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;토큰으로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;되어&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;있으니&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;쓰고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;나서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;얼마&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;나왔다는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;결론을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;알수&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;있어도&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;가격&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;예측은&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;거의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;불가능하네요&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;크게&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;추론모델이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;일단&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;확실히&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;비싸고&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;mini &lt;/span&gt;&lt;span&gt;모델들은&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;자기들&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;나름&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;저렴하다고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;주장합니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;예전에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;비해서는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;모델의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;특성과&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;속도&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;지원&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;입출력&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;가격&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;정책이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;각&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;모델&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;별로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;잘&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;정리가&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;되어&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;있어&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;다행입니다&lt;/span&gt;&lt;span&gt;. (&lt;/span&gt;&lt;span&gt;하지만&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;그래도&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;너무&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;많아&amp;hellip;&lt;/span&gt;&lt;span&gt; )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;플래그쉽&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;모델인&lt;/span&gt;&lt;span&gt; GPT-4.1&lt;/span&gt;&lt;span&gt;을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;한번&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;볼까요&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;623&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p8LHw/btsPks6INBD/Jrya3fqFRkzY8fpYIIIzu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p8LHw/btsPks6INBD/Jrya3fqFRkzY8fpYIIIzu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p8LHw/btsPks6INBD/Jrya3fqFRkzY8fpYIIIzu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp8LHw%2FbtsPks6INBD%2FJrya3fqFRkzY8fpYIIIzu0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;946&quot; height=&quot;623&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;623&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;750&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvOMx1/btsPjSx5qTX/F855pF1tc85CBfgLsOKIh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvOMx1/btsPjSx5qTX/F855pF1tc85CBfgLsOKIh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvOMx1/btsPjSx5qTX/F855pF1tc85CBfgLsOKIh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvOMx1%2FbtsPjSx5qTX%2FF855pF1tc85CBfgLsOKIh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;806&quot; height=&quot;750&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;750&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;모든&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;모델의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;특성과&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;상세한&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;내역은&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;다음에서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;확인하시면&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;됩니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://platform.openai.com/docs/models&quot;&gt;https://platform.openai.com/docs/models&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;모델이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;너무&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;많아&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;다&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;비교할&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;수는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;없으니&lt;/span&gt;&lt;span&gt; 25&lt;/span&gt;&lt;span&gt;년&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;월&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;현재&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;많이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사용하는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;주요&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;모델만&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;확인&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;해&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;보겠습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;텍스트&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;토큰만&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;비교해&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;본&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;것입니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;오디오나&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;비디오&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;토근은&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;더&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;계산&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;불가&lt;/span&gt;&lt;span&gt;..&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;추론&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;모델&lt;/span&gt;&lt;span&gt; o1-pro, o3-pro&lt;/span&gt;&lt;span&gt;는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;엄청나군요&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;아무리&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;좋아도&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;내&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;돈내고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;쓰기는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;어렵겠습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 72.9069%; height: 2046px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;span&gt;Price&amp;nbsp;per&amp;nbsp;1M tokens&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #f7f7f8; width: 34.3701%;&quot;&gt;&lt;span&gt;Model&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #f7f7f8; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;Input&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #f7f7f8; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;Cached input&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #f7f7f8; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;Output&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;gpt-4.1&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffff00; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$2.00&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;$0.50&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffff00; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$8.00&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;gpt-4.1-2025-04-14&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffff00; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffff00; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;gpt-4.1-mini&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$0.40&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;$0.10&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$1.60&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;gpt-4.1-mini-2025-04-14&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;gpt-4.1-nano&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$0.10&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;$0.03&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$0.40&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;gpt-4.1-nano-2025-04-14&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;gpt-4.5-preview&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$75.00&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;$37.50&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$150.00&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;gpt-4.5-preview-2025-02-27&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;gpt-4o&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffff00; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$2.50&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;$1.25&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffff00; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$10.00&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;gpt-4o-2024-08-06&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffff00; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffff00; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;gpt-4o-audio-preview&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$2.50&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;-&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$10.00&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;gpt-4o-audio-preview-2024-12-17&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;gpt-4o-realtime-preview&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$5.00&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;$2.50&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$20.00&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;gpt-4o-realtime-preview-2025-06-03&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;gpt-4o-mini&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$0.15&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;$0.08&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$0.60&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;gpt-4o-mini-2024-07-18&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;gpt-4o-mini-audio-preview&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$0.15&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;-&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$0.60&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;gpt-4o-mini-audio-preview-2024-12-17&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;gpt-4o-mini-realtime-preview&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$0.60&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;$0.30&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$2.40&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;gpt-4o-mini-realtime-preview-2024-12-17&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;o1&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$15.00&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;$7.50&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$60.00&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;o1-2024-12-17&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;o1-pro&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffff00; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$150.00&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;-&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffff00; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$600.00&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;o1-pro-2025-03-19&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffff00; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffff00; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;o3-pro&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffff00; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$20.00&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;-&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffff00; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$80.00&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;o3-pro-2025-06-10&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffff00; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffff00; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;o3&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$2.00&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;$0.50&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$8.00&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;o3-2025-04-16&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;o3-deep-research&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$10.00&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;$2.50&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$40.00&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;o3-deep-research-2025-06-26&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;o4-mini&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$1.10&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;$0.28&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$4.40&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;o4-mini-2025-04-16&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;o4-mini-deep-research&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$2.00&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;$0.50&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$8.00&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;o4-mini-deep-research-2025-06-26&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;o3-mini&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$1.10&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;$0.55&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$4.40&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;o3-mini-2025-01-31&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;o1-mini&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$1.10&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;$0.55&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$4.40&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;o1-mini-2024-09-12&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;codex-mini-latest&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$1.50&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;$0.38&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$6.00&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;codex-mini-latest&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;gpt-4o-mini-search-preview&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$0.15&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;-&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$0.60&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;gpt-4o-mini-search-preview-2025-03-11&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;gpt-4o-search-preview&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$2.50&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;-&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$10.00&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;gpt-4o-search-preview-2025-03-11&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;computer-use-preview&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$3.00&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;-&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;$12.00&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;computer-use-preview-2025-03-11&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #ffffff; width: 34.3701%;&quot;&gt;&lt;span&gt;&lt;span&gt;gpt-image-1&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 17.7294%; text-align: center;&quot;&gt;&lt;span&gt;$5.00&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 20.3733%; text-align: center;&quot;&gt;&lt;span&gt;$1.25&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffffff; width: 24.8834%; text-align: center;&quot;&gt;&lt;span&gt;-&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;상세한&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;가격&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;정보는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;다음에서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;확인하세요&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://platform.openai.com/docs/pricing&quot;&gt;https://platform.openai.com/docs/pricing&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;돈만&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;좀&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;내면&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서비스에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;바로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;접목할&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;수&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;있는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이런&lt;/span&gt;&lt;span&gt; API&lt;/span&gt;&lt;span&gt;들이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;쏟아지고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;있는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;세상에서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;우수한&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;국산&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;파운데이션&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;모델&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;개발이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;너무&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;뒤쳐진&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;것은&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;정말&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;문제입니다&amp;hellip;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;언제쯤&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;제대로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;된&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;것이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;나올까요&lt;/span&gt;&lt;span&gt;.&lt;br /&gt;&lt;/span&gt;&lt;span&gt;나오면&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;애국심으로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;다시&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;그&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;모델을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;쓰긴&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;하게&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;될까요&lt;/span&gt;&lt;span&gt;...&lt;/span&gt;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>openai#gpt#chatgpt#api#가격#플래그쉽</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/222</guid>
      <comments>https://yongeekd01.tistory.com/222#entry222comment</comments>
      <pubDate>Tue, 15 Jul 2025 15:08:33 +0900</pubDate>
    </item>
    <item>
      <title>안경점에서 검도용 안경 맞추기(호면 내 착용 안경, 한티역 안경공장쇼룸)</title>
      <link>https://yongeekd01.tistory.com/221</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;눈이 나쁜 관계로..&amp;nbsp; 검도할때 많이 불편하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;운동할때 몇시간만 참으면 되니까 그동안 일회용 렌즈를 사용하고 있었는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;드디어 문제가 생겼다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;렌즈를 다루는 손도 지저분했는지 눈에 결막염과 잘잘한 결석이 자주 생기기 시작했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이거 안과 다니는 돈이 더들겠네 싶을 정도로 빈번해져서 결국 호면안에&amp;nbsp; 착용이 가능한 안경을 찾기로 했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 검도 안경이라고 나오는 스포맥스 제품이 유명 하긴 하지만 고무줄이 자주 헐거워지고 코받침이 눈에 너무 딱 붙어서 영 마음에 안들더라..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터넷으로 수도 없이 검색을 해봐도 이게 괜찮을까 판단이 안서서&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 동네 안경점으로 호면을 들고 방문했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;창피함은 순간이고 편안함은 영원하니까. ^^&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한티역 앞에 최근에 안경공장쇼룸 강남점(구. 그랑프리안경)으로 호면을 들고 고고~&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20250711_094948761_20.jpg&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;405&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CtzBt/btsPfemY6Ji/Z1dvjWFi6WK7z09R9MHJBk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CtzBt/btsPfemY6Ji/Z1dvjWFi6WK7z09R9MHJBk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CtzBt/btsPfemY6Ji/Z1dvjWFi6WK7z09R9MHJBk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCtzBt%2FbtsPfemY6Ji%2FZ1dvjWFi6WK7z09R9MHJBk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;720&quot; height=&quot;405&quot; data-filename=&quot;KakaoTalk_20250711_094948761_20.jpg&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;405&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기는 여러 안경사님 분들이 계신데 항상 친절하고 과잉판매가 없어서 좋다. 온가족 안경을 다 여기서 했음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대치동 강추 안경점!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kx6Z7/btsPe6CFY9H/AT9VMRkfoO9KjZcPA8u9Jk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kx6Z7/btsPe6CFY9H/AT9VMRkfoO9KjZcPA8u9Jk/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;405&quot; data-filename=&quot;KakaoTalk_20250711_094948761_04.jpg&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kx6Z7/btsPe6CFY9H/AT9VMRkfoO9KjZcPA8u9Jk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fkx6Z7%2FbtsPe6CFY9H%2FAT9VMRkfoO9KjZcPA8u9Jk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;720&quot; height=&quot;405&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b55cL1/btsPdw337Q6/dF9WGo2Yj8VKstQ8UqBUUk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b55cL1/btsPdw337Q6/dF9WGo2Yj8VKstQ8UqBUUk/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;405&quot; data-filename=&quot;KakaoTalk_20250711_094948761_02.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b55cL1/btsPdw337Q6/dF9WGo2Yj8VKstQ8UqBUUk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb55cL1%2FbtsPdw337Q6%2FdF9WGo2Yj8VKstQ8UqBUUk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;720&quot; height=&quot;405&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QzfjO/btsPetylnH4/Ypg5FPq8Fsb1esVwKKNuuK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QzfjO/btsPetylnH4/Ypg5FPq8Fsb1esVwKKNuuK/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;405&quot; data-filename=&quot;KakaoTalk_20250711_094948761_05.jpg&quot; style=&quot;width: 75.0811%; margin-right: 10px;&quot; data-widthpercent=&quot;75.96&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QzfjO/btsPetylnH4/Ypg5FPq8Fsb1esVwKKNuuK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQzfjO%2FbtsPetylnH4%2FYpg5FPq8Fsb1esVwKKNuuK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;720&quot; height=&quot;405&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kZQZ9/btsPd9G02ii/UUZIa7OmZn9cgIS75qFEO0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kZQZ9/btsPd9G02ii/UUZIa7OmZn9cgIS75qFEO0/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;720&quot; data-filename=&quot;KakaoTalk_20250711_094948761_03.jpg&quot; style=&quot;width: 23.7561%;&quot; data-widthpercent=&quot;24.04&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kZQZ9/btsPd9G02ii/UUZIa7OmZn9cgIS75qFEO0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkZQZ9%2FbtsPd9G02ii%2FUUZIa7OmZn9cgIS75qFEO0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;405&quot; height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도착하자 마자 척하니 호면을 내려놓고 안경점 실장님께 사정을 설명드렸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;-얼굴의 폭보다 작지만 덜렁거리지 않아야함&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;-호면 착용 시 안경다리가 눌리지 않아야 함&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;-땀에 강해야 함&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;등등&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ILxmc/btsPeJA7bx9/ny4wzeq154bEfsayzIzTI1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ILxmc/btsPeJA7bx9/ny4wzeq154bEfsayzIzTI1/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;720&quot; data-filename=&quot;KakaoTalk_20250711_094948761_01.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ILxmc/btsPeJA7bx9/ny4wzeq154bEfsayzIzTI1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FILxmc%2FbtsPeJA7bx9%2Fny4wzeq154bEfsayzIzTI1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;405&quot; height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCvVPR/btsPex8AK5o/99c4XCKtikIzVSAoEwLn81/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCvVPR/btsPex8AK5o/99c4XCKtikIzVSAoEwLn81/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;720&quot; data-filename=&quot;KakaoTalk_20250711_094948761_06.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCvVPR/btsPex8AK5o/99c4XCKtikIzVSAoEwLn81/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCvVPR%2FbtsPex8AK5o%2F99c4XCKtikIzVSAoEwLn81%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;405&quot; height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음엔 땀 때문에 뿔테를 먼저 확인. 호면에 넣어서 대략적인 크기를 확인하고 착용을 통해 통증이나 불편감을 확인 해 보았다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BjePN/btsPdzF8euX/LkZFnPp46jqOG7IcUTFWX1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BjePN/btsPdzF8euX/LkZFnPp46jqOG7IcUTFWX1/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;720&quot; data-filename=&quot;KakaoTalk_20250711_094948761_08.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BjePN/btsPdzF8euX/LkZFnPp46jqOG7IcUTFWX1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBjePN%2FbtsPdzF8euX%2FLkZFnPp46jqOG7IcUTFWX1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;405&quot; height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvJrs0/btsPes0yC5e/qft1h483HI3KUfjigynwj1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvJrs0/btsPes0yC5e/qft1h483HI3KUfjigynwj1/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;720&quot; data-filename=&quot;KakaoTalk_20250711_094948761_09.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvJrs0/btsPes0yC5e/qft1h483HI3KUfjigynwj1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvJrs0%2FbtsPes0yC5e%2Fqft1h483HI3KUfjigynwj1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;405&quot; height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뿔테는 아무래도 살짝 다리가 두꺼운 감이 있다.. 꽉 묶으면 조금 아픈듯 하고 운동시 귀때기를 맞으면 문제가 있을 것 같은 느낌이...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;탄력도 좀 있고 안경다리가 최대한 가는 것으로 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;실장님이 다시 여러가지를 찾아 주셨다.&lt;span&gt; 또 다시 착용후 테스트.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/br9u8H/btsPdxWgkjt/PX8VBvJkpYQRB5NTod5a41/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/br9u8H/btsPdxWgkjt/PX8VBvJkpYQRB5NTod5a41/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;720&quot; data-filename=&quot;KakaoTalk_20250711_094948761_13.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/br9u8H/btsPdxWgkjt/PX8VBvJkpYQRB5NTod5a41/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbr9u8H%2FbtsPdxWgkjt%2FPX8VBvJkpYQRB5NTod5a41%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;405&quot; height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAoeGH/btsPfflZ7wc/tgms4YDJc5UQQgijG8qcMk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAoeGH/btsPfflZ7wc/tgms4YDJc5UQQgijG8qcMk/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;720&quot; data-filename=&quot;KakaoTalk_20250711_094948761_19.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAoeGH/btsPfflZ7wc/tgms4YDJc5UQQgijG8qcMk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAoeGH%2FbtsPfflZ7wc%2Ftgms4YDJc5UQQgijG8qcMk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;405&quot; height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 손님들이 들어와서 저놈은 뭔가 하고 쳐다보는 것이 느껴지지만 어차피 호면 쓰면 누군지 모르기 때문에 무시.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;몇번만에 맘에 드는 것을 찾았다. 오..&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가볍고 작고 안경 다리도 아주 가는 어린이용 안경테!!! ㅋㅋ 대박!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brYVoY/btsPeAYKeXm/Z1aJLPXeNYd61u60jgsuP1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brYVoY/btsPeAYKeXm/Z1aJLPXeNYd61u60jgsuP1/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;720&quot; data-filename=&quot;KakaoTalk_20250711_094948761_18.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brYVoY/btsPeAYKeXm/Z1aJLPXeNYd61u60jgsuP1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrYVoY%2FbtsPeAYKeXm%2FZ1aJLPXeNYd61u60jgsuP1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;405&quot; height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8MV5P/btsPeT4GWjd/XT4Q3oPhRye1MZCede6oWK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8MV5P/btsPeT4GWjd/XT4Q3oPhRye1MZCede6oWK/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;405&quot; data-origin-height=&quot;720&quot; data-filename=&quot;KakaoTalk_20250711_094948761_10.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8MV5P/btsPeT4GWjd/XT4Q3oPhRye1MZCede6oWK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8MV5P%2FbtsPeT4GWjd%2FXT4Q3oPhRye1MZCede6oWK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;405&quot; height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아주 마음에 든다.&amp;nbsp; 내일 찾아서 담주에 도장가서 사용해 봐야겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좋아 좋아~~~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>이것저것</category>
      <category>검도안경#검도#안경#한티역#안경공장쇼룸</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/221</guid>
      <comments>https://yongeekd01.tistory.com/221#entry221comment</comments>
      <pubDate>Fri, 11 Jul 2025 13:36:13 +0900</pubDate>
    </item>
    <item>
      <title>vscode에서 streamlit 사용시 break point 사용하기 (launch.json, 디버깅)</title>
      <link>https://yongeekd01.tistory.com/220</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;sreamlit은 브라우져에서 동작하기 때문에&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;streamlit run xxxxxxx.py 형태로 실행하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;브라우저 상에서 st.write()만 가지고 디버깅하기에는 어려움이 있기때문에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적인&amp;nbsp; 디버깅 방식으로 실행하는 법을 알아보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 기본 설정&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;VSCode&lt;/span&gt;&lt;span&gt;의&lt;span&gt; Python &lt;/span&gt;디버거가&lt;span&gt; debugpy&lt;/span&gt;를 찾지 못할 경우&lt;span&gt;, debugpy &lt;/span&gt;모듈이 설치되지 않았거나 올바르게 설치되지 않았을 가능성이 있습니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;pip install debugpy &lt;/span&gt;&lt;span&gt;설치&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;vscode에서 현재 프로젝트의 launch.json 수정하기 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;일반적으로 파일 디버깅을 위해서는 아래와 같이 하는데..&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &quot;version&quot;: &quot;0.2.0&quot;,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &quot;configurations&quot;: [ &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;name&quot;: &quot;Python &lt;/span&gt;&lt;span&gt;디버거&lt;span&gt;: &lt;/span&gt;현재 파일&lt;span&gt;&quot;,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;type&quot;: &quot;python&quot;,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;request&quot;: &quot;launch&quot;,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;program&quot;: &quot;${file}&quot;,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;console&quot;: &quot;integratedTerminal&quot;,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;justMyCode&quot;: false,&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;2. streamlit 사용하여 디버깅하기&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;streamlit을 사용하기 위해서는 다음과 같이 설정 해야 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #181818; color: #d6d6dd;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6d6d6d;&quot;&gt;// Use IntelliSense to learn about possible attributes.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6d6d6d;&quot;&gt;// Hover to view descriptions of existing attributes.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6d6d6d;&quot;&gt;// For more information, visit: &lt;a href=&quot;https://go.microsoft.com/fwlink/?linkid=830387&quot;&gt;https://go.microsoft.com/fwlink/?linkid=830387&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;version&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;0.2.0&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;configurations&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;: [&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;Python: Streamlit&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;type&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;python&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;request&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;launch&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;, &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;module&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;streamlit&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;args&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;: [&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;run&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;${workspaceFolder}/실행할파이썬파일.py&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ],&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;console&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;integratedTerminal&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;justMyCode&quot;&lt;/span&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;: false&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;&amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d6d6dd;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>IT/개발</category>
      <category>streamlit#break#point#디버깅#vscode</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/220</guid>
      <comments>https://yongeekd01.tistory.com/220#entry220comment</comments>
      <pubDate>Fri, 14 Feb 2025 12:57:23 +0900</pubDate>
    </item>
    <item>
      <title>wheel 그룹 권한으로 사용자 계정의 root 권한 획득하는 법(sudo 명령어)</title>
      <link>https://yongeekd01.tistory.com/219</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;리눅스에서&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &quot;wheel&quot; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;그룹은&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;시스템&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;관리와&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;관련된&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;특별한&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;권한을&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;가진&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;사용자&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;그룹입니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;이&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;그룹의&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;주요&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;목적은&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;특정&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;사용자에게&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; root &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;권한을&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;부여할&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;수&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;있도록&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;하는&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;것입니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;1. su &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;명령어&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;사용&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;wheel&quot; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;그룹에&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;속한&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;사용자는&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; su &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;명령어를&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;사용하여&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; root &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;사용자로&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;전환할&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;수&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;있습니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;2. &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;보안&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;강화&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;모든&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;사용자가&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; root &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;권한을&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;얻을&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;수&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;없도록&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;제한함으로써&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;보안을&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;강화합니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&quot;wheel&quot; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;그룹에&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;속한&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;사용자만이&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;span&gt;sudo &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;명령을&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;통해&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;span&gt;root &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;권한을&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;얻을&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;수&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;있습니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;사용자추가 (예 user01)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;useradd user01&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;passwd user01&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;groupadd wheel&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;usermod -G wheel user01&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정 확인&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;cat /etc/group | grep wheel&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;wheel:x:10:user01&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;이제 user01 계정 사용자는 sudo 명령으로 root 권한을 사용할 수 있습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/리눅스</category>
      <category>wheel#sudo</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/219</guid>
      <comments>https://yongeekd01.tistory.com/219#entry219comment</comments>
      <pubDate>Thu, 6 Feb 2025 13:32:12 +0900</pubDate>
    </item>
    <item>
      <title>ntfs 파일시스템 mount 하기 (usb, 외장하드, rocky linux)</title>
      <link>https://yongeekd01.tistory.com/218</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스에 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;ntfs로 포맷된&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;nbsp; usb 스틱이나 외장하드를 연결에서 사용할 때 파일 시스템이 인식이 안되는 경우 설치 및 설정 방법을 알아보자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. reop 설정 및 ntfs-3g 도구 설치&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;yum install epel-release -y&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;146&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/M7hSs/btsL6zip6eA/SeIDK1Jclny5KooQCRHzVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/M7hSs/btsL6zip6eA/SeIDK1Jclny5KooQCRHzVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/M7hSs/btsL6zip6eA/SeIDK1Jclny5KooQCRHzVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FM7hSs%2FbtsL6zip6eA%2FSeIDK1Jclny5KooQCRHzVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;680&quot; height=&quot;146&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;146&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;yum&amp;nbsp;install&amp;nbsp;ntfs-3g&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;714&quot; data-origin-height=&quot;116&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s3lxx/btsL9ddD0yX/6iRvsJNeekQDbkxKqrRK2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s3lxx/btsL9ddD0yX/6iRvsJNeekQDbkxKqrRK2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s3lxx/btsL9ddD0yX/6iRvsJNeekQDbkxKqrRK2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs3lxx%2FbtsL9ddD0yX%2F6iRvsJNeekQDbkxKqrRK2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;714&quot; height=&quot;116&quot; data-origin-width=&quot;714&quot; data-origin-height=&quot;116&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. usb 디스크 정보 확인&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fdisk -l&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;493&quot; data-origin-height=&quot;39&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWdSg7/btsL76zOU9B/SvsqJKXkuaXB7sRpFbwNRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWdSg7/btsL76zOU9B/SvsqJKXkuaXB7sRpFbwNRk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWdSg7/btsL76zOU9B/SvsqJKXkuaXB7sRpFbwNRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWdSg7%2FbtsL76zOU9B%2FSvsqJKXkuaXB7sRpFbwNRk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;493&quot; height=&quot;39&quot; data-origin-width=&quot;493&quot; data-origin-height=&quot;39&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. mount 폴더 생성 및 마운트&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mkdir /home/usb&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mount -t ntfs-3g /dev/sdc1 /home/usb&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;df -h&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;19&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnPlgx/btsL7tbc4yN/jQ9J0hkiBqTvE2CXhH5w70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnPlgx/btsL7tbc4yN/jQ9J0hkiBqTvE2CXhH5w70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnPlgx/btsL7tbc4yN/jQ9J0hkiBqTvE2CXhH5w70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnPlgx%2FbtsL7tbc4yN%2FjQ9J0hkiBqTvE2CXhH5w70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;428&quot; height=&quot;19&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;19&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;끝.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/리눅스</category>
      <category>mount#ntfs#usb#외장하드#마운트</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/218</guid>
      <comments>https://yongeekd01.tistory.com/218#entry218comment</comments>
      <pubDate>Wed, 5 Feb 2025 16:46:32 +0900</pubDate>
    </item>
    <item>
      <title>Linux 유저 삭제가 삭제가 안될 때(userdel, pkill)</title>
      <link>https://yongeekd01.tistory.com/217</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스에서 사용자를 추가하려면 useradd 명령어를 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;useradd&amp;nbsp;&amp;lt;사용자명&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로&amp;nbsp;사용자의&amp;nbsp;홈&amp;nbsp;디렉토리는&amp;nbsp;생성되지&amp;nbsp;않으며,&amp;nbsp;계정만&amp;nbsp;생성됩니다. &lt;br /&gt;생성된&amp;nbsp;사용자의&amp;nbsp;상세&amp;nbsp;정보는&amp;nbsp;/etc/passwd&amp;nbsp;파일에&amp;nbsp;저장됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;useradd&amp;nbsp;-m&amp;nbsp;&amp;lt;사용자명&amp;gt; &lt;br /&gt;-m 옵션은 사용자의 홈 디렉토리를 자동으로 생성하고 홈&amp;nbsp;디렉토리는&amp;nbsp;/home/&amp;lt;사용자명&amp;gt;&amp;nbsp;경로로&amp;nbsp;만들어집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 사용자를 지워봅시다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자를 삭제하려면 userdel 명령어를 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;userdel &amp;lt;사용자명&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;홈 디렉토리와 메일 스풀(/var/spool/mail/&amp;lt;사용자명&amp;gt;)까지 삭제하려면 -r 옵션을 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;userdel -r &amp;lt;사용자명&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서는 ftpuser라는 사용자를 추가 했다가 지우는 예 입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[root@localhost&amp;nbsp;home]#&amp;nbsp;userdel&amp;nbsp;ftpuser &lt;br /&gt;userdel:&amp;nbsp;user&amp;nbsp;ftpuser&amp;nbsp;is&amp;nbsp;currently&amp;nbsp;used&amp;nbsp;by&amp;nbsp;process&amp;nbsp;397855&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어 근데 안지워지는 놈이 있습니다. 프로세스가 사용중이라네요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때는 그냥 pkill로 죽이고 다시 userdel을 사용하면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pkill&amp;nbsp;-u&amp;nbsp;ftpuser&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;userdel&amp;nbsp;-r&amp;nbsp;ftpuser&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;userdel 명령어로 사용자를 삭제해도 기본적으로 홈 디렉토리는 삭제되지 않습니다. 상황에 따라 수동 삭제가 필요할 수도 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/리눅스</category>
      <category>리눅스#useradd#userdel#pkill</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/217</guid>
      <comments>https://yongeekd01.tistory.com/217#entry217comment</comments>
      <pubDate>Thu, 23 Jan 2025 10:55:45 +0900</pubDate>
    </item>
    <item>
      <title>Rocky linux ntp 설정하기, 시간 설정(timedatectl, chrony 사용)</title>
      <link>https://yongeekd01.tistory.com/216</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;보통 시간을 확인할 때 date 명령어를 이용하여 확인 및 설정을 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만, 이런 방식 보다는 NTP를 사용하여 시간 동기화 하는 방식이 더 정확합니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NTP(Network&amp;nbsp;Time&amp;nbsp;Protocol)는&amp;nbsp;컴퓨터&amp;nbsp;시스템&amp;nbsp;간에&amp;nbsp;시간을&amp;nbsp;동기화하는데&amp;nbsp;사용되는&amp;nbsp;프로토콜입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터넷을 통해 서버 및 클라이언트 간의 시간을 조정하여 각 기기가 동일한 표준 시간을 유지하도록 해서 여러 서버간 시간 동기가 필요할때 꼭 필요합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. ntp 동기화 설정 확인하기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;timedatectl 명령어를 이용하여 현재 설정을 확인합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;System clock synchronized : no 로 표시되면 동기화 설정이 되지 않은 것입니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;388&quot; data-origin-height=&quot;120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bI4QFw/btsLAUzr5U4/8weAtHp7KEulkR4oiRSkcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bI4QFw/btsLAUzr5U4/8weAtHp7KEulkR4oiRSkcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bI4QFw/btsLAUzr5U4/8weAtHp7KEulkR4oiRSkcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbI4QFw%2FbtsLAUzr5U4%2F8weAtHp7KEulkR4oiRSkcK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;388&quot; height=&quot;120&quot; data-origin-width=&quot;388&quot; data-origin-height=&quot;120&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. chrony 설치&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;chrony는 centos,레드햇 계열은 모두 사용가능합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;yum&amp;nbsp;install&amp;nbsp;chrony&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시스템 서비스를 시작해주고 재부팅시 자동 수행 가능하도록 enable도 해줍니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;systemctl&amp;nbsp;start&amp;nbsp;chronyd &lt;br /&gt;systemctl enable chronyd&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정상적으로 동작 하고 있는지 확인합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;systemctl&amp;nbsp;status&amp;nbsp;chronyd&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[root]# systemctl status chronyd &lt;br /&gt;●&amp;nbsp;chronyd.service&amp;nbsp;-&amp;nbsp;NTP&amp;nbsp;client/server &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Loaded:&amp;nbsp;loaded&amp;nbsp;(/usr/lib/systemd/system/chronyd.service;&amp;nbsp;enabled;&amp;nbsp;vendor&amp;nbsp;preset:&amp;nbsp;enabled) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Active:&amp;nbsp;active&amp;nbsp;(running)&amp;nbsp;since&amp;nbsp;Fri&amp;nbsp;2024-12-27&amp;nbsp;16:43:42&amp;nbsp;KST;&amp;nbsp;14min&amp;nbsp;ago &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Docs:&amp;nbsp;man:chronyd(8) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;man:chrony.conf(5) &lt;br /&gt;&amp;nbsp;Main&amp;nbsp;PID:&amp;nbsp;1850993&amp;nbsp;(chronyd) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Tasks:&amp;nbsp;1&amp;nbsp;(limit:&amp;nbsp;409070) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Memory:&amp;nbsp;1.4M &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;CGroup:&amp;nbsp;/system.slice/chronyd.service &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;└─1850993&amp;nbsp;/usr/sbin/chronyd &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 시간 동기화&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;chronyc&amp;nbsp;sources&amp;nbsp;&amp;nbsp;#&amp;nbsp;NTP&amp;nbsp;서버&amp;nbsp;목록을&amp;nbsp;확인합니다. &lt;br /&gt;chronyc&amp;nbsp;tracking&amp;nbsp;&amp;nbsp;#&amp;nbsp;시간&amp;nbsp;동기화&amp;nbsp;상태를&amp;nbsp;확인합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후에 다시 timedatectl로 확인해 보면 정상적으로 등록되고 시간 정보도 동기화 된것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;125&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VpKsj/btsLzb3sLHs/tcXe9JT0nPJbX8eJn1zz90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VpKsj/btsLzb3sLHs/tcXe9JT0nPJbX8eJn1zz90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VpKsj/btsLzb3sLHs/tcXe9JT0nPJbX8eJn1zz90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVpKsj%2FbtsLzb3sLHs%2FtcXe9JT0nPJbX8eJn1zz90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;412&quot; height=&quot;125&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;125&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/리눅스</category>
      <category>ntp#동기화#록키#rocky#linuxtimedatectl#chrony</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/216</guid>
      <comments>https://yongeekd01.tistory.com/216#entry216comment</comments>
      <pubDate>Fri, 27 Dec 2024 17:02:11 +0900</pubDate>
    </item>
    <item>
      <title>Rocky Linux 파이썬으로 네트워트 인터페이스 정보 가져오기, 각 트래픽 량 계산하기 (랜카드별 데이터송수신 데이터량)</title>
      <link>https://yongeekd01.tistory.com/215</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;망내에 서버 설계를 하다보면 서버간 데이터 트래픽을 제어해야 할 경우가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러개의 랜카드를 이용해서 망을 분리하기도 하고 트래픽을 분산 시키기도 하지요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 경우 유용한 함수들을 파이썬으로 구현했습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(인터페이스별 트래픽은 1초만 측정했습니다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 인터페이스 목록 가져오기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 인터페이스 현재 up/down link 상태 가져오기&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 인터페이스별 1초당 트래픽량 측정하기(Tx/Rx)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 네트워크 인터페이스 목록 가져오기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; get_network_interface() : &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; network_interfaces = psutil.net_if_addrs()&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 인터페이스 이름 출력&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;network interface list:&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; interface_name, addresses &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; network_interfaces.items():&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;\nintreface: {interface_name}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; address &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; addresses:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot; &amp;nbsp;address type: {address.family.name}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot; &amp;nbsp;address: {address.address}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; address.netmask:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot; &amp;nbsp;netmask: {address.netmask}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; address.broadcast:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot; &amp;nbsp;broadcast: {address.broadcast}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 네트워크 인터페이스 상태 정보 가져오기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; get_network_interface_status() : &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 네트워크 인터페이스 주소 정보 가져오기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; network_interfaces = psutil.net_if_addrs()&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 네트워크 인터페이스 상태 정보 가져오기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; interface_stats = psutil.net_if_stats()&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 각 인터페이스에 대해 상태 정보 출력하기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; interface, addrs &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; network_interfaces.items():&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Interface: {interface}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 인터페이스 상태 정보 가져오기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; stats = interface_stats.get(interface)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; stats:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 링크 상태 확인&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; is_up = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Up&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; stats.isup &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Down&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot; &amp;nbsp;Status: {is_up}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot; &amp;nbsp;Status: Unknown&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 네트워크 인터페이스 트래픽 량 측정하기 1초&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; get_network_interface_traffic() : &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 초기 네트워크 인터페이스 별 I/O 카운터 가져오기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; initial_counters = psutil.net_io_counters(pernic=&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 대기 시간 간격 (초)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; wait_time = &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 잠시 대기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; time.sleep(wait_time)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 두 번째 네트워크 인터페이스 별 I/O 카운터 가져오기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; second_counters = psutil.net_io_counters(pernic=&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 초당 전송 및 수신 바이트 계산&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; interface, initial &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; initial_counters.items():&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; interface &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; second_counters:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; second = second_counters[interface]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 초당 수신 바이트&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bytes_received_per_second = (second.bytes_recv - initial.bytes_recv) / wait_time&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 초당 전송 바이트&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bytes_sent_per_second = (second.bytes_sent - initial.bytes_sent) / wait_time&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Interface: {interface}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot; &amp;nbsp;Bytes Rx/s: {bytes_received_per_second:.2f} B/s&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot; &amp;nbsp;Bytes Tx/s: {bytes_sent_per_second:.2f} B/s\n&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; __name__ == &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'__main__'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; :&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; get_network_interface()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; get_network_interface_status()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; get_network_interface_traffic()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;network&amp;nbsp;interface&amp;nbsp;list: &lt;br /&gt;&lt;br /&gt;intreface:&amp;nbsp;lo &lt;br /&gt;&amp;nbsp;&amp;nbsp;address&amp;nbsp;type:&amp;nbsp;AF_INET &lt;br /&gt;&amp;nbsp;&amp;nbsp;address:&amp;nbsp;127.0.0.1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;netmask:&amp;nbsp;255.0.0.0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;address&amp;nbsp;type:&amp;nbsp;AF_INET6 &lt;br /&gt;&amp;nbsp;&amp;nbsp;address:&amp;nbsp;::1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;netmask:&amp;nbsp;ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff &lt;br /&gt;&amp;nbsp;&amp;nbsp;address&amp;nbsp;type:&amp;nbsp;AF_PACKET &lt;br /&gt;&amp;nbsp;&amp;nbsp;address:&amp;nbsp;00:00:00:00:00:00 &lt;br /&gt;&lt;br /&gt;intreface:&amp;nbsp;eno1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;address&amp;nbsp;type:&amp;nbsp;AF_INET &lt;br /&gt;&amp;nbsp;&amp;nbsp;address:&amp;nbsp;192.168.10.219 &lt;br /&gt;&amp;nbsp;&amp;nbsp;netmask:&amp;nbsp;255.255.255.0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;broadcast:&amp;nbsp;192.168.10.255 &lt;br /&gt;&amp;nbsp;&amp;nbsp;address&amp;nbsp;type:&amp;nbsp;AF_INET6 &lt;br /&gt;&amp;nbsp;&amp;nbsp;address:&amp;nbsp;fe80::b53d:d1df:70fd:3e69%eno1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;netmask:&amp;nbsp;ffff:ffff:ffff:ffff:: &lt;br /&gt;&amp;nbsp;&amp;nbsp;address&amp;nbsp;type:&amp;nbsp;AF_PACKET &lt;br /&gt;&amp;nbsp;&amp;nbsp;address:&amp;nbsp;7c:10:c9:9f:64:e3 &lt;br /&gt;&amp;nbsp;&amp;nbsp;broadcast:&amp;nbsp;ff:ff:ff:ff:ff:ff &lt;br /&gt;&lt;br /&gt;intreface:&amp;nbsp;docker0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;address&amp;nbsp;type:&amp;nbsp;AF_INET &lt;br /&gt;&amp;nbsp;&amp;nbsp;address:&amp;nbsp;172.17.0.1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;netmask:&amp;nbsp;255.255.0.0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;broadcast:&amp;nbsp;172.17.255.255 &lt;br /&gt;&amp;nbsp;&amp;nbsp;address&amp;nbsp;type:&amp;nbsp;AF_PACKET &lt;br /&gt;&amp;nbsp;&amp;nbsp;address:&amp;nbsp;02:42:ed:77:6b:fa &lt;br /&gt;&amp;nbsp;&amp;nbsp;broadcast:&amp;nbsp;ff:ff:ff:ff:ff:ff &lt;br /&gt;Interface:&amp;nbsp;lo &lt;br /&gt;&amp;nbsp;&amp;nbsp;Status:&amp;nbsp;Up &lt;br /&gt;Interface:&amp;nbsp;eno1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;Status:&amp;nbsp;Up &lt;br /&gt;Interface:&amp;nbsp;docker0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;Status:&amp;nbsp;Down &lt;br /&gt;Interface:&amp;nbsp;lo &lt;br /&gt;&amp;nbsp;&amp;nbsp;Bytes&amp;nbsp;Received&amp;nbsp;per&amp;nbsp;Second:&amp;nbsp;4698.00&amp;nbsp;B/s &lt;br /&gt;&amp;nbsp;&amp;nbsp;Bytes&amp;nbsp;Sent&amp;nbsp;per&amp;nbsp;Second:&amp;nbsp;4698.00&amp;nbsp;B/s &lt;br /&gt;&lt;br /&gt;Interface:&amp;nbsp;eno1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;Bytes&amp;nbsp;Received&amp;nbsp;per&amp;nbsp;Second:&amp;nbsp;43984.00&amp;nbsp;B/s &lt;br /&gt;&amp;nbsp;&amp;nbsp;Bytes&amp;nbsp;Sent&amp;nbsp;per&amp;nbsp;Second:&amp;nbsp;71699.00&amp;nbsp;B/s &lt;br /&gt;&lt;br /&gt;Interface:&amp;nbsp;docker0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;Bytes&amp;nbsp;Received&amp;nbsp;per&amp;nbsp;Second:&amp;nbsp;0.00&amp;nbsp;B/s &lt;br /&gt;&amp;nbsp;&amp;nbsp;Bytes&amp;nbsp;Sent&amp;nbsp;per&amp;nbsp;Second:&amp;nbsp;0.00&amp;nbsp;B/s&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>리눅스#인터페이스#랜카드#트래픽</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/215</guid>
      <comments>https://yongeekd01.tistory.com/215#entry215comment</comments>
      <pubDate>Fri, 8 Nov 2024 18:08:44 +0900</pubDate>
    </item>
    <item>
      <title>python 에서 Rocky linux 시스템 리소스 정보 가져오기(hostname, cpu, ram 사용량 , gpu 사용량, disk 사용량 등)</title>
      <link>https://yongeekd01.tistory.com/214</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;개발을 하다보면 시스템 정보를 계속 모니터링 해야하는 경우가 많습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 구동중인 프로그램이 CPU 부하를 얼마나 쓰는지 RAM은 얼마나 사용하는지.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;memory leak이 있는지 등등..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;관련된 정보를 알아오는 방법을 알아보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬에서는 주로 psutil과&amp;nbsp; GPUtil 을 사용하여 정보를 얻을 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 각종 정보 받아오기 소스&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; psutil&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; GPUtil&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; socket &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 자신의 호스트 이름 가져오기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; get_hostname() : &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; my_hostname = socket.gethostname()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;hostname: {my_hostname}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#CPU/RAM 정보 가져오기 &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; get_cpu_ram():&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; cpu = psutil.cpu_percent()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;cpu: {cpu:.2f}/100 %&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; ram = psutil.virtual_memory()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; ram_used = f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;{ram.used/1024**3:.2f}&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; ram_total = f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;{ram.total/1024**3:.2f}&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;ram : {ram_used}/{ram_total} GB&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#GPU/RAM/온도 정보 가져오기 &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; get_gpu():&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; gpus = GPUtil.getGPUs()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; gpu &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; gpus:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;gpu {gpu.id}: {gpu.name}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot; &amp;nbsp;gpu Load: {gpu.load*100}%&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot; &amp;nbsp;gpu Free Memory: {gpu.memoryFree}MB&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot; &amp;nbsp;gpu Used Memory: {gpu.memoryUsed}MB&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot; &amp;nbsp;gpu Total Memory: {gpu.memoryTotal}MB&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot; &amp;nbsp;gpu Temperature: {gpu.temperature} C&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; gpus:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;No gpu found.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#마운트된 disk 정보 가져오기 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; get_disk() : &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 디스크 파티션 정보 가져오기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; partitions = psutil.disk_partitions()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 관심 있는 마운트포인트만 필터링&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; interesting_mountpoints = {&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'/'&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'/home'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 각 파티션에 대해 사용량 정보를 가져오기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; partition &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; partitions:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mountpoint = partition.mountpoint&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 중복이나 필요 없는 시스템 경로를 제외 조건으로 걸러냄&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#if mountpoint not in interesting_mountpoints and not mountpoint.startswith('/etc') and not mountpoint.startswith('/usr'):&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# &amp;nbsp; &amp;nbsp;interesting_mountpoints.add(mountpoint)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 설정한 관심 있는 경로만 처리할때 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; mountpoint &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; interesting_mountpoints:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Device: {partition.device}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot; &amp;nbsp;Mountpoint: {partition.mountpoint}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot; &amp;nbsp;File system type: {partition.fstype}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;try&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 디스크 사용량 정보 가져오기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; usage = psutil.disk_usage(partition.mountpoint)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot; &amp;nbsp;Total Size: {usage.total / (1024 ** 3):.2f} GB&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot; &amp;nbsp;Used: {usage.used / (1024 ** 3):.2f} GB&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot; &amp;nbsp;Free: {usage.free / (1024 ** 3):.2f} GB&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot; &amp;nbsp;Usage Percentage: {usage.percent}%&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;except&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; PermissionError:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 특정 파티션에 대한 접근 권한이 없을 수 있습니다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot; &amp;nbsp;Could not access this partition.\n&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&lt;/span&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; __name__ == &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'__main__'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; :&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; get_hostname() &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; get_cpu_ram()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; get_gpu()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; get_disk()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 결과를 보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;hostname:&amp;nbsp;ubuntu219&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;cpu:&amp;nbsp;0.00/100&amp;nbsp;% &lt;br /&gt;ram&amp;nbsp;:&amp;nbsp;2.49/31.20&amp;nbsp;GB&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;gpu&amp;nbsp;0:&amp;nbsp;NVIDIA&amp;nbsp;GeForce&amp;nbsp;RTX&amp;nbsp;2080&amp;nbsp;Ti &lt;br /&gt;&amp;nbsp;&amp;nbsp;gpu&amp;nbsp;Load:&amp;nbsp;0.0% &lt;br /&gt;&amp;nbsp;&amp;nbsp;gpu&amp;nbsp;Free&amp;nbsp;Memory:&amp;nbsp;11003.0MB &lt;br /&gt;&amp;nbsp;&amp;nbsp;gpu&amp;nbsp;Used&amp;nbsp;Memory:&amp;nbsp;15.0MB &lt;br /&gt;&amp;nbsp;&amp;nbsp;gpu&amp;nbsp;Total&amp;nbsp;Memory:&amp;nbsp;11264.0MB &lt;br /&gt;&amp;nbsp;&amp;nbsp;gpu&amp;nbsp;Temperature:&amp;nbsp;39.0&amp;nbsp;C &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Device:&amp;nbsp;/dev/sda6 &lt;br /&gt;&amp;nbsp;&amp;nbsp;Mountpoint: /&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;system&amp;nbsp;type:&amp;nbsp;ext4 &lt;br /&gt;&amp;nbsp;&amp;nbsp;Total&amp;nbsp;Size:&amp;nbsp;857.06&amp;nbsp;GB &lt;br /&gt;&amp;nbsp;&amp;nbsp;Used:&amp;nbsp;660.67&amp;nbsp;GB &lt;br /&gt;&amp;nbsp;&amp;nbsp;Free:&amp;nbsp;152.78&amp;nbsp;GB &lt;br /&gt;&amp;nbsp;&amp;nbsp;Usage&amp;nbsp;Percentage:&amp;nbsp;81.2% &lt;br /&gt;Device:&amp;nbsp;/dev/sdc1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;Mountpoint: /home&lt;br /&gt;&amp;nbsp;&amp;nbsp;File&amp;nbsp;system&amp;nbsp;type:&amp;nbsp;fuseblk &lt;br /&gt;&amp;nbsp;&amp;nbsp;Total&amp;nbsp;Size:&amp;nbsp;1863.01&amp;nbsp;GB &lt;br /&gt;&amp;nbsp;&amp;nbsp;Used:&amp;nbsp;909.28&amp;nbsp;GB &lt;br /&gt;&amp;nbsp;&amp;nbsp;Free:&amp;nbsp;953.74&amp;nbsp;GB &lt;br /&gt;&amp;nbsp;&amp;nbsp;Usage&amp;nbsp;Percentage:&amp;nbsp;48.8%&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>rocky#linux#리눅스#resource#cpu#gpu#disk#리소스</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/214</guid>
      <comments>https://yongeekd01.tistory.com/214#entry214comment</comments>
      <pubDate>Fri, 8 Nov 2024 16:05:51 +0900</pubDate>
    </item>
    <item>
      <title>을지로 힙지로 디저트 카페 공간갑(gong gan gab) 푸딩빙수</title>
      <link>https://yongeekd01.tistory.com/213</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;달달한게 땡길땐 을지로3가 공간갑을 찾아보세요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예쁘고 맛있는 다양한 디저트가 준비되어 있습니다. ㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 공간갑의 신상!!! 푸딩 빙수를 맛보러 갔습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 공간갑 위치&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위치는 찾기 어렵지 않습니다. 큰길쪽에서 바로 보이거든요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://naver.me/5iziIoPy&quot;&gt;https://naver.me/5iziIoPy&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1730706713347&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;공간갑 : 네이버 &quot; data-og-description=&quot;방문자리뷰 1,923 &amp;middot; 블로그리뷰 2,876&quot; data-og-host=&quot;m.place.naver.com&quot; data-og-source-url=&quot;https://naver.me/5iziIoPy&quot; data-og-url=&quot;https://m.place.naver.com/restaurant/1053282197/home&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/kv9mm/hyXsPM0TtK/w9ookjcG9SFBsjyCXrm0Gk/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/dSTChF/hyXsWZHJVa/3JSxL69kyehGbULF78RYM1/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/kGiI6/hyXsQZuoiq/9CKsb7WQF5gD15Q2Q0vnJK/img.jpg?width=560&amp;amp;height=560&amp;amp;face=0_0_560_560&quot;&gt;&lt;a href=&quot;https://naver.me/5iziIoPy&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://naver.me/5iziIoPy&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/kv9mm/hyXsPM0TtK/w9ookjcG9SFBsjyCXrm0Gk/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/dSTChF/hyXsWZHJVa/3JSxL69kyehGbULF78RYM1/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/kGiI6/hyXsQZuoiq/9CKsb7WQF5gD15Q2Q0vnJK/img.jpg?width=560&amp;amp;height=560&amp;amp;face=0_0_560_560');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;공간갑 : 네이버 &lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;방문자리뷰 1,923 &amp;middot; 블로그리뷰 2,876&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;m.place.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;455&quot; data-origin-height=&quot;344&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HKEJS/btsKwxyj2iu/wStzHXhibEnZS8ouSpGa8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HKEJS/btsKwxyj2iu/wStzHXhibEnZS8ouSpGa8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HKEJS/btsKwxyj2iu/wStzHXhibEnZS8ouSpGa8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHKEJS%2FbtsKwxyj2iu%2FwStzHXhibEnZS8ouSpGa8k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;455&quot; height=&quot;344&quot; data-origin-width=&quot;455&quot; data-origin-height=&quot;344&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 외관 둘러보기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카페의 외관도 멋집니다. 쏙 들어가고 싶게 꾸며 놓았어요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2층으로 올라가는 계단이 바로 옆에 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYBTTS/btsKwMB09sL/I8avTtg30T86KZmBZOBgdK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYBTTS/btsKwMB09sL/I8avTtg30T86KZmBZOBgdK/img.jpg&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20241104_141947518.jpg&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYBTTS/btsKwMB09sL/I8avTtg30T86KZmBZOBgdK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYBTTS%2FbtsKwMB09sL%2FI8avTtg30T86KZmBZOBgdK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eoIjUE/btsKvDTPNQs/YYkTQrqic6zLFMxus1bUt0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eoIjUE/btsKvDTPNQs/YYkTQrqic6zLFMxus1bUt0/img.jpg&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20241104_141947518_01.jpg&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eoIjUE/btsKvDTPNQs/YYkTQrqic6zLFMxus1bUt0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeoIjUE%2FbtsKvDTPNQs%2FYYkTQrqic6zLFMxus1bUt0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EoSVr/btsKvdA9PzX/a5bxpV1XUVJ7KLDtCka7K0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EoSVr/btsKvdA9PzX/a5bxpV1XUVJ7KLDtCka7K0/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot; data-filename=&quot;KakaoTalk_20241104_141947518_06.jpg&quot; width=&quot;363&quot; height=&quot;645&quot; style=&quot;width: 32.5581%;&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EoSVr/btsKvdA9PzX/a5bxpV1XUVJ7KLDtCka7K0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEoSVr%2FbtsKvdA9PzX%2Fa5bxpV1XUVJ7KLDtCka7K0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20241104_141947518_02.jpg&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cE07mL/btsKwAPd8hY/gxGP8F5gSdLlYMdjjzPSbk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cE07mL/btsKwAPd8hY/gxGP8F5gSdLlYMdjjzPSbk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cE07mL/btsKwAPd8hY/gxGP8F5gSdLlYMdjjzPSbk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcE07mL%2FbtsKwAPd8hY%2FgxGP8F5gSdLlYMdjjzPSbk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot; data-filename=&quot;KakaoTalk_20241104_141947518_02.jpg&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1층 인테리어와 주문하는 곳을 둘러볼까요?&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OXaym/btsKvXdkowA/j7Qj7fNgiGX2vVdtbXLR7K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OXaym/btsKvXdkowA/j7Qj7fNgiGX2vVdtbXLR7K/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-filename=&quot;KakaoTalk_20241104_141947518_03.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OXaym/btsKvXdkowA/j7Qj7fNgiGX2vVdtbXLR7K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOXaym%2FbtsKvXdkowA%2Fj7Qj7fNgiGX2vVdtbXLR7K%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UdZer/btsKvXYHjtF/neE23VWArSg1MrUqlA7NgK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UdZer/btsKvXYHjtF/neE23VWArSg1MrUqlA7NgK/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-filename=&quot;KakaoTalk_20241104_141947518_05.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UdZer/btsKvXYHjtF/neE23VWArSg1MrUqlA7NgK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUdZer%2FbtsKvXYHjtF%2FneE23VWArSg1MrUqlA7NgK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20241104_141947518_04.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cU9Szj/btsKwsKGmtl/7wmPayPKm0wvrm6xUE0FT0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cU9Szj/btsKwsKGmtl/7wmPayPKm0wvrm6xUE0FT0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cU9Szj/btsKwsKGmtl/7wmPayPKm0wvrm6xUE0FT0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcU9Szj%2FbtsKwsKGmtl%2F7wmPayPKm0wvrm6xUE0FT0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20241104_141947518_04.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;저는 오늘 공간갑의 최애템인 푸딩 빙수와 라테를 주문해서 2층으로 올라갔습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;약간 터프한 인테리어. 요즘 유행이죠.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnuk22/btsKuVHrH8g/eLDyB2RhU83eL1wGq21G6k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnuk22/btsKuVHrH8g/eLDyB2RhU83eL1wGq21G6k/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-filename=&quot;KakaoTalk_20241104_141947518_07.jpg&quot; style=&quot;width: 55.9177%; margin-right: 10px;&quot; data-widthpercent=&quot;56.58&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnuk22/btsKuVHrH8g/eLDyB2RhU83eL1wGq21G6k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcnuk22%2FbtsKuVHrH8g%2FeLDyB2RhU83eL1wGq21G6k%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBf8mq/btsKwmX4Zr0/adCX0QeSkYGh7CktPHarC1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBf8mq/btsKwmX4Zr0/adCX0QeSkYGh7CktPHarC1/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;928&quot; data-origin-height=&quot;680&quot; data-filename=&quot;KakaoTalk_20241104_141947518_08.jpg&quot; style=&quot;width: 42.9195%;&quot; data-widthpercent=&quot;43.42&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBf8mq/btsKwmX4Zr0/adCX0QeSkYGh7CktPHarC1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBf8mq%2FbtsKwmX4Zr0%2FadCX0QeSkYGh7CktPHarC1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;928&quot; height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 맛보기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요거 요거.. 요물입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정신이 번쩍드는 단맛!! 찰랑거리는 푸딩의 식감과 빙수의 조화!!&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w0HiV/btsKuHJpDi8/1BpqJPs96DpEv2LP9k50Vk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w0HiV/btsKuHJpDi8/1BpqJPs96DpEv2LP9k50Vk/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1210&quot; data-origin-height=&quot;680&quot; data-filename=&quot;KakaoTalk_20241104_141947518_14.jpg&quot; style=&quot;width: 75.1142%; margin-right: 10px;&quot; data-widthpercent=&quot;76&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w0HiV/btsKuHJpDi8/1BpqJPs96DpEv2LP9k50Vk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw0HiV%2FbtsKuHJpDi8%2F1BpqJPs96DpEv2LP9k50Vk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1210&quot; height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c8Sebw/btsKuzLsIO8/7zMWtKCa7c8zunrOsH6mbk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c8Sebw/btsKuzLsIO8/7zMWtKCa7c8zunrOsH6mbk/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;1210&quot; data-filename=&quot;KakaoTalk_20241104_141947518_10.jpg&quot; style=&quot;width: 23.723%;&quot; data-widthpercent=&quot;24&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c8Sebw/btsKuzLsIO8/7zMWtKCa7c8zunrOsH6mbk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc8Sebw%2FbtsKuzLsIO8%2F7zMWtKCa7c8zunrOsH6mbk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;680&quot; height=&quot;1210&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기회가 된다면 꼭 방문해보세요&lt;/p&gt;</description>
      <category>이것저것</category>
      <category>공간갑#을지로#힙지로#디저트카페#푸딩빙수</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/213</guid>
      <comments>https://yongeekd01.tistory.com/213#entry213comment</comments>
      <pubDate>Mon, 4 Nov 2024 17:05:52 +0900</pubDate>
    </item>
    <item>
      <title>익선동 분위기, 테라스가 있는 수제맥주집 Hang out, 행아웃 둘러보기</title>
      <link>https://yongeekd01.tistory.com/212</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;핫한 익선동 골목길은 모두 알고 계시지요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 익선동에서 분위기 좋은 수제 맥주집 Hang out, 행아뭇을 소개합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 사악 들어가서 맥주만 한잔 마시면서 지나가는 사람들 구경도 하고 분위기를 즐기기에 좋지요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안주도 필요 없습니다. ^^&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 행아웃(Hang out) 위치&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 위치를 한번에 찾기는 익선동 모든 가게들이 다 어렵.. ㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://naver.me/F6mxzPs2&quot;&gt;https://naver.me/F6mxzPs2&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1730705547321&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;행아웃 : 네이버 &quot; data-og-description=&quot;방문자리뷰 631 &amp;middot; 블로그리뷰 339&quot; data-og-host=&quot;m.place.naver.com&quot; data-og-source-url=&quot;https://naver.me/F6mxzPs2&quot; data-og-url=&quot;https://m.place.naver.com/restaurant/1651691942/home&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/U2VbZ/hyXsT9HQeF/JcOK4c9BwTu4ae244QsKWk/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/bmHwAg/hyXsTaOqCB/JwHbDY7XgpcQSUz7lnmn00/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/IPjcn/hyXs4QW9uT/DKQrZbfiUm4VmPU15hAWFK/img.jpg?width=560&amp;amp;height=420&amp;amp;face=0_0_560_420&quot;&gt;&lt;a href=&quot;https://naver.me/F6mxzPs2&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://naver.me/F6mxzPs2&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/U2VbZ/hyXsT9HQeF/JcOK4c9BwTu4ae244QsKWk/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/bmHwAg/hyXsTaOqCB/JwHbDY7XgpcQSUz7lnmn00/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/IPjcn/hyXs4QW9uT/DKQrZbfiUm4VmPU15hAWFK/img.jpg?width=560&amp;amp;height=420&amp;amp;face=0_0_560_420');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;행아웃 : 네이버 &lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;방문자리뷰 631 &amp;middot; 블로그리뷰 339&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;m.place.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;415&quot; data-origin-height=&quot;337&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/446Ja/btsKwihd7CF/cMYZz74HWfNrfZPrJCGhF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/446Ja/btsKwihd7CF/cMYZz74HWfNrfZPrJCGhF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/446Ja/btsKwihd7CF/cMYZz74HWfNrfZPrJCGhF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F446Ja%2FbtsKwihd7CF%2FcMYZz74HWfNrfZPrJCGhF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;415&quot; height=&quot;337&quot; data-origin-width=&quot;415&quot; data-origin-height=&quot;337&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 행아웃 둘러보기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한옥을 멋지게 개조한 가게라 분위기가 참 좋습니다. 바로 앞에 테라스로 꾸며놓은 것도 맘에 들고요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 일단 맥주 맛도 좋아야죠? ^^&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oNyHl/btsKvoh6vSn/bFu26gcmmHzeXFjG6UVq61/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oNyHl/btsKvoh6vSn/bFu26gcmmHzeXFjG6UVq61/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;1152&quot; data-filename=&quot;KakaoTalk_20241104_142018922_07.jpg&quot; data-widthpercent=&quot;24.03&quot; style=&quot;width: 23.7538%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oNyHl/btsKvoh6vSn/bFu26gcmmHzeXFjG6UVq61/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoNyHl%2FbtsKvoh6vSn%2FbFu26gcmmHzeXFjG6UVq61%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;648&quot; height=&quot;1152&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CCzu4/btsKvJlW5eq/sDWGOtnOQ7b4JBJPkneyKk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CCzu4/btsKvJlW5eq/sDWGOtnOQ7b4JBJPkneyKk/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20241104_142018922_13.jpg&quot; style=&quot;width: 75.0834%;&quot; data-widthpercent=&quot;75.97&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CCzu4/btsKvJlW5eq/sDWGOtnOQ7b4JBJPkneyKk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCCzu4%2FbtsKvJlW5eq%2FsDWGOtnOQ7b4JBJPkneyKk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안밖에서 바라본 풍경입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3meyT/btsKuVgi4Bv/SDtezo50pYExwuHXhQlFTK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3meyT/btsKuVgi4Bv/SDtezo50pYExwuHXhQlFTK/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20241104_142018922_10.jpg&quot; style=&quot;width: 75.0834%; margin-right: 10px;&quot; data-widthpercent=&quot;75.97&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3meyT/btsKuVgi4Bv/SDtezo50pYExwuHXhQlFTK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3meyT%2FbtsKuVgi4Bv%2FSDtezo50pYExwuHXhQlFTK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/doe8qv/btsKw0NCIWR/Ac8H3sTRhEsYYX2kxoSTmk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/doe8qv/btsKw0NCIWR/Ac8H3sTRhEsYYX2kxoSTmk/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;1152&quot; data-filename=&quot;KakaoTalk_20241104_142018922_06.jpg&quot; style=&quot;width: 23.7538%;&quot; data-widthpercent=&quot;24.03&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/doe8qv/btsKw0NCIWR/Ac8H3sTRhEsYYX2kxoSTmk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdoe8qv%2FbtsKw0NCIWR%2FAc8H3sTRhEsYYX2kxoSTmk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;648&quot; height=&quot;1152&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내부 인터리어도 이국적이고 좋네요&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Iyjzj/btsKvI1Byox/KZTgW7u5bzny36kbcbJRJ0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Iyjzj/btsKvI1Byox/KZTgW7u5bzny36kbcbJRJ0/img.jpg&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20241104_142018922.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Iyjzj/btsKvI1Byox/KZTgW7u5bzny36kbcbJRJ0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIyjzj%2FbtsKvI1Byox%2FKZTgW7u5bzny36kbcbJRJ0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bziKuU/btsKvZa7JDc/8FhYRdWQF0ICCIomPlBU51/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bziKuU/btsKvZa7JDc/8FhYRdWQF0ICCIomPlBU51/img.jpg&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20241104_142018922_02.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bziKuU/btsKvZa7JDc/8FhYRdWQF0ICCIomPlBU51/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbziKuU%2FbtsKvZa7JDc%2F8FhYRdWQF0ICCIomPlBU51%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dpsc3v/btsKux1aAuR/MLrSELY54kWMiDa76nCFhk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dpsc3v/btsKux1aAuR/MLrSELY54kWMiDa76nCFhk/img.jpg&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20241104_142018922_03.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dpsc3v/btsKux1aAuR/MLrSELY54kWMiDa76nCFhk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdpsc3v%2FbtsKux1aAuR%2FMLrSELY54kWMiDa76nCFhk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GLwH7/btsKvKE8ST4/zxXU7Oaa2zmHKz9YzroaJ1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GLwH7/btsKvKE8ST4/zxXU7Oaa2zmHKz9YzroaJ1/img.jpg&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20241104_142018922_04.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GLwH7/btsKvKE8ST4/zxXU7Oaa2zmHKz9YzroaJ1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGLwH7%2FbtsKvKE8ST4%2FzxXU7Oaa2zmHKz9YzroaJ1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9SZZz/btsKuV8uxuQ/fGijgsK3M8QwscskakqIrK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9SZZz/btsKuV8uxuQ/fGijgsK3M8QwscskakqIrK/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20241104_142018922_05.jpg&quot; style=&quot;width: 75.0858%; margin-right: 10px;&quot; data-widthpercent=&quot;75.97&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9SZZz/btsKuV8uxuQ/fGijgsK3M8QwscskakqIrK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9SZZz%2FbtsKuV8uxuQ%2FfGijgsK3M8QwscskakqIrK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A1TMN/btsKvJ0zQsJ/0XN7qYJxFohhI6kdQaLkwK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A1TMN/btsKvJ0zQsJ/0XN7qYJxFohhI6kdQaLkwK/img.jpg&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20241104_142018922_11.jpg&quot; style=&quot;width: 23.7514%;&quot; data-widthpercent=&quot;24.03&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A1TMN/btsKvJ0zQsJ/0XN7qYJxFohhI6kdQaLkwK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA1TMN%2FbtsKvJ0zQsJ%2F0XN7qYJxFohhI6kdQaLkwK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 맥주 종류별로 쫙~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20241104_142018922_01.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SS8HT/btsKwtpg44H/akgKJT2Kxa4m2Fra5gmRlk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SS8HT/btsKwtpg44H/akgKJT2Kxa4m2Fra5gmRlk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SS8HT/btsKwtpg44H/akgKJT2Kxa4m2Fra5gmRlk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSS8HT%2FbtsKwtpg44H%2FakgKJT2Kxa4m2Fra5gmRlk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20241104_142018922_01.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VX8J9/btsKuQMWZOJ/ciBGC4TYUmfUUYh0tjJpOk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VX8J9/btsKuQMWZOJ/ciBGC4TYUmfUUYh0tjJpOk/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;1210&quot; data-filename=&quot;KakaoTalk_20241104_142018922_08.jpg&quot; style=&quot;width: 49.3991%; margin-right: 10px;&quot; data-widthpercent=&quot;49.98&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VX8J9/btsKuQMWZOJ/ciBGC4TYUmfUUYh0tjJpOk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVX8J9%2FbtsKuQMWZOJ%2FciBGC4TYUmfUUYh0tjJpOk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;680&quot; height=&quot;1210&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxs8rK/btsKvLKO8U8/eLSgk59MKxQ7gDWFz5wkHK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxs8rK/btsKvLKO8U8/eLSgk59MKxQ7gDWFz5wkHK/img.jpg&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20241104_142018922_09.jpg&quot; style=&quot;width: 49.4381%;&quot; data-widthpercent=&quot;50.02&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxs8rK/btsKvLKO8U8/eLSgk59MKxQ7gDWFz5wkHK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbxs8rK%2FbtsKvLKO8U8%2FeLSgk59MKxQ7gDWFz5wkHK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;익선동을 돌아다니다가 잠시 목을 축이기에 너무 좋습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한번 방문해보세요. ^^&lt;/p&gt;</description>
      <category>이것저것</category>
      <category>익선동#수제맥주#분위기#행아웃#hangout#한옥마을</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/212</guid>
      <comments>https://yongeekd01.tistory.com/212#entry212comment</comments>
      <pubDate>Mon, 4 Nov 2024 16:45:16 +0900</pubDate>
    </item>
    <item>
      <title>평양냉면 맛집 을지로 우래옥 둘러보기</title>
      <link>https://yongeekd01.tistory.com/211</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은&amp;nbsp;평양냉면으로&amp;nbsp;유명한&amp;nbsp;우래옥을&amp;nbsp;방문했었습니다.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;일요일&amp;nbsp;오후였지만&amp;nbsp;여전히&amp;nbsp;엄청난&amp;nbsp;대기줄이&amp;nbsp;있었습니다.&amp;nbsp;ㅋ &lt;br /&gt;하지만&amp;nbsp;꿋꿋하게&amp;nbsp;기다려서&amp;nbsp;맛을&amp;nbsp;보고&amp;nbsp;왔지요.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;우래옥의&amp;nbsp;평양냉면은&amp;nbsp;꿩,&amp;nbsp;닭&amp;nbsp;육수와는&amp;nbsp;달리,&amp;nbsp;우래옥&amp;nbsp;육수는&amp;nbsp;묵직한&amp;nbsp;소고기&amp;nbsp;육수라고&amp;nbsp;하네요.&amp;nbsp; &lt;br /&gt;냉면치고는&amp;nbsp;싸지않은&amp;nbsp;가격이죠.&amp;nbsp;16000원&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 우래옥 위치&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우래옥은 을지로 4가역에서 5분거리에 위치하고 있습니다. 종로5가 역에서도 멀지 않지요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://naver.me/GBflfYOR&quot;&gt;https://naver.me/GBflfYOR&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1730704240189&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;우래옥 : 네이버 &quot; data-og-description=&quot;방문자리뷰 9,223 &amp;middot; 블로그리뷰 7,500&quot; data-og-host=&quot;m.place.naver.com&quot; data-og-source-url=&quot;https://naver.me/GBflfYOR&quot; data-og-url=&quot;https://m.place.naver.com/restaurant/11679381/home&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dqAreR/hyXsXxvzAO/ffvmmZSXvaNVR2RdDyvdVk/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/bFkiI6/hyXsVT0QHE/3k5bJL0kxi9nZ4qKOj3UH0/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/f5390/hyXsSwcZAq/kjdefBAyjxcAua6b4VRKK1/img.jpg?width=500&amp;amp;height=375&amp;amp;face=0_0_500_375&quot;&gt;&lt;a href=&quot;https://naver.me/GBflfYOR&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://naver.me/GBflfYOR&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dqAreR/hyXsXxvzAO/ffvmmZSXvaNVR2RdDyvdVk/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/bFkiI6/hyXsVT0QHE/3k5bJL0kxi9nZ4qKOj3UH0/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/f5390/hyXsSwcZAq/kjdefBAyjxcAua6b4VRKK1/img.jpg?width=500&amp;amp;height=375&amp;amp;face=0_0_500_375');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;우래옥 : 네이버 &lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;방문자리뷰 9,223 &amp;middot; 블로그리뷰 7,500&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;m.place.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;349&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9cXn2/btsKwqTxENf/WIzojRsarpD1FDeNRs8GNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9cXn2/btsKwqTxENf/WIzojRsarpD1FDeNRs8GNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9cXn2/btsKwqTxENf/WIzojRsarpD1FDeNRs8GNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9cXn2%2FbtsKwqTxENf%2FWIzojRsarpD1FDeNRs8GNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;642&quot; height=&quot;349&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;349&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 외관 둘러보기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;워낙에 많은 사람들이 찾다보니 그 좁은 종로바닥에서도 커다란 전용 주차장을 운영하고 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ciyjgg/btsKuuXFVlF/6GnfpWw2EAGRK8NUkys8Z0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ciyjgg/btsKuuXFVlF/6GnfpWw2EAGRK8NUkys8Z0/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-filename=&quot;KakaoTalk_20241104_142040703_09.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ciyjgg/btsKuuXFVlF/6GnfpWw2EAGRK8NUkys8Z0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fciyjgg%2FbtsKuuXFVlF%2F6GnfpWw2EAGRK8NUkys8Z0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kRPvM/btsKwZ8Ys8e/TJr6M20snvxwu838iREbv1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kRPvM/btsKwZ8Ys8e/TJr6M20snvxwu838iREbv1/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20241104_142040703_10.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kRPvM/btsKwZ8Ys8e/TJr6M20snvxwu838iREbv1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkRPvM%2FbtsKwZ8Ys8e%2FTJr6M20snvxwu838iREbv1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주차장 맞은편에 뚜둥. 우래옥 본관이 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HCyLU/btsKwj8dw72/8r3epTzL6kIKTP98swD9Fk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HCyLU/btsKwj8dw72/8r3epTzL6kIKTP98swD9Fk/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20241104_142040703_07.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HCyLU/btsKwj8dw72/8r3epTzL6kIKTP98swD9Fk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHCyLU%2FbtsKwj8dw72%2F8r3epTzL6kIKTP98swD9Fk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceTJa1/btsKvWk7m0X/pSBgdk1zwxSKN5ccpf2jh1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceTJa1/btsKvWk7m0X/pSBgdk1zwxSKN5ccpf2jh1/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20241104_142040703_08.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceTJa1/btsKvWk7m0X/pSBgdk1zwxSKN5ccpf2jh1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceTJa1%2FbtsKvWk7m0X%2FpSBgdk1zwxSKN5ccpf2jh1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주차장쪽에도 본관 옆에도 대기하는 사람들을 위한 공간이 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엄청 많네요.&amp;nbsp; 테이블링 어플과 연계해서 대기를 등록하면 카톡으로 대기 현황을 실시간으로 확인할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJEFmE/btsKuInUqfY/maHlujERsyciSUu1YHYGu0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJEFmE/btsKuInUqfY/maHlujERsyciSUu1YHYGu0/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot; data-filename=&quot;KakaoTalk_20241104_142040703_06.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJEFmE/btsKuInUqfY/maHlujERsyciSUu1YHYGu0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJEFmE%2FbtsKuInUqfY%2FmaHlujERsyciSUu1YHYGu0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zSrQI/btsKvZ3d6Jh/RLpLufzyxo6oHhyeR4IHXK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zSrQI/btsKvZ3d6Jh/RLpLufzyxo6oHhyeR4IHXK/img.jpg&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20241104_142040703_05.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zSrQI/btsKvZ3d6Jh/RLpLufzyxo6oHhyeR4IHXK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzSrQI%2FbtsKvZ3d6Jh%2FRLpLufzyxo6oHhyeR4IHXK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 40 테이블 쯤 기다려서 3,40분 만에 들어간것 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 내부 둘러보기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내부는 상당히 넓습니다. 2층도 있고요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;밖의 복작거리는 분위기와 다르게 쾌적합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s2WtE/btsKvG3T1vW/p8me1sR3ij1lCYYFgzxQM0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s2WtE/btsKvG3T1vW/p8me1sR3ij1lCYYFgzxQM0/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-filename=&quot;KakaoTalk_20241104_142040703_03.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s2WtE/btsKvG3T1vW/p8me1sR3ij1lCYYFgzxQM0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs2WtE%2FbtsKvG3T1vW%2Fp8me1sR3ij1lCYYFgzxQM0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/db2Air/btsKvKZn1FZ/UjNiLbfzkAJ58xRR6ciMrK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/db2Air/btsKvKZn1FZ/UjNiLbfzkAJ58xRR6ciMrK/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-filename=&quot;KakaoTalk_20241104_142040703_04.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/db2Air/btsKvKZn1FZ/UjNiLbfzkAJ58xRR6ciMrK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdb2Air%2FbtsKvKZn1FZ%2FUjNiLbfzkAJ58xRR6ciMrK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 맛보기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아주 심플 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 면을 끓인 심심한 면수를 한컵씩 주고 반찬도 겉저리 1개 뿐입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭐 냉면이 맛있으면 되지요. ㅋ&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;평양냉면은 여러군데서 먹어봤지만 사실 조금씩 다 다릅니다. 어떤곳은 그냥 밍밍한 맛이라 굳이 이걸 이돈에? 할 때도 있었는데 우래옥 평양냉면은 꽤 국물이 진합니다. 간도 잘 되어 있고요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고기도 두툼하게 썰어져서 식감도 좋습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블에 식초와 겨자도 있긴하지만 그대로의 맛이 더 좋은것 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/F66kM/btsKvMiCVmk/DKSEQgIIjBl45wFe2WK4zK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/F66kM/btsKvMiCVmk/DKSEQgIIjBl45wFe2WK4zK/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;1210&quot; data-filename=&quot;KakaoTalk_20241104_142040703_02.jpg&quot; data-widthpercent=&quot;24&quot; style=&quot;width: 23.723%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/F66kM/btsKvMiCVmk/DKSEQgIIjBl45wFe2WK4zK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FF66kM%2FbtsKvMiCVmk%2FDKSEQgIIjBl45wFe2WK4zK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;680&quot; height=&quot;1210&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7A9kz/btsKvEE0aEt/SWKc8kjGW578gmtZS9p3A1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7A9kz/btsKvEE0aEt/SWKc8kjGW578gmtZS9p3A1/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1210&quot; data-origin-height=&quot;680&quot; data-filename=&quot;KakaoTalk_20241104_142040703.jpg&quot; style=&quot;width: 75.1142%;&quot; data-widthpercent=&quot;76&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7A9kz/btsKvEE0aEt/SWKc8kjGW578gmtZS9p3A1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7A9kz%2FbtsKvEE0aEt%2FSWKc8kjGW578gmtZS9p3A1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1210&quot; height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;긴 웨이팅이었지만 저는 다시 가보고 싶네요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아주 맛있습니다. ~~&amp;nbsp;&lt;/p&gt;</description>
      <category>이것저것</category>
      <category>평양냉면#을지로맛집#우래옥</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/211</guid>
      <comments>https://yongeekd01.tistory.com/211#entry211comment</comments>
      <pubDate>Mon, 4 Nov 2024 16:20:50 +0900</pubDate>
    </item>
    <item>
      <title>vscode에서 break point가 동작하지 않을때 해결</title>
      <link>https://yongeekd01.tistory.com/210</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;vscode에서 break point를 지정해도 run 시 disable 되어 버리는 경우가 있습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이런 경우 &lt;/span&gt;&lt;span&gt;&lt;span&gt;debugpy &lt;/span&gt;모듈이 설치되지 않았거나 올바르게 설치되지 않았을 가능성이 있습니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;1. debugpy&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;설치&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;pip install debugpy&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;2. launch.json 파일 수정&amp;nbsp;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &quot;version&quot;: &quot;0.2.0&quot;,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &quot;configurations&quot;: [ &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;name&quot;: &quot;Python &lt;/span&gt;&lt;span&gt;디버거&lt;span&gt;: &lt;/span&gt;현재 파일&lt;span&gt;&quot;,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;type&quot;: &quot;python&quot;,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;request&quot;: &quot;launch&quot;,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;program&quot;: &quot;${file}&quot;,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;console&quot;: &quot;integratedTerminal&quot;,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;justMyCode&quot;: false,&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;3. extension 설치&amp;nbsp;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;151&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQxZdW/btsJifFlbgI/AyXTnY1arBz6lAcfrbEkmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQxZdW/btsJifFlbgI/AyXTnY1arBz6lAcfrbEkmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQxZdW/btsJifFlbgI/AyXTnY1arBz6lAcfrbEkmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQxZdW%2FbtsJifFlbgI%2FAyXTnY1arBz6lAcfrbEkmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;618&quot; height=&quot;151&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;151&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 하면 대부분 해결이 됩니다&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>vscode</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/210</guid>
      <comments>https://yongeekd01.tistory.com/210#entry210comment</comments>
      <pubDate>Tue, 27 Aug 2024 16:47:43 +0900</pubDate>
    </item>
    <item>
      <title>리눅스에서 tar로 묶은 파일을 윈도우 파워쉘에서 압축 해제 시 한글 깨지는 문제 해결</title>
      <link>https://yongeekd01.tistory.com/209</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스에서 tar로 묶은 파일을 Windows PowerShell에서 압축 해제할 때 한글 파일명이 깨지는 문제는 주로 인코딩 차이로 인해 발생합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스 시스템에서 tar로 파일을 묶을 때, 기본적으로 UTF-8 인코딩이 사용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 Windows에서는 기본적으로 CP949 (또는 EUC-KR) 인코딩을 사용하기 때문에, 인코딩 불일치로 인해 한글 파일명이 깨질 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것을 해결하려고 파워쉘에 다음 옵션을 주어도 해결되지 않았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$OutputEncoding&amp;nbsp;=&amp;nbsp;[System.Text.Encoding]::UTF8&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제일 간단한 방법은 그냥 7-zip을 사용해서 tar를 풀면 인코딩 문제가 자동으로 해결됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7-Zip은 다양한 인코딩 옵션을 지원하며, 한글 파일명 문제를 해결하는 데 유용합니다!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.7-zip.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.7-zip.org/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1724307912996&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;7-Zip&quot; data-og-description=&quot;7-Zip 7-Zip is a file archiver with a high compression ratio. Download 7-Zip 24.08 (2024-08-11) for Windows x64 (64-bit): Link Type Windows Size Download .exe 64-bit x64 1.6 MB Download 7-Zip 24.08 for another Windows platforms (32-bit x86 or ARM64): Link &quot; data-og-host=&quot;www.7-zip.org&quot; data-og-source-url=&quot;https://www.7-zip.org/&quot; data-og-url=&quot;https://www.7-zip.org/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.7-zip.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.7-zip.org/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;7-Zip&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;7-Zip 7-Zip is a file archiver with a high compression ratio. Download 7-Zip 24.08 (2024-08-11) for Windows x64 (64-bit): Link Type Windows Size Download .exe 64-bit x64 1.6 MB Download 7-Zip 24.08 for another Windows platforms (32-bit x86 or ARM64): Link&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.7-zip.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다운로드 설치 후 설치위치가 시스템패스에 설정되어 있다면 다음과 같이 풀면 되고&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7z x -o &amp;lt;출력경로&amp;gt; &amp;lt;압축파일.tar&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아니면 그냥 탐색기에서 클릭해서 풀어버려도 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/리눅스</category>
      <category>7-zip#한글깨짐#리눅스</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/209</guid>
      <comments>https://yongeekd01.tistory.com/209#entry209comment</comments>
      <pubDate>Thu, 22 Aug 2024 15:27:43 +0900</pubDate>
    </item>
    <item>
      <title>LLM 환각(Hallucination)에 대한 모델 평가(갈릴레오AI 벤치마크, 클로드, GPT, 큐원, 제미나이 등)</title>
      <link>https://yongeekd01.tistory.com/208</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;LLM 평가 프레임 워크를 제공하는 갈릴레오 AI 에서 현존 최고 LLM들의 할루미네이션 평가를 진행해서 순위를 발표했습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 평가는 작년 11월에도 있었는데요. 그때는 Open AI의 Chat GPT 4가 휩쓸었었죠.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 평가에서는 순위가 뒤바뀐것들이 많았습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;벤치마크의 기준은 다음과 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt; &lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;&quot;새로운 지수는 22개의 주요 모델이 주어진 컨텍스트에 얼마나 잘 부합하는지를 평가하여 개발자가 가격과 성능의 균형을 맞출 때 정보에 입각한 결정을 내릴 수 있도록 지원합니다. 저희는 1,000~100,000개의 토큰을 입력한 상위 LLM을 대상으로 엄격한 테스트를 실시하여 짧은, 중간, 긴 컨텍스트 길이에서 얼마나 잘 작동하는지에 대한 질문에 답했습니다.&quot;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;다음 3가지로 컨텍스트 길이가 다른 세 가지 시나리오로 시험을 진행했다고 합니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sNhQn/btsIR2gCkE3/fRgEuzdzIptvlE9GiCfXy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sNhQn/btsIR2gCkE3/fRgEuzdzIptvlE9GiCfXy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sNhQn/btsIR2gCkE3/fRgEuzdzIptvlE9GiCfXy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsNhQn%2FbtsIR2gCkE3%2FfRgEuzdzIptvlE9GiCfXy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;525&quot; height=&quot;352&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;352&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;RAG 애플리케이션을 위한 인기 모델&lt;/span&gt; 종합 우승자 순위를 보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1159&quot; data-origin-height=&quot;418&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmaPEf/btsITE6GPft/NYATfKbRy7Qfn7EWJQXVV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmaPEf/btsITE6GPft/NYATfKbRy7Qfn7EWJQXVV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmaPEf/btsITE6GPft/NYATfKbRy7Qfn7EWJQXVV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmaPEf%2FbtsITE6GPft%2FNYATfKbRy7Qfn7EWJQXVV1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1159&quot; height=&quot;418&quot; data-origin-width=&quot;1159&quot; data-origin-height=&quot;418&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;(1) 최고의 성능 모델로는 Claude 3.5 sunnet&amp;nbsp; 선정&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;&amp;nbsp; &lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;Sonnet은 짧은, 중간, 긴 컨텍스트 윈도우에서 각각 평균 0.97점, 1.0점, 1.0점을 기록하여 작업 전반에서 탁월한 성능을 발휘했을 뿐만 아니라 최대 20만 개의 컨텍스트 윈도우를 지원하는 모델은 테스트한 것보다 훨씬 큰 데이터 세트도 지원&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;699&quot; data-origin-height=&quot;702&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWBQ7A/btsISMYGHFo/qekIsLkM3JwpSxr8Aa0oU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWBQ7A/btsISMYGHFo/qekIsLkM3JwpSxr8Aa0oU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWBQ7A/btsISMYGHFo/qekIsLkM3JwpSxr8Aa0oU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWBQ7A%2FbtsISMYGHFo%2FqekIsLkM3JwpSxr8Aa0oU1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;491&quot; height=&quot;493&quot; data-origin-width=&quot;699&quot; data-origin-height=&quot;702&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;(2) 가격 대비 최고의 성능 모델은 Gemini 1.5 Flash 선정&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;&amp;nbsp; Gemini 1.5 플래시는 성능과 비용의 균형이 훌륭했습니다. 단기, 중기, 장기 컨텍스트 작업 유형에서 0.94점, 1.0점, 0.92점을 획득했습니다. 다른 모델만큼 강력하지는 않지만 Gemini는 훨씬 적은 비용으로 이를 달성했습니다. 백만 건당 프롬프트 토큰 비용은 플래시의 경우 0.35달러, 소네트의 경우 3달러였습니다. 더욱 극명하게도 백만 건당 응답 토큰 비용은 Flash가 1.05달러인 반면 Sonnet은 15달러였습니다. 대용량 애플리케이션 또는 어느 정도의 오차 범위가 허용되는 사용 사례의 경우, Flash는 훌륭한 선택입니다.&lt;/span&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;671&quot; data-origin-height=&quot;697&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdzFjJ/btsITjPe0p6/dKO2WQjQcenMJn7Q63uXz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdzFjJ/btsITjPe0p6/dKO2WQjQcenMJn7Q63uXz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdzFjJ/btsITjPe0p6/dKO2WQjQcenMJn7Q63uXz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdzFjJ%2FbtsITjPe0p6%2FdKO2WQjQcenMJn7Q63uXz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;487&quot; height=&quot;506&quot; data-origin-width=&quot;671&quot; data-origin-height=&quot;697&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;(3) 최고의 오픈소스 모델은 Qwen2-72B 선정&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;&amp;nbsp;알리바바는 2024년 6월에 Qwen-2 모델 시리즈를 출시했습니다. Qwen2-72b-인스트럭트 모델은 단기 및 중간 컨텍스트 테스트에서 Meta의 Llama-3-70b-인스트럭트 모델과 동등한 성능을 보였습니다. Qwen2가 다른 오픈 소스 모델과 차별화되는 점은 128K 토큰의 컨텍스트 길이를 지원한다는 점입니다. 컨텍스트 길이를 지원하는 오픈 소스 모델 중 두 번째로 큰 모델은 64k 토큰의 컨텍스트 길이를 지원하는 미스트랄의 믹스트랄-8x22b 모델입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;631&quot; data-origin-height=&quot;661&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctDfKv/btsIQMlfrOY/XfU0hbZrPNgVfYZjTeckKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctDfKv/btsIQMlfrOY/XfU0hbZrPNgVfYZjTeckKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctDfKv/btsIQMlfrOY/XfU0hbZrPNgVfYZjTeckKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FctDfKv%2FbtsIQMlfrOY%2FXfU0hbZrPNgVfYZjTeckKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;475&quot; height=&quot;498&quot; data-origin-width=&quot;631&quot; data-origin-height=&quot;661&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1e1e1e; text-align: start;&quot;&gt;테스트는 컨텍스트 크기에 따라 짧은 컨텍스트(5000 토큰 이하)와 중간 컨텍스트(5000~2만5000 토큰), 긴 컨텍스트(4만~10만 토큰) 3종으로 시험을 진행했습니다.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1137&quot; data-origin-height=&quot;785&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgI7cf/btsIRmmjRZh/k4sakNvXPGygBvM6BtQWg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgI7cf/btsIRmmjRZh/k4sakNvXPGygBvM6BtQWg0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgI7cf/btsIRmmjRZh/k4sakNvXPGygBvM6BtQWg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgI7cf%2FbtsIRmmjRZh%2Fk4sakNvXPGygBvM6BtQWg0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1137&quot; height=&quot;785&quot; data-origin-width=&quot;1137&quot; data-origin-height=&quot;785&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1e1e1e; text-align: start;&quot;&gt;그외 시험에&amp;nbsp; 사용된 모델들의&amp;nbsp; 테스트 별 랭크를 보겠습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Short Context RAG (SCR)&lt;/h3&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;- 짧은 컨텍스트 RAG는 최대 5,000개의 토큰까지 컨텍스트를 이해하는 데 가장 효율적인 모델을 식별&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;- 문맥 내에서 정보나 추론 능력의 손실을 감지&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;- 이 방법은 책의 일부 페이지를 참조하는 것과 유사하며, 특히 도메인별 지식이 필요한 작업에 적합&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1218&quot; data-origin-height=&quot;585&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b00vDN/btsISNpIfri/z54pAuBSRe0YYs7rzK4Gk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b00vDN/btsISNpIfri/z54pAuBSRe0YYs7rzK4Gk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b00vDN/btsISNpIfri/z54pAuBSRe0YYs7rzK4Gk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb00vDN%2FbtsISNpIfri%2Fz54pAuBSRe0YYs7rzK4Gk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1218&quot; height=&quot;585&quot; data-origin-width=&quot;1218&quot; data-origin-height=&quot;585&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Medium Context RAG (MCR)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;- 5천 토큰에서 2만 5천 토큰에 이르는 긴 컨텍스트를 이해하는 데 가장 효과적인 모델&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;- 광범위한 컨텍스트 내에서 정보와 추론 능력의 손실을 파악하는 데 중점&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;- 짧은 문맥에서 효과가 있는 연쇄 메모라는 프롬프트 기법을 실험하여 성능을 개선하며 책 몇 장에서 RAG를 수행하는 것과 비슷&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1227&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Hmekm/btsIRUQqEvn/pBBGrkeGHJQedWpdL5feCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Hmekm/btsIRUQqEvn/pBBGrkeGHJQedWpdL5feCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Hmekm/btsIRUQqEvn/pBBGrkeGHJQedWpdL5feCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHmekm%2FbtsIRUQqEvn%2FpBBGrkeGHJQedWpdL5feCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1227&quot; height=&quot;600&quot; data-origin-width=&quot;1227&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Long Context RAG (LCR)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;- 4만 토큰에서 10만 토큰에 이르는 긴 컨텍스트를 이해하는 데 가장 효과적인 모델&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1230&quot; data-origin-height=&quot;584&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R26Kd/btsIRwPMMzz/9E92F7vn0pmNZBN9v1KrX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R26Kd/btsIRwPMMzz/9E92F7vn0pmNZBN9v1KrX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R26Kd/btsIRwPMMzz/9E92F7vn0pmNZBN9v1KrX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR26Kd%2FbtsIRwPMMzz%2F9E92F7vn0pmNZBN9v1KrX0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1230&quot; height=&quot;584&quot; data-origin-width=&quot;1230&quot; data-origin-height=&quot;584&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;결과적으로 Chat GPT-4o는 이번 벤치마크에서 1개도 우승을 차지 하지 못했네요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;곧 ChatGPT-5가 나오지 않을까요?&lt;/span&gt;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>벤치마크#gpt#치claude#qwen#gemini#gemma#llama</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/208</guid>
      <comments>https://yongeekd01.tistory.com/208#entry208comment</comments>
      <pubDate>Thu, 1 Aug 2024 14:09:23 +0900</pubDate>
    </item>
    <item>
      <title>미스트랄 라지2 출시 개요 (Mistral Large 2, Llama 3.1 능가)</title>
      <link>https://yongeekd01.tistory.com/207</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;메타의 라마 3.1&lt;span&gt; 405B 모델 출시 하루만에&amp;nbsp;&lt;/span&gt;&lt;/span&gt;유럽 인공지능(AI) 스타트업 미스트랄 AI가 플래그십 대형언어모델(LLM) '라지(Large)'의 신규 버전을 공개해버렸습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1e1e1e; text-align: start;&quot;&gt;라지 2 모델은 1230억개(123B)의 매개변수로, 12만8000 토큰의 컨텍스트 창을 제공하지만 라마 3.1 중 가장 큰 모델(405B)에 비해 매개변수가 3분의 1도 안 되는 크기라고 합니다. (라고는 해도 무지하게 큰 모델입니다)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1e1e1e; text-align: start;&quot;&gt;하지만 이미지를 이해하거나 입력할 수 있는 멀티모달 기능은&amp;nbsp; Llama 3.1 처럼 제공하지 않습니다.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #1e1e1e; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어찌되었건 간에 초대형 모델들이 마구 쏟아져 나오는군요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;연구 및 비상업적 용도로 사용 및 수정할 수 있는 Mistral Research 라이선스이지만 자체 배포가 필요한 상업적 용도로 미스트랄 라지 2를 사용하려면 미스트랄에 문의하여 미스트랄 상업용 라이선스를 취득해애 한다고 합니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;(1) 코드 및 추론 기능&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;Codestral 22B와 &lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;Codestral&lt;/span&gt; Mamba 대한 경험을 바탕으로 미스트랄 라지 2를 매우 많은 양의 코드로 학습시켰으며 GPT-4o, 클로드 3 오퍼스, 라마 3 405B와 같은 주요 모델과 동등한 성능을 발휘합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;638&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9AGBt/btsIOIB2nSr/Ss1HYBTnKTH8UDKclYtpTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9AGBt/btsIOIB2nSr/Ss1HYBTnKTH8UDKclYtpTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9AGBt/btsIOIB2nSr/Ss1HYBTnKTH8UDKclYtpTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9AGBt%2FbtsIOIB2nSr%2FSs1HYBTnKTH8UDKclYtpTK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;638&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;638&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과를 보니 대부분 2위네요. 역시 GPT-4o는 대단하긴 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1e1e1e; text-align: start;&quot;&gt;코드 생성 벤치마크 휴먼 이밸(HumanEval) 및 휴먼 이밸 플러스를 보니 라지 2는 'GPT-4o'에 이어 2위네요 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #1e1e1e; text-align: start;&quot;&gt;클로드 3.5 소네트와 클로드 3 오퍼스, 라마 3.1은 넘어선 결과입니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;976&quot; data-origin-height=&quot;518&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKQjjr/btsINpjdGvJ/GtK8nupPikO9XPBZxbxNe1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKQjjr/btsINpjdGvJ/GtK8nupPikO9XPBZxbxNe1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKQjjr/btsINpjdGvJ/GtK8nupPikO9XPBZxbxNe1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKQjjr%2FbtsINpjdGvJ%2FGtK8nupPikO9XPBZxbxNe1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;976&quot; height=&quot;518&quot; data-origin-width=&quot;976&quot; data-origin-height=&quot;518&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;(2) 다국어 지원&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;미스트랄 라지 2는 영어, 프랑스어, 독일어, 스페인어, 이탈리아어, 포르투갈어, 네덜란드어, 러시아어, 중국어, 일본어, 한국어, 아랍어, 힌디어에서 뛰어난 성능을 발휘한다고 발표했습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;아래는 이전 미스트랄 라지, 라마 3.1 모델 및 코히어의 커맨드 R+와 비교한 다국어 MMLU 벤치마크에서 미스트랄 라지 2의 성능 결과입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;424&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/44DQY/btsINL0G9cO/Qt48SGxVbHw8tHnm5n7mik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/44DQY/btsINL0G9cO/Qt48SGxVbHw8tHnm5n7mik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/44DQY/btsINL0G9cO/Qt48SGxVbHw8tHnm5n7mik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F44DQY%2FbtsINL0G9cO%2FQt48SGxVbHw8tHnm5n7mik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;632&quot; height=&quot;424&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;424&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;Azure AI Studio, Amazon Bedrock, IBM watsonx.ai에 이어 Vertex AI에서도 Mistral AI의 베스트 모델을 사용할 수 있다고 합니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;675&quot; data-origin-height=&quot;183&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXA4MX/btsIOWz7egH/CNwntiHDzJYs9JBPI8BRPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXA4MX/btsIOWz7egH/CNwntiHDzJYs9JBPI8BRPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXA4MX/btsIOWz7egH/CNwntiHDzJYs9JBPI8BRPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXA4MX%2FbtsIOWz7egH%2FCNwntiHDzJYs9JBPI8BRPK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;675&quot; height=&quot;183&quot; data-origin-width=&quot;675&quot; data-origin-height=&quot;183&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>미스트랄ai#mistral#large2#llama3.1#라마#라지2</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/207</guid>
      <comments>https://yongeekd01.tistory.com/207#entry207comment</comments>
      <pubDate>Fri, 26 Jul 2024 14:28:25 +0900</pubDate>
    </item>
    <item>
      <title>wget 명령어의 모든것(HTTP, HTTPS, FTP 지원, 복수파일, 폴더전체, 이어받기 등등)</title>
      <link>https://yongeekd01.tistory.com/206</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스&amp;nbsp;wget은&amp;nbsp;웹에서&amp;nbsp;파일을&amp;nbsp;다운로드하는&amp;nbsp;데&amp;nbsp;사용되는&amp;nbsp;인기&amp;nbsp;있는&amp;nbsp;명령줄&amp;nbsp;도구입니다.&amp;nbsp;wget은&amp;nbsp;네트워크&amp;nbsp;연결&amp;nbsp;상태와&amp;nbsp;상관없이&amp;nbsp;안정적으로&amp;nbsp;파일을&amp;nbsp;다운로드할&amp;nbsp;수&amp;nbsp;있으며,&amp;nbsp;다양한&amp;nbsp;프로토콜(HTTP,&amp;nbsp;HTTPS,&amp;nbsp;FTP)을&amp;nbsp;지원합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 기본 다운로드&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;wget&amp;nbsp;&lt;a href=&quot;http://example.com/file.zip&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://example.com/file.zip&lt;/a&gt;&lt;br /&gt;이&amp;nbsp;명령은&amp;nbsp;&lt;a href=&quot;http://example.com/file.zip&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://example.com/file.zip&lt;/a&gt;&amp;nbsp;파일을&amp;nbsp;현재&amp;nbsp;디렉토리로&amp;nbsp;다운로드합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;2. 파일 이름 지정하여 다운로드&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;wget&amp;nbsp;-O&amp;nbsp;newfile.zip&amp;nbsp;&lt;a href=&quot;http://example.com/file.zip&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://example.com/file.zip&lt;/a&gt;&lt;br /&gt;다운로드한&amp;nbsp;파일의&amp;nbsp;이름을&amp;nbsp;newfile.zip으로&amp;nbsp;지정하여&amp;nbsp;저장합니다. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. 백그라운드 다운로드&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;wget&amp;nbsp;-b&amp;nbsp;&lt;a href=&quot;http://example.com/file.zip&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://example.com/file.zip&lt;/a&gt;&lt;br /&gt;파일을&amp;nbsp;백그라운드에서&amp;nbsp;다운로드합니다.&amp;nbsp;백그라운드&amp;nbsp;다운로드&amp;nbsp;로그는&amp;nbsp;wget-log&amp;nbsp;파일에&amp;nbsp;기록됩니다. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;4. 재시도 횟수 지정&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;wget&amp;nbsp;--tries=10&amp;nbsp;&lt;a href=&quot;http://example.com/file.zip&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://example.com/file.zip&lt;/a&gt;&lt;br /&gt;다운로드&amp;nbsp;실패&amp;nbsp;시&amp;nbsp;최대&amp;nbsp;10번까지&amp;nbsp;재시도합니다. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;5. 재개 가능한 다운로드&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;wget&amp;nbsp;-c&amp;nbsp;&lt;a href=&quot;http://example.com/file.zip&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://example.com/file.zip&lt;/a&gt;&lt;br /&gt;이전에&amp;nbsp;중단된&amp;nbsp;다운로드를&amp;nbsp;이어서&amp;nbsp;실행합니다. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;6. 복수 파일 다운로드&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;wget&amp;nbsp;-i&amp;nbsp;filelist.txt &lt;br /&gt;filelist.txt&amp;nbsp;파일에&amp;nbsp;있는&amp;nbsp;모든&amp;nbsp;URL&amp;nbsp;리스트를&amp;nbsp;다운로드합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*filelist.txt의 예:&lt;br /&gt;&lt;a href=&quot;http://example.com/file1.zip&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://example.com/file1.zip&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://example.com/file2.zip&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://example.com/file2.zip&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://example.com/file3.zip&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://example.com/file3.zip&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;7. 폴더 전체 다운로드&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;wget&amp;nbsp;-r&amp;nbsp;&lt;a href=&quot;http://example.com/directory/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://example.com/directory/&lt;/a&gt;&lt;br /&gt;주어진&amp;nbsp;URL에서&amp;nbsp;시작하여&amp;nbsp;링크된&amp;nbsp;모든&amp;nbsp;파일과&amp;nbsp;폴더를&amp;nbsp;재귀적으로&amp;nbsp;다운로드합니다. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;8. 대기 시간 추가&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;wget&amp;nbsp;--wait=5&amp;nbsp;-r&amp;nbsp;&lt;a href=&quot;http://example.com/directory/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://example.com/directory/&lt;/a&gt;&lt;br /&gt;각&amp;nbsp;요청&amp;nbsp;사이에&amp;nbsp;5초의&amp;nbsp;대기&amp;nbsp;시간을&amp;nbsp;추가하여&amp;nbsp;서버에&amp;nbsp;과부하가&amp;nbsp;걸리지&amp;nbsp;않도록&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;9. 사용자 에이전트 지정&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;wget&amp;nbsp;--user-agent=&quot;Mozilla/5.0&quot;&amp;nbsp;&lt;a href=&quot;http://example.com/file.zip&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://example.com/file.zip&lt;/a&gt;&lt;br /&gt;특정&amp;nbsp;사용자&amp;nbsp;에이전트를&amp;nbsp;사용하여&amp;nbsp;요청을&amp;nbsp;보냅니다.&amp;nbsp;일부&amp;nbsp;서버는&amp;nbsp;사용자&amp;nbsp;에이전트를&amp;nbsp;기반으로&amp;nbsp;요청을&amp;nbsp;차단하거나&amp;nbsp;허용할&amp;nbsp;수&amp;nbsp;있습니다. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;10. 쿠키 사용&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;wget&amp;nbsp;--load-cookies=cookies.txt&amp;nbsp;&lt;a href=&quot;http://example.com/file.zip&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://example.com/file.zip&lt;/a&gt;&lt;br /&gt;cookies.txt&amp;nbsp;파일에서&amp;nbsp;쿠키를&amp;nbsp;로드하여&amp;nbsp;요청을&amp;nbsp;보냅니다.&amp;nbsp;이는&amp;nbsp;로그인&amp;nbsp;세션이&amp;nbsp;필요한&amp;nbsp;웹사이트에서&amp;nbsp;유용할&amp;nbsp;수&amp;nbsp;있습니다. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;11. HTTPS 인증서 검증 건너뛰기 (보안에 주의 필요)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;wget&amp;nbsp;--no-check-certificate&amp;nbsp;&lt;a href=&quot;https://example.com/file.zip&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://example.com/file.zip&lt;/a&gt;&lt;br /&gt;HTTPS&amp;nbsp;인증서&amp;nbsp;검증을&amp;nbsp;생략합니다.&amp;nbsp;이는&amp;nbsp;보안에&amp;nbsp;취약해질&amp;nbsp;수&amp;nbsp;있으므로&amp;nbsp;신뢰할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;경우에만&amp;nbsp;사용해야&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;12. 웹 페이지의 모든 이미지를 다운로드&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;wget&amp;nbsp;-r&amp;nbsp;-l1&amp;nbsp;-A&amp;nbsp;jpeg,jpg,bmp,gif,png&amp;nbsp;&lt;a href=&quot;http://example.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://example.com/&lt;/a&gt;&lt;br /&gt;주어진&amp;nbsp;웹&amp;nbsp;페이지에서&amp;nbsp;모든&amp;nbsp;이미지를&amp;nbsp;다운로드합니다.&amp;nbsp;(-r&amp;nbsp;옵션은&amp;nbsp;재귀적으로&amp;nbsp;다운로드,&amp;nbsp;-l1은&amp;nbsp;재귀&amp;nbsp;깊이&amp;nbsp;1로&amp;nbsp;설정,&amp;nbsp;-A는&amp;nbsp;허용할&amp;nbsp;파일&amp;nbsp;확장자를&amp;nbsp;지정) &lt;br /&gt;&lt;br /&gt;&lt;b&gt;13. FTP 사이트에서 파일 다운로드&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;wget&amp;nbsp;ftp://example.com/file.zip &lt;br /&gt;FTP&amp;nbsp;프로토콜을&amp;nbsp;사용하여&amp;nbsp;파일을&amp;nbsp;다운로드합니다. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;14. 타임아웃 설정&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;wget&amp;nbsp;--timeout=30&amp;nbsp;&lt;a href=&quot;http://example.com/file.zip&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://example.com/file.zip&lt;/a&gt;&lt;br /&gt;연결과&amp;nbsp;읽기&amp;nbsp;시도에&amp;nbsp;대해&amp;nbsp;30초의&amp;nbsp;타임아웃을&amp;nbsp;설정합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/리눅스</category>
      <category>다운로드#wget</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/206</guid>
      <comments>https://yongeekd01.tistory.com/206#entry206comment</comments>
      <pubDate>Wed, 24 Jul 2024 18:49:34 +0900</pubDate>
    </item>
    <item>
      <title>Llama 3.1 405B 개요 (메타, 최대 규모의 오픈소스 LLM 공개)</title>
      <link>https://yongeekd01.tistory.com/205</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;메타에서 엄청난 규모의 오픈소스 LLM 모델을 발표했습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(이걸 돌려 볼 수는 있는 환경을 갖춘 사람이 몇이나 될까... 싶지만)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메타 자료에 보면 다음과 같은 자부심이 있네요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;&quot;지금까지 오픈 소스 대규모 언어 모델은 기능 및 성능 면에서 대부분 폐쇄형 언어 모델에 비해 뒤쳐져 있었습니다. 이제 오픈소스가 주도하는 새로운 시대가 열리고 있습니다. 세계 최대 규모이자 가장 뛰어난 성능을 자랑하는 오픈 소스 기반 모델인 Meta Llama 3.1 405B를 공개적으로 출시합니다&quot;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;Llama 3.1 최신 모델에는 컨텍스트 길이가 128K로 확장되고 8개 언어 지원이 추가되었으며, 최초의 프론티어급 오픈 소스 AI 모델인 Llama 3.1 405B가 포함되어 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Llama&amp;nbsp;3.1&amp;nbsp;405B는&amp;nbsp;일반&amp;nbsp;지식,&amp;nbsp;조향성,&amp;nbsp;수학,&amp;nbsp;도구&amp;nbsp;사용,&amp;nbsp;다국어&amp;nbsp;번역&amp;nbsp;등&amp;nbsp;최첨단&amp;nbsp;기능에&amp;nbsp;있어&amp;nbsp;최고의&amp;nbsp;AI&amp;nbsp;모델에&amp;nbsp;필적하는&amp;nbsp;최초의&amp;nbsp;공개용&amp;nbsp;모델입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;16,000개 이상의 H100 GPU로 밀어붙여 405B를 이 규모로 훈련된 최초의 라마 모델이라고 하네요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;어마어마한 리소스를 투입했네요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;공개 첫날부터 AWS, NVIDIA, 데이터브릭스, Groq, Dell, Azure, Google Cloud, Snowflake 등 25개 이상의 파트너가 서비스를 제공할 예정이고 &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;llama.meta.com과 Hugging Face에서 다운로드할 수 있도록 커뮤니티에 공개하고, 광범위한 파트너 플랫폼 에코시스템에서 즉시 개발할 수 있도록 준비 했다고 합니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;1. 모델 평가&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;이번 릴리스에서는 다양한 언어에 걸친 150개 이상의 벤치마크 데이터 세트에서 성능을 평가했습니다. 또한 실제 시나리오에서 경쟁 모델과 Llama 3.1을 비교하는 광범위한 인적 평가를 수행했습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;주력 모델은 GPT-4, GPT-4o, Claude 3.5 Sonnet 등 다양한 작업에서 주요 기반 모델과 경쟁력이 있는 것으로 나타났습니다. 또한, 소규모 모델은 비슷한 수의 파라미터를 가진 폐쇄형 및 개방형 모델과도 경쟁력이 있다고 보입니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;먼저 405B 모델의 결과를 보겠습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;다양한 파트에서 성능값이 앞서는 결과를 보여주고 있네요.&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3201&quot; data-origin-height=&quot;2217&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GOjtD/btsILgd4VI7/NruTueFP0erxDSKMfhwkG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GOjtD/btsILgd4VI7/NruTueFP0erxDSKMfhwkG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GOjtD/btsILgd4VI7/NruTueFP0erxDSKMfhwkG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGOjtD%2FbtsILgd4VI7%2FNruTueFP0erxDSKMfhwkG1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3201&quot; height=&quot;2217&quot; data-origin-width=&quot;3201&quot; data-origin-height=&quot;2217&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 작은 파라메터를 갖는 모델들의 비교입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 모델은 거의 모든 파트에서 타사 상용 동급 모델들을 앞서고 있네요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런게 공짜라니...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3201&quot; data-origin-height=&quot;2217&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OVWJJ/btsIKaZZmqd/otK5a3OB0hRr5HhA3YK9wk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OVWJJ/btsIKaZZmqd/otK5a3OB0hRr5HhA3YK9wk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OVWJJ/btsIKaZZmqd/otK5a3OB0hRr5HhA3YK9wk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOVWJJ%2FbtsIKaZZmqd%2FotK5a3OB0hRr5HhA3YK9wk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3201&quot; height=&quot;2217&quot; data-origin-width=&quot;3201&quot; data-origin-height=&quot;2217&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;다음은 모델간 코딩 능력 평가 입니다. GPT-4o에는 못미치네요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;726&quot; data-origin-height=&quot;374&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPKodB/btsILQ0q2PV/zR1D20Ia8pKNDaGmYtAkV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPKodB/btsILQ0q2PV/zR1D20Ia8pKNDaGmYtAkV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPKodB/btsILQ0q2PV/zR1D20Ia8pKNDaGmYtAkV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPKodB%2FbtsILQ0q2PV%2FzR1D20Ia8pKNDaGmYtAkV0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;726&quot; height=&quot;374&quot; data-origin-width=&quot;726&quot; data-origin-height=&quot;374&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Llama는 아시다시피 오픈 모델이기 때문에 그 자체로 의미가 큽니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메타가 아래와 같은 그들의 의지를 끝까지 지켜주길 기대합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;&quot; 많은 사람들이 폐쇄형 모델이 더 비용 효율적이라고 주장할 수 있지만, 인공 분석의 테스트에 따르면 라마 모델은 업계에서 토큰당 비용이 가장 낮습니다. 또한, 마크 저커버그가 언급했듯이 오픈소스는 전 세계의 더 많은 사람들이 AI의 혜택과 기회에 접근할 수 있도록 하고, 소수의 사람들에게 권력이 집중되지 않으며, 사회 전반에 걸쳐 기술이 보다 균등하고 안전하게 배포될 수 있도록 보장할 것입니다. 이것이 바로 오픈 액세스 AI가 업계 표준이 될 수 있도록 계속해서 발걸음을 내딛는 이유입니다.&quot;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 다운로드 사이트 입니다 .&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://llama.meta.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://llama.meta.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1721790389800&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Llama 3.1&quot; data-og-description=&quot;The open source AI model you can fine-tune, distill and deploy anywhere. Our latest models are available in 8B, 70B, and 405B variants.&quot; data-og-host=&quot;llama.meta.com&quot; data-og-source-url=&quot;https://llama.meta.com/&quot; data-og-url=&quot;https://llama.meta.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bzuhgW/hyWCETRgEy/9C5gDZAGjSYq5biu3hHHkk/img.jpg?width=3840&amp;amp;height=2160&amp;amp;face=0_0_3840_2160&quot;&gt;&lt;a href=&quot;https://llama.meta.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://llama.meta.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bzuhgW/hyWCETRgEy/9C5gDZAGjSYq5biu3hHHkk/img.jpg?width=3840&amp;amp;height=2160&amp;amp;face=0_0_3840_2160');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Llama 3.1&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The open source AI model you can fine-tune, distill and deploy anywhere. Our latest models are available in 8B, 70B, and 405B variants.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;llama.meta.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/meta-llama/llama-models&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/meta-llama/llama-models&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1721790370427&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - meta-llama/llama-models: Utilities intended for use with Llama models.&quot; data-og-description=&quot;Utilities intended for use with Llama models. Contribute to meta-llama/llama-models development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/meta-llama/llama-models&quot; data-og-url=&quot;https://github.com/meta-llama/llama-models&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bqwNZ4/hyWCFrHmlb/WhEvT5Lq9r7i5FgO7XP9w0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/meta-llama/llama-models&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/meta-llama/llama-models&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bqwNZ4/hyWCFrHmlb/WhEvT5Lq9r7i5FgO7XP9w0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - meta-llama/llama-models: Utilities intended for use with Llama models.&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Utilities intended for use with Llama models. Contribute to meta-llama/llama-models development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://huggingface.co/collections/meta-llama/llama-31-669fc079a0c406a149a5738f&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://huggingface.co/collections/meta-llama/llama-31-669fc079a0c406a149a5738f&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1721790343602&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Llama 3.1 - a meta-llama Collection&quot; data-og-description=&quot;This collection hosts the transformers and original repos of the Meta Llama 3.1, Llama Guard 3 and Prompt Guard models&quot; data-og-host=&quot;huggingface.co&quot; data-og-source-url=&quot;https://huggingface.co/collections/meta-llama/llama-31-669fc079a0c406a149a5738f&quot; data-og-url=&quot;https://huggingface.co/collections/meta-llama/llama-31-669fc079a0c406a149a5738f&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/lxQ3D/hyWCDtSBGr/TZBL9w0YHHiY3zql5rcA5K/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648&quot;&gt;&lt;a href=&quot;https://huggingface.co/collections/meta-llama/llama-31-669fc079a0c406a149a5738f&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://huggingface.co/collections/meta-llama/llama-31-669fc079a0c406a149a5738f&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/lxQ3D/hyWCDtSBGr/TZBL9w0YHHiY3zql5rcA5K/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Llama 3.1 - a meta-llama Collection&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;This collection hosts the transformers and original repos of the Meta Llama 3.1, Llama Guard 3 and Prompt Guard models&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;huggingface.co&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>llama#메타#meta#오픈소스</category>
      <category>LLM</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/205</guid>
      <comments>https://yongeekd01.tistory.com/205#entry205comment</comments>
      <pubDate>Wed, 24 Jul 2024 12:08:11 +0900</pubDate>
    </item>
    <item>
      <title>Mistral NeMo, 미스트랄 온디바이스 AI 모델 개요</title>
      <link>https://yongeekd01.tistory.com/204</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;미스트랄 사이트에 가보면 딱 이렇게 적어 놨습니다 .&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt; &lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;미스트랄 NeMo: 새로운 최고의 소형 모델. 128k 컨텍스트 길이의 최신 12B 모델로, NVIDIA와 협력하여 제작되었으며 Apache 2.0 라이선스에 따라 출시되었습니다.&lt;/span&gt; &lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;/i&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;아파치 라이센스군요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;미스트랄은 유럽의 OpenAI라고 보시면 됩니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;미스트랄-네모는 퍼블릭 클라우드가 아닌 Nvidia GPU가 있는 개인 데스크탑 환경에서도 고성능 AI를 사용할 수 있도록 설계 되었다고 합니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;- 120억개의 매개변수와 12만8000토큰의 컨텍스트 창&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;- 글로벌 다국어 지원&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;다음 표는 미스트랄 NeMo 기본 모델과 최근 오픈소스 사전 학습된 두 가지 모델인 Gemma 2 9B 및 Llama 3 8B의 정확도를 비교한 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;벤치마크 결과 대부분의 작업에서 우수한 성능을 보여주고 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;906&quot; data-origin-height=&quot;259&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GCXph/btsIIBDqRiU/LFVfBHpLCDg7JgpkSLlNMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GCXph/btsIIBDqRiU/LFVfBHpLCDg7JgpkSLlNMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GCXph/btsIIBDqRiU/LFVfBHpLCDg7JgpkSLlNMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGCXph%2FbtsIIBDqRiU%2FLFVfBHpLCDg7JgpkSLlNMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;906&quot; height=&quot;259&quot; data-origin-width=&quot;906&quot; data-origin-height=&quot;259&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다국어 지원을 위해서 신경써서 설계 했다는 이야기가 있네요 .&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt; &lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;이 모델은 글로벌 다국어 애플리케이션을 위해 설계되었습니다. 함수 호출에 대해 학습되고 컨텍스트 창이 넓으며 특히 영어, 프랑스어, 독일어, 스페인어, 이탈리아어, 포르투갈어, 중국어, 일본어, 한국어, 아랍어, 힌디어에 강합니다. 이는 인류 문화를 형성하는 모든 언어로 모든 사람이 프론티어 AI 모델을 사용할 수 있도록 하기 위한 새로운 단계입니다.&lt;/span&gt; &lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;894&quot; data-origin-height=&quot;289&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yT3fD/btsIKIgPOoV/oFxYV7iN0KPFmnY1W90Ak1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yT3fD/btsIKIgPOoV/oFxYV7iN0KPFmnY1W90Ak1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yT3fD/btsIKIgPOoV/oFxYV7iN0KPFmnY1W90Ak1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyT3fD%2FbtsIKIgPOoV%2FoFxYV7iN0KPFmnY1W90Ak1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;894&quot; height=&quot;289&quot; data-origin-width=&quot;894&quot; data-origin-height=&quot;289&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;Tekken 토큰화기에 대한 설명입니다.&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt; &lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;미스트랄 NeMo는 100개 이상의 언어로 학습된 틱토큰 기반의 새로운 토큰화기인 텍켄을 사용하며, 이전 미스트랄 모델에 사용된 SentencePiece 토큰화기보다 자연어 텍스트와 소스 코드를 더 효율적으로 압축합니다. &lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;특히 소스 코드, 중국어, 이탈리아어, 프랑스어, 독일어, 스페인어, 러시아어를 압축할 때 최대 30% 더 효율적입니다. 또한 한국어와 아랍어를 압축할 때 각각 2배, 3배 더 효율적입니다. Llama 3 토큰라이저와 비교했을 때, 전체 언어의 약 85%에서 텍스트를 압축하는 데 더 능숙하다는 것이 입증되었습니다.&lt;/span&gt; &lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;891&quot; data-origin-height=&quot;378&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dnHG6O/btsIJSYwOOu/qPgU4cNzYD8yH7nvbdXifK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dnHG6O/btsIJSYwOOu/qPgU4cNzYD8yH7nvbdXifK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dnHG6O/btsIJSYwOOu/qPgU4cNzYD8yH7nvbdXifK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdnHG6O%2FbtsIJSYwOOu%2FqPgU4cNzYD8yH7nvbdXifK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;891&quot; height=&quot;378&quot; data-origin-width=&quot;891&quot; data-origin-height=&quot;378&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;아직 모바일을 지원하지 않는것이 좀 아쉽습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;하지만 뭐든 대용량 고성능만을 지향하는 요즘 AI 개발 풍토에서 의미있는 모델인것은 확실한것 같습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;좀 딸리더라도 Nvidia GPU 만 있으면 돌아간다고 하니까요. ^^&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>mistral#nemo#nvidia#온디바이스</category>
      <category>미스트랄#</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/204</guid>
      <comments>https://yongeekd01.tistory.com/204#entry204comment</comments>
      <pubDate>Tue, 23 Jul 2024 11:13:07 +0900</pubDate>
    </item>
    <item>
      <title>GPT-4o mini 개요 (API 비용 효율성 3.5 turbo의 1/10 가격)</title>
      <link>https://yongeekd01.tistory.com/203</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오픈AI가 새로운 언어모델 GPT-4o 미니(mini)'를 출시했습니다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보유 중인 대형언어모델(LLM) 중 가장 크기가 작은 소형 모델이며 사용비용을 확 줄여서 개발자들의 부담을 덜어주겠다는 의도라고 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성능도 동급 모델중 가장 뛰어나다고 홍보하고 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가격은 입력 토큰 100만 개당 15센트, 출력 토큰 100만 개당 60센트로, 이전 프론티어 모델보다 훨씬 저렴하고 GPT-3.5 터보보다 60% 이상 저렴하다고 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재&amp;nbsp;GPT-4o&amp;nbsp;mini는&amp;nbsp;API에서&amp;nbsp;텍스트와&amp;nbsp;비전을&amp;nbsp;지원하며,&amp;nbsp;향후&amp;nbsp;텍스트,&amp;nbsp;이미지,&amp;nbsp;비디오,&amp;nbsp;오디오&amp;nbsp;입력&amp;nbsp;및&amp;nbsp;출력에&amp;nbsp;대한&amp;nbsp;지원도&amp;nbsp;추가될&amp;nbsp;예정입니다.&amp;nbsp;이&amp;nbsp;모델은&amp;nbsp;128K&amp;nbsp;토큰의&amp;nbsp;컨텍스트&amp;nbsp;창을&amp;nbsp;가지고&amp;nbsp;있으며,&amp;nbsp;요청당&amp;nbsp;최대&amp;nbsp;16K&amp;nbsp;출력&amp;nbsp;토큰을&amp;nbsp;지원하고,&amp;nbsp;2023년&amp;nbsp;10월까지의&amp;nbsp;지식을&amp;nbsp;보유하고&amp;nbsp;있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT-4o와 공유되는 개선된 토큰화기 덕분에 이제 영어가 아닌 텍스트에서 불필요하게 늘어난 토큰을 처리해서 생기는 비용 낭비를 줄여줄 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT-4o mini는 텍스트 지능과 다중 모드 추론 모두에서 GPT-3.5 Turbo 및 기타 소형 모델을 능가하며 GPT-4o와 동일한 범위의 언어를 지원합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 개발자가 데이터를 가져오거나 외부 시스템으로 작업을 수행하는 애플리케이션을 구축할 수 있는 함수 호출에서 강력한 성능을 보여주며, GPT-3.5 터보에 비해 긴 컨텍스트 성능도 향상되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 벤치마크 결과 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델은 추론 능력 측정 벤치마크인 MMLU에서 82%의 점수를 받으며 제미나이 1.5 플래시의 79%, 클로드 3 하이쿠의 75%를 능가한다고 합니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;수학적 추론 능력에서는 MGSM에서는 87%로, 플래시 78%, 하이쿠 72%를 넘었고 코딩 성능을 측정하는 휴먼이밸에서도 87.2%로 플래시 71.5%, 하이쿠 75.9%를 제치고 1위를 차지했다고 합니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;609&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cIO9pn/btsIG8PBvxq/WlEkiUAezUn6Ez5qgUNHx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIO9pn/btsIG8PBvxq/WlEkiUAezUn6Ez5qgUNHx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIO9pn/btsIG8PBvxq/WlEkiUAezUn6Ez5qgUNHx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIO9pn%2FbtsIG8PBvxq%2FWlEkiUAezUn6Ez5qgUNHx1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1087&quot; height=&quot;609&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;609&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전과 마찬가지로 혐오 발언, 성인 콘텐츠, 주로 개인 정보를 수집하는 사이트, 스팸 등 모델이 학습하거나 출력하지 않기를 원하는 정보를 필터링 합니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT-4o mini는 API 사용시 명령 계층 구조 방식을 적용한 최초의 모델로, 탈옥, 프롬프트 주입, 시스템 프롬프트 추출에 대한 모델의 저항력을 향상시키며 이를 통해 모델의 응답이 더욱 안정적이고 대규모 애플리케이션에서 더 안전하게 사용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;사용 가격 &lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT-4o mini는 Assistants API, Chat Completions API, Batch API 에서 텍스트 및 비전 모델로 사용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자는 1M 입력 토큰당 15센트, 1M 출력 토큰당 60센트(표준 책의 약 2500페이지에 해당)를 지불하도록 책정되었습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gpt3.5-tubo 모델을 사용할때(1M당 2달러)의 거의 1/10 로 가격을 낮게 책정한 셈이네요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>openai#chatgpt#chatgpt-4o#chatgpt mini</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/203</guid>
      <comments>https://yongeekd01.tistory.com/203#entry203comment</comments>
      <pubDate>Mon, 22 Jul 2024 15:54:22 +0900</pubDate>
    </item>
    <item>
      <title>속초 중앙시장(속초관광수산시장) 둘러보기(맛집, 주차정보)</title>
      <link>https://yongeekd01.tistory.com/202</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;예전에는 속초 여행하면 속초해수욕장, 대포항, 물치항, 낙산해수욕장 등등 에서만 시간을 보냈었는데요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘은 오징어난전이나 속초중앙시장에도 많은 사람들이 몰려갑니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 맛있는 음식과 볼거리가 많이 때문이죠~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저도 이번에 한번 들러봤습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;깔끔하게 정비되어 참 좋더군요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;속초 중앙재래시장과 속초관광수산시장은 연결되어있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;굳이 구분하지 않고 둘러보시면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 속초 중앙시장(속초관광수산시장) 위치&amp;nbsp; 및 주차 정보&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고속터미널에서도 멀지 않은 위치에 있더군요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위치는 다음과 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://naver.me/52lhcCfx&quot;&gt;https://naver.me/52lhcCfx&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1721117251744&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;속초관광수산시장 : 네이버 &quot; data-og-description=&quot;방문자리뷰 714 &amp;middot; 블로그리뷰 13,545&quot; data-og-host=&quot;m.place.naver.com&quot; data-og-source-url=&quot;https://naver.me/52lhcCfx&quot; data-og-url=&quot;https://m.place.naver.com/place/13345965/home&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/YT6wI/hyWCKSw4jm/iDb1M9ARGOG0RapOzSkBG1/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/OUMu8/hyWCAWF987/7km7N6LuAKiUsotUAIlUk1/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/bg6iG0/hyWCJ69YWV/o5TjbETCGqiydhPKVVoZKK/img.jpg?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500&quot;&gt;&lt;a href=&quot;https://naver.me/52lhcCfx&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://naver.me/52lhcCfx&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/YT6wI/hyWCKSw4jm/iDb1M9ARGOG0RapOzSkBG1/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/OUMu8/hyWCAWF987/7km7N6LuAKiUsotUAIlUk1/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/bg6iG0/hyWCJ69YWV/o5TjbETCGqiydhPKVVoZKK/img.jpg?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;속초관광수산시장 : 네이버 &lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;방문자리뷰 714 &amp;middot; 블로그리뷰 13,545&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;m.place.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;527&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dEI4Li/btsICEls1Bc/XLkzRxKEx7lM5Ekie0Zu2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dEI4Li/btsICEls1Bc/XLkzRxKEx7lM5Ekie0Zu2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dEI4Li/btsICEls1Bc/XLkzRxKEx7lM5Ekie0Zu2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdEI4Li%2FbtsICEls1Bc%2FXLkzRxKEx7lM5Ekie0Zu2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;941&quot; height=&quot;527&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;527&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에 파란색으로 표시한 곳이 주차장입니다. 초대형으로 새로 지어져서 꽤 많은 차량을 커버할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주차장 진입 안내 표지도 큼지막 하게 있어서 찾기 쉬워요~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oiIZU/btsICvPHkfa/3QOmhjwKbbQmI5EhKVWbZ1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oiIZU/btsICvPHkfa/3QOmhjwKbbQmI5EhKVWbZ1/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;1210&quot; data-filename=&quot;KakaoTalk_20240710_173119388.jpg&quot; style=&quot;width: 23.7372%; margin-right: 10px;&quot; data-widthpercent=&quot;24.02&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oiIZU/btsICvPHkfa/3QOmhjwKbbQmI5EhKVWbZ1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoiIZU%2FbtsICvPHkfa%2F3QOmhjwKbbQmI5EhKVWbZ1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;680&quot; height=&quot;1210&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0uduP/btsIAW85kLp/2cNRpg2fFfKIlEX7EMT6Mk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0uduP/btsIAW85kLp/2cNRpg2fFfKIlEX7EMT6Mk/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20240710_173119388_01.jpg&quot; style=&quot;width: 75.1%;&quot; data-widthpercent=&quot;75.98&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0uduP/btsIAW85kLp/2cNRpg2fFfKIlEX7EMT6Mk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0uduP%2FbtsIAW85kLp%2F2cNRpg2fFfKIlEX7EMT6Mk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240710_173119388_04.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yacAu/btsICvIWxzs/EoqEI2zcBA2DRdPCOKfB8k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yacAu/btsICvIWxzs/EoqEI2zcBA2DRdPCOKfB8k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yacAu/btsICvIWxzs/EoqEI2zcBA2DRdPCOKfB8k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyacAu%2FbtsICvIWxzs%2FEoqEI2zcBA2DRdPCOKfB8k%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_173119388_04.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 시장 둘러보기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주차장에서 나오면 귀여운 건물도 있고 건너에 시장 입구가 보입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주말이라 사람이 벌써 많아지는군요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjLLVU/btsIA91B37k/2Wi5TQ3nTA5Ro1UeUFWVu0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjLLVU/btsIA91B37k/2Wi5TQ3nTA5Ro1UeUFWVu0/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot; data-filename=&quot;KakaoTalk_20240710_173119388_02.jpg&quot; width=&quot;459&quot; height=&quot;816&quot; data-widthpercent=&quot;24.03&quot; style=&quot;width: 23.7514%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjLLVU/btsIA91B37k/2Wi5TQ3nTA5Ro1UeUFWVu0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjLLVU%2FbtsIA91B37k%2F2Wi5TQ3nTA5Ro1UeUFWVu0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eaa85D/btsIA9HiJuP/gxIoXMmEUzJbdQDClAXikk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eaa85D/btsIA9HiJuP/gxIoXMmEUzJbdQDClAXikk/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20240710_173119388_03.jpg&quot; data-widthpercent=&quot;75.97&quot; style=&quot;width: 75.0858%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eaa85D/btsIA9HiJuP/gxIoXMmEUzJbdQDClAXikk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Feaa85D%2FbtsIA9HiJuP%2FgxIoXMmEUzJbdQDClAXikk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안으로 걸어들어 가보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘은 시장도 잘 정리되어 있어서 참 좋네요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNkLa4/btsIz7J1d76/kZo6Bshvl2isQxqte98Fu0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNkLa4/btsIz7J1d76/kZo6Bshvl2isQxqte98Fu0/img.jpg&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20240710_173119388_05.jpg&quot; style=&quot;width: 23.7514%; margin-right: 10px;&quot; data-widthpercent=&quot;24.03&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNkLa4/btsIz7J1d76/kZo6Bshvl2isQxqte98Fu0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNkLa4%2FbtsIz7J1d76%2FkZo6Bshvl2isQxqte98Fu0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvGQub/btsIBk9DAht/4LLdZqs7dWrm6Oy0OcFi4k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvGQub/btsIBk9DAht/4LLdZqs7dWrm6Oy0OcFi4k/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20240710_173119388_06.jpg&quot; style=&quot;width: 75.0858%;&quot; data-widthpercent=&quot;75.97&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvGQub/btsIBk9DAht/4LLdZqs7dWrm6Oy0OcFi4k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvGQub%2FbtsIBk9DAht%2F4LLdZqs7dWrm6Oy0OcFi4k%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240710_173119388_07.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9QbMc/btsIAWuvO6s/hpMbY9ynKpOONB8Kuwrrhk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9QbMc/btsIAWuvO6s/hpMbY9ynKpOONB8Kuwrrhk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9QbMc/btsIAWuvO6s/hpMbY9ynKpOONB8Kuwrrhk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9QbMc%2FbtsIAWuvO6s%2FhpMbY9ynKpOONB8Kuwrrhk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_173119388_07.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lsvih/btsIAQur1V1/rIL2ZZXqiEmxdrCt5pViKK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lsvih/btsIAQur1V1/rIL2ZZXqiEmxdrCt5pViKK/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20240710_173119388_08.jpg&quot; style=&quot;width: 49.3991%; margin-right: 10px;&quot; data-widthpercent=&quot;49.98&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lsvih/btsIAQur1V1/rIL2ZZXqiEmxdrCt5pViKK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flsvih%2FbtsIAQur1V1%2FrIL2ZZXqiEmxdrCt5pViKK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nTZbZ/btsIBhypw1r/BMOBQfBKxbFM3TBzeqx2OK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nTZbZ/btsIBhypw1r/BMOBQfBKxbFM3TBzeqx2OK/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1210&quot; data-origin-height=&quot;680&quot; data-filename=&quot;KakaoTalk_20240710_173119388_09.jpg&quot; style=&quot;width: 49.4381%;&quot; data-widthpercent=&quot;50.02&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nTZbZ/btsIBhypw1r/BMOBQfBKxbFM3TBzeqx2OK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnTZbZ%2FbtsIBhypw1r%2FBMOBQfBKxbFM3TBzeqx2OK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1210&quot; height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bT7eAL/btsIB6pnssr/C30ObTLmEUafO2ZIhBKJXk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bT7eAL/btsIB6pnssr/C30ObTLmEUafO2ZIhBKJXk/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20240710_173119388_10.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bT7eAL/btsIB6pnssr/C30ObTLmEUafO2ZIhBKJXk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbT7eAL%2FbtsIB6pnssr%2FC30ObTLmEUafO2ZIhBKJXk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xyUKo/btsIBKz4OU6/NHKAJ7k3Ro3zRAFoI0SkSk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xyUKo/btsIBKz4OU6/NHKAJ7k3Ro3zRAFoI0SkSk/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20240710_173119388_15.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xyUKo/btsIBKz4OU6/NHKAJ7k3Ro3zRAFoI0SkSk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxyUKo%2FbtsIBKz4OU6%2FNHKAJ7k3Ro3zRAFoI0SkSk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqfCID/btsIB4E4kQ1/tOSB1mllBqJpDiEMeMabd0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqfCID/btsIB4E4kQ1/tOSB1mllBqJpDiEMeMabd0/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20240710_173119388_16.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqfCID/btsIB4E4kQ1/tOSB1mllBqJpDiEMeMabd0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqfCID%2FbtsIB4E4kQ1%2FtOSB1mllBqJpDiEMeMabd0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjPBnR/btsIAs8gqP0/zTrCwAbZzznMxzC1LfrEVk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjPBnR/btsIAs8gqP0/zTrCwAbZzznMxzC1LfrEVk/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20240710_173119388_17.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjPBnR/btsIAs8gqP0/zTrCwAbZzznMxzC1LfrEVk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjPBnR%2FbtsIAs8gqP0%2FzTrCwAbZzznMxzC1LfrEVk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/97oTs/btsIANxGd2S/Tt18FZquj6n8MGVVOsKepk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/97oTs/btsIANxGd2S/Tt18FZquj6n8MGVVOsKepk/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20240710_173119388_18.jpg&quot; style=&quot;width: 49.3991%; margin-right: 10px;&quot; data-widthpercent=&quot;49.98&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/97oTs/btsIANxGd2S/Tt18FZquj6n8MGVVOsKepk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F97oTs%2FbtsIANxGd2S%2FTt18FZquj6n8MGVVOsKepk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ssRx8/btsIBCPKBQA/tLYkVVunLCXTPAuRnDzGxk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ssRx8/btsIBCPKBQA/tLYkVVunLCXTPAuRnDzGxk/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1210&quot; data-origin-height=&quot;680&quot; data-filename=&quot;KakaoTalk_20240710_173119388_19.jpg&quot; style=&quot;width: 49.4381%;&quot; data-widthpercent=&quot;50.02&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ssRx8/btsIBCPKBQA/tLYkVVunLCXTPAuRnDzGxk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FssRx8%2FbtsIBCPKBQA%2FtLYkVVunLCXTPAuRnDzGxk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1210&quot; height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pQuj2/btsIBZqp5cV/M95cSItQC3iNbpWumDiYLK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pQuj2/btsIBZqp5cV/M95cSItQC3iNbpWumDiYLK/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1210&quot; data-origin-height=&quot;680&quot; data-filename=&quot;KakaoTalk_20240710_173119388_20.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pQuj2/btsIBZqp5cV/M95cSItQC3iNbpWumDiYLK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpQuj2%2FbtsIBZqp5cV%2FM95cSItQC3iNbpWumDiYLK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1210&quot; height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bydqBQ/btsICnYBlgS/I9KHqVDIgkosctm7CZnXok/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bydqBQ/btsICnYBlgS/I9KHqVDIgkosctm7CZnXok/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1210&quot; data-origin-height=&quot;680&quot; data-filename=&quot;KakaoTalk_20240710_173119388_21.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bydqBQ/btsICnYBlgS/I9KHqVDIgkosctm7CZnXok/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbydqBQ%2FbtsICnYBlgS%2FI9KHqVDIgkosctm7CZnXok%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1210&quot; height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKUElJ/btsIBMrbXjs/HFgOqikpA2GqF2mW3HoXT0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKUElJ/btsIBMrbXjs/HFgOqikpA2GqF2mW3HoXT0/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20240710_173119388_22.jpg&quot; style=&quot;width: 49.3991%; margin-right: 10px;&quot; data-widthpercent=&quot;49.98&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKUElJ/btsIBMrbXjs/HFgOqikpA2GqF2mW3HoXT0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKUElJ%2FbtsIBMrbXjs%2FHFgOqikpA2GqF2mW3HoXT0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uD9Au/btsICg6k8Em/pYRDUrSTtDT9nexvtwFAk0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uD9Au/btsICg6k8Em/pYRDUrSTtDT9nexvtwFAk0/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1210&quot; data-origin-height=&quot;680&quot; data-filename=&quot;KakaoTalk_20240710_173119388_23.jpg&quot; style=&quot;width: 49.4381%;&quot; data-widthpercent=&quot;50.02&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uD9Au/btsICg6k8Em/pYRDUrSTtDT9nexvtwFAk0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuD9Au%2FbtsICg6k8Em%2FpYRDUrSTtDT9nexvtwFAk0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1210&quot; height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240710_173119388_24.jpg&quot; data-origin-width=&quot;1210&quot; data-origin-height=&quot;680&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/J9jUf/btsICuJ3cL6/XKPkWN9A5fKvYyfroWsQB0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/J9jUf/btsICuJ3cL6/XKPkWN9A5fKvYyfroWsQB0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/J9jUf/btsICuJ3cL6/XKPkWN9A5fKvYyfroWsQB0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJ9jUf%2FbtsICuJ3cL6%2FXKPkWN9A5fKvYyfroWsQB0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1210&quot; height=&quot;680&quot; data-filename=&quot;KakaoTalk_20240710_173119388_24.jpg&quot; data-origin-width=&quot;1210&quot; data-origin-height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;골목하나를 지나니 갑자기 롯데시네마 !! ㅋㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240710_173119388_25.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cK1zlT/btsIBBJ4WIp/GtgJWgrkJkXlOkc4hUIfk1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cK1zlT/btsIBBJ4WIp/GtgJWgrkJkXlOkc4hUIfk1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cK1zlT/btsIBBJ4WIp/GtgJWgrkJkXlOkc4hUIfk1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcK1zlT%2FbtsIBBJ4WIp%2FGtgJWgrkJkXlOkc4hUIfk1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_173119388_25.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 유명한 만석닭강정도 보이네요. 근데 닭강정 가게 진짜 많던데..&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 쌓아놓고 순서대로 집어가는 군요. 다 식었을듯..뭐 원래 식혀서 먹는거라는 썰도 있고 하니..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240710_173025601_15.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Dp487/btsIAuLJtGD/iSg7wNNGseKrP1Gg7I8Sa0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Dp487/btsIAuLJtGD/iSg7wNNGseKrP1Gg7I8Sa0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Dp487/btsIAuLJtGD/iSg7wNNGseKrP1Gg7I8Sa0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDp487%2FbtsIAuLJtGD%2FiSg7wNNGseKrP1Gg7I8Sa0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_173025601_15.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240710_173025601_16.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUSxLi/btsIz891i0j/gjM8FqSxsRaR83517fvFJk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUSxLi/btsIz891i0j/gjM8FqSxsRaR83517fvFJk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUSxLi/btsIz891i0j/gjM8FqSxsRaR83517fvFJk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUSxLi%2FbtsIz891i0j%2FgjM8FqSxsRaR83517fvFJk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_173025601_16.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오징어순대, 오징어누룽지 순대 집도 엄청 많네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나 먹어봐야지. 음.. 맛은 있습니다. 하지만 예상 가능한 그맛. ^^&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240710_173025601_14.jpg&quot; data-origin-width=&quot;1210&quot; data-origin-height=&quot;680&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0XURT/btsIClT1Ndf/XGcCj4O0XTpshpQgo97m8k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0XURT/btsIClT1Ndf/XGcCj4O0XTpshpQgo97m8k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0XURT/btsIClT1Ndf/XGcCj4O0XTpshpQgo97m8k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0XURT%2FbtsIClT1Ndf%2FXGcCj4O0XTpshpQgo97m8k%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1210&quot; height=&quot;680&quot; data-filename=&quot;KakaoTalk_20240710_173025601_14.jpg&quot; data-origin-width=&quot;1210&quot; data-origin-height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PTDbn/btsICHbs86d/YIPxrQZPcJgK5IOpMg8Nwk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PTDbn/btsICHbs86d/YIPxrQZPcJgK5IOpMg8Nwk/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;1210&quot; data-filename=&quot;KakaoTalk_20240710_173025601_18.jpg&quot; style=&quot;width: 23.723%; margin-right: 10px;&quot; data-widthpercent=&quot;24&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PTDbn/btsICHbs86d/YIPxrQZPcJgK5IOpMg8Nwk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPTDbn%2FbtsICHbs86d%2FYIPxrQZPcJgK5IOpMg8Nwk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;680&quot; height=&quot;1210&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CoXHU/btsICk8KU1Q/5Y2wG40dk2TQhfXZK95I21/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CoXHU/btsICk8KU1Q/5Y2wG40dk2TQhfXZK95I21/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1210&quot; data-origin-height=&quot;680&quot; data-filename=&quot;KakaoTalk_20240710_173025601_19.jpg&quot; style=&quot;width: 75.1142%;&quot; data-widthpercent=&quot;76&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CoXHU/btsICk8KU1Q/5Y2wG40dk2TQhfXZK95I21/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCoXHU%2FbtsICk8KU1Q%2F5Y2wG40dk2TQhfXZK95I21%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1210&quot; height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;술빵집도 많습니다&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유명한 집인지 줄이 엄청 기네요&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqotXf/btsIBg7jn2t/S0ivxPiwaQCvlC57EXgYsK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqotXf/btsIBg7jn2t/S0ivxPiwaQCvlC57EXgYsK/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20240710_173025601_20.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqotXf/btsIBg7jn2t/S0ivxPiwaQCvlC57EXgYsK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqotXf%2FbtsIBg7jn2t%2FS0ivxPiwaQCvlC57EXgYsK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDu2DZ/btsICuXApRj/VwVWbNIeFMU5HGCHLrJdgk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDu2DZ/btsICuXApRj/VwVWbNIeFMU5HGCHLrJdgk/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_173025601_21.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDu2DZ/btsICuXApRj/VwVWbNIeFMU5HGCHLrJdgk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDu2DZ%2FbtsICuXApRj%2FVwVWbNIeFMU5HGCHLrJdgk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 바깥쪽에 있는데서 사먹었는데 술빵도 맛있었어요. @@&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmhtGs/btsIAsArbkc/fK4wKrRx0KFoVZY6Xcv9Kk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmhtGs/btsIAsArbkc/fK4wKrRx0KFoVZY6Xcv9Kk/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20240710_173025601.jpg&quot; style=&quot;width: 49.3991%; margin-right: 10px;&quot; data-widthpercent=&quot;49.98&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmhtGs/btsIAsArbkc/fK4wKrRx0KFoVZY6Xcv9Kk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmhtGs%2FbtsIAsArbkc%2FfK4wKrRx0KFoVZY6Xcv9Kk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btXSzL/btsIBbSD89W/34SUzoNVFMWSwzJakPuBqk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btXSzL/btsIBbSD89W/34SUzoNVFMWSwzJakPuBqk/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1210&quot; data-origin-height=&quot;680&quot; data-filename=&quot;KakaoTalk_20240710_173025601_01.jpg&quot; style=&quot;width: 49.4381%;&quot; data-widthpercent=&quot;50.02&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btXSzL/btsIBbSD89W/34SUzoNVFMWSwzJakPuBqk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtXSzL%2FbtsIBbSD89W%2F34SUzoNVFMWSwzJakPuBqk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1210&quot; height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요기도 유명한 코끼리분식!! 거의 공장이네 공장 ㅋ&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시골 도너스 맛. ㅋ 맛있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NxUTm/btsICGczBgF/U9S0u4EMIKdPRue16ZWcBK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NxUTm/btsICGczBgF/U9S0u4EMIKdPRue16ZWcBK/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20240710_173025601_04.jpg&quot; style=&quot;width: 75.1%; margin-right: 10px;&quot; data-widthpercent=&quot;75.98&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NxUTm/btsICGczBgF/U9S0u4EMIKdPRue16ZWcBK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNxUTm%2FbtsICGczBgF%2FU9S0u4EMIKdPRue16ZWcBK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWpWmv/btsIz8a7fpp/mABnLbJnJwO6NA0oKk1RTK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWpWmv/btsIz8a7fpp/mABnLbJnJwO6NA0oKk1RTK/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;1210&quot; data-filename=&quot;KakaoTalk_20240710_173025601_05.jpg&quot; style=&quot;width: 23.7372%;&quot; data-widthpercent=&quot;24.02&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWpWmv/btsIz8a7fpp/mABnLbJnJwO6NA0oKk1RTK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWpWmv%2FbtsIz8a7fpp%2FmABnLbJnJwO6NA0oKk1RTK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;680&quot; height=&quot;1210&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240710_173025601_03.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byx0hN/btsIBi46unk/hnh3hnpblNQyvFTwkZLglk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byx0hN/btsIBi46unk/hnh3hnpblNQyvFTwkZLglk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byx0hN/btsIBi46unk/hnh3hnpblNQyvFTwkZLglk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbyx0hN%2FbtsIBi46unk%2Fhnh3hnpblNQyvFTwkZLglk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_173025601_03.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJRMmn/btsIBLZ6tQg/jsrxrRyxWvJTWEoE2H89kK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJRMmn/btsIBLZ6tQg/jsrxrRyxWvJTWEoE2H89kK/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1210&quot; data-origin-height=&quot;680&quot; data-filename=&quot;KakaoTalk_20240710_173025601_13.jpg&quot; style=&quot;width: 49.4381%; margin-right: 10px;&quot; data-widthpercent=&quot;50.02&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJRMmn/btsIBLZ6tQg/jsrxrRyxWvJTWEoE2H89kK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJRMmn%2FbtsIBLZ6tQg%2FjsrxrRyxWvJTWEoE2H89kK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1210&quot; height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m9ari/btsIBVBztTO/NpSX3TMlyW2OWNZcMMykNk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m9ari/btsIBVBztTO/NpSX3TMlyW2OWNZcMMykNk/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20240710_173025601_12.jpg&quot; style=&quot;width: 49.3991%;&quot; data-widthpercent=&quot;49.98&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m9ari/btsIBVBztTO/NpSX3TMlyW2OWNZcMMykNk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm9ari%2FbtsIBVBztTO%2FNpSX3TMlyW2OWNZcMMykNk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Iuf3Z/btsIAsUJdAb/qJbKIJbkfKeKce6TZBp4Y1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Iuf3Z/btsIAsUJdAb/qJbKIJbkfKeKce6TZBp4Y1/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20240710_173025601_10.jpg&quot; style=&quot;width: 49.3991%; margin-right: 10px;&quot; data-widthpercent=&quot;49.98&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Iuf3Z/btsIAsUJdAb/qJbKIJbkfKeKce6TZBp4Y1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIuf3Z%2FbtsIAsUJdAb%2FqJbKIJbkfKeKce6TZBp4Y1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nfbpu/btsIBoYmi1E/hDF4EG4vf8lQJ2aBK5Qxl1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nfbpu/btsIBoYmi1E/hDF4EG4vf8lQJ2aBK5Qxl1/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1210&quot; data-origin-height=&quot;680&quot; data-filename=&quot;KakaoTalk_20240710_173025601_11.jpg&quot; style=&quot;width: 49.4381%;&quot; data-widthpercent=&quot;50.02&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nfbpu/btsIBoYmi1E/hDF4EG4vf8lQJ2aBK5Qxl1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnfbpu%2FbtsIBoYmi1E%2FhDF4EG4vf8lQJ2aBK5Qxl1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1210&quot; height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지하에는 회센터가 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240710_173025601_17.jpg&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NoQDP/btsIBjCTWLe/KfzwcpNY2yPtHvfKkDIdi0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NoQDP/btsIBjCTWLe/KfzwcpNY2yPtHvfKkDIdi0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NoQDP/btsIBjCTWLe/KfzwcpNY2yPtHvfKkDIdi0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNoQDP%2FbtsIBjCTWLe%2FKfzwcpNY2yPtHvfKkDIdi0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot; data-filename=&quot;KakaoTalk_20240710_173025601_17.jpg&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정말 먹거리 볼거리가 많네요..&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한두시간 둘러보는데 사람이 점점 많아져서 미어터지기 직전에 빠져 나왔습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아참 물건사거나 식사하면 주차권도 줍니다. 30분짜리였나..?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;암튼 한번 방문해보세요. 여행기분나고 좋습니다 ^^&lt;/p&gt;</description>
      <category>이것저것</category>
      <category>속초#속초중앙시장#속초관광수산시장#강원도#여행</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/202</guid>
      <comments>https://yongeekd01.tistory.com/202#entry202comment</comments>
      <pubDate>Tue, 16 Jul 2024 17:45:08 +0900</pubDate>
    </item>
    <item>
      <title>ffmpeg 송출 에러 av_interleaved_write_frame(): Broken pipe 해결</title>
      <link>https://yongeekd01.tistory.com/201</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;ffmpeg으로 스트림을 송출할 때 전송 중 av_interleaved_write_frame(): Broken pipe 에러가 발생 할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저같은 경우는 rtsp 송출을 시험하면서 frame rate를 30에서 5 fps로 줄였더니 발생하더군요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 여러가지 케이스가 있을 수 있겠지만 대부분은 버퍼 조정과 지연 조정으로 해결이 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 기본 옵션에서는 정상 이었으나&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ffmpeg&amp;nbsp;-stream_loop&amp;nbsp;-1&amp;nbsp;-re&amp;nbsp;-i&amp;nbsp;&quot;data/test.ts&quot;&amp;nbsp;-c:v&amp;nbsp;libx264&amp;nbsp;-c:a&amp;nbsp;aac&amp;nbsp;-f&amp;nbsp;rtsp&amp;nbsp;rtsp://localhost:8554/test_stream&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이 5fps로 프레임 레이트를 조절 한후 에러가 발생 했습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ffmpeg&amp;nbsp;-stream_loop&amp;nbsp;-1&amp;nbsp;-re&amp;nbsp;-i&amp;nbsp;&quot;data/test.ts&quot;&amp;nbsp;-c:v&amp;nbsp;libx264&amp;nbsp;-c:a&amp;nbsp;aac&amp;nbsp;-r&amp;nbsp;5&amp;nbsp;-f&amp;nbsp;rtsp&amp;nbsp;rtsp://localhost:8554/test_stream&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;몇가지 옵션을 추가 해보겠습니다. 저는 좋다는 건 일단은 다 때려 넣었지만 조절이 필요할 수도 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;(1) -max_interleave_delta 옵션&amp;nbsp;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;-max_interleave_delta 0 옵션은 FFmpeg가 패킷을 더 잘 정렬할 수 있도록 도와줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;(2) -rtsp_transport&amp;nbsp;tcp&amp;nbsp;옵션&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-rtsp_transport&amp;nbsp;tcp&amp;nbsp;옵션을&amp;nbsp;사용하여&amp;nbsp;TCP를&amp;nbsp;통해&amp;nbsp;스트림을&amp;nbsp;전송하면&amp;nbsp;안정성을&amp;nbsp;높일&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;(3) FFmpeg&amp;nbsp;버퍼&amp;nbsp;설정&amp;nbsp;조정&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;버퍼 설정을 조정하여 스트림 송출의 안정성을 높일 수 있습니다. -bufsize와 -b:v 옵션을 사용하여 비디오 버퍼 크기를 설정합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 값은 비트레이트에 영향을 주기 때문에 인코딩 화질에 직접 관여합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;(4) 기타 설정&amp;nbsp;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-flags&amp;nbsp;+low_delay:&amp;nbsp;낮은&amp;nbsp;지연을&amp;nbsp;설정합니다. &lt;br /&gt;-rtsp_flags&amp;nbsp;listen:&amp;nbsp;서버&amp;nbsp;모드에서&amp;nbsp;RTSP를&amp;nbsp;실행합니다. &lt;br /&gt;-tune&amp;nbsp;zerolatency:&amp;nbsp;인코딩&amp;nbsp;지연을&amp;nbsp;최소화합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 완성된 명령어는 다음과 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ffmpeg -stream_loop -1 -re -i &quot;data/test.ts&quot; -c:v libx264 -c:a aac -r 5 -bufsize 1024k -b:v 2000k -f rtsp -rtsp_transport tcp -max_interleave_delta 0 -flags +low_delay -tune zerolatency rtsp://localhost:8554/test_stream&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 에러가 사라졌군요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정상적으로 5fps로 송출이 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;197&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8Q0AA/btsIwy8Gmhm/IzaQWuiCTi7WBViNSXGK7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8Q0AA/btsIwy8Gmhm/IzaQWuiCTi7WBViNSXGK7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8Q0AA/btsIwy8Gmhm/IzaQWuiCTi7WBViNSXGK7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8Q0AA%2FbtsIwy8Gmhm%2FIzaQWuiCTi7WBViNSXGK7K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;704&quot; height=&quot;197&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;197&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/리눅스</category>
      <category>ffmpeg#rtsp#broken</category>
      <category>pipe#error#송출</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/201</guid>
      <comments>https://yongeekd01.tistory.com/201#entry201comment</comments>
      <pubDate>Fri, 12 Jul 2024 15:57:55 +0900</pubDate>
    </item>
    <item>
      <title>ffmpeg으로 rtsp 송출하기(RTSPSimpleServer, mediamtx)</title>
      <link>https://yongeekd01.tistory.com/200</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ffmpeg으로 시험환경을 구성하면서 udp 송출은 간단하게 구현이 되기 때문에 rtsp도 똑 같이 실행해보려고 했습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 udp 송출 예시 입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/164&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yongeekd01.tistory.com/164&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1720761896324&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;ffmpeg으로 nvidia gpu로 영상 인코딩 하면서 multicast 송출하기(멀티 GPU사용, hwaccel, cuda)&quot; data-og-description=&quot;ffmpeg으로 동영상을 송출하기에 이어서 NVIDIA 멀티 GPU를 이용하여 인코딩을 추가하여 고속으로 송출하는 방법을 알아보겠습니다. https://yongeekd01.tistory.com/163 다양한 포맷의 동영상 파일을 mpegts, ud&quot; data-og-host=&quot;yongeekd01.tistory.com&quot; data-og-source-url=&quot;https://yongeekd01.tistory.com/164&quot; data-og-url=&quot;https://yongeekd01.tistory.com/164&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/c2NnXb/hyWztw5kff/p4YPnyBRmlgoWYeh6sRHIk/img.png?width=800&amp;amp;height=389&amp;amp;face=0_0_800_389,https://scrap.kakaocdn.net/dn/fUyYK/hyWzsybbaz/gkBQkpjHJsjzmsqzm2GiF0/img.png?width=800&amp;amp;height=389&amp;amp;face=0_0_800_389,https://scrap.kakaocdn.net/dn/bTZmEx/hyWzE6tXgr/4cMOyMtAOheciGTwBjW2tk/img.png?width=1201&amp;amp;height=584&amp;amp;face=0_0_1201_584&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/164&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yongeekd01.tistory.com/164&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/c2NnXb/hyWztw5kff/p4YPnyBRmlgoWYeh6sRHIk/img.png?width=800&amp;amp;height=389&amp;amp;face=0_0_800_389,https://scrap.kakaocdn.net/dn/fUyYK/hyWzsybbaz/gkBQkpjHJsjzmsqzm2GiF0/img.png?width=800&amp;amp;height=389&amp;amp;face=0_0_800_389,https://scrap.kakaocdn.net/dn/bTZmEx/hyWzE6tXgr/4cMOyMtAOheciGTwBjW2tk/img.png?width=1201&amp;amp;height=584&amp;amp;face=0_0_1201_584');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;ffmpeg으로 nvidia gpu로 영상 인코딩 하면서 multicast 송출하기(멀티 GPU사용, hwaccel, cuda)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;ffmpeg으로 동영상을 송출하기에 이어서 NVIDIA 멀티 GPU를 이용하여 인코딩을 추가하여 고속으로 송출하는 방법을 알아보겠습니다. https://yongeekd01.tistory.com/163 다양한 포맷의 동영상 파일을 mpegts, ud&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yongeekd01.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비슷한 방법으로 아래와 같이 명령어를 주고 수행을 했더니 에러가 발생합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ffmpeg -stream_loop -1 -re -i &quot;data/test.ts&quot; -c:v copy -c:a copy -f rtsp rtsp://localhost:8554/test_stream&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;702&quot; data-origin-height=&quot;180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byozm3/btsIx6v7IJi/HKuRQ8bpFyRiKcXEycxY4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byozm3/btsIx6v7IJi/HKuRQ8bpFyRiKcXEycxY4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byozm3/btsIx6v7IJi/HKuRQ8bpFyRiKcXEycxY4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbyozm3%2FbtsIx6v7IJi%2FHKuRQ8bpFyRiKcXEycxY4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;702&quot; height=&quot;180&quot; data-origin-width=&quot;702&quot; data-origin-height=&quot;180&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Connection&amp;nbsp;to&amp;nbsp;tcp://localhost:8554?timeout=0&amp;nbsp;failed:&amp;nbsp;Connection&amp;nbsp;refused &lt;br /&gt;Could&amp;nbsp;not&amp;nbsp;write&amp;nbsp;header&amp;nbsp;for&amp;nbsp;output&amp;nbsp;file&amp;nbsp;#0&amp;nbsp;(incorrect&amp;nbsp;codec&amp;nbsp;parameters&amp;nbsp;?):&amp;nbsp;Connection&amp;nbsp;refused&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ffmpeg으로 rtsp를 송출하는데 있어서는 ffmpeg 자체 기능만 가지고는 안되고 rtsp 서버가 필요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. RTSPSimpleServer&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RTSPSimpleServer는&amp;nbsp;RTSP&amp;nbsp;(Real-Time&amp;nbsp;Streaming&amp;nbsp;Protocol)&amp;nbsp;서버&amp;nbsp;소프트웨어로,&amp;nbsp;RTSP&amp;nbsp;스트림을&amp;nbsp;간단하게&amp;nbsp;설정하고&amp;nbsp;관리할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;설계된&amp;nbsp;도구입니다.&amp;nbsp;이&amp;nbsp;서버는&amp;nbsp;주로&amp;nbsp;실시간&amp;nbsp;비디오&amp;nbsp;및&amp;nbsp;오디오&amp;nbsp;스트리밍&amp;nbsp;애플리케이션에서&amp;nbsp;사용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;* 주요 특징&lt;/b&gt; &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(1) RTSPSimpleServer는 매우 간단하게 설치하고 설정할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 설정 파일을 제공하며, 복잡한 설정 없이 바로 사용할 수 있습니다. &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(2) 다양한 포맷의 비디오 및 오디오 스트림을 지원하여 RTSP 클라이언트와의 호환성이 뛰어나며, 여러 스트림을 동시에 처리할 수 있습니다. &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(3) 시스템 리소스를 적게 사용하여 효율적으로 동작합니다. 이는 고성능 스트리밍 서버가 필요한 경우에도 적합합니다. &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(4) GitHub에서 소스 코드를 제공하며, 커뮤니티의 기여와 피드백을 통해 지속적으로 개선되고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/bluenviron/mediamtx&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/bluenviron/mediamtx&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1720762467962&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - bluenviron/mediamtx: Ready-to-use SRT / WebRTC / RTSP / RTMP / LL-HLS media server and media proxy that allows to read,&quot; data-og-description=&quot;Ready-to-use SRT / WebRTC / RTSP / RTMP / LL-HLS media server and media proxy that allows to read, publish, proxy, record and playback video and audio streams. - bluenviron/mediamtx&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/bluenviron/mediamtx&quot; data-og-url=&quot;https://github.com/bluenviron/mediamtx&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/csib7Y/hyWzEMaSx9/fY9VCNdcPhF9KYtaZFOQTk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/bluenviron/mediamtx&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/bluenviron/mediamtx&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/csib7Y/hyWzEMaSx9/fY9VCNdcPhF9KYtaZFOQTk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - bluenviron/mediamtx: Ready-to-use SRT / WebRTC / RTSP / RTMP / LL-HLS media server and media proxy that allows to read,&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Ready-to-use SRT / WebRTC / RTSP / RTMP / LL-HLS media server and media proxy that allows to read, publish, proxy, record and playback video and audio streams. - bluenviron/mediamtx&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. RTSPSimplerServer 설치 및 실행&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 페이지에서 다운로드 버전을 확인합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/bluenviron/mediamtx/releases&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/bluenviron/mediamtx/releases&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1720762715771&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Releases &amp;middot; bluenviron/mediamtx&quot; data-og-description=&quot;Ready-to-use SRT / WebRTC / RTSP / RTMP / LL-HLS media server and media proxy that allows to read, publish, proxy, record and playback video and audio streams. - bluenviron/mediamtx&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/bluenviron/mediamtx/releases&quot; data-og-url=&quot;https://github.com/bluenviron/mediamtx/releases&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ONkfH/hyWzwUUYOw/QZFJyBsOZiMKeHnnXx2ok0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/bluenviron/mediamtx/releases&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/bluenviron/mediamtx/releases&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ONkfH/hyWzwUUYOw/QZFJyBsOZiMKeHnnXx2ok0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Releases &amp;middot; bluenviron/mediamtx&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Ready-to-use SRT / WebRTC / RTSP / RTMP / LL-HLS media server and media proxy that allows to read, publish, proxy, record and playback video and audio streams. - bluenviron/mediamtx&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 아래 버전을 사용했습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mediamtx_v1.8.4_linux_amd64.tar.gz&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일을 다운로드 받고 압축을 풀어주세요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;wget&amp;nbsp;&lt;a href=&quot;https://github.com/bluenviron/mediamtx/releases/download/v1.8.4/mediamtx_v1.8.4_linux_amd64.tar.gz&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/bluenviron/mediamtx/releases/download/v1.8.4/mediamtx_v1.8.4_linux_amd64.tar.gz&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;tar&amp;nbsp;xvzf&amp;nbsp;mediamtx_v1.8.4_linux_amd64.tar.gz&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버를 실행합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;./mediamtx&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;127&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/veDtM/btsIwAdRS8V/c16Ky2xsQ34nLTseDSpL7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/veDtM/btsIwAdRS8V/c16Ky2xsQ34nLTseDSpL7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/veDtM/btsIwAdRS8V/c16Ky2xsQ34nLTseDSpL7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FveDtM%2FbtsIwAdRS8V%2Fc16Ky2xsQ34nLTseDSpL7K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;127&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;127&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. ffmpeg 으로 rtsp 스트리밍 하기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 명령어를 수행해 보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ffmpeg&amp;nbsp;-stream_loop&amp;nbsp;-1&amp;nbsp;-re&amp;nbsp;-i&amp;nbsp;&quot;data/test.ts&quot;&amp;nbsp;-c:v&amp;nbsp;copy&amp;nbsp;-c:a&amp;nbsp;copy&amp;nbsp;-f&amp;nbsp;rtsp&amp;nbsp;rtsp://localhost:8554/test_stream&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어? 에러가 나는군요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Could&amp;nbsp;not&amp;nbsp;write&amp;nbsp;header&amp;nbsp;for&amp;nbsp;output&amp;nbsp;file&amp;nbsp;#0&amp;nbsp;(incorrect&amp;nbsp;codec&amp;nbsp;parameters&amp;nbsp;?):&amp;nbsp;Server&amp;nbsp;returned&amp;nbsp;400&amp;nbsp;Bad&amp;nbsp;Request&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버쪽에서 찍힌 에러를 보니 SDP 파일에 문제가 있다고 나옵니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2024/07/12&amp;nbsp;14:49:19&amp;nbsp;INF&amp;nbsp;[RTSP]&amp;nbsp;[conn&amp;nbsp;127.0.0.1:48808]&amp;nbsp;closed:&amp;nbsp;invalid&amp;nbsp;SDP:&amp;nbsp;media&amp;nbsp;2&amp;nbsp;is&amp;nbsp;invalid:&amp;nbsp;clock&amp;nbsp;rate&amp;nbsp;not&amp;nbsp;found &lt;br /&gt;2024/07/12&amp;nbsp;14:49:19&amp;nbsp;INF&amp;nbsp;[RTSP]&amp;nbsp;[session&amp;nbsp;85894030]&amp;nbsp;destroyed:&amp;nbsp;not&amp;nbsp;in&amp;nbsp;use&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;i&gt;&lt;b&gt;ffmpeg에서 SDP 오류는 코덱을 명시적으로 지정하지 않는 경우에 발생할 수 있습니다.&amp;nbsp;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비디오 오디오 코덱을 지정하고 다시 실행해 보겠습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ffmpeg -stream_loop -1 -re -i &quot;data/test.ts&quot; -c:v libx264 -c:a aac -f rtsp rtsp://localhost:8554/test_stream&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;197&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/stBxI/btsIv5ZMS3m/GN0x5xFyhmmlMOeVnFk1Wk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/stBxI/btsIv5ZMS3m/GN0x5xFyhmmlMOeVnFk1Wk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/stBxI/btsIv5ZMS3m/GN0x5xFyhmmlMOeVnFk1Wk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FstBxI%2FbtsIv5ZMS3m%2FGN0x5xFyhmmlMOeVnFk1Wk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;704&quot; height=&quot;197&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;197&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정상적으로 실행이 되었습니다.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4. 클라이언트에서 확인하기&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;vlc 로 접속 해서 확인해 볼까요?? 네트워크 스트림 열기로 ffmpeg 을 실행한 주소를 접속합니다.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;rtsp://192.168.10.219:8554/test_stream&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1045&quot; data-origin-height=&quot;508&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQV6ZB/btsIyyeAcnz/yOMxD2sII1DDqyo8XRAuEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQV6ZB/btsIyyeAcnz/yOMxD2sII1DDqyo8XRAuEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQV6ZB/btsIyyeAcnz/yOMxD2sII1DDqyo8XRAuEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQV6ZB%2FbtsIyyeAcnz%2FyOMxD2sII1DDqyo8XRAuEK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1045&quot; height=&quot;508&quot; data-origin-width=&quot;1045&quot; data-origin-height=&quot;508&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정상 적으로 rtsp 스트림이 송출되고 있는 것을 확인할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 참고&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/199&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yongeekd01.tistory.com/199&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1720763964262&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;vlc를 이용해서 동영상 파일을 rtsp 스트림으로 전송하기&quot; data-og-description=&quot;개발하면서 테스트 하다보면 스트림을 가상으로 생성해서 수신해야 하는 경우가 있습니다.&amp;nbsp;여기서는 많이 사용하는 vlc 를 이용하여 rtsp 스트림을 전송해보고 다른 app에서 수신해보겠습니다.&amp;nbsp;&quot; data-og-host=&quot;yongeekd01.tistory.com&quot; data-og-source-url=&quot;https://yongeekd01.tistory.com/199&quot; data-og-url=&quot;https://yongeekd01.tistory.com/199&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/VHYcz/hyWzskEpHl/yJjZuoKxjS9icjNr2VcLNk/img.png?width=723&amp;amp;height=474&amp;amp;face=0_0_723_474,https://scrap.kakaocdn.net/dn/IyXlP/hyWzx0At6J/gLSmm8O2K8fFCqwRDk5vnK/img.png?width=723&amp;amp;height=474&amp;amp;face=0_0_723_474,https://scrap.kakaocdn.net/dn/NDTxR/hyWzzc1ZO9/mgUsB17g6GsXxjBCGaM041/img.png?width=724&amp;amp;height=473&amp;amp;face=0_0_724_473&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/199&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yongeekd01.tistory.com/199&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/VHYcz/hyWzskEpHl/yJjZuoKxjS9icjNr2VcLNk/img.png?width=723&amp;amp;height=474&amp;amp;face=0_0_723_474,https://scrap.kakaocdn.net/dn/IyXlP/hyWzx0At6J/gLSmm8O2K8fFCqwRDk5vnK/img.png?width=723&amp;amp;height=474&amp;amp;face=0_0_723_474,https://scrap.kakaocdn.net/dn/NDTxR/hyWzzc1ZO9/mgUsB17g6GsXxjBCGaM041/img.png?width=724&amp;amp;height=473&amp;amp;face=0_0_724_473');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;vlc를 이용해서 동영상 파일을 rtsp 스트림으로 전송하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;개발하면서 테스트 하다보면 스트림을 가상으로 생성해서 수신해야 하는 경우가 있습니다.&amp;nbsp;여기서는 많이 사용하는 vlc 를 이용하여 rtsp 스트림을 전송해보고 다른 app에서 수신해보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yongeekd01.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/리눅스</category>
      <category>mediamtx#rtsp#vlc#linux#송출</category>
      <category>rtspsimpleserver</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/200</guid>
      <comments>https://yongeekd01.tistory.com/200#entry200comment</comments>
      <pubDate>Fri, 12 Jul 2024 15:00:20 +0900</pubDate>
    </item>
    <item>
      <title>vlc를 이용해서 동영상 파일을 rtsp 스트림으로 전송하기</title>
      <link>https://yongeekd01.tistory.com/199</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;개발하면서 테스트 하다보면 스트림을 가상으로 생성해서 수신해야 하는 경우가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서는 많이 사용하는 vlc 를 이용하여 rtsp 스트림을 전송해보고 다른 app에서 수신해보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 네트워크 스트림 열기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;568&quot; data-origin-height=&quot;378&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UfCQE/btsIvUv8vXi/uUlaPK7U9aXKb2i7VCK271/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UfCQE/btsIvUv8vXi/uUlaPK7U9aXKb2i7VCK271/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UfCQE/btsIvUv8vXi/uUlaPK7U9aXKb2i7VCK271/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUfCQE%2FbtsIvUv8vXi%2FuUlaPK7U9aXKb2i7VCK271%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;568&quot; height=&quot;378&quot; data-origin-width=&quot;568&quot; data-origin-height=&quot;378&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미디어 &amp;gt; 스트림하기 선택&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;567&quot; data-origin-height=&quot;377&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6UqXr/btsIwzdXEf6/bXvZyxi5iNp833iLfKfNm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6UqXr/btsIwzdXEf6/bXvZyxi5iNp833iLfKfNm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6UqXr/btsIwzdXEf6/bXvZyxi5iNp833iLfKfNm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6UqXr%2FbtsIwzdXEf6%2FbXvZyxi5iNp833iLfKfNm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;567&quot; height=&quot;377&quot; data-origin-width=&quot;567&quot; data-origin-height=&quot;377&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스트림할 대상 파일 추가 하기&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;526&quot; data-origin-height=&quot;427&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s11S3/btsIu4GmloM/BiyCRGZT6l2UVw8lkkKJYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s11S3/btsIu4GmloM/BiyCRGZT6l2UVw8lkkKJYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s11S3/btsIu4GmloM/BiyCRGZT6l2UVw8lkkKJYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs11S3%2FbtsIu4GmloM%2FBiyCRGZT6l2UVw8lkkKJYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;526&quot; height=&quot;427&quot; data-origin-width=&quot;526&quot; data-origin-height=&quot;427&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스트림 드롭다운에서 스트림 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;556&quot; data-origin-height=&quot;515&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/by0fG7/btsIvjXvyKN/FvsVlUdBsCfz9FpqPx8S3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/by0fG7/btsIvjXvyKN/FvsVlUdBsCfz9FpqPx8S3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/by0fG7/btsIvjXvyKN/FvsVlUdBsCfz9FpqPx8S3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fby0fG7%2FbtsIvjXvyKN%2FFvsVlUdBsCfz9FpqPx8S3K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;556&quot; height=&quot;515&quot; data-origin-width=&quot;556&quot; data-origin-height=&quot;515&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스트림 출력을 rtsp로 선택&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;474&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9t8ZR/btsIvl8QJcs/7dpFvrt75LV4uzCvXDj28k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9t8ZR/btsIvl8QJcs/7dpFvrt75LV4uzCvXDj28k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9t8ZR/btsIvl8QJcs/7dpFvrt75LV4uzCvXDj28k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9t8ZR%2FbtsIvl8QJcs%2F7dpFvrt75LV4uzCvXDj28k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;723&quot; height=&quot;474&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;474&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가하기를 눌러서 rstp 주소를 생성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 주소로 다른 장치나 app에서 access 가능 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;724&quot; data-origin-height=&quot;476&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tx85H/btsIwtdQya1/pbclhj48XKwlHFTP1VUW80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tx85H/btsIwtdQya1/pbclhj48XKwlHFTP1VUW80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tx85H/btsIwtdQya1/pbclhj48XKwlHFTP1VUW80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ftx85H%2FbtsIwtdQya1%2Fpbclhj48XKwlHFTP1VUW80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;724&quot; height=&quot;476&quot; data-origin-width=&quot;724&quot; data-origin-height=&quot;476&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;트랜스코딩은 코덱 변경등이 필요할때는 해도 좋고 원본 대로 내보내도 상관 없습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;472&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EhWV8/btsIv8Vh9zA/baJxRZZdL82A73KfiUeYkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EhWV8/btsIv8Vh9zA/baJxRZZdL82A73KfiUeYkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EhWV8/btsIv8Vh9zA/baJxRZZdL82A73KfiUeYkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEhWV8%2FbtsIv8Vh9zA%2FbaJxRZZdL82A73KfiUeYkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;722&quot; height=&quot;472&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;472&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 스트림 버튼 누릅니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;724&quot; data-origin-height=&quot;473&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTfGmt/btsIuRN3Pdv/2diM0oXY80DfBCaZ6OuZdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTfGmt/btsIuRN3Pdv/2diM0oXY80DfBCaZ6OuZdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTfGmt/btsIuRN3Pdv/2diM0oXY80DfBCaZ6OuZdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTfGmt%2FbtsIuRN3Pdv%2F2diM0oXY80DfBCaZ6OuZdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;724&quot; height=&quot;473&quot; data-origin-width=&quot;724&quot; data-origin-height=&quot;473&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그래스 바로 재생이 시작되는 것을 볼수 있습니다.&amp;nbsp; 재생 중 화면이 보이지는 않습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반복 재생 하고 싶으면 아래 루프 버튼을 눌러주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;375&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b459iH/btsIwtET1F7/Q0BUvvASvXM7uzwlJrQE9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b459iH/btsIwtET1F7/Q0BUvvASvXM7uzwlJrQE9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b459iH/btsIwtET1F7/Q0BUvvASvXM7uzwlJrQE9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb459iH%2FbtsIwtET1F7%2FQ0BUvvASvXM7uzwlJrQE9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;569&quot; height=&quot;375&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;375&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 스트림 수신 재생 해보기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 vlc를 하나 더 띄워서 이 rtsp 스트림을 수신해서 재생해 보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;rtsp 스트림을 하고 있는 PC의 IP를 넣고 위에 입력한 포트와 하위 폴더명을 주시고 재생하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;569&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/L0Xw2/btsIwnLvdVY/sVXiTkn9gj6D5SooDkGw31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/L0Xw2/btsIwnLvdVY/sVXiTkn9gj6D5SooDkGw31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/L0Xw2/btsIwnLvdVY/sVXiTkn9gj6D5SooDkGw31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FL0Xw2%2FbtsIwnLvdVY%2FsVXiTkn9gj6D5SooDkGw31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;901&quot; height=&quot;569&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;569&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;635&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFBvfY/btsIvT462BA/n2CR4QdizfWvKjY5bkrD6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFBvfY/btsIvT462BA/n2CR4QdizfWvKjY5bkrD6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFBvfY/btsIvT462BA/n2CR4QdizfWvKjY5bkrD6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFBvfY%2FbtsIvT462BA%2Fn2CR4QdizfWvKjY5bkrD6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;806&quot; height=&quot;635&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;635&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재생이 잘 되네요&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>vlc#rtsp</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/199</guid>
      <comments>https://yongeekd01.tistory.com/199#entry199comment</comments>
      <pubDate>Thu, 11 Jul 2024 17:13:14 +0900</pubDate>
    </item>
    <item>
      <title>속초항 오징어난전 둘러보기(오징어회,무침 등등)</title>
      <link>https://yongeekd01.tistory.com/198</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이야기는 많이 들었었는데&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에 낙산에 다녀오는 길에 속초항 옆에 있는 오징어 난전에 들러 보았습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 비주얼이 사람 마음을 쏘옥 잡아 끌어서&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오징어 한두마리 뽀개지 않고는 지나갈 수가 없더군요&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;낮에도 사람이 상당히 많습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 속초 오징어 난전 위치&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;속초항을 따라서 쭈욱 여러개의 가게가 연결되어 시장을 형성하고 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가게 앞에도 뒤에도 주차장이 있어서 차를 세우기는 어렵지 않았습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://naver.me/Gaz49gSb&quot;&gt;https://naver.me/Gaz49gSb&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1720604112636&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;오징어난전 14호 거성호 : 네이버 &quot; data-og-description=&quot;방문자리뷰 130 &amp;middot; 블로그리뷰 34&quot; data-og-host=&quot;m.place.naver.com&quot; data-og-source-url=&quot;https://naver.me/Gaz49gSb&quot; data-og-url=&quot;https://m.place.naver.com/restaurant/1094286762/home&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/II273/hyWzBVWen1/uPPhSDizdCIGluzDuGewgk/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/PHO9R/hyWzsYYEW7/9cF9wrkta0KT74U2O90w11/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/gj0Hr/hyWvTqogun/kCrZdp82sQX21ZkKB34J60/img.jpg?width=750&amp;amp;height=500&amp;amp;face=0_0_750_500&quot;&gt;&lt;a href=&quot;https://naver.me/Gaz49gSb&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://naver.me/Gaz49gSb&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/II273/hyWzBVWen1/uPPhSDizdCIGluzDuGewgk/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/PHO9R/hyWzsYYEW7/9cF9wrkta0KT74U2O90w11/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/gj0Hr/hyWvTqogun/kCrZdp82sQX21ZkKB34J60/img.jpg?width=750&amp;amp;height=500&amp;amp;face=0_0_750_500');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;오징어난전 14호 거성호 : 네이버 &lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;방문자리뷰 130 &amp;middot; 블로그리뷰 34&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;m.place.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;834&quot; data-origin-height=&quot;513&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQGGsD/btsItR1aFkM/C6MAyroeHCGoKW3KiO8jO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQGGsD/btsItR1aFkM/C6MAyroeHCGoKW3KiO8jO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQGGsD/btsItR1aFkM/C6MAyroeHCGoKW3KiO8jO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQGGsD%2FbtsItR1aFkM%2FC6MAyroeHCGoKW3KiO8jO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;834&quot; height=&quot;513&quot; data-origin-width=&quot;834&quot; data-origin-height=&quot;513&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 오징어 난전 외관 보기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러개의 가게가 쭉 늘어서 있는데 호객 행위가 많지는 않았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나중에 보니 어느 한 가게에서 밖으로 나와서 호객을 하는지 감시하는 아저씨가 있더라고요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마도 나름의 상도덕 규칙이 있나봅니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240710_172854389.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CzBx9/btsIvSKMreh/VeM4rQoymXNlfrKWDkKFs1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CzBx9/btsIvSKMreh/VeM4rQoymXNlfrKWDkKFs1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CzBx9/btsIvSKMreh/VeM4rQoymXNlfrKWDkKFs1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCzBx9%2FbtsIvSKMreh%2FVeM4rQoymXNlfrKWDkKFs1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_172854389.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240710_172854389_01.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qvYxm/btsIvUu35Jj/eyOBdRkOr8VBgkJ0pkyXjK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qvYxm/btsIvUu35Jj/eyOBdRkOr8VBgkJ0pkyXjK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qvYxm/btsIvUu35Jj/eyOBdRkOr8VBgkJ0pkyXjK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqvYxm%2FbtsIvUu35Jj%2FeyOBdRkOr8VBgkJ0pkyXjK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_172854389_01.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 내부 둘러보기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 가게는 어디를 들어가도 메뉴와 구조가 비슷비슷 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 맛도 비슷비슷 하지 않을까???&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가게를 고르는데 별로 고민 하지 않아도 될듯..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHO5PB/btsIvRyqCZV/HZe5RQsNoS7HpUkKhRpPH1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHO5PB/btsIvRyqCZV/HZe5RQsNoS7HpUkKhRpPH1/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot; data-filename=&quot;KakaoTalk_20240710_172854389_02.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHO5PB/btsIvRyqCZV/HZe5RQsNoS7HpUkKhRpPH1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHO5PB%2FbtsIvRyqCZV%2FHZe5RQsNoS7HpUkKhRpPH1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMFG2I/btsIvbD82sJ/10PbpmkiAhTfoaeunKkE3K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMFG2I/btsIvbD82sJ/10PbpmkiAhTfoaeunKkE3K/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot; data-filename=&quot;KakaoTalk_20240710_172854389_03.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMFG2I/btsIvbD82sJ/10PbpmkiAhTfoaeunKkE3K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMFG2I%2FbtsIvbD82sJ%2F10PbpmkiAhTfoaeunKkE3K%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 맛보기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자 오징어 회 한번 조져 봅시다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제가 갔을때는 2마리에 3만5천원 이었는데.. 가격은 계속 싯가로 조정된다고 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오징어 회를 먹을때 채썰기만 먹어봤는데 여기는&amp;nbsp; 포뜨기도 해주는 군요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맛 좋네요 ^^&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240710_172854389_04.jpg&quot; data-origin-width=&quot;1210&quot; data-origin-height=&quot;680&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sWesa/btsItQONp8O/iFH0j2coq0QAg8TYccz7W1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sWesa/btsItQONp8O/iFH0j2coq0QAg8TYccz7W1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sWesa/btsItQONp8O/iFH0j2coq0QAg8TYccz7W1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsWesa%2FbtsItQONp8O%2FiFH0j2coq0QAg8TYccz7W1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1210&quot; height=&quot;680&quot; data-filename=&quot;KakaoTalk_20240710_172854389_04.jpg&quot; data-origin-width=&quot;1210&quot; data-origin-height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쏘주 없이 먹는 오징어는 좀 슬프지만. 어쩔 수 없이 ㅜㅜ&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한번 방문해보세요&lt;/p&gt;</description>
      <category>이것저것</category>
      <category>속초#오징어#오징어난전#속초항#오징어회#오징어무침</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/198</guid>
      <comments>https://yongeekd01.tistory.com/198#entry198comment</comments>
      <pubDate>Wed, 10 Jul 2024 18:42:24 +0900</pubDate>
    </item>
    <item>
      <title>강릉 초당골짬뽕순두부 속초점 둘러보기(양양, 속초, 얼큰 해장용 ^^)</title>
      <link>https://yongeekd01.tistory.com/197</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;낙산 해수욕장에서 신나게 놀고 돌아오는 아침!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭐 해장할게 좋은게 있을까 찾다가 발견한 곳입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;속초 시내에 있는 초당골 짬뽕순두부!!!&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시원하고 얼큰한 국물이 일품입니다. 사람들이 많아서 좀 기다릴 수도 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 초당골 짬봉 순두부 속초&lt;/b&gt;&lt;b&gt;점 위치&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;낙산에서 15분거리, 속초 시내에 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://naver.me/5s343oZk&quot;&gt;https://naver.me/5s343oZk&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1720602966170&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;강릉초당골짬뽕순두부 속초점 : 네이버 &quot; data-og-description=&quot;방문자리뷰 646 &amp;middot; 블로그리뷰 60&quot; data-og-host=&quot;m.place.naver.com&quot; data-og-source-url=&quot;https://naver.me/5s343oZk&quot; data-og-url=&quot;https://m.place.naver.com/restaurant/1862163840/menu/list&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/caAM18/hyWvRF69Ot/vCN2vfiqlB9D2wH15hhRUk/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/SXis3/hyWzpOIDC1/77TagmEYcRnkHKSUJl5NW1/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/bq2WWW/hyWvLeP0BG/U0D0vm9eo5XStIPZBYQ0L1/img.jpg?width=560&amp;amp;height=994&amp;amp;face=0_0_560_994&quot;&gt;&lt;a href=&quot;https://naver.me/5s343oZk&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://naver.me/5s343oZk&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/caAM18/hyWvRF69Ot/vCN2vfiqlB9D2wH15hhRUk/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/SXis3/hyWzpOIDC1/77TagmEYcRnkHKSUJl5NW1/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/bq2WWW/hyWvLeP0BG/U0D0vm9eo5XStIPZBYQ0L1/img.jpg?width=560&amp;amp;height=994&amp;amp;face=0_0_560_994');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;강릉초당골짬뽕순두부 속초점 : 네이버 &lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;방문자리뷰 646 &amp;middot; 블로그리뷰 60&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;m.place.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;521&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAXDkn/btsIvOIr4Az/bDLt2R4OLUTuicYEw0TG60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAXDkn/btsIvOIr4Az/bDLt2R4OLUTuicYEw0TG60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAXDkn/btsIvOIr4Az/bDLt2R4OLUTuicYEw0TG60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAXDkn%2FbtsIvOIr4Az%2FbDLt2R4OLUTuicYEw0TG60%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1125&quot; height=&quot;521&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;521&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 외관 둘러보기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blo9i0/btsItJ94UEe/Bt6LOjE84ulPuB47EMC98k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blo9i0/btsItJ94UEe/Bt6LOjE84ulPuB47EMC98k/img.png&quot; data-origin-width=&quot;468&quot; data-origin-height=&quot;250&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4153%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blo9i0/btsItJ94UEe/Bt6LOjE84ulPuB47EMC98k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fblo9i0%2FbtsItJ94UEe%2FBt6LOjE84ulPuB47EMC98k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;468&quot; height=&quot;250&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dTKUaP/btsIun6n10V/tdONiklVO0lz7admkceXSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dTKUaP/btsIun6n10V/tdONiklVO0lz7admkceXSk/img.png&quot; data-origin-width=&quot;425&quot; data-origin-height=&quot;227&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4219%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dTKUaP/btsIun6n10V/tdONiklVO0lz7admkceXSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdTKUaP%2FbtsIun6n10V%2FtdONiklVO0lz7admkceXSk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;425&quot; height=&quot;227&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;겉 보기엔 그냥그냥..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 맛은 최고!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 내부 둘러보기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;깔끔합니다. 테이블에는 1회용 비닐이 겹겹이 있네요. 식사 후 싹걷어내고 끝.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1회 제공후 반찬은 셀프로 계속 가져다 먹어도 됩니다. 공기밥도 무제한 !!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bl9IX9/btsIuvpK7TU/EwL3KOgVTltSN3fOZJ5Yc0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bl9IX9/btsIuvpK7TU/EwL3KOgVTltSN3fOZJ5Yc0/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;1210&quot; data-filename=&quot;KakaoTalk_20240710_172808243_03.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bl9IX9/btsIuvpK7TU/EwL3KOgVTltSN3fOZJ5Yc0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbl9IX9%2FbtsIuvpK7TU%2FEwL3KOgVTltSN3fOZJ5Yc0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;680&quot; height=&quot;1210&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjXdQG/btsIu7BVUri/rkIULVbM7qGJV9xrkWhihK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjXdQG/btsIu7BVUri/rkIULVbM7qGJV9xrkWhihK/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;1210&quot; data-filename=&quot;KakaoTalk_20240710_172808243_04.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjXdQG/btsIu7BVUri/rkIULVbM7qGJV9xrkWhihK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjXdQG%2FbtsIu7BVUri%2FrkIULVbM7qGJV9xrkWhihK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;680&quot; height=&quot;1210&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UBn70/btsItFNs1W4/in3DJok2kfZtdPKG35AodK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UBn70/btsItFNs1W4/in3DJok2kfZtdPKG35AodK/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot; data-filename=&quot;KakaoTalk_20240710_172808243_08.jpg&quot; style=&quot;width: 23.7514%; margin-right: 10px;&quot; data-widthpercent=&quot;24.03&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UBn70/btsItFNs1W4/in3DJok2kfZtdPKG35AodK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUBn70%2FbtsItFNs1W4%2Fin3DJok2kfZtdPKG35AodK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2ptIB/btsIt5StM9M/NNyFHgGqRbfXxATJQmsoCK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2ptIB/btsIt5StM9M/NNyFHgGqRbfXxATJQmsoCK/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_172808243_09.jpg&quot; style=&quot;width: 75.0858%;&quot; data-widthpercent=&quot;75.97&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2ptIB/btsIt5StM9M/NNyFHgGqRbfXxATJQmsoCK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2ptIB%2FbtsIt5StM9M%2FNNyFHgGqRbfXxATJQmsoCK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QdzUi/btsItEOxQTG/18RhgcpT1atf6VPo5dPrQ0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QdzUi/btsItEOxQTG/18RhgcpT1atf6VPo5dPrQ0/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_172808243_10.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QdzUi/btsItEOxQTG/18RhgcpT1atf6VPo5dPrQ0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQdzUi%2FbtsItEOxQTG%2F18RhgcpT1atf6VPo5dPrQ0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dSOXew/btsIvdhFk3D/qMeyGiMQ36NKKBc33APmkk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dSOXew/btsIvdhFk3D/qMeyGiMQ36NKKBc33APmkk/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_172808243_02.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dSOXew/btsIvdhFk3D/qMeyGiMQ36NKKBc33APmkk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdSOXew%2FbtsIvdhFk3D%2FqMeyGiMQ36NKKBc33APmkk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 맛보기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 이집의&amp;nbsp; 메인 메뉴. 해물짬뽕순두부를 시켰습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcX3Ge/btsIvucoYw8/bYpIeucc97R65HumjfFld0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcX3Ge/btsIvucoYw8/bYpIeucc97R65HumjfFld0/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_172808243.jpg&quot; style=&quot;width: 49.3991%; margin-right: 10px;&quot; data-widthpercent=&quot;49.98&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcX3Ge/btsIvucoYw8/bYpIeucc97R65HumjfFld0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcX3Ge%2FbtsIvucoYw8%2FbYpIeucc97R65HumjfFld0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Jbu7j/btsIvj9UKoT/ksL8i8nd1cnncEA3YDtQa1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Jbu7j/btsIvj9UKoT/ksL8i8nd1cnncEA3YDtQa1/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1210&quot; data-origin-height=&quot;680&quot; data-filename=&quot;KakaoTalk_20240710_172808243_05.jpg&quot; style=&quot;width: 49.4381%;&quot; data-widthpercent=&quot;50.02&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Jbu7j/btsIvj9UKoT/ksL8i8nd1cnncEA3YDtQa1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJbu7j%2FbtsIvj9UKoT%2FksL8i8nd1cnncEA3YDtQa1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1210&quot; height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240710_172808243_06.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/I7w9N/btsIvtdukmh/hJuAeSshquxoGzmXvEMj5K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/I7w9N/btsIvtdukmh/hJuAeSshquxoGzmXvEMj5K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/I7w9N/btsIvtdukmh/hJuAeSshquxoGzmXvEMj5K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FI7w9N%2FbtsIvtdukmh%2FhJuAeSshquxoGzmXvEMj5K%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_172808243_06.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우아 보기만해도 어제 먹은 소주가 내려가는 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해물이 많이 들어있고 개운하면서 얼큰한 맛이 일품 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;양양 여행 후 아침 해장거리를 찾으신다면 여기를 추천합니다 ^^&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>이것저것</category>
      <category>속초#양양#낙산#해장#짬뽕#순두부</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/197</guid>
      <comments>https://yongeekd01.tistory.com/197#entry197comment</comments>
      <pubDate>Wed, 10 Jul 2024 18:28:31 +0900</pubDate>
    </item>
    <item>
      <title>춘천 1.5 닭갈비 본점 둘러보기(닭내장도 굿!, 주차정보)</title>
      <link>https://yongeekd01.tistory.com/196</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;양양에서 서울로 오는길에 식사 시간도 되었고해서 6시경에 춘천으로 잠깐 들러 닭갈비를 먹으러 갔습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아시는분은 이미 잘 아시는 바로 그 1.5 닭갈비 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기는 닭갈비도 맛있지만 식감 좋은 닭내장도 볶아 먹을 수 있어 더욱 좋아요~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비가오는 일요일이었지만 현지분들 포함해서 바글바글 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;30분 이상 웨이팅한것 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 춘전 1.5 닭갈비 위치 (주차정보)&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위치는 강원도 춘천시 후만로 77 / 후평3동 인공폭포 맞은편 입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://naver.me/5Tv3Oe0J&quot;&gt;https://naver.me/5Tv3Oe0J&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1720601681126&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;1.5닭갈비 본점 : 네이버 &quot; data-og-description=&quot;방문자리뷰 3,326 &amp;middot; 블로그리뷰 1,476&quot; data-og-host=&quot;m.place.naver.com&quot; data-og-source-url=&quot;https://naver.me/5Tv3Oe0J&quot; data-og-url=&quot;https://m.place.naver.com/restaurant/11655031/home&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bC8wsq/hyWzzX6HpQ/sMMKyfgvTKzWRlppx0LnZ1/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/B9NLV/hyWzwG4qL3/UIRU9JWwkxrQeekRICyeuk/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/VBD6k/hyWvSrtYLs/RPxsEWreykCDhPetBDBYT0/img.jpg?width=560&amp;amp;height=420&amp;amp;face=0_0_560_420&quot;&gt;&lt;a href=&quot;https://naver.me/5Tv3Oe0J&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://naver.me/5Tv3Oe0J&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bC8wsq/hyWzzX6HpQ/sMMKyfgvTKzWRlppx0LnZ1/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/B9NLV/hyWzwG4qL3/UIRU9JWwkxrQeekRICyeuk/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/VBD6k/hyWvSrtYLs/RPxsEWreykCDhPetBDBYT0/img.jpg?width=560&amp;amp;height=420&amp;amp;face=0_0_560_420');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;1.5닭갈비 본점 : 네이버 &lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;방문자리뷰 3,326 &amp;middot; 블로그리뷰 1,476&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;m.place.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1002&quot; data-origin-height=&quot;522&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Q5YLF/btsItmgdGJx/JKh4VU8RJfOHtEWN80FWJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Q5YLF/btsItmgdGJx/JKh4VU8RJfOHtEWN80FWJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Q5YLF/btsItmgdGJx/JKh4VU8RJfOHtEWN80FWJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQ5YLF%2FbtsItmgdGJx%2FJKh4VU8RJfOHtEWN80FWJ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1002&quot; height=&quot;522&quot; data-origin-width=&quot;1002&quot; data-origin-height=&quot;522&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;주차 정보!! &lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주말에는 바로 5분거리에 있는 후평3동 행정복지센터에 주차하시면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주차면이 20개 정도 있는 것 같아요. 엄청 넓지는 않지만 들고나는 차가 많아서 세우기가 어렵지는 않습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 1.5 닭갈비 외관 둘러보기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘도 역시 사람이 바글바글 합니다 .&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노란색 간판에 딱!!&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240710_172712593_01.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCM96t/btsIvtYPkWn/uG6F9ribKEwTQdcKeatVpK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCM96t/btsIvtYPkWn/uG6F9ribKEwTQdcKeatVpK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCM96t/btsIvtYPkWn/uG6F9ribKEwTQdcKeatVpK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCM96t%2FbtsIvtYPkWn%2FuG6F9ribKEwTQdcKeatVpK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_172712593_01.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3CdnW/btsIvxfKL5i/MEbfKA7UGiOkMkeguhWgs0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3CdnW/btsIvxfKL5i/MEbfKA7UGiOkMkeguhWgs0/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot; data-filename=&quot;KakaoTalk_20240710_172712593_09.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3CdnW/btsIvxfKL5i/MEbfKA7UGiOkMkeguhWgs0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3CdnW%2FbtsIvxfKL5i%2FMEbfKA7UGiOkMkeguhWgs0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bI5hyI/btsIvxth9TE/mAYWZIY4cfvv0muKLnbdbk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bI5hyI/btsIvxth9TE/mAYWZIY4cfvv0muKLnbdbk/img.jpg&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20240710_172712593_03.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bI5hyI/btsIvxth9TE/mAYWZIY4cfvv0muKLnbdbk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbI5hyI%2FbtsIvxth9TE%2FmAYWZIY4cfvv0muKLnbdbk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가게에서 대기 번호표를 받아서 가게 오른쪽 골목 안쪽으로 가면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대기석이 있습니다. 많은 사람들이 웨이팅을 하고 있네요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주인 아저씨가 자리가 빌때마다 나와서 번호를 부릅니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kYkqp/btsIuuqPhEr/zc8k1eHUipqQAevGv87h6k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kYkqp/btsIuuqPhEr/zc8k1eHUipqQAevGv87h6k/img.jpg&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20240710_172712593.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kYkqp/btsIuuqPhEr/zc8k1eHUipqQAevGv87h6k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkYkqp%2FbtsIuuqPhEr%2Fzc8k1eHUipqQAevGv87h6k%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvyBTm/btsIuJOSz8W/v0HJqgIYXjkRNk9KEFRQ1k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvyBTm/btsIuJOSz8W/v0HJqgIYXjkRNk9KEFRQ1k/img.jpg&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20240710_172712593_08.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvyBTm/btsIuJOSz8W/v0HJqgIYXjkRNk9KEFRQ1k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvyBTm%2FbtsIuJOSz8W%2Fv0HJqgIYXjkRNk9KEFRQ1k%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;밖에서 안을 기웃 기웃 ... ^^ 부럽다. 빨리 들어가고 싶다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pgGMc/btsIu79Iw10/KuQXJ0ki3KbKn7hhyVBrv0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pgGMc/btsIu79Iw10/KuQXJ0ki3KbKn7hhyVBrv0/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_172712593_04.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pgGMc/btsIu79Iw10/KuQXJ0ki3KbKn7hhyVBrv0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpgGMc%2FbtsIu79Iw10%2FKuQXJ0ki3KbKn7hhyVBrv0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6WUn9/btsIvl0Xb6R/loiK6BJCxl5QC0rZxJHEe0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6WUn9/btsIvl0Xb6R/loiK6BJCxl5QC0rZxJHEe0/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_172712593_07.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6WUn9/btsIvl0Xb6R/loiK6BJCxl5QC0rZxJHEe0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6WUn9%2FbtsIvl0Xb6R%2FloiK6BJCxl5QC0rZxJHEe0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;드디어!! 차례가 되어서 입장을 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 가게 내부 둘러보기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좌식 테이블과 의자 테이블이 여럿 있어서 복작복작 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240710_172712593_10.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mOFgy/btsItkQhGoO/6dJz7dpQkMBOPp1g47xstk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mOFgy/btsItkQhGoO/6dJz7dpQkMBOPp1g47xstk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mOFgy/btsItkQhGoO/6dJz7dpQkMBOPp1g47xstk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmOFgy%2FbtsItkQhGoO%2F6dJz7dpQkMBOPp1g47xstk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_172712593_10.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240710_172712593_11.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LA2Pu/btsIu8Hy2iM/NsLW7mmIcsVD2wUlG510J1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LA2Pu/btsIu8Hy2iM/NsLW7mmIcsVD2wUlG510J1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LA2Pu/btsIu8Hy2iM/NsLW7mmIcsVD2wUlG510J1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLA2Pu%2FbtsIu8Hy2iM%2FNsLW7mmIcsVD2wUlG510J1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_172712593_11.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240710_172712593_12.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKlSul/btsItVh8SOE/8wVoMUQnzrxiWFaZ5qKDf0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKlSul/btsItVh8SOE/8wVoMUQnzrxiWFaZ5qKDf0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKlSul/btsItVh8SOE/8wVoMUQnzrxiWFaZ5qKDf0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKlSul%2FbtsItVh8SOE%2F8wVoMUQnzrxiWFaZ5qKDf0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_172712593_12.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현지 분들도 가족단위로 많이 찾으시는 것 같네요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 맛보기 !!&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;저는 닭내장 2개와 닭갈비 1개, 우동사리를 시켰습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;닭내장의 오독오독함이 좋더라고요.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240710_172712593_14.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpLu6r/btsIvupT4Zp/9OPjlZxUObi5LpiSqsmCE1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpLu6r/btsIvupT4Zp/9OPjlZxUObi5LpiSqsmCE1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpLu6r/btsIvupT4Zp/9OPjlZxUObi5LpiSqsmCE1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpLu6r%2FbtsIvupT4Zp%2F9OPjlZxUObi5LpiSqsmCE1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_172712593_14.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일하시는 분들이 직접 조리해 주십니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240710_172712593_15.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhkcMy/btsItF02jNC/C8s4D1xjd8Xh2c2RewWqV1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhkcMy/btsItF02jNC/C8s4D1xjd8Xh2c2RewWqV1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhkcMy/btsItF02jNC/C8s4D1xjd8Xh2c2RewWqV1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhkcMy%2FbtsItF02jNC%2FC8s4D1xjd8Xh2c2RewWqV1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_172712593_15.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빨리 익어라 좀!!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240710_172712593_16.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8u4Tz/btsIupwl0eo/ZAxFSBnjsykc06zFXfWme1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8u4Tz/btsIupwl0eo/ZAxFSBnjsykc06zFXfWme1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8u4Tz/btsIupwl0eo/ZAxFSBnjsykc06zFXfWme1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8u4Tz%2FbtsIupwl0eo%2FZAxFSBnjsykc06zFXfWme1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240710_172712593_16.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;짜짠 완성~~~ 역시 일부러 찾아올만 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아주 맛있네요.&amp;nbsp;운전 때문에 술을 못먹고 콜라에 먹는게 한이지만 쩝!!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근처를 지나실때 꼭 한번 들러보세요.,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이름 값을 합니다. ^^&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>이것저것</category>
      <category>춘천#닭갈비#1.5닭갈비#후평동#강원도</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/196</guid>
      <comments>https://yongeekd01.tistory.com/196#entry196comment</comments>
      <pubDate>Wed, 10 Jul 2024 18:09:57 +0900</pubDate>
    </item>
    <item>
      <title>google Gemma 2 개요 및 간단 테스트</title>
      <link>https://yongeekd01.tistory.com/195</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 개요&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;LLM &lt;/span&gt;&lt;span&gt;시장에서 뒤쳐진 채로 열심히 뒤따라가고 있는 구글이 또 제미나이를 기반으로 하는 또 하나의 모델을 버전업 해서 출시했습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;항상 그렇지만 이번엔 정말 좋아요&lt;/span&gt;&lt;span&gt;... &lt;/span&gt;&lt;span&gt;라는 멘트와 함께 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;발표자료를 보면 다음과 같네요&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;213&quot; data-origin-height=&quot;291&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Rb7IU/btsIhMeBJIw/gn4po1oWMuvplo2oNdzz10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Rb7IU/btsIhMeBJIw/gn4po1oWMuvplo2oNdzz10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Rb7IU/btsIhMeBJIw/gn4po1oWMuvplo2oNdzz10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRb7IU%2FbtsIhMeBJIw%2Fgn4po1oWMuvplo2oNdzz10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;213&quot; height=&quot;291&quot; data-origin-width=&quot;213&quot; data-origin-height=&quot;291&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;효율성과 성능을 위한 새로운 개방형 모델 표준&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;* &lt;/span&gt;&lt;span&gt;특대형 성능&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;27B&lt;/span&gt;&lt;span&gt;에서 &lt;/span&gt;&lt;span&gt;Gemma 2&lt;/span&gt;&lt;span&gt;는 해당 크기 클래스에서 최고의 성능을 제공하며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;심지어 크기가 두 배 이상인 모델에 대한 경쟁력 있는 대안을 제공합니다&lt;/span&gt;&lt;span&gt;. 9B Gemma 2 &lt;/span&gt;&lt;span&gt;모델도 클래스 최고의 성능을 제공하며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;크기 범주에서 &lt;/span&gt;&lt;span&gt;Llama 3 8B &lt;/span&gt;&lt;span&gt;및 기타 개방형 모델을 능가합니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;374&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Z0G4u/btsIicDWdHT/B5uHgeTiXxYtL8iyidOXS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Z0G4u/btsIicDWdHT/B5uHgeTiXxYtL8iyidOXS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Z0G4u/btsIicDWdHT/B5uHgeTiXxYtL8iyidOXS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZ0G4u%2FbtsIicDWdHT%2FB5uHgeTiXxYtL8iyidOXS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;569&quot; height=&quot;374&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;374&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;* &lt;/span&gt;&lt;span&gt;탁월한 효율성 및 비용 절감&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;27B Gemma 2 &lt;/span&gt;&lt;span&gt;모델은 단일 &lt;/span&gt;&lt;span&gt;Google Cloud TPU &lt;/span&gt;&lt;span&gt;호스트&lt;/span&gt;&lt;span&gt;, NVIDIA A100 80GB Tensor Core GPU &lt;/span&gt;&lt;span&gt;또는 &lt;/span&gt;&lt;span&gt;NVIDIA H100 Tensor Core GPU &lt;/span&gt;&lt;span&gt;에서 최대 정밀도로 효율적으로 추론을 실행하도록 설계되어 고성능을 유지하면서 비용을 크게 절감합니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;이를 통해 보다 접근하기 쉽고 예산 친화적인 &lt;/span&gt;&lt;span&gt;AI &lt;/span&gt;&lt;span&gt;배포가 가능해집니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;* &lt;/span&gt;&lt;span&gt;하드웨어 전반에 걸쳐 놀랍도록 빠른 추론&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Gemma 2&lt;/span&gt;&lt;span&gt;는 강력한 게임용 노트북과 고급 데스크탑부터 클라우드 기반 설정까지 다양한 하드웨어에서 놀라운 속도로 실행되도록 최적화되었습니다&lt;/span&gt;&lt;span&gt;. Google AI Studio &lt;/span&gt;&lt;span&gt;에서 테스트 가능합니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;* &lt;/span&gt;&lt;span&gt;개방적이고 접근성이 뛰어남&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;원래 &lt;/span&gt;&lt;span&gt;Gemma &lt;/span&gt;&lt;span&gt;모델과 마찬가지로 &lt;/span&gt;&lt;span&gt;Gemma 2&lt;/span&gt;&lt;span&gt;는 상업적으로 친화적인 &lt;/span&gt;&lt;span&gt;Gemma &lt;/span&gt;&lt;span&gt;라이선스 에 따라 제공 되므로 개발자와 연구자는 혁신을 공유하고 상용화할 수 있습니다 &lt;/span&gt;&lt;span&gt;(Apache License Version 2.0)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;* &lt;/span&gt;&lt;span&gt;광범위한 프레임워크 호환성&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;기본 &lt;/span&gt;&lt;span&gt;Keras 3.0, vLLM, Gemma.cpp , Llama.cpp &lt;/span&gt;&lt;span&gt;및 &lt;/span&gt;&lt;span&gt;Ollama&lt;/span&gt;&lt;span&gt;를 통해 &lt;/span&gt;&lt;span&gt;Hugging Face Transformers, JAX, PyTorch &lt;/span&gt;&lt;span&gt;및 &lt;/span&gt;&lt;span&gt;TensorFlow &lt;/span&gt;&lt;span&gt;와 같은 주요 &lt;/span&gt;&lt;span&gt;AI &lt;/span&gt;&lt;span&gt;프레임워크와의 호환성 덕분에 선호하는 도구 및 워크플로에서 &lt;/span&gt;&lt;span&gt;Gemma 2&lt;/span&gt;&lt;span&gt;를 쉽게 사용할 수 있습니다 &lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;2. Google AI Studio &lt;/span&gt;&lt;span&gt;에서 간단한 테스트 진행 &lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;오픈소스에서 항상 한글은 그다지 성능이 좋지 않았었죠&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;한번 해보겠습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;허깅페이스에서도 테스트 해보실 수 있습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://huggingface.co/google/gemma-2-9b&quot;&gt;https://huggingface.co/google/gemma-2-9b&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1719806963349&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;google/gemma-2-9b &amp;middot; Hugging Face&quot; data-og-description=&quot;This repository is publicly accessible, but you have to accept the conditions to access its files and content. To access Gemma on Hugging Face, you&amp;rsquo;re required to review and agree to Google&amp;rsquo;s usage license. To do this, please ensure you&amp;rsquo;re logged in &quot; data-og-host=&quot;huggingface.co&quot; data-og-source-url=&quot;https://huggingface.co/google/gemma-2-9b&quot; data-og-url=&quot;https://huggingface.co/google/gemma-2-9b&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bPfT1g/hyWvHVXyJ4/mKUFBhKtdyDRHsp0ni5HkK/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648&quot;&gt;&lt;a href=&quot;https://huggingface.co/google/gemma-2-9b&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://huggingface.co/google/gemma-2-9b&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bPfT1g/hyWvHVXyJ4/mKUFBhKtdyDRHsp0ni5HkK/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;google/gemma-2-9b &amp;middot; Hugging Face&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;This repository is publicly accessible, but you have to accept the conditions to access its files and content. To access Gemma on Hugging Face, you&amp;rsquo;re required to review and agree to Google&amp;rsquo;s usage license. To do this, please ensure you&amp;rsquo;re logged in&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;huggingface.co&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;209&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cg1q5B/btsIhTkhU0P/PH1LVRFRGY9hlRq0lhyrc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cg1q5B/btsIhTkhU0P/PH1LVRFRGY9hlRq0lhyrc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cg1q5B/btsIhTkhU0P/PH1LVRFRGY9hlRq0lhyrc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcg1q5B%2FbtsIhTkhU0P%2FPH1LVRFRGY9hlRq0lhyrc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;863&quot; height=&quot;317&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;209&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;한국의 고대사를 간단히 분석하고 고조선에서 고구려로 넘어가는 역사적 배경에 대해 설명해봐&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;gemma 2&lt;/span&gt;&lt;span&gt;의 대답입니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;&amp;ldquo;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;한국 고대사&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;고조선에서 고구려로&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;한국의 고대사는 긴 시간 동안 다양한 왕국들이 융성하고 쇠퇴하며 역사를 써내려왔습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;그 중에서도 고조선에서 고구려로 이어지는 과정은 한국 역사의 중요한 전환점을 보여줍니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;1. &lt;/span&gt;&lt;span&gt;고조선 &lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;기원전 &lt;/span&gt;&lt;span&gt;2333&lt;/span&gt;&lt;span&gt;년 &lt;/span&gt;&lt;span&gt;~ &lt;/span&gt;&lt;span&gt;기원전 &lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;년&lt;/span&gt;&lt;span&gt;):&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;설립&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;단군왕검에 의해 건국되었다는 전설이 전해집니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;특징&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;농경 사회를 기반으로 발달했으며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;철기 제조 기술을 보유하고 있었습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;쇠퇴&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;중국 한나라의 침략으로 멸망했습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;2. &lt;/span&gt;&lt;span&gt;고구려 &lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;기원전 &lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;년 &lt;/span&gt;&lt;span&gt;~ 668&lt;/span&gt;&lt;span&gt;년&lt;/span&gt;&lt;span&gt;):&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;설립&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;주몽이 건국했습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;고조선 멸망 후&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;북부 지역에 새로운 왕국을 세웠습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;특징&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;강력한 군사력을 바탕으로 고구려는 한반도 북부와 만주 지역을 지배했습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;문화&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;고구려는 독자적인 문화를 발전시켰으며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;특히 벽화와 무덤 건축이 뛰어났습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;고조선에서 고구려로의 역사적 배경&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;한나라의 침략&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;고조선은 한나라의 침략으로 멸망했습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;이는 한반도에 새로운 정치 질서를 가져왔습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;주몽의 등장&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;고조선 멸망 후&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;주몽은 고구려를 건국하여 새로운 왕조를 열었습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;북방의 위협&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;고구려는 북방 유목민족의 침략으로부터 한반도를 보호해야 했습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;이는 고구려의 강력한 군사력 형성으로 이어졌습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;결론&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;고조선은 한국 역사의 시작을 알리는 중요한 왕국이었지만&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;한나라의 침략으로 멸망했습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;그 후&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;주몽이 고구려를 건국하여 한반도 북부를 지배하며 새로운 역사를 써내려갔습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;고구려는 강력한 군사력과 독자적인 문화를 발전시켜 한국 역사에 큰 영향을 미쳤습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;아래는 &lt;/span&gt;&lt;span&gt;GPT-4o&lt;/span&gt;&lt;span&gt;의 답입니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;디테일은 역시 &lt;/span&gt;&lt;span&gt;GTP-4o&lt;/span&gt;&lt;span&gt;가 더 좋긴 합니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;&amp;rdquo;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;고대 한국의 역사를 간단히 살펴보고 고조선에서 고구려로 넘어가는 역사적 배경에 대해 설명해드리겠습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;고조선&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;기원&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;고조선은 기원전 &lt;/span&gt;&lt;span&gt;2333&lt;/span&gt;&lt;span&gt;년에 단군왕검에 의해 건국되었다고 전해집니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;이는 한국의 초기 국가로 여겨집니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;문화와 사회&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;고조선은 초기 청동기 문화를 바탕으로 발전했으며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;농업 중심의 생활과 함께 제사 문화도 발달했습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;법률&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;고조선에는 &lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;조법이라는 법률이 있었는데&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;이 법률은 사회 질서를 유지하는 데 중요한 역할을 했습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;고조선의 멸망&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;위만 조선&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;기원전 &lt;/span&gt;&lt;span&gt;194&lt;/span&gt;&lt;span&gt;년에 위만이라는 인물이 고조선의 준왕을 몰아내고 왕위에 올랐습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;이를 위만 조선이라 부릅니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;한나라와의 갈등&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;위만 조선의 대외 확장은 중국의 한나라와 충돌을 일으켰고&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;기원전 &lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;년 한무제의 공격을 받아 멸망하게 됩니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;고구려의 건국&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;주몽의 등장&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;고조선 멸망 후 여러 부족 국가들이 생겨났고&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;그 중 주몽이 기원전 &lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;년에 고구려를 건국하였습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;위치&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;고구려는 현재의 중국 동북부와 한반도 북부 지역에 걸쳐 있었으며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;매우 전략적으로 중요한 위치였습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;성장과 발전&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;주몽 이후 고구려는 강력한 군사력을 바탕으로 주변 국가들과의 전쟁에서 승리하며 영토를 확장해 나갔습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;역사적 배경&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;문화적 계승&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;고조선의 문화와 전통은 고구려에 큰 영향을 미쳤습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;초기 고구려 문화는 많은 부분에서 고조선의 연장선에 있었습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;정치적 혼란&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;고조선의 멸망과 함께 중국의 한나라 등 외부 세력의 영향력이 강해졌습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;이러한 혼란 속에서 고구려 같은 새로운 세력이 떠오르게 되었습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;지역적 통합&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;고구려는 소수 부족을 통합하고 중앙 집권적 국가 체제를 구축하면서 강력한 국가로 성장하였습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;결론&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;고조선에서 고구려로 넘어가는 과정은 단순한 정치적 변혁뿐 아니라 문화와 사회의 깊은 연관성이 있는 연속성의 과정이었습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;이러한 역사적 배경을 이해하면 한국 고대사의 흐름을 더 잘 파악할 수 있습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 google gemini api를 이용한 간단한 구현 시험 코드입니다. 참고하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/179&quot;&gt;https://yongeekd01.tistory.com/179&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1719989222669&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;google gemini API 이용 개발 기초(제미나이 소개, API 사용준비, 모델들, gemini-pro, gemini-pro-vision)&quot; data-og-description=&quot;1. Google gemini 소개 1.1 Gemini 개요 제미나이는 구글 AI에서 개발한 멀티모달 기반 대규모 언어 모델입니다. 텍스트, 이미지, 오디오, 동영상, 코드 등 다양한 형태의 정보를 이해하고 처리할 수 있는&quot; data-og-host=&quot;yongeekd01.tistory.com&quot; data-og-source-url=&quot;https://yongeekd01.tistory.com/179&quot; data-og-url=&quot;https://yongeekd01.tistory.com/179&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bbUl4g/hyWrN4VwfJ/EWqvlFIryaLkHkepd56JlK/img.png?width=569&amp;amp;height=607&amp;amp;face=0_0_569_607,https://scrap.kakaocdn.net/dn/eIdCJ/hyWvMpMRFp/31LTNK7nPRhypiiPKd5yb1/img.png?width=569&amp;amp;height=607&amp;amp;face=0_0_569_607,https://scrap.kakaocdn.net/dn/b15Knq/hyWrUJNd7Y/rXSIH1NLB1OaF29gcQ3eI0/img.png?width=491&amp;amp;height=725&amp;amp;face=0_0_491_725&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/179&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yongeekd01.tistory.com/179&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bbUl4g/hyWrN4VwfJ/EWqvlFIryaLkHkepd56JlK/img.png?width=569&amp;amp;height=607&amp;amp;face=0_0_569_607,https://scrap.kakaocdn.net/dn/eIdCJ/hyWvMpMRFp/31LTNK7nPRhypiiPKd5yb1/img.png?width=569&amp;amp;height=607&amp;amp;face=0_0_569_607,https://scrap.kakaocdn.net/dn/b15Knq/hyWrUJNd7Y/rXSIH1NLB1OaF29gcQ3eI0/img.png?width=491&amp;amp;height=725&amp;amp;face=0_0_491_725');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;google gemini API 이용 개발 기초(제미나이 소개, API 사용준비, 모델들, gemini-pro, gemini-pro-vision)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. Google gemini 소개 1.1 Gemini 개요 제미나이는 구글 AI에서 개발한 멀티모달 기반 대규모 언어 모델입니다. 텍스트, 이미지, 오디오, 동영상, 코드 등 다양한 형태의 정보를 이해하고 처리할 수 있는&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yongeekd01.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/180&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yongeekd01.tistory.com/180&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1719989277149&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;google gemini API text 모델을 이용한 개발 기초(제미나이, gemini-pro)&quot; data-og-description=&quot;여기서는 google gemini API를 이용하여 Text 모델을 구동 시켜 보는 예제를 살펴 보겠습니다. API 사용에 대한 기초는 다음을 참고. https://yongeekd01.tistory.com/179 google gemini API 이용 개발 기초(제미나이 소&quot; data-og-host=&quot;yongeekd01.tistory.com&quot; data-og-source-url=&quot;https://yongeekd01.tistory.com/180&quot; data-og-url=&quot;https://yongeekd01.tistory.com/180&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/sNWac/hyWvMi0whI/OZYM6px8FYDmgNk07IQhs1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/vvXzQ/hyWrN4VwD8/7FFOHmiwEaJuhyJyRYc5d0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/YXJSB/hyWrQACImR/YVXL345o6zTKtnzCVlwE8k/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/180&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yongeekd01.tistory.com/180&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/sNWac/hyWvMi0whI/OZYM6px8FYDmgNk07IQhs1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/vvXzQ/hyWrN4VwD8/7FFOHmiwEaJuhyJyRYc5d0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/YXJSB/hyWrQACImR/YVXL345o6zTKtnzCVlwE8k/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;google gemini API text 모델을 이용한 개발 기초(제미나이, gemini-pro)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;여기서는 google gemini API를 이용하여 Text 모델을 구동 시켜 보는 예제를 살펴 보겠습니다. API 사용에 대한 기초는 다음을 참고. https://yongeekd01.tistory.com/179 google gemini API 이용 개발 기초(제미나이 소&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yongeekd01.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/181&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yongeekd01.tistory.com/181&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1719989299573&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;google gemini API vision 모델을 이용한 이미지 해석 기초(제미나이, gemini-pro-vision)&quot; data-og-description=&quot;여기서는 google gemini API를 이용하여 vision 모델을 구동 시켜 보는 예제를 살펴 보겠습니다.&amp;nbsp;&amp;nbsp;API 사용에 대한 기초는 다음을 참고.&amp;nbsp;https://yongeekd01.tistory.com/179&amp;nbsp;google gemini API 이용 개발 기초(제미나&quot; data-og-host=&quot;yongeekd01.tistory.com&quot; data-og-source-url=&quot;https://yongeekd01.tistory.com/181&quot; data-og-url=&quot;https://yongeekd01.tistory.com/181&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/brMrSH/hyWrNcPOYy/KYwbbU5LM4VrVcpjkbxS20/img.png?width=168&amp;amp;height=254&amp;amp;face=0_0_168_254,https://scrap.kakaocdn.net/dn/dEvauJ/hyWrQ1FBmR/NxxSuZk6luWbgl2PTRDgh1/img.png?width=168&amp;amp;height=254&amp;amp;face=0_0_168_254,https://scrap.kakaocdn.net/dn/fF6f6/hyWrVaPr4X/N2B9o2P4cvvQ9KQNRoSKh0/img.png?width=200&amp;amp;height=200&amp;amp;face=0_52_44_100&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/181&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yongeekd01.tistory.com/181&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/brMrSH/hyWrNcPOYy/KYwbbU5LM4VrVcpjkbxS20/img.png?width=168&amp;amp;height=254&amp;amp;face=0_0_168_254,https://scrap.kakaocdn.net/dn/dEvauJ/hyWrQ1FBmR/NxxSuZk6luWbgl2PTRDgh1/img.png?width=168&amp;amp;height=254&amp;amp;face=0_0_168_254,https://scrap.kakaocdn.net/dn/fF6f6/hyWrVaPr4X/N2B9o2P4cvvQ9KQNRoSKh0/img.png?width=200&amp;amp;height=200&amp;amp;face=0_52_44_100');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;google gemini API vision 모델을 이용한 이미지 해석 기초(제미나이, gemini-pro-vision)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;여기서는 google gemini API를 이용하여 vision 모델을 구동 시켜 보는 예제를 살펴 보겠습니다.&amp;nbsp;&amp;nbsp;API 사용에 대한 기초는 다음을 참고.&amp;nbsp;https://yongeekd01.tistory.com/179&amp;nbsp;google gemini API 이용 개발 기초(제미나&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yongeekd01.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>google#gemma#gemma2#젬마2</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/195</guid>
      <comments>https://yongeekd01.tistory.com/195#entry195comment</comments>
      <pubDate>Mon, 1 Jul 2024 11:01:29 +0900</pubDate>
    </item>
    <item>
      <title>ChatGPT API로 구현할때 토큰 수 제한 문제 해결하기(문자열 token 수 세기, tiktoken)</title>
      <link>https://yongeekd01.tistory.com/194</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이전에 chatGPT를 API를 이용해서 Discord bot 을 구현 했습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 참조&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/193&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yongeekd01.tistory.com/193&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1718759279672&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;chatGPT를 discord bot으로 만들어보자(초간단, 대화기억, chatGPT-4o)&quot; data-og-description=&quot;1. discord 서버 생성하기 &amp;nbsp;우선 discord bot이 일을 하기 위한 서버환경을 만들어 줘야 합니다.&amp;nbsp;하나 생성해볼까요?&amp;nbsp;discord를 실행하고 &amp;nbsp;좌측의 + 버튼을 눌러서 서버를 생성합니다.&amp;nbsp;&amp;nbsp;&amp;nbsp;서버의 이름&quot; data-og-host=&quot;yongeekd01.tistory.com&quot; data-og-source-url=&quot;https://yongeekd01.tistory.com/193&quot; data-og-url=&quot;https://yongeekd01.tistory.com/193&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/xRjyb/hyWoGQQady/evNiHzzqvvGKAxKgoUCor0/img.png?width=593&amp;amp;height=555&amp;amp;face=0_0_593_555,https://scrap.kakaocdn.net/dn/8xog7/hyWlm0MWq9/kBUA8oOuYfZruzgGbduJa0/img.png?width=593&amp;amp;height=555&amp;amp;face=0_0_593_555,https://scrap.kakaocdn.net/dn/bZygS5/hyWoH3gJy7/vWEB0UKF6WfJWhdWk1BRI0/img.png?width=1299&amp;amp;height=844&amp;amp;face=0_0_1299_844&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/193&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yongeekd01.tistory.com/193&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/xRjyb/hyWoGQQady/evNiHzzqvvGKAxKgoUCor0/img.png?width=593&amp;amp;height=555&amp;amp;face=0_0_593_555,https://scrap.kakaocdn.net/dn/8xog7/hyWlm0MWq9/kBUA8oOuYfZruzgGbduJa0/img.png?width=593&amp;amp;height=555&amp;amp;face=0_0_593_555,https://scrap.kakaocdn.net/dn/bZygS5/hyWoH3gJy7/vWEB0UKF6WfJWhdWk1BRI0/img.png?width=1299&amp;amp;height=844&amp;amp;face=0_0_1299_844');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;chatGPT를 discord bot으로 만들어보자(초간단, 대화기억, chatGPT-4o)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. discord 서버 생성하기 &amp;nbsp;우선 discord bot이 일을 하기 위한 서버환경을 만들어 줘야 합니다.&amp;nbsp;하나 생성해볼까요?&amp;nbsp;discord를 실행하고 &amp;nbsp;좌측의 + 버튼을 눌러서 서버를 생성합니다.&amp;nbsp;&amp;nbsp;&amp;nbsp;서버의 이름&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yongeekd01.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생각해보니 채팅을 무한히 반복하면 토큰수가 초과되어 세션에 문제가 생기는걸 깜빡 했습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그부분을 해결해 보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대화를 계속 누적해서 보내다 보니 생길 수 밖에 없는 문제겠네요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;openai에서 제공하는 tiktoken을 이용해서 해결해 보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;tiktoken은&amp;nbsp;OpenAI에서&amp;nbsp;제공하는&amp;nbsp;토큰화&amp;nbsp;패키지로,&amp;nbsp;텍스트를&amp;nbsp;모델에서&amp;nbsp;처리할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;토큰&amp;nbsp;형태로&amp;nbsp;변환하는&amp;nbsp;데&amp;nbsp;사용됩니다.&amp;nbsp; &lt;br /&gt;텍스트를&amp;nbsp;모델&amp;nbsp;입력으로&amp;nbsp;제공하기&amp;nbsp;전에&amp;nbsp;해당&amp;nbsp;텍스트를&amp;nbsp;모델이&amp;nbsp;이해할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;형식으로&amp;nbsp;변환하는&amp;nbsp;과정이라고&amp;nbsp;볼수&amp;nbsp;있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. tiktoken을 사용해서 토큰 수 계산&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 tiktoken을 설치 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pip3&amp;nbsp;install&amp;nbsp;tiktoken&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순히 문자열을 토큰으로 변환 했을때 토큰 수만 세보려면 다음과 같이 하면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; tiktoken&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 원하는 롬과 코덱을 선택 (여기서는 기본 gpt-4 코덱을 사용)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;encoding = tiktoken.encoding_for_model(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;gpt-4&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 텍스트를 토큰으로 변환&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;text = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;너는 프로그래머야. 질문의 대답 찾기 위한 파이썬 코딩을 하고 그 코드에 대해서 자세히 설명해줘&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;tokens = encoding.encode(text)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Tokens:&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, tokens, f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot; {len(tokens)}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 토큰을 다시 텍스트로 변환&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;original_text = encoding.decode(tokens)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Original Text:&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, original_text)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 코드 수정하기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;API 사용시 돈문제도 있으니까 ^^ 4K 정도의 90%가 차면 문자열을 누적하는 리스트를 초기화 하는 부분을 추가하도록 하겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; discord&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; os&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; openai &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; OpenAI&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; tiktoken&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;discord_bot_token = os.environ.get(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'DISCORD_BOT_TOKEN'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;openai_api_key = os.environ.get(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'OPENAI_API_KEY'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;channel_id = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'자신의 채널 아이디'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#채널에 오른쪽 버튼 누르면 보입니다. &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#history_messages = [{&quot;role&quot;: &quot;system&quot;, &quot;content&quot;: &quot;너는 똑똑한 helper&quot;}]&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; MyClient(discord.Client):&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; tokens = &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#토큰 수 누적 변수 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; history_messages = [{&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;role&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;system&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;content&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;너는 똑똑한 helper&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;}]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; async &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; on_ready(&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;):&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'Logged on as {self.user}!'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; channel = client.get_channel(int(channel_id))&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; await channel.send(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;난똑똑해! 무엇이든 물어봐~~&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; async &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; on_message(&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, message): &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; message.author == client.user:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#봇자신이 보낸건 처리하지 않기 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'Message from me {message.author}: {message.content}'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;return&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;current tokens = {self.tokens}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#system role 빼고 대충 4K, 90%정도 되면 지우기 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.tokens &amp;gt; int(&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;4096&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0.9&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) : &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;tokens limit! clear list {self.tokens}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.history_messages = &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.history_messages[:&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;] &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 첫 번째 system role 항목만 남기고 나머지 삭제&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.tokens = &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#이전 대화에 현재 질문 추가하기 &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.history_messages.append({&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;role&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;user&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;content&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;{message.content}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;})&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.tokens += len(encoding.encode(message.content)) &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#토큰 수 갱신 &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; completion = chatClient.chat.completions.create(&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; model=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;gpt-4o&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; messages = &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.history_messages&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; )&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#chatgpt응답을 assistant role로 다시 전달하기 위해 저장&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; response = {&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;role&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;assistant&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;content&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;{completion.choices[0].message.content}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.history_messages.append(response)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.tokens += len(encoding.encode(completion.choices[&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;].message.content)) &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#토큰 수 갱신 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#실제 질문 답변&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; answer = completion.choices[&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;].message.content&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#print(response)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(answer) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; await message.channel.send(answer)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;chatClient = OpenAI()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;encoding = tiktoken.encoding_for_model(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;gpt-4&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 원하는 코덱을 선택 (여기서는 기본 gpt-4 코덱을 사용)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;intents = discord.Intents.default()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;intents.message_content = &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;True&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;client = MyClient(intents=intents)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;client.run(discord_bot_token)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자 이제 토큰 제한을 어느정도는 해결 할 수 있겠네요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>tiktoken#토큰제한#chatgpt#openai#token</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/194</guid>
      <comments>https://yongeekd01.tistory.com/194#entry194comment</comments>
      <pubDate>Wed, 19 Jun 2024 11:00:40 +0900</pubDate>
    </item>
    <item>
      <title>chatGPT를 discord bot으로 만들어보자(초간단, 대화기억, chatGPT-4o)</title>
      <link>https://yongeekd01.tistory.com/193</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;1. discord &lt;/span&gt;&lt;span&gt;서버&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;생성하기&lt;/span&gt;&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;우선&lt;/span&gt;&lt;span&gt; discord bot&lt;/span&gt;&lt;span&gt;이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;일을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;하기&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;위한&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서버환경을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;만들어&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;줘야&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;합니다&lt;/span&gt;&lt;span&gt;.&amp;nbsp;&lt;/span&gt;&lt;span&gt;하나&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;생성해볼까요&lt;/span&gt;&lt;span&gt;?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;discord&lt;/span&gt;&lt;span&gt;를&lt;/span&gt;&lt;span&gt; 실행하고 &lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;좌측의&lt;/span&gt;&lt;span&gt; + &lt;/span&gt;&lt;span&gt;버튼을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;눌러서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서버를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;생성합니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WsnhY/btsH4FSMyMH/xjzQulDWeKAkLh8wL3n8j0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WsnhY/btsH4FSMyMH/xjzQulDWeKAkLh8wL3n8j0/img.png&quot; data-origin-width=&quot;593&quot; data-origin-height=&quot;555&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.8353%; margin-right: 10px;&quot; data-widthpercent=&quot;50.42&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WsnhY/btsH4FSMyMH/xjzQulDWeKAkLh8wL3n8j0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWsnhY%2FbtsH4FSMyMH%2FxjzQulDWeKAkLh8wL3n8j0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;593&quot; height=&quot;555&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/F6Uy8/btsH382qEBd/GqzYCixfKKF71zU7FT1cKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/F6Uy8/btsH382qEBd/GqzYCixfKKF71zU7FT1cKk/img.png&quot; data-origin-width=&quot;436&quot; data-origin-height=&quot;415&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.002%;&quot; data-widthpercent=&quot;49.58&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/F6Uy8/btsH382qEBd/GqzYCixfKKF71zU7FT1cKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FF6Uy8%2FbtsH382qEBd%2FGqzYCixfKKF71zU7FT1cKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;436&quot; height=&quot;415&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;서버의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이름을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;지정하고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서버&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이미지도&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;간단하게&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;넣어줍니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이후&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;만들기&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;버튼을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;누르면&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;왼쪽&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서버목록에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;추가된&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;것을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;볼&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;수&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;있습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eEjlEd/btsH18bI57Z/oc7yKBhilOBwY3VDNS4kS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eEjlEd/btsH18bI57Z/oc7yKBhilOBwY3VDNS4kS0/img.png&quot; data-origin-width=&quot;436&quot; data-origin-height=&quot;404&quot; data-is-animation=&quot;false&quot; width=&quot;357&quot; height=&quot;331&quot; style=&quot;width: 65.5086%; margin-right: 10px;&quot; data-widthpercent=&quot;66.28&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eEjlEd/btsH18bI57Z/oc7yKBhilOBwY3VDNS4kS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeEjlEd%2FbtsH18bI57Z%2Foc7yKBhilOBwY3VDNS4kS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;436&quot; height=&quot;404&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWMR6e/btsH2rB8JoS/bn8mQV368Gk5LIqTKz6ClK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWMR6e/btsH2rB8JoS/bn8mQV368Gk5LIqTKz6ClK/img.png&quot; data-origin-width=&quot;235&quot; data-origin-height=&quot;428&quot; data-is-animation=&quot;false&quot; style=&quot;width: 33.3286%;&quot; data-widthpercent=&quot;33.72&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWMR6e/btsH2rB8JoS/bn8mQV368Gk5LIqTKz6ClK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWMR6e%2FbtsH2rB8JoS%2Fbn8mQV368Gk5LIqTKz6ClK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;235&quot; height=&quot;428&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;초대한&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사람만&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사용할&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;수&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;있도록&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;채널권한을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;비공개로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;변경해&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;줍니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;991&quot; data-origin-height=&quot;585&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qys74/btsH4CBUYG8/J3Ec8zFJZ1JNWDjtxrfZN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qys74/btsH4CBUYG8/J3Ec8zFJZ1JNWDjtxrfZN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qys74/btsH4CBUYG8/J3Ec8zFJZ1JNWDjtxrfZN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqys74%2FbtsH4CBUYG8%2FJ3Ec8zFJZ1JNWDjtxrfZN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;991&quot; height=&quot;585&quot; data-origin-width=&quot;991&quot; data-origin-height=&quot;585&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;2. Bot &lt;/span&gt;&lt;span&gt;생성하기&lt;/span&gt;&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;다음&lt;/span&gt;&lt;span&gt; url&lt;/span&gt;&lt;span&gt;로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;접속해서&lt;/span&gt;&lt;span&gt; application&lt;/span&gt;&lt;span&gt;을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;생성합니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;a href=&quot;https://discord.com/developers/applications&quot;&gt;https://discord.com/developers/applications&lt;/a&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1718698536090&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Discord Developer Portal &amp;mdash; API Docs for Bots and Developers&quot; data-og-description=&quot;Integrate your service with Discord &amp;mdash; whether it's a bot or a game or whatever your wildest imagination can come up with.&quot; data-og-host=&quot;discord.com&quot; data-og-source-url=&quot;https://discord.com/developers/applications&quot; data-og-url=&quot;https://discord.com/developers/applications&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dC8uhm/hyWoPfPaS4/xSk4Wz6JGu2EIwDJlb6xRK/img.png?width=2400&amp;amp;height=1256&amp;amp;face=0_0_2400_1256&quot;&gt;&lt;a href=&quot;https://discord.com/developers/applications&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://discord.com/developers/applications&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dC8uhm/hyWoPfPaS4/xSk4Wz6JGu2EIwDJlb6xRK/img.png?width=2400&amp;amp;height=1256&amp;amp;face=0_0_2400_1256');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Discord Developer Portal &amp;mdash; API Docs for Bots and Developers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Integrate your service with Discord &amp;mdash; whether it's a bot or a game or whatever your wildest imagination can come up with.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;discord.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1253&quot; data-origin-height=&quot;633&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZTHQl/btsH2PvPSl4/WrsECSWUaGGxLTyhfkjQ81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZTHQl/btsH2PvPSl4/WrsECSWUaGGxLTyhfkjQ81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZTHQl/btsH2PvPSl4/WrsECSWUaGGxLTyhfkjQ81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZTHQl%2FbtsH2PvPSl4%2FWrsECSWUaGGxLTyhfkjQ81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1253&quot; height=&quot;633&quot; data-origin-width=&quot;1253&quot; data-origin-height=&quot;633&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;오른쪽&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;상단의&lt;/span&gt;&lt;span&gt; New Application &lt;/span&gt;&lt;span&gt;버튼을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;클릭합니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;275&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTWkhl/btsH2qXwa7T/4oBvkUWGzmPC0NGJvvGLzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTWkhl/btsH2qXwa7T/4oBvkUWGzmPC0NGJvvGLzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTWkhl/btsH2qXwa7T/4oBvkUWGzmPC0NGJvvGLzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTWkhl%2FbtsH2qXwa7T%2F4oBvkUWGzmPC0NGJvvGLzk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;275&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;275&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;정상적으로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;생성되면&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;다음과&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;같은 화면이 표시됩니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이제 왼쪽의&lt;/span&gt;&lt;span&gt; Bot&lt;/span&gt;&lt;span&gt;을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;선택합니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1299&quot; data-origin-height=&quot;844&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ORW40/btsH4nY9tbY/iwbFct7QYp31w2TKk4Vg5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ORW40/btsH4nY9tbY/iwbFct7QYp31w2TKk4Vg5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ORW40/btsH4nY9tbY/iwbFct7QYp31w2TKk4Vg5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FORW40%2FbtsH4nY9tbY%2FiwbFct7QYp31w2TKk4Vg5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;751&quot; height=&quot;844&quot; data-origin-width=&quot;1299&quot; data-origin-height=&quot;844&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;개인용으로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;제한하여&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사용할&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;것이기&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;때문에&lt;/span&gt;&lt;span&gt; PUBLIC BOT&lt;/span&gt;&lt;span&gt;은&lt;/span&gt;&lt;span&gt; off&lt;/span&gt;&lt;span&gt;하고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;나머지는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;열어주었습니다&lt;/span&gt;&lt;span&gt;.&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;이부분의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;상세한&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;역할은&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;추가적으로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;좀&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;알아봐야&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;할&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;것&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;같습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1368&quot; data-origin-height=&quot;901&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bI7nCz/btsH4Lel4tG/vX16XXXDGlIDj3xxIwzh9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bI7nCz/btsH4Lel4tG/vX16XXXDGlIDj3xxIwzh9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bI7nCz/btsH4Lel4tG/vX16XXXDGlIDj3xxIwzh9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbI7nCz%2FbtsH4Lel4tG%2FvX16XXXDGlIDj3xxIwzh9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;745&quot; height=&quot;491&quot; data-origin-width=&quot;1368&quot; data-origin-height=&quot;901&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;3. Bot&lt;/span&gt;&lt;span&gt;을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서버에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;연결하기&lt;/span&gt;&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;왼쪽에서&lt;/span&gt;&lt;span&gt; OAuth2&lt;/span&gt;&lt;span&gt;를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;선택하면&lt;/span&gt;&lt;span&gt; URL Generator&lt;/span&gt;&lt;span&gt;가&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;표시됩니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;scope&lt;/span&gt;&lt;span&gt;에서&lt;/span&gt;&lt;span&gt; bot&lt;/span&gt;&lt;span&gt;을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;설정합니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;909&quot; data-origin-height=&quot;659&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cT0iN6/btsH3ymMwj7/LxK1oPdXvHBHMKKKVBArT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cT0iN6/btsH3ymMwj7/LxK1oPdXvHBHMKKKVBArT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cT0iN6/btsH3ymMwj7/LxK1oPdXvHBHMKKKVBArT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcT0iN6%2FbtsH3ymMwj7%2FLxK1oPdXvHBHMKKKVBArT0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;681&quot; height=&quot;659&quot; data-origin-width=&quot;909&quot; data-origin-height=&quot;659&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이러면&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;아래쪽에&lt;/span&gt;&lt;span&gt; BOT &lt;/span&gt;&lt;span&gt;에서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사용가능한&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;퍼미션&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;목록이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;나열됩니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;목록에서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Send Messages&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;선택합니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;그런데&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;봇을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서버에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;초대하기&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;위해서는&lt;/span&gt;&lt;span&gt; Administrator &lt;/span&gt;&lt;span&gt;권한을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;줘야&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;하는듯&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;합니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;퍼미션은&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;조금더&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;공부를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;해봐야할듯 하네요&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;사용할&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;기능들을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;선택하면&lt;/span&gt;&lt;span&gt; url&lt;/span&gt;&lt;span&gt;이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;자동&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;생성되고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이&lt;/span&gt;&lt;span&gt; url&lt;/span&gt;&lt;span&gt;을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이용하여&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;연결을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;합니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;URL 생성기는 앱에 대해 선택한 범위와 권한을 기반으로 설치 링크를 생성합니다. 링크를 사용하여 자신의 서버에 앱을 설치하거나 다른 사람이 설치할 수 있도록 공유할 수 있습니다.&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1074&quot; data-origin-height=&quot;750&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sYxey/btsH3mz4cw8/CHk5yoCejt21ziHBhJsa4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sYxey/btsH3mz4cw8/CHk5yoCejt21ziHBhJsa4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sYxey/btsH3mz4cw8/CHk5yoCejt21ziHBhJsa4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsYxey%2FbtsH3mz4cw8%2FCHk5yoCejt21ziHBhJsa4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;750&quot; height=&quot;750&quot; data-origin-width=&quot;1074&quot; data-origin-height=&quot;750&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;여기서&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;생성된&lt;/span&gt;&lt;span&gt; url &lt;/span&gt;&lt;span&gt;을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;복사합니다&lt;/span&gt;&lt;span&gt;.&amp;nbsp;&lt;/span&gt;&lt;span&gt;이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;값은&lt;/span&gt;&lt;span&gt; discord app&lt;/span&gt;&lt;span&gt;에서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사용할&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;것입니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;브라우저&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;주소창에&lt;/span&gt;&lt;span&gt; URL&lt;/span&gt;&lt;span&gt;을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;붙여놓고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;실행합니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이후 연결할&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서버를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;선택하고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;계속하기를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;누릅니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddBCEz/btsH4LemLxN/hO63IS1iy3SvL0qCxzaPKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddBCEz/btsH4LemLxN/hO63IS1iy3SvL0qCxzaPKk/img.png&quot; width=&quot;357&quot; height=&quot;578&quot; data-origin-width=&quot;433&quot; data-origin-height=&quot;701&quot; data-is-animation=&quot;false&quot; style=&quot;width: 48.1477%; margin-right: 10px;&quot; data-widthpercent=&quot;48.71&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddBCEz/btsH4LemLxN/hO63IS1iy3SvL0qCxzaPKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddBCEz%2FbtsH4LemLxN%2FhO63IS1iy3SvL0qCxzaPKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;433&quot; height=&quot;701&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnjJxk/btsH4bYXuHY/MgaAMukYXXLk5mJed3Xn1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnjJxk/btsH4bYXuHY/MgaAMukYXXLk5mJed3Xn1k/img.png&quot; data-origin-width=&quot;437&quot; data-origin-height=&quot;672&quot; data-is-animation=&quot;false&quot; width=&quot;355&quot; height=&quot;546&quot; style=&quot;width: 50.6895%;&quot; data-widthpercent=&quot;51.29&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnjJxk/btsH4bYXuHY/MgaAMukYXXLk5mJed3Xn1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnjJxk%2FbtsH4bYXuHY%2FMgaAMukYXXLk5mJed3Xn1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;437&quot; height=&quot;672&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이제&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;승인을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;누르면&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;생성한&lt;/span&gt;&lt;span&gt; bot&lt;/span&gt;&lt;span&gt;과&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서버가&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;연결완료&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;됩니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccLYCk/btsH2HLwzXK/VEZyTZnOMzPXQySbThgEcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccLYCk/btsH2HLwzXK/VEZyTZnOMzPXQySbThgEcK/img.png&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;366&quot; data-is-animation=&quot;false&quot; width=&quot;354&quot; height=&quot;298&quot; style=&quot;width: 61.4749%; margin-right: 10px;&quot; data-widthpercent=&quot;62.2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccLYCk/btsH2HLwzXK/VEZyTZnOMzPXQySbThgEcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccLYCk%2FbtsH2HLwzXK%2FVEZyTZnOMzPXQySbThgEcK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;435&quot; height=&quot;366&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blEais/btsH4F6k162/DKVk8LjBObj9iN0QjQzftk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blEais/btsH4F6k162/DKVk8LjBObj9iN0QjQzftk/img.png&quot; data-origin-width=&quot;333&quot; data-origin-height=&quot;461&quot; data-is-animation=&quot;false&quot; style=&quot;width: 37.3623%;&quot; data-widthpercent=&quot;37.8&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blEais/btsH4F6k162/DKVk8LjBObj9iN0QjQzftk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblEais%2FbtsH4F6k162%2FDKVk8LjBObj9iN0QjQzftk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;333&quot; height=&quot;461&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;추가된&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;아이디를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;눌러보면&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;정보가&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;표시됩니다&lt;/span&gt;&lt;span&gt;.&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;아이콘을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;보니&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;오프라인으로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;표시되어&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;있네요&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이제&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;개발을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;시작할&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;준비가&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;되었습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;4. bot &lt;/span&gt;&lt;span&gt;토큰&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;생성&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;및&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;복사하기&lt;/span&gt;&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;아까&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;개발자&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사이트로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;돌아가서&lt;/span&gt;&lt;span&gt; Bot&lt;/span&gt;&lt;span&gt;의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;토큰을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;생성해&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;줍니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;bot &lt;/span&gt;&lt;span&gt;메뉴에서&lt;/span&gt;&lt;span&gt; Reset Token &lt;/span&gt;&lt;span&gt;버튼을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;누르면&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;봇에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;대한&lt;/span&gt;&lt;span&gt; Token&lt;/span&gt;&lt;span&gt;이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;생성되며&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;식별자로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사용됩니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1412&quot; data-origin-height=&quot;765&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SDWq7/btsH4b5LIcF/KvtOQSHCjt8ARs4srZw6t0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SDWq7/btsH4b5LIcF/KvtOQSHCjt8ARs4srZw6t0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SDWq7/btsH4b5LIcF/KvtOQSHCjt8ARs4srZw6t0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSDWq7%2FbtsH4b5LIcF%2FKvtOQSHCjt8ARs4srZw6t0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1412&quot; height=&quot;765&quot; data-origin-width=&quot;1412&quot; data-origin-height=&quot;765&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;보안을 위해 토큰은 생성 시 한 번만 볼 수 있습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;토큰을 잊어버리거나 액세스 권한을 잃어버린 경우 새 토큰을 다시 생성하세요&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;라는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;문구가&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;보이네요&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;한번만&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;보여주고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사라지니&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;잘&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;저장해놓고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;까먹으면&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;새로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;생성해야&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;합니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;5. 개발 코드와 bot 연동 &lt;/span&gt;&lt;span&gt;간단&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;테스트&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;하기&lt;/span&gt;&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;discord는 개발에 많은 언어를 지원하고 있습니다만 여기서는 파이썬을 사용하도록 하겠습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;a href=&quot;https://github.com/Rapptz/discord.py&quot;&gt;https://github.com/Rapptz/discord.py&lt;/a&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1718699541329&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - Rapptz/discord.py: An API wrapper for Discord written in Python.&quot; data-og-description=&quot;An API wrapper for Discord written in Python. Contribute to Rapptz/discord.py development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/Rapptz/discord.py&quot; data-og-url=&quot;https://github.com/Rapptz/discord.py&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bKGu1R/hyWoz49O0a/IkP4bV8LxtuTNZKGK5ZpTK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/Rapptz/discord.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/Rapptz/discord.py&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bKGu1R/hyWoz49O0a/IkP4bV8LxtuTNZKGK5ZpTK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - Rapptz/discord.py: An API wrapper for Discord written in Python.&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;An API wrapper for Discord written in Python. Contribute to Rapptz/discord.py development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;저는&lt;/span&gt;&lt;span&gt; rocky linux &lt;/span&gt;&lt;span&gt;상에서&lt;/span&gt;&lt;span&gt; python 3.9&lt;/span&gt;&lt;span&gt;를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사용하고&lt;/span&gt;&lt;span&gt; vscode&lt;/span&gt;&lt;span&gt;로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;구현하였습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span&gt;패키지&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;설치&lt;/span&gt;&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;먼저&lt;/span&gt;&lt;span&gt; discord python &lt;/span&gt;&lt;span&gt;패키지를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;설치합니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pip3 install discord&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span&gt;키값&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;숨기기&lt;/span&gt;&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;openai key&lt;/span&gt;&lt;span&gt;나&lt;/span&gt;&lt;span&gt; discord bot&lt;/span&gt;&lt;span&gt;의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;토큰이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;노출되지&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;않도록&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;주의&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;하세요&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;다른&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;파일에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;기록하고&lt;/span&gt;&lt;span&gt; load&lt;/span&gt;&lt;span&gt;해서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사용하도록&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;구현해서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;숨겨놓는게&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;중요하겠죠&lt;/span&gt;&lt;span&gt;?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;환경변수를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사용하던&lt;/span&gt;&lt;span&gt; json&lt;/span&gt;&lt;span&gt;으로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;만들던&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;편한&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;방식을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사용하세요&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;저는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;토큰값&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;노출을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;막기&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;위해&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;리눅스&lt;/span&gt;&lt;span&gt; .bashrc &lt;/span&gt;&lt;span&gt;파일에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;정의하고&lt;/span&gt;&lt;span&gt; os.environ.get() &lt;/span&gt;&lt;span&gt;을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이용하여&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;가져오는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;방식으로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사용하였습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;.bashrc &lt;/span&gt;&lt;span&gt;파일&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;예&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;export OPENAI_API_KEY='&lt;/span&gt;&lt;span&gt;OPENAI&lt;/span&gt;&lt;span&gt; API &lt;/span&gt;&lt;span&gt;키&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;값&lt;/span&gt;&lt;span&gt;'&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;export DISCORD_BOT_TOKEN='&lt;/span&gt;&lt;span&gt;디스코드&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;봇&lt;/span&gt;&lt;span&gt; TOKEN &lt;/span&gt;&lt;span&gt;값&lt;/span&gt;&lt;span&gt;'&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;다음&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;기본&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;코드는&lt;/span&gt;&lt;span&gt; bot&lt;/span&gt;&lt;span&gt;이&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;로그인되면&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;정보를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;표시하고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;메시지가&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;수신되었을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;때&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;내용을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;표시해주는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;코드입니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;discord.py&lt;/span&gt;&lt;span&gt;는 이벤트 개념을 중심으로 작동합니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;어떤 메시지가 발생하면 그에 대한 이벤트를 수신하여 응답할 수 있습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;i&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;mport&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; discord&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; os&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; discord&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;discord_bot_token = os.environ.get(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'DISCORD_BOT_TOKEN'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;channel_id = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'자신의 채널 번호' &lt;span style=&quot;background-color: #1e1e1e; color: #6a9955; text-align: start;&quot;&gt;#채널에 오른쪽 버튼 누르면 보입니다.&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; MyClient(discord.Client):&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; async &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; on_ready(&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;):&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'Logged on as {self.user}!'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; channel = client.get_channel(int(channel_id))&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; await channel.send(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;hi&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#시작하면 무조건 표시 &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; async &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; on_message(&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, message): &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; message.author == client.user:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#봇 자신이 보낸건 처리하지 않기 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'Message from me {message.author}: {message.content}'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;return&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#$hello 문자열이 들어오면 Hello!로 인사하기 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; message.content.startswith(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'$hello'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;):&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; await message.channel.send(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'Hello!'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'Message from {message.author}: {message.content}'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;intents = discord.Intents.default()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;intents.message_content = &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;True&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;client = MyClient(intents=intents)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;client.run(discord_bot_token)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;다음&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;코드를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;수행하면&lt;/span&gt;&lt;span&gt; console&lt;/span&gt;&lt;span&gt;로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;다음과&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;같은&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;메시지가&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;표시됩니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이때&lt;/span&gt;&lt;span&gt; discord&lt;/span&gt;&lt;span&gt;에서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;생성한&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;서버에&lt;/span&gt;&lt;span&gt; rot &lt;/span&gt;&lt;span&gt;상태가&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;온라인으로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;변경되면&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;문제&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;없는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;것입니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2024-06-18 14:08:30 INFO&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;discord.client logging in using static token&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2024-06-18 14:08:32 INFO&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;discord.gateway Shard ID None has connected to Gateway (Session ID: xx).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;392&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EF1Wo/btsH3jDngQe/aJSsOpcjKRvvDxUz6iZm81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EF1Wo/btsH3jDngQe/aJSsOpcjKRvvDxUz6iZm81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EF1Wo/btsH3jDngQe/aJSsOpcjKRvvDxUz6iZm81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEF1Wo%2FbtsH3jDngQe%2FaJSsOpcjKRvvDxUz6iZm81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;299&quot; height=&quot;256&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;392&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;discord&lt;/span&gt;&lt;span&gt;에서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;생성한&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;봇에게&lt;/span&gt;&lt;span&gt; DM&lt;/span&gt;&lt;span&gt;을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;날려보니&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;콘솔에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;잘&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;표시가&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;됩니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;292&quot; data-origin-height=&quot;56&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7MSgd/btsH4e2qDTO/rE2wZytBCKrIth7dIczmKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7MSgd/btsH4e2qDTO/rE2wZytBCKrIth7dIczmKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7MSgd/btsH4e2qDTO/rE2wZytBCKrIth7dIczmKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7MSgd%2FbtsH4e2qDTO%2FrE2wZytBCKrIth7dIczmKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;292&quot; height=&quot;56&quot; data-origin-width=&quot;292&quot; data-origin-height=&quot;56&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6.&amp;nbsp; &lt;span&gt;chatGPT API&lt;/span&gt;&lt;span&gt;를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이용해서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;챗봇&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;만들어보기&lt;/span&gt;&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이제 진짜 목적인 챗봇을 만들어 보겠습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;먼저 openAI API 사용을 위한 KEY를 발급 받으셔야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;OpenAI &lt;/span&gt;&lt;span&gt;계정 생성 후&lt;/span&gt;&lt;span&gt; Key &lt;/span&gt;&lt;span&gt;발급은&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;아래에서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;하시면&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;됩니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://platform.openai.com/api-keys&quot;&gt;https://platform.openai.com/api-keys&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;openai key&lt;/span&gt;&lt;span&gt;도&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;동일하게&lt;/span&gt;&lt;span&gt; .bashrc &lt;/span&gt;&lt;span&gt;파일에&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;넣고&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;읽어오는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;방식으로&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;하였습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;아래&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;코드는&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이전&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;대화를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;기억하면서&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;계속&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;채팅을&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이어갈&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;수&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;있도록&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;구현&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;하였습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;chatGPT의 응답을 assistant role로 계속 누적해서 넣어주는 것이죠&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; discord&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; os&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; openai &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; OpenAI&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;discord_bot_token = os.environ.get(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'DISCORD_BOT_TOKEN'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;openai_api_key = os.environ.get(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'OPENAI_API_KEY'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;channel_id = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'자신의 채널 번호'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#채널에 오른쪽 버튼 누르면 보입니다. &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;history_messages = [{&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;role&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;system&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;content&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;너는 똑똑한 helper&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;}]&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; MyClient(discord.Client):&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; async &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; on_ready(&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;):&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'Logged on as {self.user}!'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; channel = client.get_channel(int(channel_id))&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; await channel.send(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;난똑똑해! 무엇이든 물어봐~~&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; async &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; on_message(&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, message): &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; message.author == client.user:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#봇자신이 보낸건 처리하지 않기 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'Message from me {message.author}: {message.content}'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;return&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#이전 대화에 현재 질문 추가하기 &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; history_messages.append({&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;role&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;user&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;content&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;{message.content}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;})&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; completion = chatClient.chat.completions.create(&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; model=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;gpt-4o&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; messages = history_messages&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; )&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#chatgpt응답을 assistant role로 다시 전달하기 위해 저장&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; response = {&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;role&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;assistant&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;content&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;{completion.choices[0].message.content}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; history_messages.append(response)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#실제 질문 답변&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; answer = completion.choices[&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;].message.content&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(response)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(answer)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; await message.channel.send(answer)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;intents = discord.Intents.default()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;intents.message_content = &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;True&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;chatClient = OpenAI()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;client = MyClient(intents=intents)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;client.run(discord_bot_token)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;자&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;이제&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;시험해보겠습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1397&quot; data-origin-height=&quot;814&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b34YDv/btsH4bkpCK7/oVRTXsW0KzsKrpbkRmw6F0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b34YDv/btsH4bkpCK7/oVRTXsW0KzsKrpbkRmw6F0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b34YDv/btsH4bkpCK7/oVRTXsW0KzsKrpbkRmw6F0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb34YDv%2FbtsH4bkpCK7%2FoVRTXsW0KzsKrpbkRmw6F0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1397&quot; height=&quot;814&quot; data-origin-width=&quot;1397&quot; data-origin-height=&quot;814&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이전&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;메시지를&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;기억하는지도&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;보겠습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1397&quot; data-origin-height=&quot;809&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GquCT/btsH26qAAhx/5zKKuGKLquANHyLAozBstk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GquCT/btsH26qAAhx/5zKKuGKLquANHyLAozBstk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GquCT/btsH26qAAhx/5zKKuGKLquANHyLAozBstk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGquCT%2FbtsH26qAAhx%2F5zKKuGKLquANHyLAozBstk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1397&quot; height=&quot;809&quot; data-origin-width=&quot;1397&quot; data-origin-height=&quot;809&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;잘&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;만들어진것&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;같네요&lt;/span&gt;&lt;span&gt;~&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;몇줄 안되는 코드로 훌륭한 chatGPT discord bot이 생겼습니다~~~&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>chatgpt#discord#bot#디스코드봇#챗지피티</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/193</guid>
      <comments>https://yongeekd01.tistory.com/193#entry193comment</comments>
      <pubDate>Tue, 18 Jun 2024 17:45:12 +0900</pubDate>
    </item>
    <item>
      <title>pytorch openpose를 사용해보자(초간단, yolov9 연동 결과)</title>
      <link>https://yongeekd01.tistory.com/192</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;OpenPose는&amp;nbsp;사람의&amp;nbsp;자세&amp;nbsp;인식을&amp;nbsp;위한&amp;nbsp;오픈&amp;nbsp;소스&amp;nbsp;딥러닝&amp;nbsp;모델&amp;nbsp;입니다.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;이&amp;nbsp;라이브러리는&amp;nbsp;단일&amp;nbsp;이미지나&amp;nbsp;비디오에서&amp;nbsp;사람의&amp;nbsp;뼈대구조에&amp;nbsp;대한&amp;nbsp;키포인트를&amp;nbsp;실시간으로&amp;nbsp;감지할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;주로&amp;nbsp;다음과&amp;nbsp;같은&amp;nbsp;기능을&amp;nbsp;제공합니다.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;(1)&amp;nbsp;다수의&amp;nbsp;사람&amp;nbsp;객체&amp;nbsp;인식&amp;nbsp; &lt;br /&gt;&amp;nbsp;이미지나&amp;nbsp;비디오에서&amp;nbsp;여러&amp;nbsp;사람을&amp;nbsp;동시에&amp;nbsp;감지하고&amp;nbsp;각&amp;nbsp;사람의&amp;nbsp;자세를&amp;nbsp;추출 &lt;br /&gt;(2)&amp;nbsp;다중&amp;nbsp;키포인트&amp;nbsp;인식 &lt;br /&gt;&amp;nbsp;사람의&amp;nbsp;신체&amp;nbsp;부위(어깨,&amp;nbsp;팔꿈치,&amp;nbsp;손목,&amp;nbsp;무릎,&amp;nbsp;발목&amp;nbsp;등)와&amp;nbsp;얼굴,&amp;nbsp;손의&amp;nbsp;키포인트를&amp;nbsp;인식 &lt;br /&gt;(3)&amp;nbsp;실시간&amp;nbsp;처리 &lt;br /&gt;&amp;nbsp;GPU를&amp;nbsp;활용하여&amp;nbsp;실시간으로&amp;nbsp;이미지나&amp;nbsp;영상에서&amp;nbsp;사람의&amp;nbsp;자세를&amp;nbsp;분석 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Body&amp;nbsp;Pose&amp;nbsp;Estimation:&amp;nbsp;신체의&amp;nbsp;18개&amp;nbsp;주요&amp;nbsp;부위를&amp;nbsp;감지합니다. &lt;br /&gt;Hand&amp;nbsp;Keypoint&amp;nbsp;Detection:&amp;nbsp;각&amp;nbsp;손의&amp;nbsp;21개&amp;nbsp;키포인트를&amp;nbsp;감지합니다. &lt;br /&gt;&lt;br /&gt;그외에&amp;nbsp;잘&amp;nbsp;사용하지는&amp;nbsp;않지만&amp;nbsp;Facial&amp;nbsp;Landmark&amp;nbsp;Detection(얼굴의&amp;nbsp;70개&amp;nbsp;키포인트)과&amp;nbsp;Foot&amp;nbsp;Keypoint&amp;nbsp;Detection(양&amp;nbsp;발의&amp;nbsp;6개&amp;nbsp;키포인트)도&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델에 대한 분석은 필요없고 일단 사용법만 알아보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;a href=&quot;https://github.com/CMU-Perceptual-Computing-Lab/openpose&quot;&gt;https://github.com/CMU-Perceptual-Computing-Lab/openpose&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;여기는&lt;span&gt; base&lt;/span&gt;인데&lt;span&gt; caffe &lt;/span&gt;모델이라서 아래 pytorch 모델로 받아서 사용합니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;사용하기가 무지하게 쉽습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;a href=&quot;https://github.com/Hzzone/pytorch-openpose&quot;&gt;https://github.com/Hzzone/pytorch-openpose&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1718330564233&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - Hzzone/pytorch-openpose: pytorch implementation of openpose including Hand and Body Pose Estimation.&quot; data-og-description=&quot;pytorch implementation of openpose including Hand and Body Pose Estimation. - Hzzone/pytorch-openpose&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/Hzzone/pytorch-openpose&quot; data-og-url=&quot;https://github.com/Hzzone/pytorch-openpose&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://github.com/Hzzone/pytorch-openpose&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/Hzzone/pytorch-openpose&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - Hzzone/pytorch-openpose: pytorch implementation of openpose including Hand and Body Pose Estimation.&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;pytorch implementation of openpose including Hand and Body Pose Estimation. - Hzzone/pytorch-openpose&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;pretrain 모델 다운로드&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://drive.google.com/drive/folders/1JsvI4M4ZTg98fmnCZLFM-3TeovnCRElG&quot;&gt;https://drive.google.com/drive/folders/1JsvI4M4ZTg98fmnCZLFM-3TeovnCRElG&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;body와 hand 모델을 받아서 시험해 보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;565&quot; data-origin-height=&quot;231&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kLims/btsHYNjRw7t/8QFTHscJeTOMKMlDKzLOv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kLims/btsHYNjRw7t/8QFTHscJeTOMKMlDKzLOv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kLims/btsHYNjRw7t/8QFTHscJeTOMKMlDKzLOv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkLims%2FbtsHYNjRw7t%2F8QFTHscJeTOMKMlDKzLOv0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;565&quot; height=&quot;231&quot; data-origin-width=&quot;565&quot; data-origin-height=&quot;231&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 관련 모듈 설치&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;numpy &lt;br /&gt;matplotlib &lt;br /&gt;opencv-python &lt;br /&gt;scipy &lt;br /&gt;scikit-image &lt;br /&gt;tqdm&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또 빌드시 에러나는 것 등등..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 간단 예제 소스&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소스에 들어 있는 예제로 먼저 해봅니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ds5dhS/btsHY97Yldm/RNc3OdQPL1a7PIJX1vhUc1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ds5dhS/btsHY97Yldm/RNc3OdQPL1a7PIJX1vhUc1/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;310&quot; data-origin-height=&quot;458&quot; data-filename=&quot;demo.jpg&quot; style=&quot;width: 49.3781%; margin-right: 10px;&quot; data-widthpercent=&quot;49.96&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ds5dhS/btsHY97Yldm/RNc3OdQPL1a7PIJX1vhUc1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fds5dhS%2FbtsHY97Yldm%2FRNc3OdQPL1a7PIJX1vhUc1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;310&quot; height=&quot;458&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLCDxn/btsHX5k6xYU/j4KWExOs40kJnumslZ3b81/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLCDxn/btsHX5k6xYU/j4KWExOs40kJnumslZ3b81/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;590&quot; data-filename=&quot;result_pose.jpg&quot; style=&quot;width: 49.4591%;&quot; data-widthpercent=&quot;50.04&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLCDxn/btsHX5k6xYU/j4KWExOs40kJnumslZ3b81/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLCDxn%2FbtsHX5k6xYU%2Fj4KWExOs40kJnumslZ3b81%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;590&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; cv2&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; matplotlib.pyplot &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; plt&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; copy&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; numpy &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; np&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; src &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; model&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; src &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; util&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; src.body &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; Body&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; src.hand &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; Hand&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;body_estimation = Body(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'model/body_pose_model.pth'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, device = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'cuda'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;test_image = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'images/demo.jpg'&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;oriImg = cv2.imread(test_image) &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# B,G,R order&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;candidate, subset = body_estimation(oriImg)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;canvas = copy.deepcopy(oriImg)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;canvas = util.draw_bodypose(canvas, candidate, subset)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#hand 처리. 속도 문제나 핸드 분석이 불필요하면 안해도 됨 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# detect hand&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;hand_estimation = Hand(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'model/hand_pose_model.pth'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, device = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'cpu'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;hands_list = util.handDetect(candidate, subset, oriImg)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;all_hand_peaks = []&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; x, y, w, is_left &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; hands_list:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# cv2.rectangle(canvas, (x, y), (x+w, y+w), (0, 255, 0), 2, lineType=cv2.LINE_AA)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# cv2.putText(canvas, 'left' if is_left else 'right', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# if is_left:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# plt.imshow(oriImg[y:y+w, x:x+w, :][:, :, [2, 1, 0]])&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# plt.show()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; peaks = hand_estimation(oriImg[y:y+w, x:x+w, :])&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; peaks[:, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;] = np.where(peaks[:, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, peaks[:, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;], peaks[:, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;x)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; peaks[:, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;] = np.where(peaks[:, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, peaks[:, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;], peaks[:, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;y)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# else:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# &amp;nbsp; &amp;nbsp; peaks = hand_estimation(cv2.flip(oriImg[y:y+w, x:x+w, :], 1))&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# &amp;nbsp; &amp;nbsp; peaks[:, 0] = np.where(peaks[:, 0]==0, peaks[:, 0], w-peaks[:, 0]-1+x)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# &amp;nbsp; &amp;nbsp; peaks[:, 1] = np.where(peaks[:, 1]==0, peaks[:, 1], peaks[:, 1]+y)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# &amp;nbsp; &amp;nbsp; print(peaks)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; all_hand_peaks.append(peaks)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;canvas = util.draw_handpose(canvas, all_hand_peaks)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 결과 이미지를 파일로 저장&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;result_image_path = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'result/result_pose.jpg'&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;cv2.imwrite(result_image_path, canvas)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#plt.imshow(canvas[:, :, [2, 1, 0]])&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#plt.axis('off')&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#plt.show()&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. yolov9와 함께 연동해서 사용 해보기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서는 다음 소스를 사용하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&lt;a href=&quot;https://github.com/WongKinYiu/yolov9&quot;&gt;https://github.com/WongKinYiu/yolov9&amp;nbsp;&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1718331220838&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Inform&quot; data-og-description=&quot;Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information - WongKinYiu/yolov9&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/WongKinYiu/yolov9&quot; data-og-url=&quot;https://github.com/WongKinYiu/yolov9&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/JjQLj/hyWlnYIVzV/pv5IXv2EhAQYUq7dITOYvk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/WongKinYiu/yolov9&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/WongKinYiu/yolov9&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/JjQLj/hyWlnYIVzV/pv5IXv2EhAQYUq7dITOYvk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Inform&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information - WongKinYiu/yolov9&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대충 yolo에서 person을 detection해서 해당 bbox 영역을 openpose의 입력으로 넣고&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 결과를 원본 이미지의 bbox영역에 대체해서 저장하는 방식을 사용하였습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영상은 서울시에서 제공하는 CCTV의 실시간 영상을 일부 사용하였습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/447429296&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bGUgFF/hyWlgZC57i/HGpAFlzKsBmvYBnBgad17K/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/Txnrm/hyWlj9R9kE/MLIj2s1bvetEiuySEHzTMk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/447429296?service=daum_tistory&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 연동 코드 작업 (관련 부분만)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실시간성을 위해서 핸드 부분 모델은 제외하고 적용하였습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;openpose 코드 수정&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; cv2&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; matplotlib.pyplot &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; plt&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; copy&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; numpy &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; np&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; sys&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; os&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; src &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; model&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; src &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; util&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; src.body &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; Body&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; src.hand &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; Hand&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#외부에서 상대경로로 호출한 경우 상대 경로 처리&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; pathlib &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; Path &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;FILE = Path(__file__).resolve() &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 현재 파일의 절대 경로를 얻음&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;ROOT = FILE.parents[&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;] &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# YOLO의 루트 디렉토리를 설정&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; str(ROOT) &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; sys.path:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; sys.path.append(str(ROOT)) &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# ROOT 디렉토리를 시스템 경로에 추가&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;ROOT = Path(os.path.relpath(ROOT, Path.cwd())) &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# ROOT를 현재 작업 디렉토리에 대한 상대 경로로 설정&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
#이미지 버퍼를 작접 받도록 함&amp;nbsp;&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; detect_pose_buffer(model, oriImg) :&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; candidate, subset = model(oriImg)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; canvas = copy.deepcopy(oriImg)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; canvas = util.draw_bodypose(canvas, candidate, subset)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; canvas&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
# yolo 쪽에서 미리 모델을 로드&amp;nbsp;&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; load_pose_model() :&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;get openpose model&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; body_estimation = Body(ROOT &lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'model/body_pose_model.pth'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, device = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'cuda'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; body_estimation&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;yolov9 코드 수정&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;bbox와 class를 감지하는 부분에 person 처리 하고 list에 좌표와 변환 이미지 저장&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#사람이면 opse detection, car 종류면 번호판 찾기&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; names[c] == &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'person'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; : &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; poseTime = time.time()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; person_xyxy, poseImg = draw_person_pose(pose_model, xyxy, imc, label=names[c], BGR=&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; person_list.append((person_xyxy, poseImg))&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;pose time : {time.time() - poseTime:.2f}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프레임 처리가 끝나면 openpose에서 처리한 이미지와 좌표 정보를 이용하여 프레임에 덮어쓰기&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; person_xyxy, poseImg &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; person_list :&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# Load the cropped image with label&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#crop_img = cv2.imread(str(person_file))&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# Paste back to the original image&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#im0 = paste_back(im0, crop_img, person_xyxy) # 이미지 엎어 씌우기 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;im0 = paste_back(im0, poseImg, person_xyxy) &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 이미지 엎어 씌우기 &lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#원본 파일에 openpose 결과를 overwite 하는 함수 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; paste_back(im, crop_img, xyxy):&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; im = im.copy() &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#ysyang 갑자기 read only 오류 발생해서 수정 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; x1, y1, x2, y2 = map(int, xyxy)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# Resize crop_img to fit the bounding box region in the original image&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; height, width = y2 - y1, x2 - x1&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; resized_crop_img = cv2.resize(crop_img, (width, height))&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# Make sure the dimensions match before pasting&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; im[y1:y2, x1:x2].shape == resized_crop_img.shape:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; im[y1:y2, x1:x2] = resized_crop_img&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Error: Shape mismatch. Original region shape: {im[y1:y2, x1:x2].shape}, Crop shape: {resized_crop_img.shape}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; im &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단하게 저정도만 추가해도 잘 돌아갑니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>오픈포즈#openpose#yolov9#동작인식</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/192</guid>
      <comments>https://yongeekd01.tistory.com/192#entry192comment</comments>
      <pubDate>Fri, 14 Jun 2024 11:30:03 +0900</pubDate>
    </item>
    <item>
      <title>paddle OCR을 이용해서 문자 인식 해보기(easy OCR과 결과 비교)</title>
      <link>https://yongeekd01.tistory.com/191</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;PaddleOCR&lt;/span&gt;&lt;span&gt;은 중국어&lt;span&gt;, &lt;/span&gt;한글 등 여러 언어를 지원하는&lt;span&gt; PaddlePaddle &lt;/span&gt;기반의&lt;span&gt; OCR &lt;/span&gt;라이브러리입니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;관련된 작업을 할 일이 있어서 Tesseract OCR, Easy OCR, Paddle OCR 을비교해보고 있는데&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;결과적으로 paddle OCR이 성능이 상당이 좋네요.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;확인해보겠습니다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;1&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;필요한 패키지 설치&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;pip install paddlepaddle &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;pip install paddleocr&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;*gpu &lt;/span&gt;&lt;span&gt;사용시 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;pip install paddlepaddle-gpu&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;2. 기본 코드 작성&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이미지 읽어서 박스치고 아래에 인식된 문자열 출력 하는 코드&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; paddleocr &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; PaddleOCR&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; PIL &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; Image, ImageDraw, ImageFont&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; numpy &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; np&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# PaddleOCR 리더 생성 (한글 'korean' 설정)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;ocr = PaddleOCR(lang=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'korean'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 이미지 로드&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;image_path = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'data/images/car_01.jpg'&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;image = Image.open(image_path)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 텍스트 검출&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#result = ocr.ocr(image_path, cls=True)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;image_np = np.array(image)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;result = ocr.ocr(image_np, cls=&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# PIL의 이미지를 수정하기 위한 객체 생성&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;draw = ImageDraw.Draw(image)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;font_path = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;font/NanumGothic-Bold.ttf&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 폰트 파일 경로 설정 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;font = ImageFont.truetype(font_path, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;24&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 폰트 크기 설정&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 결과 시각화&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;boxes = [line[&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; line &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; result[&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;]]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;texts = [line[&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; line &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; result[&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;]]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;scores = [line[&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; line &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; result[&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;]]&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 이미지에 박스와 텍스트 그리기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; (box, text, score) &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; zip(boxes, texts, scores):&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; (top_left, top_right, bottom_right, bottom_left) = box&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; top_left = tuple(map(int, top_left))&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; bottom_right = tuple(map(int, bottom_right))&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 텍스트 및 확률 출력&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Detected text: {text} (Probability: {score:.2f})&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 박스 그리기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; draw.rectangle([top_left, bottom_right], outline=(&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;255&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;), width=&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#draw.text(top_left, text, font=font, fill=(255, 0, 0)) &amp;nbsp;# 빨간색 텍스트&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; draw.text(bottom_left, text, font=font, fill=(&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;255&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)) &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 빨간색 텍스트&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 이미지 저장&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;image.save(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;result.jpg&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Detected&amp;nbsp;text:&amp;nbsp;이전&amp;nbsp;(Probability:&amp;nbsp;0.84) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;전자&amp;nbsp;(Probability:&amp;nbsp;0.83) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;07:00-&amp;nbsp;(Probability:&amp;nbsp;0.96) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;전&amp;nbsp;(Probability:&amp;nbsp;1.00) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;10:00&amp;nbsp;(Probability:&amp;nbsp;1.00) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;용&amp;nbsp;(Probability:&amp;nbsp;1.00) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;토요일&amp;nbsp;(Probability:&amp;nbsp;1.00) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;공휴일&amp;nbsp;(Probability:&amp;nbsp;0.97) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;제외&amp;nbsp;(Probability:&amp;nbsp;0.94) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;후원치과원&amp;nbsp;(Probability:&amp;nbsp;0.91) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;해이터치&amp;nbsp;(Probability:&amp;nbsp;0.90) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;기&amp;nbsp;(Probability:&amp;nbsp;0.97) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;중비원지과&amp;nbsp;(Probability:&amp;nbsp;0.79) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;소내원지파과&amp;nbsp;(Probability:&amp;nbsp;0.78) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;WORL&amp;nbsp;(Probability:&amp;nbsp;0.94) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;74오8761&amp;nbsp;(Probability:&amp;nbsp;0.95) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;야&amp;nbsp;(Probability:&amp;nbsp;1.00) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;시말54&amp;nbsp;(Probability:&amp;nbsp;0.61)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1226&quot; data-origin-height=&quot;683&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnhbKn/btsHSCp6kP8/6gRzQfI1iuhOkjyczNArm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnhbKn/btsHSCp6kP8/6gRzQfI1iuhOkjyczNArm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnhbKn/btsHSCp6kP8/6gRzQfI1iuhOkjyczNArm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnhbKn%2FbtsHSCp6kP8%2F6gRzQfI1iuhOkjyczNArm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1226&quot; height=&quot;683&quot; data-origin-width=&quot;1226&quot; data-origin-height=&quot;683&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. easy OCR과&amp;nbsp; 결과 비교&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 방식으로 easy OCR과 비교해서 확인해보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; easyocr&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; cv2&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; PIL &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; Image, ImageDraw, ImageFont&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; numpy &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; np&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# EasyOCR 리더 생성 (한글 'ko'와 영어 'en' 설정)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;reader = easyocr.Reader([&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'ko'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'en'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;])&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 이미지 로드&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;image_path = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'data/images/car_01.jpg'&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;image = Image.open(image_path)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 텍스트 검출&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;image_np = np.array(image)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;results = reader.readtext(image_np)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# PIL의 이미지를 수정하기 위한 객체 생성&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;draw = ImageDraw.Draw(image)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;font_path = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;font/NanumGothic-Bold.ttf&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 폰트 파일 경로 설정 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;font = ImageFont.truetype(font_path, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;24&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 폰트 크기 설정&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 이미지에 박스와 텍스트 그리기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; (bbox, text, prob) &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; results:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; (top_left, top_right, bottom_right, bottom_left) = bbox&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; top_left = tuple(map(int, top_left))&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; bottom_right = tuple(map(int, bottom_right))&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 텍스트 및 확률 출력&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Detected text: {text} (Probability: {prob:.2f})&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 박스 그리기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; draw.rectangle([top_left, bottom_right], outline=(&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;255&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;), width=&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; draw.text(bottom_left, text, font=font, fill=(&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;255&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;255&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)) &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 하늘색&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 이미지 저장&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;image.save(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;result_easyocr.jpg&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Detected&amp;nbsp;text:&amp;nbsp;(07:O0~&amp;nbsp;(Probability:&amp;nbsp;0.20) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;;&amp;nbsp;(Probability:&amp;nbsp;0.01) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;전용&amp;nbsp;(Probability:&amp;nbsp;1.00) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;I로요go]&amp;nbsp;(Probability:&amp;nbsp;0.03) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;면&amp;nbsp;(Probability:&amp;nbsp;0.47) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;[공휴일&amp;nbsp;제외&amp;nbsp;(Probability:&amp;nbsp;0.51) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;부&amp;nbsp;(Probability:&amp;nbsp;1.00) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;푹&amp;nbsp;(Probability:&amp;nbsp;0.35) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;천그&amp;nbsp;(Probability:&amp;nbsp;0.16) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;wOnL&amp;nbsp;(Probability:&amp;nbsp;0.29) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;이진런&amp;nbsp;(Probability:&amp;nbsp;0.20) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;#&amp;nbsp;(Probability:&amp;nbsp;0.04) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;{7428761&amp;nbsp;(Probability:&amp;nbsp;0.44) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;@&amp;nbsp;(Probability:&amp;nbsp;0.27) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;27S148)&amp;nbsp;(Probability:&amp;nbsp;0.17) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;운원치과&amp;nbsp;(Probability:&amp;nbsp;0.25) &lt;br /&gt;Detected&amp;nbsp;text:&amp;nbsp;tl터씨&amp;nbsp;&amp;nbsp;(Probability:&amp;nbsp;0.03)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1220&quot; data-origin-height=&quot;680&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRERaM/btsHTTYJKVq/nlCOdFYE14hCZxtRUXATU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRERaM/btsHTTYJKVq/nlCOdFYE14hCZxtRUXATU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRERaM/btsHTTYJKVq/nlCOdFYE14hCZxtRUXATU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRERaM%2FbtsHTTYJKVq%2FnlCOdFYE14hCZxtRUXATU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1220&quot; height=&quot;680&quot; data-origin-width=&quot;1220&quot; data-origin-height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 참고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/185&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yongeekd01.tistory.com/185&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1718001403237&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;tesseract OCR을 이용하여 이미지에서 문자 인식해보기(초간단)&quot; data-og-description=&quot;Tesseract OCR (Optical Character Recognition)은 이미지에서 텍스트를 추출하는 데 사용되는 강력하고 오픈 소스 소프트웨어로 다양한 운영 체제에서 널리 사용되고 있습니다.&amp;nbsp;&amp;nbsp;Tesseract는 Hewlett-Packard (HP)&quot; data-og-host=&quot;yongeekd01.tistory.com&quot; data-og-source-url=&quot;https://yongeekd01.tistory.com/185&quot; data-og-url=&quot;https://yongeekd01.tistory.com/185&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/EUsBM/hyWg1oBtgq/kABAmQeCWd7KSyERY6F6BK/img.png?width=507&amp;amp;height=108&amp;amp;face=0_0_507_108,https://scrap.kakaocdn.net/dn/cJpT75/hyWlkfKqb7/WR4FKZEHzjKkIornWrkm80/img.png?width=507&amp;amp;height=108&amp;amp;face=0_0_507_108,https://scrap.kakaocdn.net/dn/zzGpU/hyWha0bYYI/ANPMkZOcHr8n9gD05tJV7K/img.png?width=850&amp;amp;height=248&amp;amp;face=0_0_850_248&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/185&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yongeekd01.tistory.com/185&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/EUsBM/hyWg1oBtgq/kABAmQeCWd7KSyERY6F6BK/img.png?width=507&amp;amp;height=108&amp;amp;face=0_0_507_108,https://scrap.kakaocdn.net/dn/cJpT75/hyWlkfKqb7/WR4FKZEHzjKkIornWrkm80/img.png?width=507&amp;amp;height=108&amp;amp;face=0_0_507_108,https://scrap.kakaocdn.net/dn/zzGpU/hyWha0bYYI/ANPMkZOcHr8n9gD05tJV7K/img.png?width=850&amp;amp;height=248&amp;amp;face=0_0_850_248');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;tesseract OCR을 이용하여 이미지에서 문자 인식해보기(초간단)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Tesseract OCR (Optical Character Recognition)은 이미지에서 텍스트를 추출하는 데 사용되는 강력하고 오픈 소스 소프트웨어로 다양한 운영 체제에서 널리 사용되고 있습니다.&amp;nbsp;&amp;nbsp;Tesseract는 Hewlett-Packard (HP)&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yongeekd01.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/184&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yongeekd01.tistory.com/184&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1718001413800&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;easyOCR을 이용하여 이미지에서 문자 인식해보기(초간단)&quot; data-og-description=&quot;EasyOCR은 이미지 내의 텍스트를 감지하고 인식하는 데 사용할 수 있는 오픈 소스 라이브러리입니다 &amp;nbsp;Python 프로그래밍 언어로 작성되어 사용하기도 편하고 상당히 훌륭한 인식율을 보여줍니다. &quot; data-og-host=&quot;yongeekd01.tistory.com&quot; data-og-source-url=&quot;https://yongeekd01.tistory.com/184&quot; data-og-url=&quot;https://yongeekd01.tistory.com/184&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bw07yq/hyWlhQQPz0/lxXT25FexN3YiDw8lFCVzk/img.png?width=800&amp;amp;height=450&amp;amp;face=176_117_268_217,https://scrap.kakaocdn.net/dn/dxflGa/hyWg4llDFW/LMzBM776jhzbCWFITXZnH1/img.png?width=800&amp;amp;height=450&amp;amp;face=176_117_268_217,https://scrap.kakaocdn.net/dn/MmiYS/hyWlajSliM/MWNARNeOIVH65oCNAbnRKK/img.png?width=1280&amp;amp;height=720&amp;amp;face=278_186_448_372&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/184&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yongeekd01.tistory.com/184&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bw07yq/hyWlhQQPz0/lxXT25FexN3YiDw8lFCVzk/img.png?width=800&amp;amp;height=450&amp;amp;face=176_117_268_217,https://scrap.kakaocdn.net/dn/dxflGa/hyWg4llDFW/LMzBM776jhzbCWFITXZnH1/img.png?width=800&amp;amp;height=450&amp;amp;face=176_117_268_217,https://scrap.kakaocdn.net/dn/MmiYS/hyWlajSliM/MWNARNeOIVH65oCNAbnRKK/img.png?width=1280&amp;amp;height=720&amp;amp;face=278_186_448_372');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;easyOCR을 이용하여 이미지에서 문자 인식해보기(초간단)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;EasyOCR은 이미지 내의 텍스트를 감지하고 인식하는 데 사용할 수 있는 오픈 소스 라이브러리입니다 &amp;nbsp;Python 프로그래밍 언어로 작성되어 사용하기도 편하고 상당히 훌륭한 인식율을 보여줍니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yongeekd01.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>ocr#문자인식#paddle#easyocr#tesseract</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/191</guid>
      <comments>https://yongeekd01.tistory.com/191#entry191comment</comments>
      <pubDate>Mon, 10 Jun 2024 15:38:25 +0900</pubDate>
    </item>
    <item>
      <title>Ubuntu에서 방화벽 설정하기(우분투 ufw, IP범위, 포트범위)</title>
      <link>https://yongeekd01.tistory.com/190</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Ubuntu의&amp;nbsp;방화벽&amp;nbsp;설정은&amp;nbsp;ufw와&amp;nbsp;iptables라는&amp;nbsp;두&amp;nbsp;가지&amp;nbsp;주요&amp;nbsp;도구를&amp;nbsp;사용하여&amp;nbsp;관리할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;ufw는&amp;nbsp;&quot;Uncomplicated&amp;nbsp;Firewall&quot;의&amp;nbsp;약자로,&amp;nbsp;사용이&amp;nbsp;매우&amp;nbsp;간단하고&amp;nbsp;직관적인&amp;nbsp;반면&amp;nbsp;iptables는&amp;nbsp;더&amp;nbsp;세밀한&amp;nbsp;제어와&amp;nbsp;고급&amp;nbsp;기능을&amp;nbsp;제공하는&amp;nbsp;방화벽&amp;nbsp;도구입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;* UFW&lt;/b&gt; &lt;br /&gt;사용이&amp;nbsp;간편하고&amp;nbsp;직관적 &lt;br /&gt;간단한&amp;nbsp;방화벽&amp;nbsp;설정에&amp;nbsp;적합 &lt;br /&gt;명령어가&amp;nbsp;쉽고&amp;nbsp;빠르게&amp;nbsp;규칙을&amp;nbsp;추가/삭제&amp;nbsp;가능 &lt;br /&gt;&lt;br /&gt;&lt;b&gt;* IPTables&lt;/b&gt; &lt;br /&gt;더&amp;nbsp;세밀한&amp;nbsp;제어와&amp;nbsp;고급&amp;nbsp;기능&amp;nbsp;제공 &lt;br /&gt;복잡한&amp;nbsp;네트워크&amp;nbsp;환경에서&amp;nbsp;유리 &lt;br /&gt;다양한&amp;nbsp;체인과&amp;nbsp;규칙을&amp;nbsp;사용하여&amp;nbsp;복잡한&amp;nbsp;필터링&amp;nbsp;가능 &lt;br /&gt;두&amp;nbsp;도구&amp;nbsp;모두&amp;nbsp;시스템&amp;nbsp;보안을&amp;nbsp;강화하기&amp;nbsp;위해&amp;nbsp;매우&amp;nbsp;유용하지만,&amp;nbsp;각각의&amp;nbsp;특성과&amp;nbsp;장단점을&amp;nbsp;이해하고&amp;nbsp;필요에&amp;nbsp;맞게&amp;nbsp;선택하는&amp;nbsp;것이&amp;nbsp;중요합니다.&amp;nbsp;UFW는&amp;nbsp;간단한&amp;nbsp;설정에,&amp;nbsp;IPTables는&amp;nbsp;고급&amp;nbsp;설정에&amp;nbsp;적합합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서는 직관적인 ufw의 사용법을 설명합니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 설치 및 활성/비활성화 , 기본 명령&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;sudo&amp;nbsp; apt-get update &lt;br /&gt;&amp;gt;sudo&amp;nbsp; apt-get install ufw&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;활성화/비활성화&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;sudo ufw enable&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;sudo ufw disable&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상태확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;sudo ufw status&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 설정 값 확인&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;sudo&amp;nbsp;ufw&amp;nbsp;status&amp;nbsp;verbose&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정책 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 연결 열기/닫기&lt;br /&gt;&amp;gt;sudo ufw default allow&amp;nbsp; &lt;br /&gt;&amp;gt;sudo ufw default deny&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 기본 설정 (IP 열기/닫기,&amp;nbsp; Port 열기/닫기)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IP 열기/닫기&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;sudo ufw allow from 192.168.1.100&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;sudo ufw deny from 192.168.1.100&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포트 열기/닫기&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;sudo&amp;nbsp;ufw&amp;nbsp;allow&amp;nbsp;8080/tcp &lt;br /&gt;&amp;gt;sudo&amp;nbsp;ufw&amp;nbsp;deny&amp;nbsp;8080/tcp&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 주소 범위로 열기/닫기 ,&amp;nbsp; 포트 범위로 열기 /닫기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;192.168.1.0에서&amp;nbsp;192.168.1.255까지의&amp;nbsp;IP&amp;nbsp;범위가&amp;nbsp;포트&amp;nbsp;8080에&amp;nbsp;접근&amp;nbsp;가능하도록&amp;nbsp;허용 &lt;br /&gt;&amp;gt;sudo ufw deny from 192.168.1.0/24&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3000포트 부터 4000 포트 열기/닫기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;sudo&amp;nbsp;ufw&amp;nbsp;allow&amp;nbsp;3000:4000/tcp &lt;br /&gt;&amp;gt;sudo&amp;nbsp;ufw&amp;nbsp;deny&amp;nbsp;3000:4000/tcp&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 규칙 삭제하기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;목록확인 ,&amp;nbsp; 규칙 번호로 삭제&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;sudo ufw status numbered&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;sudo ufw delete 1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정&amp;nbsp;IP&amp;nbsp;주소&amp;nbsp;차단&amp;nbsp;규칙&amp;nbsp;삭제 &lt;br /&gt;&amp;gt;sudo ufw delete deny from 192.168.1.100 &lt;br /&gt;특정&amp;nbsp;포트&amp;nbsp;범위&amp;nbsp;허용&amp;nbsp;규칙&amp;nbsp;삭제 &lt;br /&gt;&amp;gt;sudo ufw delete allow 3000:4000/tcp &lt;br /&gt;특정&amp;nbsp;포트&amp;nbsp;범위&amp;nbsp;차단&amp;nbsp;규칙&amp;nbsp;삭제 &lt;br /&gt;&amp;gt;sudo ufw delete deny 3000:4000/tcp&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/리눅스</category>
      <category>ufw#우분투#방화벽#firewall</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/190</guid>
      <comments>https://yongeekd01.tistory.com/190#entry190comment</comments>
      <pubDate>Wed, 5 Jun 2024 13:10:57 +0900</pubDate>
    </item>
    <item>
      <title>성수 핫플 태국요리 살라댕템플 둘러보기</title>
      <link>https://yongeekd01.tistory.com/189</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;성수동이 점점더 핫해지고 있습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 분위기도 좋고 맛도 좋은 태국요리 전문점 살라댕템플을 둘러보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이국적인 분위기를 잔뜩 펼쳐놓은 곳이지요~~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연인, 가족과 한번 방문해보시면 반하실거라 믿습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 살라댕템플 위치 및 정보&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위치는 성수역 3번 출구에서 7~8분 정도 걸어가시면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://naver.me/56aJ0O8T&quot;&gt;https://naver.me/56aJ0O8T&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1717553420086&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;살라댕템플 : 네이버 &quot; data-og-description=&quot;방문자리뷰 610 &amp;middot; 블로그리뷰 1,119&quot; data-og-host=&quot;m.place.naver.com&quot; data-og-source-url=&quot;https://naver.me/56aJ0O8T&quot; data-og-url=&quot;https://m.place.naver.com/restaurant/1297050446/home&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/91JlZ/hyWdnFws3V/Vrp6SpcFIE9zaK4UDyHjzk/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/PmhGF/hyWgXSIaK9/IW1VckUN6iAQJYRy1LYiH0/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/cMlWIo/hyWdlAW9rg/ttlRgf0k6vYskzq1db9bJ0/img.jpg?width=560&amp;amp;height=560&amp;amp;face=0_0_560_560&quot;&gt;&lt;a href=&quot;https://naver.me/56aJ0O8T&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://naver.me/56aJ0O8T&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/91JlZ/hyWdnFws3V/Vrp6SpcFIE9zaK4UDyHjzk/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/PmhGF/hyWgXSIaK9/IW1VckUN6iAQJYRy1LYiH0/img.jpg?width=640&amp;amp;height=380&amp;amp;face=0_0_640_380,https://scrap.kakaocdn.net/dn/cMlWIo/hyWdlAW9rg/ttlRgf0k6vYskzq1db9bJ0/img.jpg?width=560&amp;amp;height=560&amp;amp;face=0_0_560_560');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;살라댕템플 : 네이버 &lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;방문자리뷰 610 &amp;middot; 블로그리뷰 1,119&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;m.place.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;711&quot; data-origin-height=&quot;457&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqKAnD/btsHPzrQR8G/XptgWCh77T4zQylMMTjsx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqKAnD/btsHPzrQR8G/XptgWCh77T4zQylMMTjsx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqKAnD/btsHPzrQR8G/XptgWCh77T4zQylMMTjsx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqKAnD%2FbtsHPzrQR8G%2FXptgWCh77T4zQylMMTjsx1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;711&quot; height=&quot;457&quot; data-origin-width=&quot;711&quot; data-origin-height=&quot;457&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 외관 둘러보기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공장들이 즐비한 성수동 골목길을 돌다가 갑자기 딲 나오는 뷰. ^^&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기가 입구입니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240604_172457586_25.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EivjQ/btsHOK1XFMU/djWaHcoAuoy1vQTtw9Oguk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EivjQ/btsHOK1XFMU/djWaHcoAuoy1vQTtw9Oguk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EivjQ/btsHOK1XFMU/djWaHcoAuoy1vQTtw9Oguk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEivjQ%2FbtsHOK1XFMU%2FdjWaHcoAuoy1vQTtw9Oguk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240604_172457586_25.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안으로 들어가면 인공 호수가 있고 본관과 연결된 뗏목을 이용하여 입장하게 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭔가 느낌 있죠?&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240604_172457586.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/O4zGL/btsHNyg9nwr/OUnMGybDKdOHEDk0C4zDb1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/O4zGL/btsHNyg9nwr/OUnMGybDKdOHEDk0C4zDb1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/O4zGL/btsHNyg9nwr/OUnMGybDKdOHEDk0C4zDb1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO4zGL%2FbtsHNyg9nwr%2FOUnMGybDKdOHEDk0C4zDb1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240604_172457586.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240604_172457586_01.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuNl6X/btsHNDWXtcK/RlAtgmW64nYJqB7IPQkVBK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuNl6X/btsHNDWXtcK/RlAtgmW64nYJqB7IPQkVBK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuNl6X/btsHNDWXtcK/RlAtgmW64nYJqB7IPQkVBK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcuNl6X%2FbtsHNDWXtcK%2FRlAtgmW64nYJqB7IPQkVBK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240604_172457586_01.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240604_172457586_02.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Wqa3D/btsHPbrnB1u/7R5b8OqnbZCSUzwq8jewx0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Wqa3D/btsHPbrnB1u/7R5b8OqnbZCSUzwq8jewx0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Wqa3D/btsHPbrnB1u/7R5b8OqnbZCSUzwq8jewx0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWqa3D%2FbtsHPbrnB1u%2F7R5b8OqnbZCSUzwq8jewx0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240604_172457586_02.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240604_172457586_03.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/P0rvN/btsHNqp5Y1Z/alpIf7IPrR3w0BI9RUR7n1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/P0rvN/btsHNqp5Y1Z/alpIf7IPrR3w0BI9RUR7n1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/P0rvN/btsHNqp5Y1Z/alpIf7IPrR3w0BI9RUR7n1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FP0rvN%2FbtsHNqp5Y1Z%2FalpIf7IPrR3w0BI9RUR7n1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240604_172457586_03.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입구에서 안내 하시는 분이 예약 시간을 물어보고 배를 살살 움직여서 안으로 이동합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240604_172457586_04.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vqvNs/btsHPFrZWum/RUXuKRgV6tj5yi4AnnXXLK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vqvNs/btsHPFrZWum/RUXuKRgV6tj5yi4AnnXXLK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vqvNs/btsHPFrZWum/RUXuKRgV6tj5yi4AnnXXLK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvqvNs%2FbtsHPFrZWum%2FRUXuKRgV6tj5yi4AnnXXLK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240604_172457586_04.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 내부 둘러보기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본관에 도착하면 내부가 아주 이국적으로 잘 꾸며져 있는 모습을 볼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;태국을 그대로 옮겨 놓은 듯한 곳이네요.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞의 커다란 수조는 마치 수영장 앞에 있는 듯한 느낌을 줍니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240604_172457586_10.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dnVpEe/btsHPNi6F95/skUKQIodw7T8gvkShMreUk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dnVpEe/btsHPNi6F95/skUKQIodw7T8gvkShMreUk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dnVpEe/btsHPNi6F95/skUKQIodw7T8gvkShMreUk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdnVpEe%2FbtsHPNi6F95%2FskUKQIodw7T8gvkShMreUk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240604_172457586_10.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AkInK/btsHOGFpiGI/tPcMk3NlA8842z3osE9fi1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AkInK/btsHOGFpiGI/tPcMk3NlA8842z3osE9fi1/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20240604_172457586_09.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AkInK/btsHOGFpiGI/tPcMk3NlA8842z3osE9fi1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAkInK%2FbtsHOGFpiGI%2FtPcMk3NlA8842z3osE9fi1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cG243m/btsHPpwaXWm/3NIR0DZ9t2RFJs8qlkJoqk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cG243m/btsHPpwaXWm/3NIR0DZ9t2RFJs8qlkJoqk/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240604_172457586_08.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cG243m/btsHPpwaXWm/3NIR0DZ9t2RFJs8qlkJoqk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcG243m%2FbtsHPpwaXWm%2F3NIR0DZ9t2RFJs8qlkJoqk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WRXbm/btsHPaFZhi5/yv2TRFU6X9V13nVg2bi2h0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WRXbm/btsHPaFZhi5/yv2TRFU6X9V13nVg2bi2h0/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20240604_172457586_07.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WRXbm/btsHPaFZhi5/yv2TRFU6X9V13nVg2bi2h0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWRXbm%2FbtsHPaFZhi5%2Fyv2TRFU6X9V13nVg2bi2h0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b814xW/btsHNxJh8DI/gdRSiEFiI9kyhbBrPm9dAk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b814xW/btsHNxJh8DI/gdRSiEFiI9kyhbBrPm9dAk/img.jpg&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-is-animation=&quot;false&quot; data-filename=&quot;KakaoTalk_20240604_172457586_06.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b814xW/btsHNxJh8DI/gdRSiEFiI9kyhbBrPm9dAk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb814xW%2FbtsHNxJh8DI%2FgdRSiEFiI9kyhbBrPm9dAk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 메뉴 및 맛보기&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커다란 수조의 주변에 연인들을 위한 2인석이 배치되어 있고 그 뒷쪽에는 다인석이 많이 준비 되어 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메뉴판도 나무 느낌으로 멋지네요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 맛을 한번 볼까요:?&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;태국에 온것 처럼 싱하 맥주도 한번 시켜보고 분위기있는 음식도 주문해봅니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beZjBt/btsHOAZBO9p/54plEY7nkVMIlucvwbBp5K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beZjBt/btsHOAZBO9p/54plEY7nkVMIlucvwbBp5K/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;1714&quot; data-filename=&quot;KakaoTalk_20240604_172457586_13.jpg&quot; style=&quot;width: 23.7514%; margin-right: 10px;&quot; data-widthpercent=&quot;24.03&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beZjBt/btsHOAZBO9p/54plEY7nkVMIlucvwbBp5K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeZjBt%2FbtsHOAZBO9p%2F54plEY7nkVMIlucvwbBp5K%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;964&quot; height=&quot;1714&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/csiyqq/btsHOGemEy2/W95zIAyyzXM9bG1rZ3K9Vk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/csiyqq/btsHOGemEy2/W95zIAyyzXM9bG1rZ3K9Vk/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1714&quot; data-origin-height=&quot;964&quot; data-filename=&quot;KakaoTalk_20240604_172457586_14.jpg&quot; data-widthpercent=&quot;75.97&quot; style=&quot;width: 75.0858%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/csiyqq/btsHOGemEy2/W95zIAyyzXM9bG1rZ3K9Vk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcsiyqq%2FbtsHOGemEy2%2FW95zIAyyzXM9bG1rZ3K9Vk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1714&quot; height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240604_172457586_17.jpg&quot; data-origin-width=&quot;1210&quot; data-origin-height=&quot;680&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cS6fZ7/btsHOFGxyJn/yZp42OeUyqAFVZ2ovHM7WK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cS6fZ7/btsHOFGxyJn/yZp42OeUyqAFVZ2ovHM7WK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cS6fZ7/btsHOFGxyJn/yZp42OeUyqAFVZ2ovHM7WK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcS6fZ7%2FbtsHOFGxyJn%2FyZp42OeUyqAFVZ2ovHM7WK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1210&quot; height=&quot;680&quot; data-filename=&quot;KakaoTalk_20240604_172457586_17.jpg&quot; data-origin-width=&quot;1210&quot; data-origin-height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240604_172457586_15.jpg&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;1152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E4g4L/btsHPwhA0jF/85Gl3z2qu3Y1TibDZqiaqK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E4g4L/btsHPwhA0jF/85Gl3z2qu3Y1TibDZqiaqK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E4g4L/btsHPwhA0jF/85Gl3z2qu3Y1TibDZqiaqK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE4g4L%2FbtsHPwhA0jF%2F85Gl3z2qu3Y1TibDZqiaqK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;648&quot; height=&quot;1152&quot; data-filename=&quot;KakaoTalk_20240604_172457586_15.jpg&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;1152&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1Em91/btsHO2Vz0yv/Y9uVYj9hZ9Bz9d1lfGJOo0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1Em91/btsHO2Vz0yv/Y9uVYj9hZ9Bz9d1lfGJOo0/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;1152&quot; data-filename=&quot;KakaoTalk_20240604_172457586_19.jpg&quot; data-widthpercent=&quot;24.04&quot; style=&quot;width: 23.7561%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1Em91/btsHO2Vz0yv/Y9uVYj9hZ9Bz9d1lfGJOo0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1Em91%2FbtsHO2Vz0yv%2FY9uVYj9hZ9Bz9d1lfGJOo0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;648&quot; height=&quot;1152&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ypMms/btsHPojIYEg/gKt2CrMkL1I4nRcK7fq6M0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ypMms/btsHPojIYEg/gKt2CrMkL1I4nRcK7fq6M0/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;648&quot; data-filename=&quot;KakaoTalk_20240604_172457586_18.jpg&quot; style=&quot;width: 75.0811%;&quot; data-widthpercent=&quot;75.96&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ypMms/btsHPojIYEg/gKt2CrMkL1I4nRcK7fq6M0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FypMms%2FbtsHPojIYEg%2FgKt2CrMkL1I4nRcK7fq6M0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1152&quot; height=&quot;648&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rKlie/btsHOZxWGuM/ZIFrxk0IdtEkT2bDumf39K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rKlie/btsHOZxWGuM/ZIFrxk0IdtEkT2bDumf39K/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;1152&quot; data-filename=&quot;KakaoTalk_20240604_172457586_22.jpg&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rKlie/btsHOZxWGuM/ZIFrxk0IdtEkT2bDumf39K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrKlie%2FbtsHOZxWGuM%2FZIFrxk0IdtEkT2bDumf39K%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;648&quot; height=&quot;1152&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/box1ET/btsHNoZ83E7/43srrE8ckTRPUKfqmHpxek/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/box1ET/btsHNoZ83E7/43srrE8ckTRPUKfqmHpxek/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;1152&quot; data-filename=&quot;KakaoTalk_20240604_172457586_21.jpg&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/box1ET/btsHNoZ83E7/43srrE8ckTRPUKfqmHpxek/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbox1ET%2FbtsHNoZ83E7%2F43srrE8ckTRPUKfqmHpxek%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;648&quot; height=&quot;1152&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biwo5e/btsHNuFX6yw/lDwQWgrqY3ClP3YgMZ4km1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biwo5e/btsHNuFX6yw/lDwQWgrqY3ClP3YgMZ4km1/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;1152&quot; data-filename=&quot;KakaoTalk_20240604_172457586_20.jpg&quot; style=&quot;width: 32.5581%;&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biwo5e/btsHNuFX6yw/lDwQWgrqY3ClP3YgMZ4km1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbiwo5e%2FbtsHNuFX6yw%2FlDwQWgrqY3ClP3YgMZ4km1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;648&quot; height=&quot;1152&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;크. 훌륭합니다. 맛도 좋네요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘의 선택은 성공!!!&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좋은날 또 다시가고 싶은 곳입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>이것저것</category>
      <category>성수</category>
      <category>태국#핫플#태국요리#살라댕템플</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/189</guid>
      <comments>https://yongeekd01.tistory.com/189#entry189comment</comments>
      <pubDate>Wed, 5 Jun 2024 11:26:59 +0900</pubDate>
    </item>
    <item>
      <title>객체 탐지 모델 YOLO의 버전별 라이센스 비교 (MIT, Apache 2.0, GPL-3.0, AGPL-3.0 차이, license)</title>
      <link>https://yongeekd01.tistory.com/188</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;1.&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;YOLO &lt;/span&gt;&lt;span&gt;개요&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;YOLO (You Only Look Once)&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;는 객체 탐지&lt;span&gt;(Object Detection) &lt;/span&gt;분야에서 널리 사용되는 딥러닝 모델입니다&lt;span&gt;. &lt;/span&gt;객체 탐지 모델은 이미지나 비디오 프레임에서 객체의 위치와 종류를 식별하는 데 사용됩니다&lt;span&gt;. YOLO&lt;/span&gt;는 그 이름에서 알 수 있듯이 이미지를 한 번에 처리하여 객체를 탐지하는 방식을 사용합니다&lt;span&gt;. &lt;/span&gt;이는 다른 모델들이 사용하는 슬라이딩 윈도우나 영역 제안&lt;span&gt;(region proposal) &lt;/span&gt;방식을 사용하는 것과 대조적입니다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;버전별 특성 비교를 보면 다음과 같습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;540&quot; data-origin-height=&quot;472&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zAgxL/btsHx8IBLTv/k029yckYj6Q1t6OtRSKW91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zAgxL/btsHx8IBLTv/k029yckYj6Q1t6OtRSKW91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zAgxL/btsHx8IBLTv/k029yckYj6Q1t6OtRSKW91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzAgxL%2FbtsHx8IBLTv%2Fk029yckYj6Q1t6OtRSKW91%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;540&quot; height=&quot;472&quot; data-origin-width=&quot;540&quot; data-origin-height=&quot;472&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;출처&lt;span&gt; : &lt;a href=&quot;https://github.com/WongKinYiu/yolov9&quot;&gt;https://github.com/WongKinYiu/yolov9&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;2. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;YOLO의 주요 특징 요약&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;속도와 효율성&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;YOLO&lt;/span&gt;&lt;span&gt;는 전체 이미지를 단 한 번의 전진 패스&lt;span&gt;(forward pass)&lt;/span&gt;로 처리합니다&lt;span&gt;. &lt;/span&gt;이 때문에 매우 빠르며&lt;span&gt;, &lt;/span&gt;실시간 객체 탐지가 가능합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;일반적인 객체 탐지 모델들이 여러 단계로 이미지를 처리하는 것과 달리&lt;span&gt;, YOLO&lt;/span&gt;는 단일 신경망을 통해 이미지를 처리하여 속도를 극대화합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0d0d0d;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;전체 이미지에서 예측&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;YOLO&lt;/span&gt;&lt;span&gt;는 이미지를&lt;span&gt; SxS &lt;/span&gt;그리드로 나누고 각 그리드 셀에 대해 예측을 수행합니다&lt;span&gt;. &lt;/span&gt;각 셀은 여러 바운딩 박스와 이 박스들이 포함하는 객체의 확률을 예측합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;모든 그리드 셀에서 예측한 결과를 종합하여 최종 객체 탐지 결과를 도출합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0d0d0d;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;종단 간 학습&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;YOLO&lt;/span&gt;&lt;span&gt;는 입력 이미지에서 객체의 위치와 클래스 확률을 직접 예측하는 종단 간&lt;span&gt;(end-to-end) &lt;/span&gt;방식으로 학습합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이를 통해 복잡한 파이프라인을 단순화하고&lt;span&gt;, &lt;/span&gt;훈련 및 추론 과정을 쉽게 관리할 수 있습니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;3.&amp;nbsp; YOLO 버전별 라이센스&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;YOLO (You Only Look Once)&lt;/span&gt;&lt;span&gt;는 여러 버전이 존재하며 각각의 라이센스는 다를 수 있습니다&lt;span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;yolov1&lt;/span&gt;&lt;span&gt;부터&lt;span&gt; yolov3&lt;/span&gt;까지는&lt;span&gt; Joseph Redmon&lt;/span&gt;이 개발하였으나 이후에는 수많은 파생 버전이 생겨나게 되었습니다&lt;span&gt;. &lt;/span&gt;동일한 이름의&lt;span&gt; yolo&lt;/span&gt;도 개발자에 따라 라이선스가 다르니 반드시 확인이 필요합니다&lt;span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;다음은 라이선스와&lt;span&gt; YOLO&lt;/span&gt;의 파생 버전을 표시한 그림입니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;약간 차이가 있는 부분도 있어서 따로 아래에 라이선스 부분을 기술 하였습니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;537&quot; data-origin-height=&quot;402&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wt92U/btsHxggzDZq/3auGwrh05Nrf1dpjF3M3Zk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wt92U/btsHxggzDZq/3auGwrh05Nrf1dpjF3M3Zk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wt92U/btsHxggzDZq/3auGwrh05Nrf1dpjF3M3Zk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwt92U%2FbtsHxggzDZq%2F3auGwrh05Nrf1dpjF3M3Zk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;537&quot; height=&quot;402&quot; data-origin-width=&quot;537&quot; data-origin-height=&quot;402&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;출처&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; : &lt;a href=&quot;https://medium.com/deelvin-machine-learning/the-evolution-of-the-yolo-neural-networks-family-from-v1-to-v7-48dd98702a3d&quot;&gt;https://medium.com/deelvin-machine-learning/the-evolution-of-the-yolo-neural-networks-family-from-v1-to-v7-48dd98702a3d&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;YOLOv1, YOLOv2, YOLOv3&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;Joseph Redmon&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;이&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;개발하였으며&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;, C&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;기반의&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; Darknet&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;이라는&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;오픈소스&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;신경망&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;프레임워크에서&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;구현되었습니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;이&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;버전들은&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;주로&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; MIT &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;라이센스를&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;따릅니다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;Pytorch &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;기반&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;a href=&quot;https://github.com/ultralytics/yolov3&quot;&gt;https://github.com/ultralytics/yolov3&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;는&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; AGPL-3.0&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;입니다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;YOLOv4&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;Alexey Bochkovskiy, Chien-Yao Wang, Hong-Yuan Mark Liao&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;에&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;의해&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;개발되었습니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;이&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;버전은&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;또한&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; Darknet&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;에서&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;구현되었으며&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;, GPL-3.0 (GNU General Public License v3.0) &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;라이센스를&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;따릅니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;pytorch &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;기반&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;a href=&quot;https://github.com/WongKinYiu/PyTorch_YOLOv4&quot;&gt;https://github.com/WongKinYiu/PyTorch_YOLOv4&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;는&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;내용에&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; YOLOv4 which is based on ultralytics/yolov3 &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;라고&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;되어&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;있으니&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; AGPL-3.0&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;입니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;YOLOv5&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&lt;a href=&quot;https://github.com/ultralytics/yolov5&quot;&gt;https://github.com/ultralytics/yolov5&lt;/a&gt; Ultralytics&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;의&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;코드는&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; AGPL-3.0 &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;입니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;YOLOv6&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&lt;a href=&quot;https://github.com/meituan/YOLOv6&quot;&gt;https://github.com/meituan/YOLOv6&lt;u&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;은 GPL-3.0 입니다.&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;YOLOv7&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&lt;a href=&quot;https://github.com/WongKinYiu/yolov7&quot;&gt;https://github.com/WongKinYiu/yolov7&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;은&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; AGPL-3.0 &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;입니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;YOLOv8 &lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&lt;a href=&quot;https://github.com/ultralytics/ultralytics&quot;&gt;https://github.com/ultralytics/ultralytics&lt;/a&gt; YOLOv8&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;은&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; AGPL-3.0 &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;입니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;YOLOv9 &lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&lt;a href=&quot;https://github.com/WongKinYiu/yolov9&quot;&gt;https://github.com/WongKinYiu/yolov9&lt;/a&gt; GPL-3.0&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;입니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;YOLOR, ScaledYOLO4, YOLOX 등등 기타&amp;nbsp;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&lt;a href=&quot;https://github.com/WongKinYiu/yolor&quot;&gt;https://github.com/WongKinYiu/yolor&lt;/a&gt; GPL-3.0&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;입니다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&lt;a href=&quot;https://github.com/WongKinYiu/ScaledYOLOv4&quot;&gt;https://github.com/WongKinYiu/ScaledYOLOv4&lt;/a&gt; GPL-3.0&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;입니다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&lt;a href=&quot;https://github.com/Megvii-BaseDetection/YOLOX&quot;&gt;https://github.com/Megvii-BaseDetection/YOLOX&lt;/a&gt; Apache-2.0 &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;입니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;라이선스에서&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;자유롭고&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;싶다면&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; YOLOX&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;를&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;사용하는&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;것도&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;좋습니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d;&quot;&gt;4. 코드 재사용시 각각의 라이센스 특징 및 제한&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot;&gt;소프트웨어 라이센스는 소프트웨어의 사용, 복제, 수정 및 배포 권한을 규정하는 법적 문서입니다. MIT, Apache License 2.0, GNU General Public License v3.0 (GPL-3.0), 그리고 GNU Affero General Public License v3.0 (AGPL-3.0)는 널리 사용되는 오픈 소스 라이센스입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt;(1) MIT &lt;/span&gt;&lt;span&gt;라이센스&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;MIT &lt;/span&gt;&lt;span&gt;라이센스는 가장 단순하고 유연한 오픈 소스 라이센스 중 하나로&lt;span&gt;, &lt;/span&gt;사용자가 소프트웨어를 자유롭게 사용할 수 있도록 허용합니다&lt;span&gt;. &lt;/span&gt;이 라이센스는 매사추세츠 공과대학&lt;span&gt;(Massachusetts Institute of Technology, MIT)&lt;/span&gt;에서 처음 작성되어 그 이름을 따왔습니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;사용 및 배포&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;소프트웨어를 자유롭게 사용할 수 있습니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;소프트웨어의 복제본을 무제한으로 배포할 수 있습니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;소프트웨어를 수정할 수 있습니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;수정된 소프트웨어를 배포할 수 있습니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;조건&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;원본 소프트웨어의 저작권 고지와 라이센스 정보를 모든 복제본에 포함해야 합니다&lt;span&gt;. &lt;/span&gt;이는 수정된 소프트웨어에도 동일하게 적용됩니다&lt;span&gt;.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;원본 저작권 및 라이센스 고지를 포함하는 한&lt;span&gt;, &lt;/span&gt;소프트웨어를 상업적으로 사용할 수 있습니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;책임 제한&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;소프트웨어는&lt;span&gt; &quot;&lt;/span&gt;있는 그대로&lt;span&gt;&quot; &lt;/span&gt;제공되며&lt;span&gt;, &lt;/span&gt;사용에 대한 보증이 없습니다&lt;span&gt;. &lt;/span&gt;즉&lt;span&gt;, &lt;/span&gt;소프트웨어 사용으로 인한 문제나 손해에 대해 저작권자는 책임을 지지 않습니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt;(2) Apache License 2.0&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Apache License 2.0&lt;/span&gt;&lt;span&gt;은&lt;span&gt; Apache Software Foundation&lt;/span&gt;에서 만든 라이센스로&lt;span&gt;, &lt;/span&gt;사용자와 개발자 모두에게 유연한 조건을 제공합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;사용 및 배포&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;소프트웨어를 무료로 사용할 수 있습니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;수정된 소프트웨어를 포함하여 소프트웨어의 복제본을 배포할 수 있습니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;소스 코드와 바이너리 형식 모두 배포 가능합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;조건&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;수정된 파일에는 원본 저작권과 라이센스 정보를 포함해야 합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;수정된 파일에는 수정된 사항에 대한 고지가 포함되어야 합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;소프트웨어 배포 시 원본 라이센스와 함께 배포해야 합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;특허 라이센스가 포함되어 있습니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;책임 제한&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;기업에서 사용하기 용이하며&lt;span&gt;, &lt;/span&gt;상업적 목적으로도 사용할 수 있습니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;GPL&lt;/span&gt;&lt;span&gt;과 달리&lt;span&gt;, Apache &lt;/span&gt;라이센스는 수정된 소스 코드를 공개할 의무가 없습니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt;(3) GNU General Public License v3.0 (GPL-3.0)&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;GPL-3.0&lt;/span&gt;&lt;span&gt;은&lt;span&gt; Free Software Foundation&lt;/span&gt;에서 만든 라이센스로&lt;span&gt;, &lt;/span&gt;자유 소프트웨어 운동의 철학을 반영합니다&lt;span&gt;. &lt;/span&gt;소프트웨어의 자유로운 사용&lt;span&gt;, &lt;/span&gt;수정&lt;span&gt;, &lt;/span&gt;배포를 강조합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;사용 및 배포&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;소프트웨어를 무료로 사용할 수 있습니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;수정된 소프트웨어를 포함하여 소프트웨어의 복제본을 배포할 수 있습니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;소스 코드와 함께 배포해야 합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;조건&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;소프트웨어를 배포할 때&lt;span&gt;, &lt;/span&gt;동일한&lt;span&gt; GPL &lt;/span&gt;라이센스를 유지해야 합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;수정된 파일에는 원본 저작권과 라이센스 정보를 포함해야 합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;수정된 파일에는 수정된 사항에 대한 고지가 포함되어야 합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;소프트웨어 배포 시 소스 코드를 제공하거나 소스 코드를 얻을 수 있는 방법을 제공해야 합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;첵임 제한&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;강력한 카피레프트&lt;span&gt;(&lt;/span&gt;소스 코드 공개 의무&lt;span&gt;)&lt;/span&gt;를 요구합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;소프트웨어가 다른 소프트웨어와 결합될 때&lt;span&gt;, &lt;/span&gt;결합된 소프트웨어도&lt;span&gt; GPL&lt;/span&gt;을 따라야 합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt;(4) GNU Affero General Public License v3.0 (AGPL-3.0)&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;AGPL-3.0&lt;/span&gt;&lt;span&gt;은&lt;span&gt; GPL-3.0&lt;/span&gt;의 변형으로&lt;span&gt;, &lt;/span&gt;네트워크를 통해 소프트웨어를 사용하는 경우에도 소스 코드를 공개할 의무를 추가로 규정합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;사용 및 배포&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;소프트웨어를 무료로 사용할 수 있습니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;수정된 소프트웨어를 포함하여 소프트웨어의 복제본을 배포할 수 있습니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;소스 코드와 함께 배포해야 합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;조건&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;소프트웨어를 배포할 때&lt;span&gt;, &lt;/span&gt;동일한&lt;span&gt; AGPL &lt;/span&gt;라이센스를 유지해야 합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;수정된 파일에는 원본 저작권과 라이센스 정보를 포함해야 합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;수정된 파일에는 수정된 사항에 대한 고지가 포함되어야 합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;소프트웨어가 네트워크를 통해 사용될 때도 소스 코드를 제공해야 합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;GPL-3.0&lt;/span&gt;&lt;span&gt;과 유사하지만&lt;span&gt;, &lt;/span&gt;네트워크를 통한 사용을 커버하여 클라우드 서비스나 웹 애플리케이션에서 사용될 때도 소스 코드를 공개해야 합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;소프트웨어 서비스 모델을 통해 배포되는 소프트웨어의 카피레프트를 강화합니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>gpl#agpl#apache</category>
      <category>yolo#객체인식#객체탐지#라이센스##mit#</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/188</guid>
      <comments>https://yongeekd01.tistory.com/188#entry188comment</comments>
      <pubDate>Wed, 22 May 2024 14:43:55 +0900</pubDate>
    </item>
    <item>
      <title>chatGPT-4o를 이용하여 이미지 분석하기(gpt-4-turbo, gpt-4o, Image Description, 이미지 해석 예제코드)</title>
      <link>https://yongeekd01.tistory.com/187</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이번에 새로 chatGPT-4o가 발표되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지를 분석하는 비전기능은 예전에 &lt;span style=&quot;background-color: #ffffff; color: #353740; text-align: start;&quot;&gt;gpt-4-vision-preview 모델을 통해서 할 수 있었는데 이제는 통합 모델로 나오고 있습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #353740; text-align: start;&quot;&gt;2024.05 현재 OpenAI 에서 Vision 기능을 사용할 수 있는 모델은 다음과 같습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #353740; text-align: start;&quot;&gt;1. GPT Vision 모델&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;905&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mGGeL/btsHukX3KnH/xHO27RjLIZcmqNruNDHnak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mGGeL/btsHukX3KnH/xHO27RjLIZcmqNruNDHnak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mGGeL/btsHukX3KnH/xHO27RjLIZcmqNruNDHnak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmGGeL%2FbtsHukX3KnH%2FxHO27RjLIZcmqNruNDHnak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;905&quot; height=&quot;350&quot; data-origin-width=&quot;905&quot; data-origin-height=&quot;350&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;906&quot; data-origin-height=&quot;362&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1rSpD/btsHxenJDt5/NckjLUlunyHzHacK0pzSI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1rSpD/btsHxenJDt5/NckjLUlunyHzHacK0pzSI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1rSpD/btsHxenJDt5/NckjLUlunyHzHacK0pzSI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1rSpD%2FbtsHxenJDt5%2FNckjLUlunyHzHacK0pzSI0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;906&quot; height=&quot;362&quot; data-origin-width=&quot;906&quot; data-origin-height=&quot;362&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;161&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/djUgws/btsHu4UF5kU/KOIGUoXqCxC3cYUE5nhPLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/djUgws/btsHu4UF5kU/KOIGUoXqCxC3cYUE5nhPLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/djUgws/btsHu4UF5kU/KOIGUoXqCxC3cYUE5nhPLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdjUgws%2FbtsHu4UF5kU%2FKOIGUoXqCxC3cYUE5nhPLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;900&quot; height=&quot;161&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;161&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상세한 내용은 다음을 참고 하세요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://platform.openai.com/docs/models&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://platform.openai.com/docs/models&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. API를 이용하여 이미지 해석 해보기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;(1) URL 이미지 &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;온라인 이미지를 url 로 접근해서 해석해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;629&quot; data-origin-height=&quot;409&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YsKwp/btsHvXHjCCt/RKBmssHYKnnhVBYZ9Ydmy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YsKwp/btsHvXHjCCt/RKBmssHYKnnhVBYZ9Ydmy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YsKwp/btsHvXHjCCt/RKBmssHYKnnhVBYZ9Ydmy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYsKwp%2FbtsHvXHjCCt%2FRKBmssHYKnnhVBYZ9Ydmy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;629&quot; height=&quot;409&quot; data-origin-width=&quot;629&quot; data-origin-height=&quot;409&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; openai &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; OpenAI&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;client = OpenAI()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#URL을 이용하여 이미지 전달 하기 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;response = client.chat.completions.create(&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#model=&quot;gpt-4-vision-preview&quot;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; model=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;gpt-4o&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; messages=[&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;role&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;user&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;content&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: [&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#{&quot;type&quot;: &quot;text&quot;, &quot;text&quot;: &quot;What&amp;rsquo;s in this image?&quot;},&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;type&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;text&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;text&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;이 그림을 한글로 설명해줘&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;},&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;type&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;image_url&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;image_url&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;url&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;&lt;a href=&quot;https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg&quot;&gt;https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg&lt;/a&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ],&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; ],&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; max_tokens=&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;300&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(response.choices[&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;])&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;'이&amp;nbsp;그림은&amp;nbsp;넓은&amp;nbsp;초원&amp;nbsp;위에&amp;nbsp;나무&amp;nbsp;덱&amp;nbsp;보드워크가&amp;nbsp;길게&amp;nbsp;펼쳐져&amp;nbsp;있는&amp;nbsp;풍경을&amp;nbsp;보여줍니다.&amp;nbsp;보드워크&amp;nbsp;양쪽에는&amp;nbsp;푸르른&amp;nbsp;잔디와&amp;nbsp;식물들이&amp;nbsp;무성하게&amp;nbsp;자라고&amp;nbsp;있으며,&amp;nbsp;멀리에는&amp;nbsp;나무들이&amp;nbsp;듬성듬성&amp;nbsp;서&amp;nbsp;있습니다.&amp;nbsp;하늘은&amp;nbsp;맑고&amp;nbsp;푸르르며,&amp;nbsp;곳곳에&amp;nbsp;흰&amp;nbsp;구름들이&amp;nbsp;떠&amp;nbsp;있습니다.&amp;nbsp;전체적으로&amp;nbsp;매우&amp;nbsp;평화롭고&amp;nbsp;자연이&amp;nbsp;아름답게&amp;nbsp;표현된&amp;nbsp;장면입니다.'&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;(2) 파일 업로드&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음에는 이미지 파일을 로드해서 해석해보도록 하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;749&quot; data-origin-height=&quot;497&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MV4P0/btsHv8hHneG/akEIDkcIAhk1IfK7Y2wuz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MV4P0/btsHv8hHneG/akEIDkcIAhk1IfK7Y2wuz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MV4P0/btsHv8hHneG/akEIDkcIAhk1IfK7Y2wuz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMV4P0%2FbtsHv8hHneG%2FakEIDkcIAhk1IfK7Y2wuz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;749&quot; height=&quot;497&quot; data-origin-width=&quot;749&quot; data-origin-height=&quot;497&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#파일을 직접 업로드 하기 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; base64&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; requests&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; os&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# OpenAI API Key&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#api_key = &quot;YOUR_OPENAI_API_KEY&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;api_key = os.environ.get(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'OPENAI_API_KEY'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(api_key)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# Function to encode the image&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; encode_image(image_path):&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; open(image_path, &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;rb&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; image_file:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; base64.b64encode(image_file.read()).decode(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'utf-8'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# Path to your image&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;image_path = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;man-2425121_1280.jpg&quot;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# Getting the base64 string&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;base64_image = encode_image(image_path)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;headers = {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;application/json&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Authorization&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Bearer {api_key}&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;payload = {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#&quot;model&quot;: &quot;gpt-4-vision-preview&quot;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;model&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;gpt-4o&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;messages&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: [&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;role&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;user&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;content&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: [&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;type&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;text&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#&quot;text&quot;: &quot;What&amp;rsquo;s in this image?&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;text&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;이 그림을 한글로 설명해줘&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;type&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;image_url&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;image_url&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;url&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;data:image/jpeg;base64,{base64_image}&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; ],&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;max_tokens&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;300&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;response = requests.post(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;&lt;a href=&quot;https://api.openai.com/v1/chat/completions&quot;&gt;https://api.openai.com/v1/chat/completions&lt;/a&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, headers=headers, json=payload)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(response.json())&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;'이&amp;nbsp;그림은&amp;nbsp;두&amp;nbsp;사람이&amp;nbsp;소파에&amp;nbsp;앉아&amp;nbsp;있는&amp;nbsp;모습입니다.&amp;nbsp;왼쪽&amp;nbsp;남자는&amp;nbsp;검은색&amp;nbsp;재킷을&amp;nbsp;입고&amp;nbsp;있으며&amp;nbsp;하얀&amp;nbsp;머그잔을&amp;nbsp;손에&amp;nbsp;들고&amp;nbsp;있고,&amp;nbsp;오른쪽&amp;nbsp;여자는&amp;nbsp;갈색&amp;nbsp;스카프를&amp;nbsp;두르고&amp;nbsp;있으며,&amp;nbsp;마찬가지로&amp;nbsp;손에&amp;nbsp;하얀&amp;nbsp;머그잔을&amp;nbsp;들고&amp;nbsp;있습니다.&amp;nbsp;두&amp;nbsp;사람&amp;nbsp;모두&amp;nbsp;편안하게&amp;nbsp;웃고&amp;nbsp;있습니다.&amp;nbsp;그들&amp;nbsp;사이에는&amp;nbsp;작은&amp;nbsp;갈색&amp;nbsp;불독이&amp;nbsp;앉아&amp;nbsp;있는&amp;nbsp;모습도&amp;nbsp;보입니다.&amp;nbsp;배경은&amp;nbsp;나무로&amp;nbsp;된&amp;nbsp;벽입니다.&amp;nbsp;이들은&amp;nbsp;따뜻하고&amp;nbsp;편안한&amp;nbsp;분위기&amp;nbsp;속에서&amp;nbsp;휴식을&amp;nbsp;취하고&amp;nbsp;있는&amp;nbsp;것처럼&amp;nbsp;보입니다.'&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT4o는 속도가 정말 이전보다 많이 빨라진것 같네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞으로 어떤 모델들이 나올지 기대됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;키등록 및 초기 설정은 다음을 참고하세요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/141&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yongeekd01.tistory.com/141&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1716258085607&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;OpenAI API 이용 개발 기초(소개, API 사용준비, 기본모델들, ChatGTP)&quot; data-og-description=&quot;1. Open AI API 소개&amp;nbsp;OpenAI API는 거의 모든 작업에 적용 가능 . 다양한 기능과 가격대의 다양한 모델을 제공할 뿐만 아니라 맞춤형 모델을 미세 조정할 수 있는 기능도 제공함&amp;nbsp;OpenAI에서는 현재 API를 &quot; data-og-host=&quot;yongeekd01.tistory.com&quot; data-og-source-url=&quot;https://yongeekd01.tistory.com/141&quot; data-og-url=&quot;https://yongeekd01.tistory.com/141&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/sexv8/hyV6b51aq8/uVGhwV2m9bMzBX0WMppwJK/img.png?width=299&amp;amp;height=347&amp;amp;face=0_0_299_347,https://scrap.kakaocdn.net/dn/cIw8w9/hyV56wVaSU/an7Kt6WOMgmfqvyqrf5KKk/img.png?width=299&amp;amp;height=347&amp;amp;face=0_0_299_347,https://scrap.kakaocdn.net/dn/boqTwI/hyV9O2r6ha/tXYJM3BAuT4gMPNFq9Nli1/img.png?width=299&amp;amp;height=347&amp;amp;face=0_0_299_347&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/141&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yongeekd01.tistory.com/141&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/sexv8/hyV6b51aq8/uVGhwV2m9bMzBX0WMppwJK/img.png?width=299&amp;amp;height=347&amp;amp;face=0_0_299_347,https://scrap.kakaocdn.net/dn/cIw8w9/hyV56wVaSU/an7Kt6WOMgmfqvyqrf5KKk/img.png?width=299&amp;amp;height=347&amp;amp;face=0_0_299_347,https://scrap.kakaocdn.net/dn/boqTwI/hyV9O2r6ha/tXYJM3BAuT4gMPNFq9Nli1/img.png?width=299&amp;amp;height=347&amp;amp;face=0_0_299_347');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;OpenAI API 이용 개발 기초(소개, API 사용준비, 기본모델들, ChatGTP)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. Open AI API 소개&amp;nbsp;OpenAI API는 거의 모든 작업에 적용 가능 . 다양한 기능과 가격대의 다양한 모델을 제공할 뿐만 아니라 맞춤형 모델을 미세 조정할 수 있는 기능도 제공함&amp;nbsp;OpenAI에서는 현재 API를&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yongeekd01.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>gpt4o#chatgpt#gpt#vision#image#description#openai</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/187</guid>
      <comments>https://yongeekd01.tistory.com/187#entry187comment</comments>
      <pubDate>Tue, 21 May 2024 11:22:14 +0900</pubDate>
    </item>
    <item>
      <title>ChatGPT-4o, GPT-4 Turbo 특성 및 가격 비교(OpenAI API 사용예제)</title>
      <link>https://yongeekd01.tistory.com/186</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;또 난리가 났네요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에 OpenAI에서 최신 모델을 또 발표 했습니다. 어디까지 발전할까요?&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델을 발표할때마다 API&amp;nbsp; 비용은 계속해서 낮추고 있어 진입 장벽은 점점 낮아지고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시장을 다 먹어버리고 올리는건 아닐지.... 의심&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 &lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;GPT-4o 에 대해서 간단히 살펴 보면&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;GPT-4o(&quot;옴니&quot;의 &quot;o&quot;는 &quot;옴니&quot;를 의미)는 훨씬 더 자연스러운 인간과 컴퓨터 간의 상호작용을 위한 단계로, 텍스트, 오디오, 이미지 및 비디오의 모든 조합을 입력으로 받아들이고 텍스트, 오디오 및 이미지의 모든 조합을 출력으로 생성합니다. 최소 232밀리초, 평균 320밀리초 만에 오디오 입력에 응답할 수 있으며, 이는 대화에서 사람의 응답 시간(새 창에서 열기)과 비슷한 수준입니다. 영어 텍스트 및 코드에 대한 GPT-4 터보 성능과 비슷하며, 비영어권 언어의 텍스트에 대한 성능이 크게 향상되는 동시에 API에서 훨씬 빠르고 50% 더 저렴합니다. GPT-4o는 특히 기존 모델에 비해 시각 및 오디오 이해 능력이 뛰어납니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;이렇게 설명하고 있네요. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;878&quot; data-origin-height=&quot;207&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSkSFd/btsHrOvVPEn/6aK4q5KZK6Tj5CayNBsmEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSkSFd/btsHrOvVPEn/6aK4q5KZK6Tj5CayNBsmEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSkSFd/btsHrOvVPEn/6aK4q5KZK6Tj5CayNBsmEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSkSFd%2FbtsHrOvVPEn%2F6aK4q5KZK6Tj5CayNBsmEK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;878&quot; height=&quot;207&quot; data-origin-width=&quot;878&quot; data-origin-height=&quot;207&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;최대 토큰 수는 동일하지만&amp;nbsp;&lt;/span&gt; 한국어 토큰 처리 방식이 바뀌어서 예전보다 사용 비용도 적게 들거라고 하더군요.&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #f9f9f9; color: #374151; text-align: left; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 42.7907%;&quot;&gt;&lt;span&gt;Korean 1.7x fewer tokens (from 45 to 27)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 57.093%;&quot;&gt;&lt;span&gt;안녕하세요, 제 이름은 GPT-4o입니다. 저는 새로운 유형의 언어 모델입니다, 만나서 반갑습니다!&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;일단 딴건 몰라도 속도 하나는 엄청 빨라진건 확실합니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #242b34; text-align: start;&quot;&gt;기존 벤치마크에서 측정한 결과, GPT-4o는 텍스트, 추론 및 코딩 인텔리전스에서 GPT-4 터보 수준의 성능을 달성하는 동시에 다국어, 오디오 및 시각 기능에서 최고의 성능을 발휘 한다고 합니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;486&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbBR17/btsHrqhKGgZ/45Kzvm0kcR4I2zSb9jbDk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbBR17/btsHrqhKGgZ/45Kzvm0kcR4I2zSb9jbDk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbBR17/btsHrqhKGgZ/45Kzvm0kcR4I2zSb9jbDk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbBR17%2FbtsHrqhKGgZ%2F45Kzvm0kcR4I2zSb9jbDk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;582&quot; height=&quot;486&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;486&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;*가격&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT-4o는 또 반으로 가격을 낮췄습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;304&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctwb7t/btsHpeje9zl/0ytfnfZcaDnRNNKMhaPhn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctwb7t/btsHpeje9zl/0ytfnfZcaDnRNNKMhaPhn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctwb7t/btsHpeje9zl/0ytfnfZcaDnRNNKMhaPhn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fctwb7t%2FbtsHpeje9zl%2F0ytfnfZcaDnRNNKMhaPhn0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;866&quot; height=&quot;304&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;304&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데모화면을 보면 정말 대단하다는 생각이 듭니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://openai.com/index/hello-gpt-4o/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://openai.com/index/hello-gpt-4o/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;*사용해보기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹시 API 사용하는 법이 궁금하시면 간략 샘플&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/141#google_vignette&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yongeekd01.tistory.com/141&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1715823743056&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;OpenAI API 이용 개발 기초(소개, API 사용준비, 기본모델들, ChatGTP)&quot; data-og-description=&quot;1. Open AI API 소개 OpenAI API는 거의 모든 작업에 적용 가능 . 다양한 기능과 가격대의 다양한 모델을 제공할 뿐만 아니라 맞춤형 모델을 미세 조정할 수 있는 기능도 제공함 OpenAI에서는 현재 API를 &quot; data-og-host=&quot;yongeekd01.tistory.com&quot; data-og-source-url=&quot;https://yongeekd01.tistory.com/141#google_vignette&quot; data-og-url=&quot;https://yongeekd01.tistory.com/141&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dDJ7kG/hyV2BKKhII/kGmrAiaJgN5X0Jxc1domVk/img.png?width=299&amp;amp;height=347&amp;amp;face=0_0_299_347,https://scrap.kakaocdn.net/dn/bP3ABx/hyV6gkFaAp/uNEjsOAIpJiPsSz4ym4B91/img.png?width=299&amp;amp;height=347&amp;amp;face=0_0_299_347,https://scrap.kakaocdn.net/dn/Trlpg/hyV6e1rELi/otwb4qETo5wSEPZdQ9SC80/img.png?width=299&amp;amp;height=347&amp;amp;face=0_0_299_347&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/141#google_vignette&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yongeekd01.tistory.com/141#google_vignette&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dDJ7kG/hyV2BKKhII/kGmrAiaJgN5X0Jxc1domVk/img.png?width=299&amp;amp;height=347&amp;amp;face=0_0_299_347,https://scrap.kakaocdn.net/dn/bP3ABx/hyV6gkFaAp/uNEjsOAIpJiPsSz4ym4B91/img.png?width=299&amp;amp;height=347&amp;amp;face=0_0_299_347,https://scrap.kakaocdn.net/dn/Trlpg/hyV6e1rELi/otwb4qETo5wSEPZdQ9SC80/img.png?width=299&amp;amp;height=347&amp;amp;face=0_0_299_347');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;OpenAI API 이용 개발 기초(소개, API 사용준비, 기본모델들, ChatGTP)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. Open AI API 소개 OpenAI API는 거의 모든 작업에 적용 가능 . 다양한 기능과 가격대의 다양한 모델을 제공할 뿐만 아니라 맞춤형 모델을 미세 조정할 수 있는 기능도 제공함 OpenAI에서는 현재 API를&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yongeekd01.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/142&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yongeekd01.tistory.com/142&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1715823777639&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;OpenAI Audio API를 이용한 TTS 구현 기초(tts-1, tts-1-hd)&quot; data-og-description=&quot;1.1 Audio Models 1.1.1 tts-1, tts-1-hd 모델 설명 https://platform.openai.com/docs/models/tts 텍스트를 음성으로 변환하는 AI 모델 - tts-1 : 스피드에 최적화 - tts-1-hd : 품질에 최적화 MODEL DESCRIPTION tts-1 Text-to-speech 1 The&quot; data-og-host=&quot;yongeekd01.tistory.com&quot; data-og-source-url=&quot;https://yongeekd01.tistory.com/142&quot; data-og-url=&quot;https://yongeekd01.tistory.com/142&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eE8ED/hyV56oOIW3/sh2txi1u28KGH6EHo8rsg1/img.png?width=617&amp;amp;height=411&amp;amp;face=0_0_617_411,https://scrap.kakaocdn.net/dn/buVkTs/hyV6iCMt0k/28Mxxkx4UaFJTKsro5EeBK/img.png?width=617&amp;amp;height=411&amp;amp;face=0_0_617_411,https://scrap.kakaocdn.net/dn/bKjqPA/hyV2x9pRdD/hBeF3iYB4WfE0du9F9dg6k/img.png?width=617&amp;amp;height=411&amp;amp;face=0_0_617_411&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/142&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yongeekd01.tistory.com/142&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eE8ED/hyV56oOIW3/sh2txi1u28KGH6EHo8rsg1/img.png?width=617&amp;amp;height=411&amp;amp;face=0_0_617_411,https://scrap.kakaocdn.net/dn/buVkTs/hyV6iCMt0k/28Mxxkx4UaFJTKsro5EeBK/img.png?width=617&amp;amp;height=411&amp;amp;face=0_0_617_411,https://scrap.kakaocdn.net/dn/bKjqPA/hyV2x9pRdD/hBeF3iYB4WfE0du9F9dg6k/img.png?width=617&amp;amp;height=411&amp;amp;face=0_0_617_411');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;OpenAI Audio API를 이용한 TTS 구현 기초(tts-1, tts-1-hd)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1.1 Audio Models 1.1.1 tts-1, tts-1-hd 모델 설명 https://platform.openai.com/docs/models/tts 텍스트를 음성으로 변환하는 AI 모델 - tts-1 : 스피드에 최적화 - tts-1-hd : 품질에 최적화 MODEL DESCRIPTION tts-1 Text-to-speech 1 The&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yongeekd01.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/143&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yongeekd01.tistory.com/143&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1715823789543&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;OpenAI Audio API를 이용한 STT 구현 기초(whisper-1, transcription, English translation)&quot; data-og-description=&quot;1.1 Audio Models 1.1.2 whisper-1 모델 설명 Whisper는 범용 음성 인식 모델 (Speech to Text) - 다양한 오디오로 구성된 대규모 데이터셋을 학습하고 다국어 음성 인식은 물론 음성 번역과 언어 식별까지 수행&quot; data-og-host=&quot;yongeekd01.tistory.com&quot; data-og-source-url=&quot;https://yongeekd01.tistory.com/143&quot; data-og-url=&quot;https://yongeekd01.tistory.com/143&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bcnWXi/hyV2yHgpqS/sUm75cngQnRjEHleGpkpIK/img.png?width=614&amp;amp;height=595&amp;amp;face=0_0_614_595,https://scrap.kakaocdn.net/dn/Wakyt/hyV6aY25eM/ZEOuASf4wjKzwhxJIclEPk/img.png?width=614&amp;amp;height=595&amp;amp;face=0_0_614_595,https://scrap.kakaocdn.net/dn/bvZCMw/hyV6cifgUm/zXZnrWHhxDLnEjta0LglrK/img.png?width=614&amp;amp;height=595&amp;amp;face=0_0_614_595&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/143&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yongeekd01.tistory.com/143&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bcnWXi/hyV2yHgpqS/sUm75cngQnRjEHleGpkpIK/img.png?width=614&amp;amp;height=595&amp;amp;face=0_0_614_595,https://scrap.kakaocdn.net/dn/Wakyt/hyV6aY25eM/ZEOuASf4wjKzwhxJIclEPk/img.png?width=614&amp;amp;height=595&amp;amp;face=0_0_614_595,https://scrap.kakaocdn.net/dn/bvZCMw/hyV6cifgUm/zXZnrWHhxDLnEjta0LglrK/img.png?width=614&amp;amp;height=595&amp;amp;face=0_0_614_595');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;OpenAI Audio API를 이용한 STT 구현 기초(whisper-1, transcription, English translation)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1.1 Audio Models 1.1.2 whisper-1 모델 설명 Whisper는 범용 음성 인식 모델 (Speech to Text) - 다양한 오디오로 구성된 대규모 데이터셋을 학습하고 다국어 음성 인식은 물론 음성 번역과 언어 식별까지 수행&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yongeekd01.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/144&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yongeekd01.tistory.com/144&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1715823801369&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;chatGPT, OpenAI API, DALLI-E 모델을 이용한 이미지 생성 기초&quot; data-og-description=&quot;1.1 Image Models 1.1.1 DALL-E 모델 설명 DALL-E는 자연어로 된 설명을 바탕으로 사실적인 이미지와 예술 작품을 만들 수 있는 인공지능 시스템 - dall-e-3 DALL-E : 3 2023년 11월에 출시된 최신 DALL-E 모델 - DALL-E&quot; data-og-host=&quot;yongeekd01.tistory.com&quot; data-og-source-url=&quot;https://yongeekd01.tistory.com/144&quot; data-og-url=&quot;https://yongeekd01.tistory.com/144&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cMSYv5/hyV58mCLw6/9lNasUlkkVc6sKf9OqAZx0/img.png?width=625&amp;amp;height=385&amp;amp;face=0_0_625_385,https://scrap.kakaocdn.net/dn/7TKCz/hyV6dO0qmo/U3izNEr0jqYK1O3zitB2Q1/img.png?width=625&amp;amp;height=385&amp;amp;face=0_0_625_385,https://scrap.kakaocdn.net/dn/cEyJbe/hyV2uEP2Oy/sUY1kygvjedzBfxG6wEQIK/img.png?width=619&amp;amp;height=379&amp;amp;face=0_0_619_379&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/144&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yongeekd01.tistory.com/144&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cMSYv5/hyV58mCLw6/9lNasUlkkVc6sKf9OqAZx0/img.png?width=625&amp;amp;height=385&amp;amp;face=0_0_625_385,https://scrap.kakaocdn.net/dn/7TKCz/hyV6dO0qmo/U3izNEr0jqYK1O3zitB2Q1/img.png?width=625&amp;amp;height=385&amp;amp;face=0_0_625_385,https://scrap.kakaocdn.net/dn/cEyJbe/hyV2uEP2Oy/sUY1kygvjedzBfxG6wEQIK/img.png?width=619&amp;amp;height=379&amp;amp;face=0_0_619_379');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;chatGPT, OpenAI API, DALLI-E 모델을 이용한 이미지 생성 기초&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1.1 Image Models 1.1.1 DALL-E 모델 설명 DALL-E는 자연어로 된 설명을 바탕으로 사실적인 이미지와 예술 작품을 만들 수 있는 인공지능 시스템 - dall-e-3 DALL-E : 3 2023년 11월에 출시된 최신 DALL-E 모델 - DALL-E&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yongeekd01.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/145&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yongeekd01.tistory.com/145&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1715823812839&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;DALLI-E 모델을 이용한 이미지 수정 및 유사이미지 만들기(chatGPT, OpenAI API)&quot; data-og-description=&quot;DALLI-E 모델 설명 참조 https://yongeekd01.tistory.com/144 chatGPT, OpenAI API, DALLI-E 모델을 이용한 이미지 생성 기초 1.1 Image Models 1.1.1 DALL-E 모델 설명 DALL-E는 자연어로 된 설명을 바탕으로 사실적인 이미지와&quot; data-og-host=&quot;yongeekd01.tistory.com&quot; data-og-source-url=&quot;https://yongeekd01.tistory.com/145&quot; data-og-url=&quot;https://yongeekd01.tistory.com/145&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Rr9UW/hyV6gycmui/F1m1estkYlOGoAyDZteGNk/img.png?width=626&amp;amp;height=380&amp;amp;face=0_0_626_380,https://scrap.kakaocdn.net/dn/pHKGU/hyV2uEP3mO/gXFc1fhh6YfiEprHg3KTM0/img.png?width=626&amp;amp;height=380&amp;amp;face=0_0_626_380,https://scrap.kakaocdn.net/dn/chEHbW/hyV56WCzZY/IpzE51v2RPG7LLKrsrjdRk/img.png?width=554&amp;amp;height=481&amp;amp;face=0_0_554_481&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/145&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yongeekd01.tistory.com/145&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Rr9UW/hyV6gycmui/F1m1estkYlOGoAyDZteGNk/img.png?width=626&amp;amp;height=380&amp;amp;face=0_0_626_380,https://scrap.kakaocdn.net/dn/pHKGU/hyV2uEP3mO/gXFc1fhh6YfiEprHg3KTM0/img.png?width=626&amp;amp;height=380&amp;amp;face=0_0_626_380,https://scrap.kakaocdn.net/dn/chEHbW/hyV56WCzZY/IpzE51v2RPG7LLKrsrjdRk/img.png?width=554&amp;amp;height=481&amp;amp;face=0_0_554_481');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;DALLI-E 모델을 이용한 이미지 수정 및 유사이미지 만들기(chatGPT, OpenAI API)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;DALLI-E 모델 설명 참조 https://yongeekd01.tistory.com/144 chatGPT, OpenAI API, DALLI-E 모델을 이용한 이미지 생성 기초 1.1 Image Models 1.1.1 DALL-E 모델 설명 DALL-E는 자연어로 된 설명을 바탕으로 사실적인 이미지와&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yongeekd01.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/146&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yongeekd01.tistory.com/146&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1715823822237&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;chatGPT-4를 이용한 이미지 해석(Image Description, gpt-4-vision)&quot; data-og-description=&quot;1. chatGPT-4를 이용한 이미지 해석 이미지를 이해하고 설명할 수 있는 기능 1.1 개요 지금까지 언어 모델 시스템은 단일 입력 양식인 텍스트로만 입력할 수 있다는 한계 이미지 해석 모델 : 비전 기&quot; data-og-host=&quot;yongeekd01.tistory.com&quot; data-og-source-url=&quot;https://yongeekd01.tistory.com/146&quot; data-og-url=&quot;https://yongeekd01.tistory.com/146&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bQOKNe/hyV57utSQe/vyhHwyHCSzzKqN0rhQ7KfK/img.png?width=681&amp;amp;height=376&amp;amp;face=0_0_681_376,https://scrap.kakaocdn.net/dn/bu2ohI/hyV6cifhsa/7zOHxJZetkwgo8JKWa0kQ0/img.png?width=681&amp;amp;height=376&amp;amp;face=0_0_681_376,https://scrap.kakaocdn.net/dn/NCKSq/hyV6dVMWuP/anxKng2sJp3lrvOgxV6ikk/img.png?width=319&amp;amp;height=209&amp;amp;face=0_0_319_209&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/146&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yongeekd01.tistory.com/146&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bQOKNe/hyV57utSQe/vyhHwyHCSzzKqN0rhQ7KfK/img.png?width=681&amp;amp;height=376&amp;amp;face=0_0_681_376,https://scrap.kakaocdn.net/dn/bu2ohI/hyV6cifhsa/7zOHxJZetkwgo8JKWa0kQ0/img.png?width=681&amp;amp;height=376&amp;amp;face=0_0_681_376,https://scrap.kakaocdn.net/dn/NCKSq/hyV6dVMWuP/anxKng2sJp3lrvOgxV6ikk/img.png?width=319&amp;amp;height=209&amp;amp;face=0_0_319_209');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;chatGPT-4를 이용한 이미지 해석(Image Description, gpt-4-vision)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. chatGPT-4를 이용한 이미지 해석 이미지를 이해하고 설명할 수 있는 기능 1.1 개요 지금까지 언어 모델 시스템은 단일 입력 양식인 텍스트로만 입력할 수 있다는 한계 이미지 해석 모델 : 비전 기&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yongeekd01.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>chat#gpt#챗지피티#gpt4o#gpt-4o#openai#api</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/186</guid>
      <comments>https://yongeekd01.tistory.com/186#entry186comment</comments>
      <pubDate>Thu, 16 May 2024 10:45:12 +0900</pubDate>
    </item>
    <item>
      <title>tesseract OCR을 이용하여 이미지에서 문자 인식해보기(초간단)</title>
      <link>https://yongeekd01.tistory.com/185</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Tesseract OCR (Optical Character Recognition)&lt;/span&gt;&lt;span&gt;은 이미지에서 텍스트를 추출하는 데 사용되는 강력하고 오픈 소스 소프트웨어로 다양한 운영 체제에서 널리 사용되고 있습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Tesseract&lt;/span&gt;&lt;span&gt;는 &lt;/span&gt;&lt;span&gt;Hewlett-Packard (HP)&lt;/span&gt;&lt;span&gt;에서 &lt;/span&gt;&lt;span&gt;1985&lt;/span&gt;&lt;span&gt;년에 개발이 시작되었으며&lt;/span&gt;&lt;span&gt;, 2005&lt;/span&gt;&lt;span&gt;년부터는 &lt;/span&gt;&lt;span&gt;Google&lt;/span&gt;&lt;span&gt;이 개발을 주도하고 있습니다&lt;/span&gt;&lt;span&gt;.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;1. tesseract 특징&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;- Tesseract&lt;/span&gt;&lt;span&gt;는 &lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;개 이상의 언어를 지원하며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;각 언어에 대한 트레이닝 데이터를 통해 인식 능력을 강화할 수 있습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;사용자는 특정 언어를 위한 트레이닝 데이터 파일을 다운로드하여 사용할 수 있습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;- 사용자는 자신만의 트레이닝 데이터를 생성하여 &lt;/span&gt;&lt;span&gt;Tesseract&lt;/span&gt;&lt;span&gt;의 인식 능력을 특정 언어나 글꼴에 맞게 조정할 수 있습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;이는 특히 특수 글꼴이나 형식을 많이 사용하는 문서에서 유용합니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;- 다양한 이미지 형식 지원&lt;/span&gt;&lt;span&gt;: Tesseract&lt;/span&gt;&lt;span&gt;는 &lt;/span&gt;&lt;span&gt;JPEG, PNG, GIF, BMP &lt;/span&gt;&lt;span&gt;등 다양한 이미지 파일 형식을 지원합니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;또한&lt;/span&gt;&lt;span&gt;, TIFF &lt;/span&gt;&lt;span&gt;형식의 다중 페이지 이미지 파일을 직접 처리할 수 있는 능력도 가지고 있습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;- Linux, Windows, macOS &lt;/span&gt;&lt;span&gt;등 다양한 운영 체제에서 사용할 수 있습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;2. 사용준비&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;파이선 패키지만 설치하면 안되고 먼저 몇가지 설치할 것들이 있습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;여기서는 Rocky Linux 8을 기반에서 실행 했습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;먼저 리눅스 패키지를 확인해보겠습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;507&quot; data-origin-height=&quot;108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHrZ7L/btsHjVB9Pmr/6bYQSRgGpk9DEtBmemGjb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHrZ7L/btsHjVB9Pmr/6bYQSRgGpk9DEtBmemGjb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHrZ7L/btsHjVB9Pmr/6bYQSRgGpk9DEtBmemGjb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHrZ7L%2FbtsHjVB9Pmr%2F6bYQSRgGpk9DEtBmemGjb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;507&quot; height=&quot;108&quot; data-origin-width=&quot;507&quot; data-origin-height=&quot;108&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;패키지 설치 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;yum install tesseract-devel&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;269&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7CI4H/btsHgn1zIXl/Exj1TJLFqGpsdiuVKTdR00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7CI4H/btsHgn1zIXl/Exj1TJLFqGpsdiuVKTdR00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7CI4H/btsHgn1zIXl/Exj1TJLFqGpsdiuVKTdR00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7CI4H%2FbtsHgn1zIXl%2FExj1TJLFqGpsdiuVKTdR00%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;563&quot; height=&quot;269&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;269&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치가 끝나고 확인해보면 영어 엔진만 기본적으로 들어 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;28&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pHwou/btsHiJPSP6A/P9Jp7mlFz3onwTuDhTIhJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pHwou/btsHiJPSP6A/P9Jp7mlFz3onwTuDhTIhJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pHwou/btsHiJPSP6A/P9Jp7mlFz3onwTuDhTIhJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpHwou%2FbtsHiJPSP6A%2FP9Jp7mlFz3onwTuDhTIhJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;451&quot; height=&quot;29&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;28&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 가져오기 위해서 gihub 사이트에 접속해서 한글 학습데이터를 다운 받아 testdata 위치에 복사해 넣습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/tesseract-ocr/tessdata&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/tesseract-ocr/tessdata&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1715220905139&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - tesseract-ocr/tessdata: Trained models with fast variant of the &amp;quot;best&amp;quot; LSTM models + legacy models&quot; data-og-description=&quot;Trained models with fast variant of the &amp;quot;best&amp;quot; LSTM models + legacy models - tesseract-ocr/tessdata&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/tesseract-ocr/tessdata&quot; data-og-url=&quot;https://github.com/tesseract-ocr/tessdata&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cgiZGT/hyV2Ey4gGB/9phbH877DJ6aAcwt7oLcG1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/tesseract-ocr/tessdata&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/tesseract-ocr/tessdata&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cgiZGT/hyV2Ey4gGB/9phbH877DJ6aAcwt7oLcG1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - tesseract-ocr/tessdata: Trained models with fast variant of the &quot;best&quot; LSTM models + legacy models&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Trained models with fast variant of the &quot;best&quot; LSTM models + legacy models - tesseract-ocr/tessdata&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 사이트에서 다음 kor 데이터를 받으시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TV9OV/btsHjehOviL/M4qULGEc6bQeY6Cvf8kXL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TV9OV/btsHjehOviL/M4qULGEc6bQeY6Cvf8kXL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TV9OV/btsHjehOviL/M4qULGEc6bQeY6Cvf8kXL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTV9OV%2FbtsHjehOviL%2FM4qULGEc6bQeY6Cvf8kXL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;850&quot; height=&quot;248&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;248&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;881&quot; data-origin-height=&quot;156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o6WVC/btsHhrJgeGu/ClkNzBOD1LXSf6FqTzjuDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o6WVC/btsHhrJgeGu/ClkNzBOD1LXSf6FqTzjuDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o6WVC/btsHhrJgeGu/ClkNzBOD1LXSf6FqTzjuDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo6WVC%2FbtsHhrJgeGu%2FClkNzBOD1LXSf6FqTzjuDK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;881&quot; height=&quot;156&quot; data-origin-width=&quot;881&quot; data-origin-height=&quot;156&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 폴더에 복사합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;397&quot; data-origin-height=&quot;43&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JmmQ0/btsHjVWr85W/5xwRm1aZpalYZuj9E4QdYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JmmQ0/btsHjVWr85W/5xwRm1aZpalYZuj9E4QdYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JmmQ0/btsHjVWr85W/5xwRm1aZpalYZuj9E4QdYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJmmQ0%2FbtsHjVWr85W%2F5xwRm1aZpalYZuj9E4QdYk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;397&quot; height=&quot;43&quot; data-origin-width=&quot;397&quot; data-origin-height=&quot;43&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 리눅스 패키지는 준비되었으니 파이썬 패키지를 설치 합니다 .&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;pip3 install pytesseract&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;3. tesseract 사용해보기&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;파이썬에서 사용법은 초간단합니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이미지를 로드해서 언어모델만 지정하고 실행하면 결과를 볼수 있습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;여기서는 동일한 이미지에 대해서 영어모델, 한글모델, 두가지모델 동시 수행 시 결과를 확인해 보겠습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; pytesseract &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; PIL &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; Image&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; tesseract_test() :&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 이미지 로드&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#image = Image.open(&quot;./channels/10/20240508-182040.png&quot;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; image = Image.open(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;./002.png&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 이미지에서 텍스트 추출&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; text = pytesseract.image_to_string(image, lang=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'eng'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;-----------\n{text}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; text = pytesseract.image_to_string(image, lang=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'kor'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;-----------\n{text}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; text = pytesseract.image_to_string(image, lang=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'eng+kor'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;-----------\n{text}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; __name__ == &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'__main__'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; :&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp;tesseract_test() &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용된 이미지는 다음과 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;002.png&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;306&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/73BBC/btsHgVKCUlV/CzjPWEPUtfhRbIdCwtJzKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/73BBC/btsHgVKCUlV/CzjPWEPUtfhRbIdCwtJzKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/73BBC/btsHgVKCUlV/CzjPWEPUtfhRbIdCwtJzKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F73BBC%2FbtsHgVKCUlV%2FCzjPWEPUtfhRbIdCwtJzKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;681&quot; height=&quot;306&quot; data-filename=&quot;002.png&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;306&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 각 모델의 결과를 각각 확인해 보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-----------&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ASH Ao R SiEE M&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Dot B&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-----------&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;연 압 뉴 스&lt;/span&gt;&lt;span&gt; 7/'&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;비 만 오 면 사 라 지는 차 선&lt;/span&gt;&lt;span&gt; &amp;hellip;&amp;hellip; &lt;/span&gt;&lt;span&gt;신 공 법 도 입 으 로 해 결 될 까&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기 사 원 문&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;할 서 승 택 기 자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;를&lt;/span&gt;&lt;span&gt; 13 &lt;/span&gt;&lt;span&gt;에 디&lt;/span&gt;&lt;span&gt; 7 &lt;/span&gt;&lt;span&gt;가&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공 법 도 입 으 로 해 결 될 까&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-----------&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;신 공 법 도 입 으 로 해 결 될 까&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;디 과&lt;/span&gt;&lt;span&gt; @&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;ㅋ 영문은 몰라도 한글은 제생각엔 별로입니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;고딕같은 정자체가 저정도이고 디자인 글씨체는 더 잘 못찾네요&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(EasyOCR이 훨 나은것 같다는 생각......)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고&amp;nbsp;&lt;br /&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/184&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yongeekd01.tistory.com/184&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1715221418073&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;easyOCR을 이용하여 이미지에서 문자 인식해보기(초간단)&quot; data-og-description=&quot;EasyOCR은 이미지 내의 텍스트를 감지하고 인식하는 데 사용할 수 있는 오픈 소스 라이브러리입니다 &amp;nbsp;Python 프로그래밍 언어로 작성되어 사용하기도 편하고 상당히 훌륭한 인식율을 보여줍니다. &quot; data-og-host=&quot;yongeekd01.tistory.com&quot; data-og-source-url=&quot;https://yongeekd01.tistory.com/184&quot; data-og-url=&quot;https://yongeekd01.tistory.com/184&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/SI8xh/hyV2sk59Tn/0x9i7HfxWzri2K0Zp2rkyk/img.png?width=800&amp;amp;height=450&amp;amp;face=176_117_268_217,https://scrap.kakaocdn.net/dn/qV03J/hyV2sk59X9/L91MOCEkdwnjjAmaH7ZcX0/img.png?width=800&amp;amp;height=450&amp;amp;face=176_117_268_217,https://scrap.kakaocdn.net/dn/G3P85/hyVZmfKJEm/VBIHmwRzG88EPEEbE7NGk0/img.png?width=1280&amp;amp;height=720&amp;amp;face=278_186_448_372&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/184&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yongeekd01.tistory.com/184&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/SI8xh/hyV2sk59Tn/0x9i7HfxWzri2K0Zp2rkyk/img.png?width=800&amp;amp;height=450&amp;amp;face=176_117_268_217,https://scrap.kakaocdn.net/dn/qV03J/hyV2sk59X9/L91MOCEkdwnjjAmaH7ZcX0/img.png?width=800&amp;amp;height=450&amp;amp;face=176_117_268_217,https://scrap.kakaocdn.net/dn/G3P85/hyVZmfKJEm/VBIHmwRzG88EPEEbE7NGk0/img.png?width=1280&amp;amp;height=720&amp;amp;face=278_186_448_372');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;easyOCR을 이용하여 이미지에서 문자 인식해보기(초간단)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;EasyOCR은 이미지 내의 텍스트를 감지하고 인식하는 데 사용할 수 있는 오픈 소스 라이브러리입니다 &amp;nbsp;Python 프로그래밍 언어로 작성되어 사용하기도 편하고 상당히 훌륭한 인식율을 보여줍니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yongeekd01.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>ocr#tesseract#easyocr</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/185</guid>
      <comments>https://yongeekd01.tistory.com/185#entry185comment</comments>
      <pubDate>Thu, 9 May 2024 11:24:06 +0900</pubDate>
    </item>
    <item>
      <title>easyOCR을 이용하여 이미지에서 문자 인식해보기(초간단)</title>
      <link>https://yongeekd01.tistory.com/184</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;EasyOCR&lt;/span&gt;&lt;span&gt;은 이미지 내의 텍스트를 감지하고 인식하는 데 사용할 수 있는 오픈 소스 라이브러리입니다 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Python &lt;/span&gt;&lt;span&gt;프로그래밍 언어로 작성되어 사용하기도 편하고 상당히 훌륭한 인식율을 보여줍니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;물론 다양한 언어를 지원하고 있어 응용범위도 넓습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;1. easyOCR의 특징&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;(1) 다양한 언어 지원&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; EasyOCR&lt;/span&gt;&lt;span&gt;은 &lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;개 이상의 언어를 지원하며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;이를 통해 전 세계 다양한 문화와 언어의 텍스트 인식이 가능합니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;영어&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;중국어&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;한국어&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;일본어&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;아랍어 등 다양한 언어를 포함하고 있습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;(2) 딥러닝 기반 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Convolutional Neural Networks(CNN)&lt;/span&gt;&lt;span&gt;와 &lt;/span&gt;&lt;span&gt;Recurrent Neural Networks(RNN), &lt;/span&gt;&lt;span&gt;그리고 &lt;/span&gt;&lt;span&gt;CTC(Connectionist Temporal Classification) loss&lt;/span&gt;&lt;span&gt;를 사용하여 텍스트 인식 모델을 구현하였으며 &lt;/span&gt;&lt;span&gt;높은 정확도와 강력한 텍스트 인식 능력을 제공합니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;(3) GPU &lt;/span&gt;&lt;span&gt;지원&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;GPU&lt;/span&gt;&lt;span&gt;를 사용하여 처리 속도를 향상시킬 수 있습니다&lt;/span&gt;&lt;span&gt;.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;(4) 간단한 &lt;/span&gt;&lt;span&gt;API&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;사용자 친화적인 &lt;/span&gt;&lt;span&gt;API&lt;/span&gt;&lt;span&gt;를 제공하여&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;몇 줄의 코드만으로도 이미지에서 텍스트를 추출할 수 있습니다&lt;/span&gt;&lt;span&gt;.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;(5) 오픈 소스&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;GitHub&lt;/span&gt;&lt;span&gt;을 통해 소스 코드에 접근할 수 있으며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;커뮤니티 기반으로 지속적으로 발전하고 있습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;span&gt;누구나 기여할 수 있고&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;개선 사항이나 새로운 기능을 제안할 수 있습니다&lt;/span&gt;&lt;span&gt;..&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;파이썬 코드를 통해서 간단하게 이미지에서 문자를 인식하고&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;그 결과를 이미지에 표시하여 확인해보겠습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;2. 예제 코드&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; time&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; easyocr&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; PIL &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; Image, ImageDraw&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#loading time이 길어서 체크&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;start = time.time()&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#OCR reader 생성&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#ko, ja, en 등등 설정, 동시에도 가능 ['ko', 'en']&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#ocr_model = easyocr.Reader(['ko']) &amp;nbsp;#CPU 사용 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;ocr_model = easyocr.Reader([&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'ko'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;], gpu=&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#GPU 사용 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;model loading time : {time.time() - start}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;proc_time = time.time()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 이미지에서 텍스트 인식&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;result = ocr_model.readtext(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'테스트이미지.png'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; len(result) &amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; :&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#인식된 문자열에 bbox를 그려서 확인 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# PIL로 이미지 로드&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; image = Image.open(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'테스트이미지.png'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; draw = ImageDraw.Draw(image)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 인식 결과 출력&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; detection &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; result:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# detection 포맷: (bbox, text, confidence)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bbox, text, confidence = detection&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Detected text:{bbox} {text} (Confidence: {confidence:.2f})&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 다각형 그리기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; draw.polygon([tuple(point) &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; point &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; bbox], outline=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'blue'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; image.save(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;bbox.png&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#loading time이 길어서 초기화로 옮김 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(f&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;proc time : {time.time() - proc_time}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같은 이미지를 이용해서 인식된 문자열에 박스를 표시하여 저장해보았습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딱 봐도 너무 간단 하지요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;bbox.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEyeEy/btsHbpjx8VM/UMmD4KfT00M6za3w4moliK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEyeEy/btsHbpjx8VM/UMmD4KfT00M6za3w4moliK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEyeEy/btsHbpjx8VM/UMmD4KfT00M6za3w4moliK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEyeEy%2FbtsHbpjx8VM%2FUMmD4KfT00M6za3w4moliK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;bbox.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPU를 사용하면 상당히 빠르게 동작합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;model loading time : 15.14763331413269 &lt;br /&gt;Detected&amp;nbsp;text:[[1073,&amp;nbsp;53],&amp;nbsp;[1153,&amp;nbsp;53],&amp;nbsp;[1153,&amp;nbsp;95],&amp;nbsp;[1073,&amp;nbsp;95]]&amp;nbsp;파6&amp;nbsp;(Confidence:&amp;nbsp;0.07) &lt;br /&gt;Detected&amp;nbsp;text:[[1020,&amp;nbsp;106],&amp;nbsp;[1158,&amp;nbsp;106],&amp;nbsp;[1158,&amp;nbsp;130],&amp;nbsp;[1020,&amp;nbsp;130]]&amp;nbsp;아는&amp;nbsp;형님&amp;nbsp;버이비모스터&amp;nbsp;(Confidence:&amp;nbsp;0.25) &lt;br /&gt;Detected&amp;nbsp;text:[[644,&amp;nbsp;198],&amp;nbsp;[840,&amp;nbsp;198],&amp;nbsp;[840,&amp;nbsp;300],&amp;nbsp;[644,&amp;nbsp;300]]&amp;nbsp;달모&amp;nbsp;(Confidence:&amp;nbsp;0.23) &lt;br /&gt;Detected&amp;nbsp;text:[[642,&amp;nbsp;290],&amp;nbsp;[1164,&amp;nbsp;290],&amp;nbsp;[1164,&amp;nbsp;414],&amp;nbsp;[642,&amp;nbsp;414]]&amp;nbsp;판시핑에계&amp;nbsp;(Confidence:&amp;nbsp;0.13) &lt;br /&gt;Detected&amp;nbsp;text:[[436,&amp;nbsp;494],&amp;nbsp;[473,&amp;nbsp;494],&amp;nbsp;[473,&amp;nbsp;513],&amp;nbsp;[436,&amp;nbsp;513]]&amp;nbsp;판시터&amp;nbsp;(Confidence:&amp;nbsp;0.18) &lt;br /&gt;Detected&amp;nbsp;text:[[643,&amp;nbsp;398],&amp;nbsp;[1194,&amp;nbsp;398],&amp;nbsp;[1194,&amp;nbsp;526],&amp;nbsp;[643,&amp;nbsp;526]]&amp;nbsp;물어보세요&amp;nbsp;(Confidence:&amp;nbsp;0.81) &lt;br /&gt;proc&amp;nbsp;time&amp;nbsp;:&amp;nbsp;0.9032175540924072&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>easyocr#ocr#문자인식#파이썬</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/184</guid>
      <comments>https://yongeekd01.tistory.com/184#entry184comment</comments>
      <pubDate>Fri, 3 May 2024 18:35:59 +0900</pubDate>
    </item>
    <item>
      <title>파일 시스템이란? NTFS와 exFAT 특징과 차이점</title>
      <link>https://yongeekd01.tistory.com/183</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도우에서 대용량 디스크를 포맷할때 항상 고민이 되는 부분입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NTFS를 사용할 것인가? 아니면 exFAT를 사용할 것인가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 파일 시스템이 무엇인지 알아보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 파일 시스템이란?&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;270&quot; data-origin-height=&quot;270&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E8U6e/btsGGeqbBEc/bZjGyF016TTwe3Jt41zYs1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E8U6e/btsGGeqbBEc/bZjGyF016TTwe3Jt41zYs1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E8U6e/btsGGeqbBEc/bZjGyF016TTwe3Jt41zYs1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE8U6e%2FbtsGGeqbBEc%2FbZjGyF016TTwe3Jt41zYs1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;333&quot; height=&quot;333&quot; data-origin-width=&quot;270&quot; data-origin-height=&quot;270&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;파일 시스템은 윈도우나 리눅스 OS에서 파일을 저장&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;관리&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;검색하는 방식을 정의하는 구조와 규칙의 집합입니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;운영 체제는 파일 시스템을 사용하여 데이터를 디스크나 다른 저장 매체에 효율적으로 저장하고&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;사용자가 쉽게 접근할 수 있도록 합니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;파일 시스템의 주요 기능&amp;nbsp;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;(1) 데이터 저장&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;파일 시스템은 데이터를 파일 형태로 저장하고&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;이 파일들을 폴더로&lt;/span&gt;&lt;span&gt; 구분함&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;(2) 데이터 관리&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;파일에 대한 정보&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;생성일&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;수정일&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;크기 등&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;를 관리하고&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;사용자 권한 설정을 통해 접근을 제어함&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;(3) 데이터 검색 및 접근&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;파일 시스템은 파일 이름&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;경로 등을 사용하여 빠르게 데이터를 검색하고 접근할 수 있는 메커니즘을 제공&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;(4) 데이터 무결성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;오류 발생 시 복구 메커니즘을 통해 데이터의 무결성을 유지&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;파일 시스템의 종류&amp;nbsp;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;(1) 디스크 기반 파일 시스템&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;하드 드라이브&lt;/span&gt;&lt;span&gt;, SSD &lt;/span&gt;&lt;span&gt;등 물리적 저장 매체에 데이터를 저장함(&lt;/span&gt;&lt;span&gt;NTFS, exFAT, FAT32, ext4, HFS...)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;(2) 네트워크 파일 시스템&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;네트워크를 통해 여러 컴퓨터가 파일을 공유할 수 있도록 함(&lt;/span&gt;&lt;span&gt;NFS, SMB/CIFS ..)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;(3) 분산 파일 시스템&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;여러 머신에 걸쳐 파일을 분산시켜 저장하는 &lt;/span&gt;&lt;span&gt;클라우드 스토리지(&lt;/span&gt;&lt;span&gt;Google File System, Hadoop Distributed File System ..)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. exFAT와 NTFS 비교&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;exFAT&lt;/span&gt;&lt;span&gt;와 &lt;/span&gt;&lt;span&gt;NTFS&lt;/span&gt;&lt;span&gt;는 마이크로소프트에서 개발한 파일 시스템으로&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;각각 다른 사용 목적과 환경을 위해 설계되었습니다&lt;/span&gt;&lt;span&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;두 시스템의 주요 차이점&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;장점&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;단점을 비교해보겠습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;(1) NTFS (New Technology File System)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;장점&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;높은 보안성 - &lt;/span&gt;&lt;span&gt;파일과 폴더 단위로 권한을 설정할 수 있어 보안성이 좋음&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;데이터 복구 기능 - &lt;/span&gt;&lt;span&gt;트랜잭션 로그를 사용하여 시스템 충돌 후 데이터 복구가능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;대용량 파일 지원 - &lt;/span&gt;&lt;span&gt;매우 큰 파일과 볼륨을 지원&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;압축 기능 - &lt;/span&gt;&lt;span&gt;디스크 공간을 절약하기 위해 파일 및 폴더를 압축 가능&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;단점&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;호환성 문제 - &lt;/span&gt;&lt;span&gt;주로 윈도우 시스템에서 사용되며&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;맥이나 리눅스 등 다른 운영 체제에서는 제한적인 지원&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;복잡한 관리 - &lt;/span&gt;&lt;span&gt;파일 시스템의 고급 기능 때문에 관리가 복잡 (&lt;span style=&quot;background-color: #ffffff; color: #404040; text-align: start;&quot;&gt;드라이브 저장 공간의 4%는 파일 시스템 자체에서 사용&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;(2) exFAT (Extended File Allocation Table)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;장점&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;호환성 - &lt;/span&gt;&lt;span&gt;윈도우 뿐만 아니라 맥 &lt;/span&gt;&lt;span&gt;OS, &lt;/span&gt;&lt;span&gt;리눅스&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;다양한 모바일 기기와 호환되어 교차 플랫폼 사용에 용이&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;간단한 구조 - &lt;/span&gt;&lt;span&gt;NTFS&lt;/span&gt;&lt;span&gt;보다 구조가 간단하여 작은 메모리를 사용하는 장치에서 효율적으로 작동&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;대용량 파일 및 볼륨 지원 - &lt;/span&gt;&lt;span&gt;매우 큰 파일과 저장장치를 지원하면서도 &lt;/span&gt;&lt;span&gt;FAT32&lt;/span&gt;&lt;span&gt;보다 개선된 성능을 제공&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;단점&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;보안 및 데이터 복구 기능 부재 - &lt;/span&gt;&lt;span&gt;NTFS&lt;/span&gt;&lt;span&gt;에 비해 보안 기능이나 데이터 복구 기능이 없음&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;압축이나 암호화 미지원 - &lt;/span&gt;&lt;span&gt;파일 압축이나 암호화를 미지원 (zip 파일 이야기가 아님. 파일 시스템 내부에서의 파일 압축)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;결론적으로&lt;/span&gt;&lt;span&gt;, NTFS&lt;/span&gt;&lt;span&gt;는 데이터의 안전과 관리에 더 중점을 둔 복잡한 환경에서 사용하기 좋고&lt;/span&gt;&lt;span&gt;, exFAT&lt;/span&gt;&lt;span&gt;는 간단하고 광범위한 호환성이 요구되는 환경에서 사용하기 좋습니다&lt;/span&gt;&lt;span&gt;.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;만약 외장 하드 같은 것을 사용하면서 리눅스에도 마운트 했다가 윈도우에서도 쓰다가 하려면 exFAT가 더 편하다는 정도죠&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/리눅스</category>
      <category>NTFS#exFAT#파일시스템#filesystem#윈도우즈#리눅스</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/183</guid>
      <comments>https://yongeekd01.tistory.com/183#entry183comment</comments>
      <pubDate>Wed, 17 Apr 2024 14:10:34 +0900</pubDate>
    </item>
    <item>
      <title>GPT-4 Turbo 성능 및 API 가격 비교(chatGPT4, 타모델과 성능 비교)</title>
      <link>https://yongeekd01.tistory.com/182</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. GPT-4 Turbo란?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT-4&amp;nbsp;터보는&amp;nbsp;GPT-4&amp;nbsp;출시&amp;nbsp;후&amp;nbsp;2023년&amp;nbsp;11월에&amp;nbsp;출시된&amp;nbsp;OpenAI의&amp;nbsp;최신&amp;nbsp;모델입니다. &lt;br /&gt;&lt;br /&gt;다른&amp;nbsp;모델들이&amp;nbsp;2021년&amp;nbsp;까지의&amp;nbsp;정보를&amp;nbsp;제공하는&amp;nbsp;것과&amp;nbsp;달리&amp;nbsp; &lt;br /&gt;2023년&amp;nbsp;4월까지&amp;nbsp;최신&amp;nbsp;정보를&amp;nbsp;제공할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;것도&amp;nbsp;특징입니다.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;여기에,&amp;nbsp;한&amp;nbsp;번의&amp;nbsp;프롬프트에&amp;nbsp;300페이지&amp;nbsp;분량의&amp;nbsp;텍스트를&amp;nbsp;넣을&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;128k&amp;nbsp;컨텍스트를&amp;nbsp;지원합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT4는 8K,32K를 지원했었죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. API 가격 비교&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이상하군요. context 입력이 128k로 늘어나고 23년 초까지의 데이터가 포함된 GPT-4 Turbo의 API 사용 가격이 훨씬 더 쌉니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 싼것도 아니고 1/3 이하의 가격이네요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜 그러지? 사용자가 Turbo로 넘어오게 하려는 정책일까요?&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1276&quot; data-origin-height=&quot;679&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k3GgR/btsGwRnsXcF/VdfCzXiEH7O7cwFsP9rMIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k3GgR/btsGwRnsXcF/VdfCzXiEH7O7cwFsP9rMIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k3GgR/btsGwRnsXcF/VdfCzXiEH7O7cwFsP9rMIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk3GgR%2FbtsGwRnsXcF%2FVdfCzXiEH7O7cwFsP9rMIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1276&quot; height=&quot;679&quot; data-origin-width=&quot;1276&quot; data-origin-height=&quot;679&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 성능 비교&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;624&quot; data-origin-height=&quot;846&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccaTlp/btsGygtrV2n/JaoCupUxa6Ad09BMF7zSL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccaTlp/btsGygtrV2n/JaoCupUxa6Ad09BMF7zSL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccaTlp/btsGygtrV2n/JaoCupUxa6Ad09BMF7zSL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccaTlp%2FbtsGygtrV2n%2FJaoCupUxa6Ad09BMF7zSL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;624&quot; height=&quot;846&quot; data-origin-width=&quot;624&quot; data-origin-height=&quot;846&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/182</guid>
      <comments>https://yongeekd01.tistory.com/182#entry182comment</comments>
      <pubDate>Thu, 11 Apr 2024 10:14:52 +0900</pubDate>
    </item>
    <item>
      <title>google gemini API vision 모델을 이용한 이미지 해석 기초(제미나이, gemini-pro-vision)</title>
      <link>https://yongeekd01.tistory.com/181</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;여기서는 google gemini API를 이용하여 vision 모델을 구동 시켜 보는 예제를 살펴 보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;API 사용에 대한 기초는 다음을 참고.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/179&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yongeekd01.tistory.com/179&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712212206505&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;google gemini API 이용 개발 기초(제미나이 소개, API 사용준비, 모델들, gemini-pro, gemini-pro-vision)&quot; data-og-description=&quot;1. Google gemini 소개 1.1 Gemini 개요 제미나이는 구글 AI에서 개발한 멀티모달 기반 대규모 언어 모델입니다. 텍스트, 이미지, 오디오, 동영상, 코드 등 다양한 형태의 정보를 이해하고 처리할 수 있는&quot; data-og-host=&quot;yongeekd01.tistory.com&quot; data-og-source-url=&quot;https://yongeekd01.tistory.com/179&quot; data-og-url=&quot;https://yongeekd01.tistory.com/179&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Aw2Ym/hyVJZDSAei/GxKXGWXwhul4ld8HcYRqSK/img.png?width=569&amp;amp;height=607&amp;amp;face=0_0_569_607,https://scrap.kakaocdn.net/dn/boC7Zv/hyVJ4FaQtu/ycOd1HmpcKcLInrZ52oBVK/img.png?width=569&amp;amp;height=607&amp;amp;face=0_0_569_607,https://scrap.kakaocdn.net/dn/dGcDgt/hyVJ4rCDtN/Sy2DPfxbdxAOcgKr9THcyK/img.png?width=491&amp;amp;height=725&amp;amp;face=0_0_491_725&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/179&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yongeekd01.tistory.com/179&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Aw2Ym/hyVJZDSAei/GxKXGWXwhul4ld8HcYRqSK/img.png?width=569&amp;amp;height=607&amp;amp;face=0_0_569_607,https://scrap.kakaocdn.net/dn/boC7Zv/hyVJ4FaQtu/ycOd1HmpcKcLInrZ52oBVK/img.png?width=569&amp;amp;height=607&amp;amp;face=0_0_569_607,https://scrap.kakaocdn.net/dn/dGcDgt/hyVJ4rCDtN/Sy2DPfxbdxAOcgKr9THcyK/img.png?width=491&amp;amp;height=725&amp;amp;face=0_0_491_725');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;google gemini API 이용 개발 기초(제미나이 소개, API 사용준비, 모델들, gemini-pro, gemini-pro-vision)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. Google gemini 소개 1.1 Gemini 개요 제미나이는 구글 AI에서 개발한 멀티모달 기반 대규모 언어 모델입니다. 텍스트, 이미지, 오디오, 동영상, 코드 등 다양한 형태의 정보를 이해하고 처리할 수 있는&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yongeekd01.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. gemini-pro-vision 모델 사용 예제&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;Gemini&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;는 텍스트와 이미지 및 입력을 모두 허용하는 멀티모달 모델&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;(gemini-pro-vision)&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;을 제공합니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;. GenerativeModel.generate_content API&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;는 멀티모달 프롬프트를 처리하고 텍스트 출력을 반환할 수 있습니다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;gemini-pro-vision &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;모델을 사용&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;, generate_content&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;를 사용하여 모델에 이미지를 전달하고 그 결과를 확인하는 방법입니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;처음에는 이미지만 모델에 전달하여 간단한 이미지 설명을 받아내고&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;두번째는 이미지에 대하여 추가적인 작업을 함께 프롬프트에 넣어 모델에 전달하여 결과를 받아오는 코드입니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; google.generativeai &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; genai&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; os &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; PIL.Image&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 환경 변수에서 GOOGLE_API_KEY를 가져와 변수에 저장&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;GOOGLE_API_KEY = os.getenv(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'GOOGLE_API_KEY'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# genai 모듈을 구성하고 API 키를 설정&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;genai.configure(api_key=GOOGLE_API_KEY) &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 'generateContent'를 지원하는 모델을 출력&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; m &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; genai.list_models(): &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'generateContent'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; m.supported_generation_methods: &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(m.name) &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 이미지 파일 열기 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;img = PIL.Image.open(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'./data/myImage.jpg'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;168&quot; data-origin-height=&quot;254&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IxKgF/btsGnJJtu5o/jw2OYL8xNKSVxj0DBwmQWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IxKgF/btsGnJJtu5o/jw2OYL8xNKSVxj0DBwmQWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IxKgF/btsGnJJtu5o/jw2OYL8xNKSVxj0DBwmQWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIxKgF%2FbtsGnJJtu5o%2Fjw2OYL8xNKSVxj0DBwmQWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;168&quot; height=&quot;254&quot; data-origin-width=&quot;168&quot; data-origin-height=&quot;254&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# vision 모델 지정&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;model = genai.GenerativeModel(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'models/gemini-pro-vision'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 이미지를 기반으로 콘텐츠 생성&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;response = model.generate_content(img) &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(response.text) &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'''&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;nbsp;숲속에 있는 벤치&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'''&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#이 이미지를 다루기 위해 프롬프트를 추가하려면 텍스트와 함께 전달 가능함&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;response = model.generate_content([&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;이 이미지를 이용해서 여행 광고 카피를 3줄로 4개만 작성해줘&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, img])&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(response.text)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'''&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;1. 나무 사이로 바람이 스쳐 지나가는 그늘 아래에서 휴식을 취하세요.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;2. 도시의 소음에서 벗어나 나무와 함께하는 여행을 떠나세요.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;3. 나무와 함께하는 여행은 마음의 평화를 찾을 수 있는 여행입니다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;4. 나무와 함께하는 여행은 새로운 자신을 발견할 수 있는 여행입니다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'''&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #292c32;&quot;&gt;위와 같이 프롬프트에 텍스트와 이미지를 모두 제공하기 위해 목록을 전달할 수 있습니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #292c32;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #292c32;&quot;&gt;잘 사용하면 여러가지로 응용할 수 있을 것 같습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>gemini api#gemini#google#제미나이#vision</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/181</guid>
      <comments>https://yongeekd01.tistory.com/181#entry181comment</comments>
      <pubDate>Thu, 4 Apr 2024 15:35:30 +0900</pubDate>
    </item>
    <item>
      <title>google gemini API text 모델을 이용한 개발 기초(제미나이, gemini-pro)</title>
      <link>https://yongeekd01.tistory.com/180</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서는 google gemini API를 이용하여 Text 모델을 구동 시켜 보는 예제를 살펴 보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;API 사용에 대한 기초는 다음을 참고.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/179&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yongeekd01.tistory.com/179&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712211566979&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;google gemini API 이용 개발 기초(제미나이 소개, API 사용준비, 모델들, gemini-pro, gemini-pro-vision)&quot; data-og-description=&quot;1. Google gemini 소개 1.1 Gemini 개요 제미나이는 구글 AI에서 개발한 멀티모달 기반 대규모 언어 모델입니다. 텍스트, 이미지, 오디오, 동영상, 코드 등 다양한 형태의 정보를 이해하고 처리할 수 있는&quot; data-og-host=&quot;yongeekd01.tistory.com&quot; data-og-source-url=&quot;https://yongeekd01.tistory.com/179&quot; data-og-url=&quot;https://yongeekd01.tistory.com/179&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Aw2Ym/hyVJZDSAei/GxKXGWXwhul4ld8HcYRqSK/img.png?width=569&amp;amp;height=607&amp;amp;face=0_0_569_607,https://scrap.kakaocdn.net/dn/boC7Zv/hyVJ4FaQtu/ycOd1HmpcKcLInrZ52oBVK/img.png?width=569&amp;amp;height=607&amp;amp;face=0_0_569_607,https://scrap.kakaocdn.net/dn/dGcDgt/hyVJ4rCDtN/Sy2DPfxbdxAOcgKr9THcyK/img.png?width=491&amp;amp;height=725&amp;amp;face=0_0_491_725&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/179&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yongeekd01.tistory.com/179&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Aw2Ym/hyVJZDSAei/GxKXGWXwhul4ld8HcYRqSK/img.png?width=569&amp;amp;height=607&amp;amp;face=0_0_569_607,https://scrap.kakaocdn.net/dn/boC7Zv/hyVJ4FaQtu/ycOd1HmpcKcLInrZ52oBVK/img.png?width=569&amp;amp;height=607&amp;amp;face=0_0_569_607,https://scrap.kakaocdn.net/dn/dGcDgt/hyVJ4rCDtN/Sy2DPfxbdxAOcgKr9THcyK/img.png?width=491&amp;amp;height=725&amp;amp;face=0_0_491_725');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;google gemini API 이용 개발 기초(제미나이 소개, API 사용준비, 모델들, gemini-pro, gemini-pro-vision)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. Google gemini 소개 1.1 Gemini 개요 제미나이는 구글 AI에서 개발한 멀티모달 기반 대규모 언어 모델입니다. 텍스트, 이미지, 오디오, 동영상, 코드 등 다양한 형태의 정보를 이해하고 처리할 수 있는&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yongeekd01.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. gemini-pro 모델 사용 예제&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;GenerativeModel&lt;/span&gt;&lt;span&gt;을 이용하여 원하는 텍스트 모델을 지정하고 &lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;GenerativeModel.generate_content &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;메서드에 프롬프트 문자열을 전달할 수 있습니다&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;1.0은 한글 처리가 아직 약간 부족한듯 합니다. preview 모델인 1.5는 한글 오류가 거의 없어진것 같더라고요.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; google.generativeai &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; genai&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; os &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 환경 변수에서 GOOGLE_API_KEY를 가져와 변수에 저장&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;GOOGLE_API_KEY = os.getenv(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'GOOGLE_API_KEY'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# genai 모듈을 구성하고 API 키를 설정&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;genai.configure(api_key=GOOGLE_API_KEY) &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 'generateContent'를 지원하는 모델을 출력&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; m &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; genai.list_models(): &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'generateContent'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; m.supported_generation_methods: &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(m.name) &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# gemini-pro 모델을 사용하여 GenerativeModel 객체 생성 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;model = genai.GenerativeModel(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'models/gemini-pro'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;response = model.generate_content(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Write a poem about flowers in English&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(response.text)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;response = model.generate_content(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;한국어로 꽃에 대한 시를 지어봐&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(response.text)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'''&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;**Floral Symphony**&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;Oh, blooms of beauty, ephemeral and bright,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;Your petals dance with colors, a wondrous sight.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;From vibrant hues to whispers soft and sweet,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;Your symphony of shades, a vibrant treat.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;Your fragrance fills the air with sweet perfume,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;A fragrant tapestry that weaves a timeless loom.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;Each scent a melody, a whisper in the breeze,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;Inviting hearts to find solace and ease.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;Petals unfurl like secrets yet untold,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;Soft as velvet, promising stories to be unrolled.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;Veins of crimson, golden threads of light,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;Nature's artistry, a celestial delight.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;Like delicate dancers in a graceful ballet,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;Your stems sway gently, following nature's sway.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;From towering lilies to petite pansies fair,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;Each bloom unique, beyond compare.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;In gardens fair, you bloom with cheerful grace,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;A vibrant canvas where beauty finds its place.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;A symphony of colors, a feast for the eyes,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;Flowers in bloom, a heavenly paradise.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;꽃, 아름다운 꽃,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;자연의 선물, 얼마나 화려한지.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;꽃잎의 부드러움, 색깔의 밝음,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;향기로운 향기, 마음을 사로잡는다.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;봄이 오면 꽃이 핀다,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;새로운 삶과 희망의 상징.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;여름에는 꽃이 만발하다,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;태양의 따뜻함과 비의 축복.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;가을이 오면 꽃이 시든다,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;그러나 겨울이 지나면 다시 피어난다.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;꽃, 인내와 회복력의 상징,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;삶의 끊임없는 순환을 상기시킨다.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;너는 우리 마음에 기쁨을 주고,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;우리 영혼을 고무한다.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;꽃, 아름다운 꽃,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;자연의 선물, 영원히 사랑받을 것이다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'''&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;API&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;가 결과를 반환하지 못하면&lt;span&gt; GenerateContentRespose.prompt_&lt;/span&gt;피드백을 사용하여 프롬프트와 관련된 안전 문제로 인해 차단되었는지 확인가능합니다&lt;span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;response.prompt_feedback&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;safety_ratings {&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;category: HARM_CATEGORY_SEXUALLY_EXPLICIT&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;probability: NEGLIGIBLE&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;safety_ratings {&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;category: HARM_CATEGORY_HATE_SPEECH&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;probability: NEGLIGIBLE&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;safety_ratings {&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;category: HARM_CATEGORY_HARASSMENT&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;probability: NEGLIGIBLE&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;safety_ratings {&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;category: HARM_CATEGORY_DANGEROUS_CONTENT&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;probability: NEGLIGIBLE&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>gemini api#gemini#google#제미나이</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/180</guid>
      <comments>https://yongeekd01.tistory.com/180#entry180comment</comments>
      <pubDate>Thu, 4 Apr 2024 15:27:34 +0900</pubDate>
    </item>
    <item>
      <title>google gemini API 이용 개발 기초(제미나이 소개, API 사용준비, 모델들, gemini-pro, gemini-pro-vision)</title>
      <link>https://yongeekd01.tistory.com/179</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span&gt;1. Google gemini 소개 &lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;1.1 Gemini &lt;/span&gt;&lt;span&gt;개요&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #1f1f1f;&quot;&gt;제미나이는 구글 &lt;/span&gt;&lt;span style=&quot;color: #1f1f1f;&quot;&gt;AI&lt;/span&gt;&lt;span style=&quot;color: #1f1f1f;&quot;&gt;에서 개발한 멀티모달 기반 대규모 언어 모델입니다&lt;/span&gt;&lt;span style=&quot;color: #1f1f1f;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #1f1f1f;&quot;&gt;텍스트&lt;/span&gt;&lt;span style=&quot;color: #1f1f1f;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #1f1f1f;&quot;&gt;이미지&lt;/span&gt;&lt;span style=&quot;color: #1f1f1f;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #1f1f1f;&quot;&gt;오디오&lt;/span&gt;&lt;span style=&quot;color: #1f1f1f;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #1f1f1f;&quot;&gt;동영상&lt;/span&gt;&lt;span style=&quot;color: #1f1f1f;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #1f1f1f;&quot;&gt;코드 등 다양한 형태의 정보를 이해하고 처리할 수 있는 능력을 가지고 있습니다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;* Gemini 1.0&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;은 &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;가지 모델로 제공됩니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;nbsp; &amp;nbsp;- Gemini Ultra - &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;매우 복잡한 작업을 위한 가장 크고 성능이 뛰어난 모델&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;nbsp; &amp;nbsp;- Gemini Pro - &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;다양한 작업에 걸쳐 확장할 수 있는 모델&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;nbsp; &amp;nbsp;- Gemini Nano - &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;온디바이스 작업에 가장 효율적인 모델&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #1f1f1f;&quot;&gt;Gemini 1.0 &lt;/span&gt;&lt;span style=&quot;color: #1f1f1f;&quot;&gt;성능 벤치 마크 결과는 다음과 같다고 구글에서 발표했습니다. 수치상으로는 GPT-4를 앞지르는 것으로 보이지만&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #1f1f1f;&quot;&gt;수치와 달리 실제 사용자 평가는 그다지 좋지 못했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;607&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tfR4i/btsGmxXcoO8/iGhhhyF24V64UKKUUXpO5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tfR4i/btsGmxXcoO8/iGhhhyF24V64UKKUUXpO5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tfR4i/btsGmxXcoO8/iGhhhyF24V64UKKUUXpO5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtfR4i%2FbtsGmxXcoO8%2FiGhhhyF24V64UKKUUXpO5k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;791&quot; height=&quot;844&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;607&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;491&quot; data-origin-height=&quot;725&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwBMt7/btsGkrcRAT2/m03GTypWAdRWGYW5gNPef1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwBMt7/btsGkrcRAT2/m03GTypWAdRWGYW5gNPef1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwBMt7/btsGkrcRAT2/m03GTypWAdRWGYW5gNPef1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwBMt7%2FbtsGkrcRAT2%2Fm03GTypWAdRWGYW5gNPef1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;769&quot; height=&quot;1135&quot; data-origin-width=&quot;491&quot; data-origin-height=&quot;725&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글에서 발표한 gemini에 대한 소개를&amp;nbsp; 요약해서 옮기자면 아래와 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;지금까지 멀티모달 모델을 만드는 표준 접근 방식은 서로 다른 모달리티에 대해 별도의 구성 요소를 학습시킨 다음 이를 서로 연결하여 일부 기능을 대략적으로 모방하는 것이었지만&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;gemini는 처음부터 다양한 모달리티에 대해 사전 학습된 기본 멀티모달로&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt; 설계했습니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #1f1f1f;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;정교한 추론&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;Gemini 1.0&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;의 정교한 멀티모달 추론 기능은 복잡한 서면 및 시각적 정보를 이해하는 데 도움을 줍니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;따라서 방대한 양의 데이터 속에서 식별하기 어려운 지식을 찾아내는 데 탁월한 능력을 발휘합니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;텍스트&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;이미지&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;오디오 등 이해&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;Gemini 1.0&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;은 텍스트&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;이미지&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;오디오 등을 동시에 인식하고 이해하도록 학습되어&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;따라서 수학이나 물리와 같은 복잡한 과목의 추론을 설명하는 데 특히 능숙합니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #1f1f1f;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;고급 코딩&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;Gemini&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;의 첫 번째 버전은 &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;Python, Java, C++, Go &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;등 세계에서 가장 인기 있는 프로그래밍 언어를 이해하고 설명하며 고품질 코드를 생성할 수 있습니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;책임과 안전을 핵심으로 구축&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;Google&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;의 &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;AI &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;원칙과 제품 전반에 걸친 강력한 안전 정책을 기반으로 &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;Gemini&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;의 복합적인 기능을 고려한 새로운 보호 기능을 추가하고 있습니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;개발의 각 단계에서 잠재적인 위험을 고려하고 이를 테스트하고 완화하기 위해 노력하고 있습니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;Gemini&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;는 편향성 및 독성을 포함하여 지금까지 출시된 &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;Google AI &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;모델 중 가장 포괄적인 안전성 평가를 거쳤습니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;사이버 공격&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;설득&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;자율성과 같은 잠재적 위험 영역에 대한 새로운 연구를 수행했으며&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;, Google Research&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;의 업계 최고 수준의 적대적 테스트 기술을 적용하여 &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;Gemini&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;를 배포하기 전에 중요한 안전 문제를 식별하는 데 도움을 주고 있습니다&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #1f1f1f;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.2 Gemini 모델 개요&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;24년 4월 현재 gemini 1.5가 preview 된 상태입니다. 개발자 사이트에서 &lt;span&gt;Google AI Studio를 이용하면 성능을 시험해볼수 있습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;현재 사이트에는 24년 5월 2일 부터 과금/오픈 예정이라고 쓰여 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;하지만 테스트를 해보니 API level에서는 아직 모델목록에 1.0 pro와 pro-vision만 사용가능한 것으로 보입니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 모델 설명입니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;584&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kyYgV/btsGlyo37vF/DvhaOspIjoEo4WPZ1GKtyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kyYgV/btsGlyo37vF/DvhaOspIjoEo4WPZ1GKtyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kyYgV/btsGlyo37vF/DvhaOspIjoEo4WPZ1GKtyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkyYgV%2FbtsGlyo37vF%2FDvhaOspIjoEo4WPZ1GKtyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;681&quot; height=&quot;584&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;584&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;482&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D0Kpb/btsGnHdIRTb/8I7CKKSbGcKNTiFKa5Yjfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D0Kpb/btsGnHdIRTb/8I7CKKSbGcKNTiFKa5Yjfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D0Kpb/btsGnHdIRTb/8I7CKKSbGcKNTiFKa5Yjfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD0Kpb%2FbtsGnHdIRTb%2F8I7CKKSbGcKNTiFKa5Yjfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;681&quot; height=&quot;482&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;482&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.3 gemini API 사용 해보기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.3.1 API Key 준비 하기&amp;nbsp;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;Google AI Studio&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;에서 생성 가능 합니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;a href=&quot;https://aistudio.google.com/app/apikey&quot;&gt;https://aistudio.google.com/app/apikey&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712209672138&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;로그인 - Google 계정&quot; data-og-description=&quot;이메일 또는 휴대전화&quot; data-og-host=&quot;accounts.google.com&quot; data-og-source-url=&quot;https://aistudio.google.com/app/apikey&quot; data-og-url=&quot;https://accounts.google.com/v3/signin/identifier?continue=https%3A%2F%2Faistudio.google.com%2Fapp%2Fapikey&amp;amp;followup=https%3A%2F%2Faistudio.google.com%2Fapp%2Fapikey&amp;amp;ifkv=ARZ0qKI_3qQOdb-pY_Ztzrs_ykZKK4B96qEnCEnVhoMALM8DazCPs8-lThSToYmRKWKyh2cxN9-kEQ&amp;amp;passive=1209600&amp;amp;flowName=WebLiteSignIn&amp;amp;flowEntry=ServiceLogin&amp;amp;dsh=S268539784%3A1712209670948420&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://aistudio.google.com/app/apikey&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aistudio.google.com/app/apikey&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;로그인 - Google 계정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이메일 또는 휴대전화&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;accounts.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;682&quot; data-origin-height=&quot;222&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yC4lx/btsGkoAxvL3/Xjz9urzsK2MlKvEFzgura1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yC4lx/btsGkoAxvL3/Xjz9urzsK2MlKvEFzgura1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yC4lx/btsGkoAxvL3/Xjz9urzsK2MlKvEFzgura1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyC4lx%2FbtsGkoAxvL3%2FXjz9urzsK2MlKvEFzgura1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;682&quot; height=&quot;222&quot; data-origin-width=&quot;682&quot; data-origin-height=&quot;222&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;구글 클라우드 프로젝트에&lt;span&gt; key&lt;/span&gt;를 연결하게 되어 있습니다&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;없으면 기본적으로 &lt;span&gt;Generative Language Client&lt;/span&gt;를 선택하도록 되어 있네요&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;지정 후 Create 하면 키가 생성됩니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이 키는 개발시 계속 사용하게 되므로 주의.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;364&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/M2RwK/btsGnNE2YoM/N5OijGjxgvJk1nPl8uqZDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/M2RwK/btsGnNE2YoM/N5OijGjxgvJk1nPl8uqZDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/M2RwK/btsGnNE2YoM/N5OijGjxgvJk1nPl8uqZDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FM2RwK%2FbtsGnNE2YoM%2FN5OijGjxgvJk1nPl8uqZDK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;364&quot; height=&quot;192&quot; data-origin-width=&quot;364&quot; data-origin-height=&quot;192&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;445&quot; data-origin-height=&quot;102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uQuja/btsGl24kk20/8cdsQZaDh6RkCeK1i8b5k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uQuja/btsGl24kk20/8cdsQZaDh6RkCeK1i8b5k1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uQuja/btsGl24kk20/8cdsQZaDh6RkCeK1i8b5k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuQuja%2FbtsGl24kk20%2F8cdsQZaDh6RkCeK1i8b5k1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;445&quot; height=&quot;102&quot; data-origin-width=&quot;445&quot; data-origin-height=&quot;102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1.3.2 개발환경 준비&amp;nbsp;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;(1) 파이썬 설치&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;2024. 04&lt;/span&gt;&lt;span&gt;월 현재&lt;span&gt; Python 3.9 &lt;/span&gt;이상 요구&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;gt; yum install python39-devel&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(rocky 기준 설치)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;(2) Google Python SDK for the Gemini API &lt;/span&gt;&lt;span&gt;패키지 설치&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&lt;/span&gt;&lt;/u&gt;&lt;u&gt;&lt;a href=&quot;https://pypi.org/project/google-generativeai/&quot;&gt;https://pypi.org/project/google-generativeai/&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712210056185&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;google-generativeai&quot; data-og-description=&quot;Google Generative AI High level API client library and tools.&quot; data-og-host=&quot;pypi.org&quot; data-og-source-url=&quot;https://pypi.org/project/google-generativeai/&quot; data-og-url=&quot;https://pypi.org/project/google-generativeai/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bVdg2X/hyVJ2AzWmO/ixh8kKWyS6KgsCLCAyZ7mk/img.jpg?width=300&amp;amp;height=300&amp;amp;face=0_0_300_300&quot;&gt;&lt;a href=&quot;https://pypi.org/project/google-generativeai/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://pypi.org/project/google-generativeai/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bVdg2X/hyVJ2AzWmO/ixh8kKWyS6KgsCLCAyZ7mk/img.jpg?width=300&amp;amp;height=300&amp;amp;face=0_0_300_300');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;google-generativeai&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Google Generative AI High level API client library and tools.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;pypi.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;gt; pip3 install google-generativeai&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;gt;pip3 freeze |grep google&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;google-ai-generativelanguage==0.4.0&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;google-api-core==2.18.0&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;google-auth==2.29.0&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;google-generativeai==0.4.1&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;googleapis-common-protos==1.63.0&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;혹시 설치중 protobuf &lt;/span&gt;&lt;span&gt;패키지 버전이 너무 높아서 에러나면 5.0 이하로 재설치 해줄것&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;gt; pip3 install protobuf==4.25.3&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;(3) 환경 변수에 API Key &lt;/span&gt;&lt;span&gt;등록 &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;리눅스 &lt;/span&gt;&lt;span&gt;.bashrc 에 &lt;/span&gt;&lt;span&gt;등록하면 매번 할 필요 없음&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;외부 공개 안되도록 소스에 넣을때는 주의 할 것&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.bashrc 파일에 생성된 key 값을 아래와 같이 추가하고 반영&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;gt; vi ~/.bashrc&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;export &lt;/span&gt;&lt;span&gt;GOOGLE_API_KEY&lt;/span&gt;&lt;span&gt;='your-api-key-here'&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;gt; source ~/.bashrc&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353740;&quot;&gt;소스에서는 아래처럼 하드코딩 해도 되지만 권장안함&lt;/span&gt;&lt;span style=&quot;color: #353740;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #353740;&quot;&gt;가능하면 환경 변수 사용할 것 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;OPENAI_API_KEY= &lt;b&gt;&lt;span&gt;your-api-key-here&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #353740;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353740;&quot;&gt;# Or use `os.getenv('GOOGLE_API_KEY')` to fetch an environment variable.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353740;&quot;&gt;GOOGLE_API_KEY=userdata.get('GOOGLE_API_KEY')&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353740;&quot;&gt;genai.configure(api_key=GOOGLE_API_KEY)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt;1.3.3 API &lt;/span&gt;&lt;span&gt;동작 시험 &lt;/span&gt;&lt;span&gt;(API key &lt;/span&gt;&lt;span&gt;연동&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;모델 목록보기&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;(1) API &lt;/span&gt;&lt;span&gt;키 연동 확인&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #1e1e1e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #1e1e1e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;google.generativeai &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;genai&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #1e1e1e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;os &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #1e1e1e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;GOOGLE_API_KEY = os.getenv(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'GOOGLE_API_KEY'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #1e1e1e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;genai.configure(api_key=GOOGLE_API_KEY)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #1e1e1e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(genai)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #1e1e1e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;혹시 이 단계에서 다음과 같은 에러가 나면 &lt;/span&gt;&lt;span&gt;grpcio &lt;/span&gt;&lt;span&gt;설치할 것 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;No module named 'grpc'&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;File &quot;/root/share/source/geminiAPI/00_api_check.py&quot;, line 1, in &amp;lt;module&amp;gt; import google.generativeai as genai ModuleNotFoundError: No module named 'grpc'&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;gt;pip3 install grpcio&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Downloading grpcio-1.62.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.6 MB)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;|&lt;/span&gt;&lt;span&gt;████████████████████████████████&lt;/span&gt;&lt;span&gt;| 5.6 MB 1.6 MB/s &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Installing collected packages: grpcio&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Successfully installed grpcio-1.62.1&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;(2) 사용가능한 모델 확인 &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;list_models&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;를 사용하여 사용 가능한 &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;Gemini &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;모델을 확인&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;* gemini-pro: &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;텍스트 전용 프롬프트에 최적화&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;* gemini-pro-vision: &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;텍스트 및 이미지 프롬프트에 최적화&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;1.5&lt;/span&gt;&lt;span&gt;는 아직 &lt;/span&gt;&lt;span&gt;API &lt;/span&gt;&lt;span&gt;목록에서 표시안됨&lt;/span&gt;&lt;span&gt;(5&lt;/span&gt;&lt;span&gt;월&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;일 이후 예정&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #1e1e1e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #1e1e1e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;google.generativeai &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;genai&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #1e1e1e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;os &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #1e1e1e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;GOOGLE_API_KEY = os.getenv(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'GOOGLE_API_KEY'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #1e1e1e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;genai.configure(api_key=GOOGLE_API_KEY)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #1e1e1e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;m &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;genai.list_models():&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #1e1e1e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'generateContent'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;m.supported_generation_methods:&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #1e1e1e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(m.name)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #1e1e1e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;다음처럼 &lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;개의 모델이 현재 지원됩니다&lt;/span&gt;&lt;span&gt;. (1.5&lt;/span&gt;&lt;span&gt;는 유료&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;models/gemini-1.0-pro&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;models/gemini-1.0-pro-001&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;models/gemini-1.0-pro-latest&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;models/gemini-1.0-pro-vision-latest&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;models/gemini-pro&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;models/gemini-pro-vision&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353740;&quot;&gt;여기까지 진행되면 사용준비가 끝난것입니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #353740;&quot;&gt;다음에는 실제 Text 모델과 Vision 모델을 호출하여 기능을 테스트해보도록 하겠습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/180&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yongeekd01.tistory.com/180&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712212576431&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;google gemini API text 모델을 이용한 개발 기초(제미나이, gemini-pro)&quot; data-og-description=&quot;여기서는 google gemini API를 이용하여 Text 모델을 구동 시켜 보는 예제를 살펴 보겠습니다. API 사용에 대한 기초는 다음을 참고. https://yongeekd01.tistory.com/179 google gemini API 이용 개발 기초(제미나이 소&quot; data-og-host=&quot;yongeekd01.tistory.com&quot; data-og-source-url=&quot;https://yongeekd01.tistory.com/180&quot; data-og-url=&quot;https://yongeekd01.tistory.com/180&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dnGkOs/hyVJV2wDZ0/dDn7lNwNprHkHgSlQwlG8K/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/blP8sk/hyVJ1uU3qc/i1cI8tKbpo0qnfcM02q9U1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/dVuVkn/hyVJ4rCQGE/bc49GzdwIkswU9hJAyUOlK/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/180&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yongeekd01.tistory.com/180&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dnGkOs/hyVJV2wDZ0/dDn7lNwNprHkHgSlQwlG8K/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/blP8sk/hyVJ1uU3qc/i1cI8tKbpo0qnfcM02q9U1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/dVuVkn/hyVJ4rCQGE/bc49GzdwIkswU9hJAyUOlK/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;google gemini API text 모델을 이용한 개발 기초(제미나이, gemini-pro)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;여기서는 google gemini API를 이용하여 Text 모델을 구동 시켜 보는 예제를 살펴 보겠습니다. API 사용에 대한 기초는 다음을 참고. https://yongeekd01.tistory.com/179 google gemini API 이용 개발 기초(제미나이 소&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yongeekd01.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/181&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://yongeekd01.tistory.com/181&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712212590225&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;google gemini API vision 모델을 이용한 이미지 해석 기초(제미나이, gemini-pro-vision)&quot; data-og-description=&quot;여기서는 google gemini API를 이용하여 vision 모델을 구동 시켜 보는 예제를 살펴 보겠습니다. API 사용에 대한 기초는 다음을 참고. https://yongeekd01.tistory.com/179 google gemini API 이용 개발 기초(제미나이 &quot; data-og-host=&quot;yongeekd01.tistory.com&quot; data-og-source-url=&quot;https://yongeekd01.tistory.com/181&quot; data-og-url=&quot;https://yongeekd01.tistory.com/181&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eMrDUh/hyVJXeYYdD/K0y5uqTaDdowA3g8oE5zJK/img.png?width=168&amp;amp;height=254&amp;amp;face=0_0_168_254,https://scrap.kakaocdn.net/dn/PRMs9/hyVJQ70h09/KQwvVH6uc8EV1I1HKAmbq0/img.png?width=168&amp;amp;height=254&amp;amp;face=0_0_168_254,https://scrap.kakaocdn.net/dn/hCa8I/hyVJZRozFp/YAv8olWhRpQFSUkPdI2mfK/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200&quot;&gt;&lt;a href=&quot;https://yongeekd01.tistory.com/181&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yongeekd01.tistory.com/181&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eMrDUh/hyVJXeYYdD/K0y5uqTaDdowA3g8oE5zJK/img.png?width=168&amp;amp;height=254&amp;amp;face=0_0_168_254,https://scrap.kakaocdn.net/dn/PRMs9/hyVJQ70h09/KQwvVH6uc8EV1I1HKAmbq0/img.png?width=168&amp;amp;height=254&amp;amp;face=0_0_168_254,https://scrap.kakaocdn.net/dn/hCa8I/hyVJZRozFp/YAv8olWhRpQFSUkPdI2mfK/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;google gemini API vision 모델을 이용한 이미지 해석 기초(제미나이, gemini-pro-vision)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;여기서는 google gemini API를 이용하여 vision 모델을 구동 시켜 보는 예제를 살펴 보겠습니다. API 사용에 대한 기초는 다음을 참고. https://yongeekd01.tistory.com/179 google gemini API 이용 개발 기초(제미나이&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yongeekd01.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;** 참고 :&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&lt;a href=&quot;https://ai.google.dev/docs?hl=ko&quot;&gt;https://ai.google.dev/docs?hl=ko&lt;/a&gt;&lt;/span&gt;&lt;/u&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712207931082&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Gemini 문서 및 API 참조 &amp;nbsp;|&amp;nbsp; Google AI for Developers&quot; data-og-description=&quot;Google Gemini API를 시작합니다. 빠른 시작, 가이드, API 문서&quot; data-og-host=&quot;ai.google.dev&quot; data-og-source-url=&quot;https://ai.google.dev/docs?hl=ko&quot; data-og-url=&quot;https://ai.google.dev/docs?hl=ko&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/buikgb/hyVJ2gfOwB/PFKhcebmOVepMgPGA19xrK/img.png?width=1440&amp;amp;height=900&amp;amp;face=0_0_1440_900&quot;&gt;&lt;a href=&quot;https://ai.google.dev/docs?hl=ko&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ai.google.dev/docs?hl=ko&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/buikgb/hyVJ2gfOwB/PFKhcebmOVepMgPGA19xrK/img.png?width=1440&amp;amp;height=900&amp;amp;face=0_0_1440_900');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Gemini 문서 및 API 참조 &amp;nbsp;|&amp;nbsp; Google AI for Developers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Google Gemini API를 시작합니다. 빠른 시작, 가이드, API 문서&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ai.google.dev&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/개발</category>
      <category>제미나이#gemini#google#gemini API#API#제미나이기초</category>
      <author>빗자루검</author>
      <guid isPermaLink="true">https://yongeekd01.tistory.com/179</guid>
      <comments>https://yongeekd01.tistory.com/179#entry179comment</comments>
      <pubDate>Thu, 4 Apr 2024 15:04:22 +0900</pubDate>
    </item>
  </channel>
</rss>