안경잡이개발자

728x90
반응형

  오류 메시지는 다음과 같다.

 

 

  이 오류는 복잡한 GPU 디바이스 환경 설정 관련 오류인 것처럼 보이지만, 실제로는 입출력 차원(dimension)을 제대로 맞추지 않아서 발생하는 경우가 많다. 필자의 경우 ① 실제 데이터셋과는 다르게 출력(output) 차원의 크기를 설정했을 때 그리고 ② 실제 데이터셋과는 다르게 입력(output) 차원의 크기를 설정했을 때 각각 이러한 오류를 만난 적이 있다.

 

  예를 들어 Transfer Learning을 할 때는 출력 차원을 우리의 데이터셋에 맞게 바꾸어야 한다. 실제 가지고 있는 데이터셋이 3개의 레이블로 구성되어 있을 때, Transfer Learning을 위한 모델의 출력 차원을 10개로 설정했다면 이러한 오류 메시지를 만날 수 있다. 조금 더 하이 레벨에서 오류를 친절하게 알려주었으면 하는 바램이 있지만... 아무튼 개인적으로는 이 문제를 차원 크기를 잘못 설정했을 때에만 만났다.

728x90
반응형

728x90
반응형

  가장 먼저 홈택스 웹 사이트에 접속하여 로그인을 진행합니다.

 

▶ 홈택스(Hometax) 웹 사이트 주소: www.hometax.go.kr/

 

 

  이후에 [민원증명] 페이지로 이동하여 [소득금액증명] 탭으로 가시면 됩니다.

 

 

  이때 다음과 같이 어떤 유형으로 발급을 신청할 것인지 설명하여 발급을 진행하시면 됩니다. 저는 [종합소득세 신고자용]으로 2017년부터 2019년까지의 소득에 대하여 금액을 확인했습니다.

 

 

  신청 이후에는 다음과 같이 [인터넷접수목록조회] 탭에 들어가서 [발급번호]를 클릭하여 확인할 수 있습니다.

 

 

  그러면 다음과 같이 소득 금액 증명서를 확인하실 수 있습니다. 저는 2017년부터 2019년 사이의 소득 금액을 출력해 보았는데요. 이때 소득 금액은 과세대상 급여만 출력됩니다.

 

728x90
반응형

728x90
반응형

▶ Flickr8k 데이터셋 설명 및 다운로드 방법

 

  Flickr 데이터셋은 한 장의 이미지가 있을 때, 그 이미지를 설명하는 문장을 함께 가지고 있는 문장 단위 이미지 설명(sentence-based image description) 데이터셋의 대표적인 예시이다. Flickr 데이터셋은 Flickr30k와 Flickr8k가 있는데, 이 중에서 Flickr8k는 약 8,000장의 이미지만 가지고 있다. Flickr8k에 포함된 이미지 각각은 5개의 캡션(Caption) 정보를 가지고 있다.

 

  예를 들어 다음의 이미지는 Flickr8k 학습 데이터셋의 이미지 중 하나이다.

 

 

  위 이미지의 캡션은 다음과 같이 기록되어 있다.

 

  ① A child in a pink dress is climbing up a set of stairs in an entry way .

  ② A girl going into a wooden building .

  ③ A little girl climbing into a wooden playhouse .

  ④ A little girl climbing the stairs to her playhouse .

  ⑤ A little girl in a pink dress going into a wooden cabin .

 

  위 캡션은 모두 정확한 표현을 담고 있다. 각 단어가 띄어쓰기로 구분되어 있기 때문에 마지막에 있는 마침표(.)가 조금 어색해 보일 수 있지만, 자연어 처리 과정에서 각 문장을 토큰으로 편하게 구분할 수 있도록 데이터셋을 구성한 것으로 보인다. 이러한 데이터셋은 Neural Image Captioning(NIC) 논문에서 주로 등장한다.

 

  이 데이터셋은 캐글(Kaggle)에 업로드된 공개 데이터셋 링크를 통해 받을 수 있다.

 

  ▶ 데이터셋 링크: www.kaggle.com/kunalgupta2616/flickr-8k-images-with-captions

 

Flickr 8K Images with Captions

8000 Images with 5 captions each

www.kaggle.com

 

  캐글(Kaggle) 로그인 이후에 [Download] 버튼을 눌러 바로 다운로드를 진행할 수 있다.

 

 

▶ Neural Image Captioning (NIC)

 

  NIC는 뉴럴 네트워크를 이용해 이미지에 캡션을 붙이는 작업을 의미한다. 이 분야의 베이스라인 모델로 등장하는 네트워크는 2015년 CVPR에 등재되었던 "Show and Tell: A Neural Image Caption Generator" 논문이다. 이름부터 굉장히 심플하다. 말 그대로 한 장의 이미지를 보고, 이 이미지를 설명하는 모델을 만들어 보자는 아이디어다. 실제로 본 논문의 데이터셋을 확인해 보면 다음과 같이 Flickr8k 데이터셋을 이용한 것을 알 수 있다.

 

 

  모델의 아키텍처는 굉장히 직관적이다. 사전 학습된 CNN 네트워크를 이용해 먼저 특징 벡터(feature vector)를 뽑은 뒤에, 이를 Seq2Seq 구조의 RNN 모델에 넣어 결과 문장을 뽑아낸다. 사실 아키텍처 자체는 기계 번역(machine tranlsation)에서 사용되는 아키텍처와 매우 유사한 것을 알 수 있다.

 

728x90
반응형

728x90
반응형

※ 소프트 링크(Soft Link) ※

 

  심볼릭 링크(소프트 링크)는 쉽게 말하면 바로가기 링크 같은 것입니다.  어떠한 파일을 만든 뒤에, 그 파일을 가리키는 바로가기 파일을 만들면 편할 때가 있습니다.  예를 들어 진짜 파일은 특정한 중요 폴더에 넣어 놓은 뒤에, 바탕 화면에 하나의 파일을 만들어  해당 파일을 가리키도록 만드는 것입니다.  이때 바탕 화면에 있는 파일을 삭제한다고 해서 실제로 해당 파일이 지워지거나 하지는 않습니다.

 

  리눅스에서도 필요할 때 이러한 심볼릭 링크를 만들 수 있습니다. 앞서 말했듯이 바로가기 파일은 삭제되어도 실제 파일에 영향을 미치지 않습니다. 간단하게 "Hello World"라는 문자열을 담은 하나의 파일을 생성해 보겠습니다.

 

echo "Hello World" > /tmp/test.txt 

 

  이후에 이를 가리키는 하나의 심볼릭 링크를 만들겠습니다.  만드는 방법은 간단합니다. ln 명령어를 이용해 -s 옵션을 붙여 실행하면 됩니다.  그러면 심볼릭 링크가 생성됩니다.

 

ln -s /tmp/test.txt link

 

 

  실제로 만들어진 링크를 확인해 보면 다음과 같이 나옵니다.

 

 

  이때 원본 파일을 삭제한 뒤에 다시 확인해 보겠습니다. 이후에 링크 파일을 확인하면 다음과 같이 빨간색으로 나오는 것을 알 수 있습니다.

 

 

  다음과 같이 원본 파일이 존재하지 않는다는 것을 알려줍니다.

 

 

  다시 /tmp/test.txt 파일과 link 파일(심볼릭 링크) 모두 제거하겠습니다. 이어서 마찬가지로 하드 링크에 대한 개념 설명 및 실습을 진행해 보겠습니다.

 

※ 하드 링크(Hard Link) ※

 

  하드 링크(Hard Link)의 개념을 알아보겠습니다. 하드 링크를 이용하는 경우 두 파일이 같은 inode를 가지기 때문에, link와 /tmp/test.txt  중에서 하나의 파일을 삭제해도 괜찮습니다. 또한 두 파일 중에 하나를 수정해도 inode를 공유하기 때문에 다른 한 쪽의 내용도 바뀐 것으로 보이게 됩니다. 기본적으로 그냥 ln를 이용하면 하드 링크로 생성됩니다.

 

 

  파일을 출력하면 다음과 같습니다.

 

 

  실제로 inode를 출력해 보면 다음과 같습니다.

 

 

  예를 들어 link의 내용을 수정하면 자동으로 /tmp/test.txt의 내용도 수정됩니다.

 

728x90
반응형

728x90
반응형

▶ 사용자 생성

 

  먼저 사용자를 추가합니다.

 

sudo adduser {사용자 ID}

 

▶ 관리자 권한(sudo) 리스트에 추가

 

sudo nano /etc/sudoers

 

  다음과 같이 권한(privilege)을 설정하는 부분에 이름을 추가하면 됩니다. 기본적으로 root 계정만 들어 있는데, 여기에 추가하고자 하는 사용자 ID를 기입하면 됩니다.

 

 

  반대로 제거할 때는 deluser를 사용하시면 됩니다.

 

▶ 사용자 제거

 

sudo deluser {사용자 ID}
728x90
반응형

728x90
반응형

  팀 동료가 깃허브(GitHub)의 특정 저장소에 나를 초대했다. 다만 내 GitHub는 기본 이메일이 NAVER로 되어 있는데, 학교 이메일로 초대했기 때문에 해당 저장소에 권한이 없었다. 이런 경우에는 간단히 GitHub 계정에 이메일을 추가하면 된다. 이메일을 추가하기 위해 먼저 [Settings]에 들어간다.

 

 

  다음과 같이 [Emails] 탭에서 새로운 이메일 주소를 넣고 [Add] 버튼을 누르면 된다. 그러면 이메일 주소로 Verify 메일이 오게 된다.

 

 

728x90
반응형

728x90
반응형

  Ubuntu에서 계정 비밀번호를 바꾸는 방법은 간단하다. 바로 다음의 명령어를 입력하면 된다.

 

passwd

 

728x90
반응형

728x90
반응형

  물체 탐지(Object Detection)에서는 성능 평가 지표로 mAP와 recall이 사용된다. 한 논문에서 제안한 방법이 얼마나 효과적인지 이해하기 위해서는 이 평가 지표가 어떤 의미로 사용되었는지 정확히 알 필요가 있다. 먼저 IoU에 대해서 알아보자.

 

▶ Intersection over Union (IoU)

 

  IoU란 두 바운딩 박스가 겹치는 비율을 의미한다. IoU는 모델을 평가 단계에서 효과적으로 사용된다. 우리가 만든 모델이 탐지한 결과와 실제 정답을 비교할 때, 특정 IoU 이상 겹쳤을 때만 올바른 답(Positive)으로 분류하도록 사용된다. 예를 들어 가장 일반적으로 사용되는 mAP@0.5는 정답과 50% 이상이 겹친다면 정답으로 판정하겠다는 의미이다.

 

  예를 들어 mAP@0.8정답과 80% 이상이 겹칠 때만 맞았다고 인정하겠다는 의미이다. 당연히 수치가 높아질수록 매우 정밀한 모델을 요구하는 것이므로 평가 결과는 감소하게 된다.

 

출처: pyimagesearch

 

  또한 Precision과 Recall에 대하여 이해할 필요가 있다.

 

▶ Precision

 

  Precision은 (올바르게 탐지한 수 / 탐지한 수)를 의미한다.

 

▶ Recall

 

  Recall은 (올바르게 탐지한 수 / 실제 물체의 수)를 의미한다.

 

  Recall과 Precision은 반비례로 구성되는 경향이 있다. 우리 모델이 그냥 무작정 이미지 내에 매우 많은 물체가 있다고 판단을 해버리면 Recall은 높게 나오지만, Precision은 매우 낮게 나온다. 반면에 그냥 하나의 물체라도 매우 정확히 잘 찾아낸다면 Precision은 높게 나오지만, Recall은 매우 낮게 나올 수 있다.

 

  예를 들어 이미지 내에 강아지가 20마리 존재한다고 해보자. 이때 우리의 모델이 10마리의 강아지를 검출하고, 5마리는 정확히 맞추었다고 해보자. 그러면 Precision = 5 / 10 = 50%이고, Recall = 5 / 20 = 25%이다.

 

  반대로 이미지 내에 강아지가 10마리 존재한다고 해보자. 이때 우리의 모델이 20마리의 강아지를 검출하고, 7마리는 정확히 맞추었다고 해보자. 그러면 Precision = 7 / 20 = 35%이고, Recall = 7 / 10 = 70%이다.

 

▶ Average Precision

 

  앞서 말했듯이 Precision과 Recall은 반비례적인 관계를 가지기 때문에 Average Precision을 대신 이용할 수 있다. Average Precision은 대략 다음과 같이 생겼다. Precision-Recall 그래프를 단조 감소 그래프 형태로 바꾸어 넓이를 구할 수 있다. 그래서 일반적으로 논문에 가장 많이 등장하는 mAP(Mean Average Precision)이 여기에서 나온 개념이다.

 

출처: innerpeace-wu.github.io

728x90
반응형

728x90
반응형

  병역 의무가 있는 남성은 다음과 같이 병무청으로부터 신체검사를 받으러 오라는 안내를 받게 됩니다. 단순히 우편으로 통보가 오는 것은 아니고 카카오톡으로 알려주네요. 아무튼 저는 2015년 대학교 1학년 시절에 신체검사를 받았습니다. 그로부터 5년이 지난 지금 다시 병역판정검사를 받으러 오라고 메시지를 받게 된 상황입니다. (재병역판정검사)

 

  다만, 저는 지금 포항에서 공부를 하고 있는 입장이라서 경기도까지 가기가 어려운 상황입니다. 따라서 병역판정검사를 받을 위치와 일정을 변경하고자 합니다.

 

 

  사실 제가 이 메시지를 받은 것은 2020년 11월 18일이고, 이틀 뒤에 바로 검사를 받아야 하는 상황입니다. 그래서 제가 너무 늦게 일정을 바꾸고자 하는 감이 있지만 그래도 일단 전화로 문의를 해보았습니다. 다행히도 담당자분께서 일정을 순조롭게 바꾸어 주셨습니다.

 

  방법은 간단합니다. 자신이 검사를 받아야 하는 병무청의 재병역판정검사 업무를 맡고 계신 분에게 전화를 드려 사정을 말씀하시면 됩니다. (혹은 그냥 관할 병무청에 전화해서 전화를 바꾸어 달라고 하면 바꾸어 주십니다.) 저는 전화를 드려서 현재 포항에서 수학하고 있어 검사 일정을 조금 늦추고 포항 근처에서 검사를 받아도 되는지 여쭈어보았고, 요청드린 대로 변경을 해주셨습니다. 그래서 다행히도 포항공대와 가까운 대구지역 병무청에서 받을 수 있게 되었습니다.

 

  일정 및 위치를 변경한 뒤에는 다음과 같은 안내 메시지가 도착했습니다.

 

 

  찾아본 결과, 병역판정검사 시간이 오전 8시로 되어 있으나 30분 이상 늦으면 검사를 아예 못 받는 경우도 있다고 합시다. 또한 가능한 일찍 도착할수록 빠르게 검사가 끝날 확률이 높기 때문에 기다리는 시간을 줄이기 위해서는 최대한 빠르게 먼저 가서 기다리는 것이 좋다고 합니다. 더불어 병무청 전화 상담은 오전 9시부터 가능하기 때문에 일정 변경과 같은 상담은 9시에 전화를 드려서 문의하는 것이 좋습니다.

 

  개인적으로는 전화로 상담하는 것이 가장 편했지만, 병무청 공식 사이트에 가서 [신청]하는 방법도 존재합니다.

 

  ▶  병역판정검사 일자 및 장소 변경: mwpt.mma.go.kr/caisBMHS/index_mwps.jsp?menuNo=22018

 

 

  또한 기본적으로 따로 질병을 앓고 있는 사람이 아니라면(현역 판정이라면) 준비물은 대개 신분증만 있으면 된다. 여권 같은 거 하나 챙겨가자.

728x90
반응형

728x90
반응형

  PASCAL VOC는 대표적인 Object Detection 데이터셋 중 하나입니다. 논문을 읽다 보면 특히나 Object Detection 태스크에서 자주 등장하는 기본적인 데이터셋입니다. 그중에서도 PASCAL VOC 2007을 다운로드하는 방법을 소개하고자 합니다.

 

  ▶ PASCAL VOC 2007 다운로드: host.robots.ox.ac.uk/pascal/VOC/voc2007/

  ▶ PASCAL VOC 2007 Mirror 사이트: pjreddie.com/projects/pascal-voc-dataset-mirror/

 

  기본적으로 PASCAL VOC 2007 공식 사이트에 접속하여 다운로드받으실 수 있습니다.

 

 

  혹은 공식 사이트 접속이 안 된다면 PASCAL VOC Dataset Mirror 사이트에 방문하여 설치를 진행하시면 됩니다. 필자는 간단히 다음과 같이 Mirror 사이트에 방문하여 [Train/Validation Data]를 클릭하여 설치를 진행했습니다.

 

 

  참고로 VOC 2007 버전은 데이터셋의 크기가 그렇게 크지 않습니다. 일단 클래스의 개수는 총 20개로, 구체적인 클래스의 종류는 다음과 같습니다.

 

 

  메인 태스크는 2개로 구분할 수 있습니다.

 

  ① 분류(Classification): 하나의 이미지에 특정한 오브젝트가 있는지 없는지 판단하기

  ② 탐지(Detection): 존재하는 오브젝트의 위치(바운딩 박스)를 찾기

 

  데이터셋에는 총 9,963개의 주석이 달린(annotated) 이미지가 포함되어 있습니다. 이 중에서 5,011개가 학습 데이터(training data)입니다. 기본적인 PASCAL VOC 2007은 학습 : 평가 : 테스트 = 1 : 1 : 2 정도의 비율을 가진다는 점이 특징입니다. (학습 데이터가 테스트 데이터보다 더 작습니다.)

 

※ 학습 데이터셋 구조 ※

 

  다운로드 이후에 학습 데이터셋을 확인해 보시면 다음과 같습니다. 우리가 객체 탐지(object detection)만 다룬다면 Annotations, ImageSets, JPEGImages 세 가지 폴더만 이용한다고 보시면 됩니다.

 

 

※ 서브 태스크 ※

 

  또한 추가적으로 Class Segmentation과 Object Segmentation을 위한 정보도 포함되어 있습니다. 여기에서는 422개의 학습 데이터 정보가 포함됩니다. 이미지 중에서 하나를 열어 보시면 다음과 같이 픽셀 단위로 Classification이 분리된 것도 확인할 수 있습니다.

 

 

※ 주석(Annotation) 구조 살펴보기 ※

 

  주석은 다음과 같은 정보를 포함하고 있습니다.

 

  ① 클래스(Class): 오브젝트의 클래스가 무엇인지

  ② 바운딩 박스(Bounding Box): 오브젝트가 어디에 있는지

  ③ View: 각각의 오브젝트의 방향성 정보

  ④ Truncated: 오브젝트가 해당 이미지에 온전히 표현되지 못하고 잘려나갔는지

  ⑤ Difficult: 인식하기 어려운지

 

  다만 위 정보 중에서 가장 핵심적으로 사용되고 있는 내용은 ① 클래스② 바운딩 박스입니다. 실제로 .xml 파일을 하나 열어 보시면 다음과 같은 형태를 가지는 것을 알 수 있습니다.

 

 

※ VOC 2007 테스트 데이터셋 다운로드 ※

 

  VOC 2007 테스트 데이터셋도 동일한 방법으로 다운로드 하시면 됩니다.

 

 

  압축을 해제하여 폴더 구조를 살펴 보시면 다음과 같은 형태를 확인하실 수 있습니다.

 

728x90
반응형