<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>jeon_ys.log</title>
        <link>https://velog.io/</link>
        <description>youngseo-computerblog.tistory.com 을 사용하고 있습니다.</description>
        <lastBuildDate>Mon, 31 Jan 2022 14:36:04 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>jeon_ys.log</title>
            <url>https://images.velog.io/images/jeon_ys/profile/b4efdd21-ae26-4f62-a7ee-9d7da76c6e4a/KakaoTalk_20220105_112432588.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. jeon_ys.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/jeon_ys" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[yolo 클래스에 맞도록 데이터 형식 바꾸기]]></title>
            <link>https://velog.io/@jeon_ys/yolo-%ED%81%B4%EB%9E%98%EC%8A%A4%EC%97%90-%EB%A7%9E%EB%8F%84%EB%A1%9D-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%98%95%EC%8B%9D-%EB%B0%94%EA%BE%B8%EA%B8%B0</link>
            <guid>https://velog.io/@jeon_ys/yolo-%ED%81%B4%EB%9E%98%EC%8A%A4%EC%97%90-%EB%A7%9E%EB%8F%84%EB%A1%9D-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%98%95%EC%8B%9D-%EB%B0%94%EA%BE%B8%EA%B8%B0</guid>
            <pubDate>Mon, 31 Jan 2022 14:36:04 GMT</pubDate>
            <description><![CDATA[<p>yolo는 클래스로 label xmin, ymin, w, h 이 순서대로 써주어야 하기 때문에 이렇게 바꾸어주어야 한다,,
이 코드는 json에 있는 특정 정보를 잘 뜯어와서 잘 오리고 붙이는 방법인데,, file을 열고, 다양한 정보들을 추출해 온 후, 오리고 붙이는 과정을 적어놓았다.!</p>
<pre><code>for i in range(1,1001):
    num = str(i).zfill(4)
    with open(&#39;./Training/[라벨]돼지_bbox/livestock_pig_bbox_00&#39; + num + &#39;.json&#39;, &#39;r&#39;) as f:
        json_data = json.load(f)
        label_info = json_data[&#39;label_info&#39;]

        image_name = label_info[&#39;image&#39;][&#39;file_name&#39;] # 이미지 파일명
        image_width = label_info[&#39;image&#39;][&#39;width&#39;] # 이미지 넓이
        image_height = label_info[&#39;image&#39;][&#39;height&#39;] # 이미지 높이
        annotations =  label_info[&#39;annotations&#39;]
        image_name = image_name.replace(&quot;.jpg&quot;, &quot;&quot;)
        file = open(&quot;./labels/&quot;+image_name + &quot;.txt&quot;, &quot;w&quot;)
        for annot in annotations:
            x1, y1, x2, y2 = annot[&#39;bbox&#39;] # 객체 1개의 bbox 위치 좌표
            x1 = x1/image_width
            y1 = y1/image_height
            x2 = (x2-x1)/image_width
            y2 = (y2-y1)/image_height
            file.write(f&quot;0 {x1:f} {y1:f} {x2:f} {y2:f}\n&quot;)
        file.close()</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[yolo-no images found error]]></title>
            <link>https://velog.io/@jeon_ys/yolo-no-images-found-error</link>
            <guid>https://velog.io/@jeon_ys/yolo-no-images-found-error</guid>
            <pubDate>Sat, 29 Jan 2022 09:08:53 GMT</pubDate>
            <description><![CDATA[<p>yolo 사용 시 annotation 은 만약 2개의 bounding box가 있다고 했을 때 이런식으로 설정이 되어 있어야 한다. </p>
<p>0 45 55 29 67
1 99 83 28 44</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[CS231n 3]]></title>
            <link>https://velog.io/@jeon_ys/CS231n-3</link>
            <guid>https://velog.io/@jeon_ys/CS231n-3</guid>
            <pubDate>Fri, 28 Jan 2022 06:57:12 GMT</pubDate>
            <description><![CDATA[<p>Linear --- y= Wx</p>
<p>Loss function
-Multiclass SVM loss
<img src="https://images.velog.io/images/jeon_ys/post/a31ac153-2a14-491d-bd84-bc67c4750915/image.png" alt="">
하지만 이 loss function에는 문제가 있다.
만약 L이 0가 되는 W를 찾는다면, W는 유일한 해를 갖지는 않는다.</p>
<p>-Softmax loss
<img src="https://images.velog.io/images/jeon_ys/post/82df72b8-3608-41e5-a5de-5f46809e16ca/image.png" alt=""></p>
<p>optimization
-random search(그냥 랜덤으로 해본 다음에 이제 어떤 게 제일 나았는지 best 뽑음)
-미분/편미분 이용 gradient dW</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[CS231n 2]]></title>
            <link>https://velog.io/@jeon_ys/CS231n-2</link>
            <guid>https://velog.io/@jeon_ys/CS231n-2</guid>
            <pubDate>Fri, 28 Jan 2022 06:22:21 GMT</pubDate>
            <description><![CDATA[<p>Image Classification &amp; Challenges
-viewpoint variation(위에서 찍었냐 밑에서 찍었냐 왼쪽에서 찍었냐)
-illumination(밝은 곳에서 찍었냐 어두운 곳에서 찍었냐)
-deformation(고양이답지 않은 행동들)
-occlusion(어딘가 숨어있다면)
-background clutter(배경과 너무 유사)</p>
<p>K-NN
(0, 1, 2, ..9)를 예축하는 ..
1-NN 과 5-NN을 했을 때 차이가 ㅇ -&gt; training에서 또 validation으로 놓고 또 확인해보는 ..과정
근데 성능이 별로임 -&gt; original / shifted/ messed up / darkened 했을 때도 다 똑같이 나와가지고..</p>
<p>Linear image classification
f를 이용해서 이제 어떤 object인지 loss function를 감소할 , optimization 방법 등을 연구해야 함.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[CS231n 강의1]]></title>
            <link>https://velog.io/@jeon_ys/CS231n-%EA%B0%95%EC%9D%981</link>
            <guid>https://velog.io/@jeon_ys/CS231n-%EA%B0%95%EC%9D%981</guid>
            <pubDate>Fri, 28 Jan 2022 06:08:55 GMT</pubDate>
            <description><![CDATA[<p>Image classification에 대한 내용이 나와 있다.
object detection - 사람과 자전거
image captioning - 사람이 자전거를 타고 있다/ 고치고 있다.</p>
<p>Vision History
시각적인 것, 즉 공학적인 생각으로부터 이 computer vision에 대해 연구하게 되었는데, 가장 핵심적인 것은 공학적인 것 중 &#39;edge&#39;에 simple한 neuron이 반응을 보인다는 것이었다.
이후 3D 모델을 인식하기 위한 방법론은 두 가지로, Generalized Cylinder (단순한 object들의 결합-물통은 원통과 꼭다리로 이루어져있구나) 그리고 Pictorial Structure(Variability Concept를 설명-얼굴은 눈/코/입/귀 등이 연결되어 있어)로 설명할 수 있다.
그래서 처음에는 object를 알기 위한 특정한 feature을 찾아내자. 에서부터 처음 시작되었다. 그리고 이후에는 CNN이 나타나서 점점 더 발전하게 됨.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[image object를 json으로 변환하는 과정]]></title>
            <link>https://velog.io/@jeon_ys/image-object%EB%A5%BC-json%EC%9C%BC%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%98%EB%8A%94-%EA%B3%BC%EC%A0%95</link>
            <guid>https://velog.io/@jeon_ys/image-object%EB%A5%BC-json%EC%9C%BC%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%98%EB%8A%94-%EA%B3%BC%EC%A0%95</guid>
            <pubDate>Fri, 28 Jan 2022 05:59:09 GMT</pubDate>
            <description><![CDATA[<p>일단 이 딥러닝에서 dataset을 만들 때 이 json을 많이 사용한다. </p>
<p>우선 이번 AI spark 챌린지에서 다운받은 돼지와 관련된 json 자료를 visual studio 2015로 열어보면 이런 코드로 이루어져 있음을 알 수 있는데, </p>
<p>일단 사진의 정보가 나와있음을 알 수 있다. 어떤 정보냐 하면</p>
<ol>
<li>사진의 width와 height</li>
<li>농장 장소의 이름은 무엇인가?</li>
<li>그리고 농장의 환경은 어떻게 되어 있는지(열려 있는지 닫혀 있는지?)</li>
<li>시간은 낮과 밤 중 언제인지</li>
<li>annotation에는 bbox와 segmentation 정보가 있고, category_id가 있는데 이는 아마도 밑에 있는 정보들 1:살찐 돼지 2:어린 돼지 3:암퇘지 로 나누는 것으로 보인다.</li>
</ol>
<p>이제 이 정보들을 어떻게 가공하면 좋을지 고민을 더 해봐야 겠다.!</p>
<pre><code>{&quot;label_info&quot;: {&quot;image&quot;: {&quot;file_name&quot;: &quot;livestock_pig_bbox_000001.jpg&quot;, &quot;width&quot;: 1920, &quot;height&quot;: 1080, &quot;farm_name&quot;: &quot;Asan&quot;, &quot;farm_env&quot;: &quot;open&quot;, &quot;time&quot;: &quot;daytime&quot;}, &quot;annotations&quot;: [{&quot;bbox&quot;: [240, 2, 427, 164], &quot;category_id&quot;: 1}, {&quot;bbox&quot;: [831, 186, 1205, 610], &quot;category_id&quot;: 1}, {&quot;bbox&quot;: [1162, 468, 1507, 827], &quot;category_id&quot;: 1}, {&quot;bbox&quot;: [1234, 723, 1591, 959], &quot;category_id&quot;: 1}, {&quot;bbox&quot;: [1020, 3, 1462, 163], &quot;category_id&quot;: 1}, {&quot;bbox&quot;: [344, 50, 654, 390], &quot;category_id&quot;: 1}, {&quot;bbox&quot;: [375, 223, 675, 610], &quot;category_id&quot;: 1}, {&quot;bbox&quot;: [583, 421, 899, 843], &quot;category_id&quot;: 1}, {&quot;bbox&quot;: [870, 732, 1308, 969], &quot;category_id&quot;: 1}, {&quot;bbox&quot;: [678, 116, 976, 469], &quot;category_id&quot;: 1}, {&quot;bbox&quot;: [863, 877, 1276, 1013], &quot;category_id&quot;: 1}, {&quot;bbox&quot;: [316, 641, 635, 928], &quot;category_id&quot;: 1}, {&quot;bbox&quot;: [586, 0, 831, 433], &quot;category_id&quot;: 1}], &quot;categories&quot;: [{&quot;supercategory&quot;: &quot;livestock_pig&quot;, &quot;id&quot;: 1, &quot;name&quot;: &quot;fat_pig&quot;}, {&quot;supercategory&quot;: &quot;livestock_pig&quot;, &quot;id&quot;: 2, &quot;name&quot;: &quot;weaning_pig&quot;}, {&quot;supercategory&quot;: &quot;livestock_pig&quot;, &quot;id&quot;: 3, &quot;name&quot;: &quot;sow&quot;}]}}
</code></pre><p>json 파일 속 정보들을 가져오는 방법은 무엇일까?
예를 들어 이런 식으로 출력할 수 있다.</p>
<pre><code>import json
import urllib.request as request

json_str = request(urlopen(&quot;무슨무슨 깃허브 레포터리&quot;).read()
output = json.loads(json_str)

for item in output:
    print(item[&quot;name&quot;])
    print(item[&quot;full_name&quot;])
    print(item[&quot;owner&quot;][&quot;login&quot;]

json.dumps()
</code></pre><p>이런 식으로 [][]이렇게 차례대로 가져올 수 있다는 것!!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[얼굴을 이해하는 computer vision]]></title>
            <link>https://velog.io/@jeon_ys/%EC%96%BC%EA%B5%B4%EC%9D%84-%EC%9D%B4%ED%95%B4%ED%95%98%EB%8A%94-computer-vision</link>
            <guid>https://velog.io/@jeon_ys/%EC%96%BC%EA%B5%B4%EC%9D%84-%EC%9D%B4%ED%95%B4%ED%95%98%EB%8A%94-computer-vision</guid>
            <pubDate>Thu, 27 Jan 2022 12:08:04 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/jeon_ys/post/0cd9ade1-d9d8-4748-9339-70447981c7a8/image.png" alt=""></p>
<p>얼굴을 가장 잘 이해할 수 있는 (코의 위치라던가,.) 픽셀은 저렇게 생긴 픽셀일 것이다. (feature)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[AlphaZeroGomoku-game.py]]></title>
            <link>https://velog.io/@jeon_ys/AlphaZeroGomoku-game.py</link>
            <guid>https://velog.io/@jeon_ys/AlphaZeroGomoku-game.py</guid>
            <pubDate>Thu, 20 Jan 2022 03:57:57 GMT</pubDate>
            <description><![CDATA[<p>Game.py에는 
1.game을 위한 board 클래스
2.game을 나타내줄 graphic코드가 들어있는 Game 클래스
가 있다.</p>
<h3 id="def-initself-kwargs">def <strong>init</strong>(self, **kwargs)</h3>
<p>width와 height는 일단 13,13줄로 정해주고
states를 어떤 식으로 넣을지가 관건이다. 여기선 Dictionary로 만들어 주었는데..
states는 Dictionary로 가고, value는 배열로 넣어주면 되겠다., {player1: [[h,w]],player2:[[h,w],[h,w]],player3[[h,w],[h,w]] ..} 이런식으로 넣는 것이 좋겠다.( 맨 처음 player혼자 하나만 넣어서ㅠㅠ 이거 조심.)</p>
<p>그 다음 player는 1,2가 아닌 1, -1로 지정한다.(self play시 win lose와 동일 맥락으로 따져주기 위해서. 필요하다면 self play 알고리즘도 살짝 바꿔야 될 것 같다.</p>
<h3 id="def-init_boardself-start_player--0">def init_board(self, start_player = 0)</h3>
<p>current_player는 players 배열에서 0번째 / 1번째 이런 식으로 가져온다. (현재 누구 차례니? 에 관련된 코드라고 생각하면 된다.
이후 갈 수 있는 곳들에 대한 배열은 availables로 지정해주고, 
board에서의 states 또한 dictionary로 만들어주었다.
last_move는 -1 (move에 대한 배열이 이차원 배열이라고 하자.)로 일단 간다.</p>
<h3 id="move_to_locationself-move">move_to_location(self, move)</h3>
<p>이건 그냥 행/렬 지정해주는 코드</p>
<p>근데 순서가 1번째 인지
두 번째 인지
그걸 따져서 코드를 짜주어야 한다.
순서가 첫번째라면 일단 맨처음 사람은 1차원 배열로 나오도록 만들자.</p>
<h3 id="location_to_moveself-location">location_to_move(self, location)</h3>
<p>움직일 곳에 대해서 정해주는 건데 일단 
1.두개가 찍혔는가 (2차원배열 속 )
2.하나에 x,y 둘 다 찍혔는가
검증한다음에 move를/move1과 move2를 각각 29 이런식으로 만들어준다.</p>
<p>★여기서 생각!
처음 둔 사람은 return 값을 그냥 move하나만 내보내면 되는데 두 번째 부터 둔 사람은 return 값이 두 개여야하는 문제</p>
<ol>
<li>그럼 그냥 배열로 반환할까? 근데 그러면 나중에 처리할 게 많아져서 고민 ㅠㅠ</li>
<li>그러면 그냥 두 개 반환하면 어떻게 되지? 그러면 tuple로 (39,53)으로 반환된다고 한다..
택 1~</li>
</ol>
<h3 id="current_state">current_state</h3>
<p>square_state를 이용해서 바둑판에 각각 놓은 것들을 찍는다!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[OS가 제공하는 프로그램]]></title>
            <link>https://velog.io/@jeon_ys/OS%EA%B0%80-%EC%A0%9C%EA%B3%B5%ED%95%98%EB%8A%94-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8</link>
            <guid>https://velog.io/@jeon_ys/OS%EA%B0%80-%EC%A0%9C%EA%B3%B5%ED%95%98%EB%8A%94-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8</guid>
            <pubDate>Tue, 28 Dec 2021 07:22:31 GMT</pubDate>
            <description><![CDATA[<p>시스템 초기화 : init
OS의 동작을 바꿈: sysctl, nice, sync
파일 관련: touch, mkdir
텍스트 데이터 가공: grep, sort, uniq
성능 측정: sar, iostat
컴파일러: gcc
스크립트 언어 실행 환경: gerl, python, ruby
셸: bash
윈도우 시스템: X</p>
]]></description>
        </item>
    </channel>
</rss>