안경잡이개발자

728x90
반응형

  대출 심사와 같은 과정에서는 "종합소득세 과세표준확정신고 및 납부계산서"를 요구하는 경우가 있다. 이는 홈택스에 방문하여 쉽게 출력할 수 있다. 홈택스의 공식 홈페이지 주소는 다음과 같다.

 

  ▶ 홈택스: https://www.hometax.go.kr/

 

  홈택스에 접속하여 로그인한 뒤에는 [조회/발급] 탭에서 [전자신고결과조회] 페이지로 이동한다.

 

 

  이후에 세목으로 [종합소득세]를 선택하고, 사업자등록번호/주민등록번호를 입력하여 [조회하기] 버튼을 누르면 된다. 그리고 신고서가 나오면 이를 클릭하여 확인할 수 있다.

 

  이후에 [개인정보 공개 여부] 창이 뜨는데, 필자의 경우 [개인정보 공개] 버튼을 클릭했다.

 

 

  그리고 모든 문서를 한꺼번에 출력하고자 한다면 [일괄출력] 버튼 클릭 이후에 [프린터 버튼]을 눌러 인쇄를 진행하면 된다.

 

 

  그러면 [인쇄방식]을 설정할 수 있는데, 기본 설정인 HTML로 설정한다.

 

 

  이제 실질적으로 어떠한 파일로 저장할지 설정할 수 있다. 다음과 같이 [PDF로 저장] 버튼을 눌러 PDF로 저장하는 것이 편하다. 이후에 실제 프린터 기기로 출력하는 등으로 편하게 활용할 수 있다.

 

728x90
반응형

728x90
반응형

  펙셀(Pexels)은 대표적인 무료 동영상 공유 사이트 중 하나입니다. 사이트는 다음의 경로에서 바로 접속 가능합니다.

 

  ▶ Pexels 사이트: https://www.pexels.com/ko-kr/

 

  사이트 접속 이후에 다음과 같이 원하는 키워드로 검색할 수 있습니다. 예를 들어 "Shiba Inu"라고 검색하면 다음과 같이 다양한 동영상이 등장합니다.

 

 

  이 중 하나를 택하여 다음과 같이 [Free Download] 버튼을 눌러 다운로드를 진행할 수 있습니다.

 

728x90
반응형

728x90
반응형

  Make Sense다양한 이미지에 대하여 레이블링(labeling)을 진행하기 위한 온라인 도구입니다. 객체 탐지(object detection)를 포함해 다양한 컴퓨터 비전(computer vision) 작업에 적용해 사용할 수 있습니다. 현재 온라인으로 제공되고 있는 Make Sense 서비스는 회원가입 없이 간단히 접속하여 사용할 수 있습니다.

 

  ▶ Make Sense 무료 온라인 서비스: https://www.makesense.ai/

 

Make Sense

 

www.makesense.ai

 

  웹 사이트에 접속한 뒤에 다음과 같이 [Get Started] 버튼을 눌러서 실행할 수 있습니다.

 

 

  이후에 그냥 간단하게 여러 개의 이미지를 드래그 앤 드롭(drag & drop)해서 레이블링 작업을 시작할 수 있습니다.

 

 

  이제 한 번 레이블링을 진행해 보겠습니다. 라쿤 데이터셋을 써볼 겁니다. 원본 라쿤 데이터셋은 MIT 라이센스를 따릅니다. 추가적으로 Roboflow에서 제공하는 전처리된 라쿤 데이터 세트도 있습니다.

 

  ▶ 원본 라쿤 데이터셋: https://github.com/datitran/raccoon_dataset

  ▶ Roboflow 라쿤 데이터셋: https://public.roboflow.com/object-detection/raccoon

 

  저는 간단히 이러한 416 X 416으로 리사이즈(resize) 처리된 라쿤(raccoon) 데이터셋에서 30개의 이미지를 가져와 업로드했습니다. 만약 YOLO 형식의 데이터 세트를 만들고 싶다면, [객체 탐지(Object Detection]) 버튼을 누르면 됩니다.

 

 

  이후에 레이블(label)을 추가할 수 있습니다. 라쿤(raccoon) 데이터 세트의 경우 단일 레이블로 라쿤 레이블이 존재합니다.

 

 

  따라서 다음과 같이 라쿤(raccoon)이라는 이름의 레이블 하나를 추가합니다. 만약 레이블이 여러 개라면 여러 개의 레이블을 하나씩 등록하여 사용하면 됩니다.

 

 

  다음과 같이 바운딩 박스(bounding box)를 그린 뒤에 레이블링(labeling)을 같이 진행하면 됩니다. 저는 다음과 같이 이미지를 하나씩 확인하며 라쿤(raccoon)으로 레이블을 설정했습니다.

 

 

  레이블링 작업을 모두 완료하면, 다음과 같이 [Export Annotations] 버튼을 눌러 레이블 정보를 저장할 수 있습니다.

 

 

  다음과 같이 YOLO 형식(format)을 선택하여 내보내기(Export) 할 수 있습니다.

 

 

  결과적으로 다음과 같이 각 이미지당 레이블 정보가 기록됩니다.

 

 

※ YOLO 형식(Format) 설명 ※

 

  YOLO 형식은 다음과 같은 형식으로 구성하면 됩니다. data.yaml은 어떠한 경로에 학습(train) 및 평가(validation) 데이터가 존재하는지 등의 정보를 가지고 있습니다.

 

raccoon_dataset/
    data.yaml
    train/
        images/
            raccoon-1xxx.jpg
            raccoon-2xxx.jpg
            ...
        labels/
            raccoon-1xxx.txt
            raccoon-2xxx.txt
            ...
    valid/
        images/
            raccoon-191xxx.jpg
            raccoon-192xxx.jpg
            ...
        labels/
            raccoon-191xxx.txt
            raccoon-192xxx.txt
            ...

 

  먼저 data.yaml은 다음과 같은 형태를 가지고 있습니다. 각각 학습(train)평가(val) 데이터셋의 경로를 다음과 같이 정확히 명시하는 것을 알 수 있습니다. 추가적으로 라쿤 데이터 세트의 경우 클래스의 개수(nc)는 1이고, 클래스 이름(name)은 리스트 형태로 명시되어 있는 것을 알 수 있습니다.

 

train: ../train/images
val: ../valid/images

nc: 1
names: ['raccoon']

 

  예를 들어 train/images/raccoon-12xxx.jpg의 경우 다음과 같은 이미지입니다.

 

 

  또한 train/labels/raccoon-12xxx.txt의 경우 다음과 같이 두 마리의 라쿤 인스턴스(instance)에 대하여 바운딩 박스 정보가 들어가 있습니다.

 

 

  전체 데이터 세트 예시는 다음과 같습니다.

 

raccoon_dataset.zip
1.45MB

 

  또한 전체 Make Sense 소스코드는 다음의 경로에서 확인할 수 있습니다. 이 웹 사이트는 도커(docker)와 같은 배포 도구를 이용하여 간단히 프로그램을 실행해 볼 수도 있습니다.

 

  ▶ Make Sense 전체 소스코드: https://github.com/SkalskiP/make-sense

 

SkalskiP/make-sense

Free to use online tool for labelling photos. https://makesense.ai - SkalskiP/make-sense

github.com

728x90
반응형

728x90
반응형

  Roboflow컴퓨터 비전(Computer Vision) 기술을 이용해 다양한 애플리케이션을 만들 수 있도록 지원해주는 서비스입니다. Roboflow는 다양한 무료 데이터셋을 지원하고 있다는 특징이 있는데요, 사이트에 접속한 뒤에 다양한 무료 데이터셋을 다운로드할 수 있습니다.

 

  ▶ Roboflow 웹 사이트: https://roboflow.com/

 

Roboflow: Everything you need to start building computer vision into your applications

Even if you're not a machine learning expert, you can use Roboflow train a custom, state-of-the-art computer vision model on your own data. Let us show you how.

roboflow.com

 

  사이트에 접속했을 때 다음과 같은 메인 화면을 만날 수 있습니다.

 

 

  데이터셋은 다음과 같이 [Datasets] 페이지로 접속하면 됩니다.

 

 

  이후에 다음과 같이 [Public Datasets]에 접속한 뒤에 다양한 데이터 세트를 확인할 수 있습니다. 예를 들어 [Mask Wearing Dataset]을 확인할 수 있습니다.

 

 

  데이터셋에 관련한 정보를 확인하기 위해 [More Info] 버튼을 눌러볼 수 있습니다.

 

 

  확인 결과 마스크 데이터셋은 CC0 라이센스가 붙은 것을 알 수 있습니다. CC0 라이센스는 기본적으로 아무런 조건없이 사용할 수 있는 공개된 저작권을 의미합니다. 상업적인 목적을 포함한 어떠한 목적으로든 해당 저작물을 이용할 수 있다는 점이 특징입니다. 자세한 설명은 아래 내용을 확인하세요. "No Copyright"이라고 적혀있는 것을 확인할 수 있습니다.

 

 

  그러면 한 번 [Mask Wearing Dataset]을 다운로드하겠습니다. 저는 다음과 같이 416 X 416 해상도의 데이터 세트를 다운로드하겠습니다. 416 X 416 해상도 데이터 세트의 경우, 원본 이미지의 해상도가 다르다고 하더라도 패딩(padding)을 채워 넣어 416 X 416 해상도를 맞춘 것을 의미합니다.

 

 

  다운로드를 할 때는 [Download] 버튼을 누르면 됩니다.

 

 

  다운로드를 할 때는 자신이 원하는 형식(format)으로 다운로드를 진행할 수 있습니다. 대표적으로 YOLO v5 PyTorch 버전의 형식을 다운로드할 수 있습니다.

 

 

  다운로드 이후에 압축 파일을 풀면 다음과 같이 사진을 확인할 수 있습니다. 원본 사진은 가로 길이가 더 길지만, 위아래로 검은색 패딩이 채워져 416 X 416 해상도를 갖는 것을 알 수 있습니다.

 

 

  참고로 마스크 데이터셋의 경우 다음과 같은 (학습:평가:테스트) 데이터 세트 비율을 가지고 있습니다. 사실 컴퓨터 비전 쪽 분야인데 너무 데이터 세트의 크기가 작아 보일 수 있습니다. 하지만 일반적으로 객체 탐지(Object Detection) 분야에서는 전이 학습(Transfer Learning)을 베이스로 깔고 가는 경우가 많기 때문에, 데이터 개수가 100개만 넘어도 최소한의 성능은 나오는 경우가 많습니다.

 

 

  이제 실제로 학습을 진행하고 싶으면 YOLO v5 소개 페이지를 확인한 뒤에 학습을 진행하면 됩니다.

 

  ▶ YOLO v5 객체 탐지 모델: https://models.roboflow.com/object-detection/yolov5

 

YOLOv5 PyTorch Object Detection Model

A very fast and easy to use PyTorch model that achieves state of the art (or near state of the art) results.

models.roboflow.com

 

  다음과 같이 곧바로 실행해 볼 수 있는 소스 코드 자료를 확인할 수 있습니다.

 

728x90
반응형

728x90
반응형

  필자는 가끔 버스를 타고 다른 지역으로 갈 때 버스타고(BUSTAGO)를 사용한다. 개인적으로는 버스타고가 UI/UX가 쉽고 편리하게 되어 있어서, 예매 과정이 간단한 편이라고 생각한다. (이 포스팅은 그냥 내가 작성하고 싶어서 작성하는 포스팅이다. 그래서 별로 도움이 안 될 수 있다.)

 

  예매할 때는 자신이 원하는 바에 따라 [편도] 혹은 [왕복] 버튼을 누르고 출발지와 도착지를 설정하면 된다.

 

 

  필자의 경우 [왕복]으로 포항 터미널에서 김해 터미널로 왕복할 것이다. 아래 예시와 같이 지역을 설정한 뒤에는 [승차권 예약] 버튼을 누르면 된다.

 

 

  이후에 다음과 같이 좌석을 설정할 수 있는 [승차권 예매] 페이지로 이동한다.

 

 

  자신이 알고자 하는 특정한 시간대의 버스에 대한 정보를 알고 싶으면 [상세보기] 버튼을 누른다.

 

 

  그러면 다음과 같이 예상 소요시간요금이 나온다. (어떠한 버스의 경우 안 나오는 경우도 있는 것 같다.)

 

 

  이후에 [좌석 선택] 버튼을 눌러서 앉고 싶은 좌석을 선택한다.

 

 

  필자는 왕복을 선택했기에 돌아오는 시간과 좌석도 예매를 진행했다. 결과적으로 모든 좌석을 선택하고 나면, 다음과 같이 [예매내역 확인]이라는 창이 나온다. 자신이 선택한 내용이 정확한지 확인하면 된다. 필자의 경우 왕복이기 때문에, "가는날"과 "오는날"이 각각 적혀 있다.

 

 

  또한 이때 로그인을 해서 결제를 진행하거나, 혹은 간단히 [비회원 예매]를 이용하여 회원가입 없이 예매를 진행할 수 있다. 필자는 회원가입하기 번거롭기 때문에 비회원 예매를 했다.

 

 

  그러면 다음과 같이 [확인/결제] 페이지로 넘어간다. 여기에서 카드 정보를 입력하여 결제를 진행할 수 있다.

 

 

  예매가 완료되면 다음과 같은 완료 화면을 확인할 수 있다.

 

 

  또한 [참고사항]은 다음과 같다. 예매한 카드는 창구 혹은 무인기에서 발권받을 수 있다.

 

728x90
반응형

728x90
반응형

  가끔 워드(Word)로 작업하다가 목차가 안 보일 때가 있다. 이럴 때는 [보기] - [탐색 창] 버튼을 누르면 목차가 보인다.

 

728x90
반응형

728x90
반응형

  구글(Google) 문서를 생성하여 다양한 글과 수식을 작성할 수 있다.

 

 

  이때 구글 문서에서 수식을 작성한 뒤에 [다운로드] - [Microsoft Word(.docx)]를 선택하여 워드 파일로 저장할 수 있다.

 

 

  다만 .docx로 저장된 문서 파일을 열어 보면, 다음과 같이 수식이 깨지는 경우가 있다.

 

 

  이때는 다음과 같이 [기울임꼴]을 조절하여 수식 깨짐 문제가 해결될 수 있다. 혹은 글씨체를 조절해 보는 것도 좋은 방법이다.

 

728x90
반응형

728x90
반응형

  피보나치 수열 문제와 같은 다이나믹 프로그래밍(Dynamic Programming) 문제를 functoolslru_cache를 이용해 해결할 수 있다. 사용 방법은 간단하다. 점화식을 이용해 재귀 함수를 작성하고, 파이썬의 lru_cache 데코레이터(decorator)를 이용하여 함수가 반환하는 값을 메모이제이션(memoization)할 수 있다. 일반적으로 메모이제이션은 캐싱(caching)과 유사한 의미를 갖는다.

 

  흔히 다이나믹 프로그래밍 문제를 풀 때는 별도의 공간에 함수의 결과를 기록할 필요가 있는데, lru_cache를 사용하면 그럴 필요가 없어지는 것이다.

 

import sys
from functools import lru_cache

sys.setrecursionlimit(int(1e5))

@lru_cache(maxsize=None)
def fibo(n):
    if n < 2:
        return n
    return fibo(n - 1) + fibo(n - 2)


print(fibo(1000))

 

< 실행 결과 >

43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875
728x90
반응형

728x90
반응형

※ Google Cloud Vision 서비스란?

 

  일단 Google Cloud Vision 서비스에 대해 설명하겠다. 이미지 인식, 객체 검출 등에서 매우 효과적으로 사용할 수 있는 API를 제공한다. 예를 들어 한 장의 이미지를 입력으로 넣었을 때, 그 이미지가 무엇인지 알려주는 기능(API)이 필요할 때 Google Cloud Vision 서비스를 사용할 수 있다. 더불어 자기가 가지고 있는 커스텀 데이터를 활용하여 이미지 분류 모델을 학습시킬 수도 있다.

 

 

Google Cloud Vision API 사용 방법

 

  일단 Google Cloud Platform 콘솔로 들어간다.

 

  ▶ Google Cloud Platform: console.cloud.google.com/

 

  필자의 경우 안 쓰던 구글 계정을 이용해 접속했다. 참고로 서비스를 처음 사용하는 경우 다음과 같이 약관에 동의하라는 화면이 나올 수 있다.

 

 

  이후에 [무료로 사용해 보기] 버튼을 눌러 시작하면 된다.

 

 

  필자처럼 계정으로 처음 GCP를 사용하는 경우 $300의 무료 크레딧을 받을 수 있다. (2021년 2월 기준) 일단 Google Cloud Vision은 유료 서비스이기 때문에 당연히 결제 카드 정보를 등록해야 한다. 필자는 가지고 있던 체크카드 번호를 입력하여 등록했다.

 

 

  바로 Cloud Vision API를 검색한다.

 

 

  이후에 Cloud Vision API를 [사용] 버튼을 눌러 활성화한다.

 

 

  이제 [사용자 인증 정보 만들기] 버튼을 눌러 인증 정보를 생성할 수 있다.

 

 

 

이때 [서비스 계정]을 만들어서 곧바로 서비스를 이용할 수 있는 키(key) 파일을 받도록 한다.

 

 

  [서비스 계정 만들기]를 눌러 계정을 생성하자.

 

 

  자신이 원하는 이름으로 서비스 계정 이름을 설정할 수 있다.

 

 

  이제 해당 서비스를 사용하기 위한 키(key)를 생성한다. 이를 위해 [키 만들기] 버튼을 누른다.

 

 

  키 유형으로는 JSON 형식을 선택한다.

 

 

참고로 이렇게 만들어진 키(key) 파일은 매우 조심히 관리해야 한다. 이 키(key) 파일을 이용해 API 호출을 마음껏 할 수 있기 때문이다. 먼저 service_secret_key.json서버(server)나 개인 PC에 위치시키자. 그리고 환경변수 설정을 한다. python 코드로는 다음과 같이 작성할 수 있다.

 

import os

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 'service_secret_key.json'

 

이후에 google-cloud-vision을 다운로드하면 된다.

 

!pip install --upgrade google-cloud-vision

 

  소스코드 예시는 다음과 같다. 간단히 하나의 사진을 Google Cloud Vision을 이용해 분류하겠다. 여기에서 쓰인 사진은 구글 공식 API 문서에서 제공하는 사진이다.

 

 

import io
import os

# Imports the Google Cloud client library
from google.cloud import vision

# Instantiates a client
client = vision.ImageAnnotatorClient()

# The name of the image file to annotate
file_name = os.path.abspath('wakeupcat.jpg')

# Loads the image into memory
with io.open(file_name, 'rb') as image_file:
    content = image_file.read()

image = vision.Image(content=content)

# Performs label detection on the image file
response = client.label_detection(image=image)
labels = response.label_annotations

print('Labels:')
for label in labels:
    print(label.description)

 

[실행 결과]

 

  실행 결과는 다음과 같다.

 

Labels:
Cat
Window
Felidae
Carnivore
Jaw
Ear
Small to medium-sized cats
Window blind
Gesture
Whiskers
728x90
반응형

728x90
반응형

  간혹 동영상이 잘못 촬영되거나 편집상의 이유로, 동영상 화면을 회전시키고 싶을 때가 있다. 예를 들어 필자의 경우 다음과 같이 동영상이 가로로 촬영되었다.

 

 

  먼저 다음과 같이 [효과 컨트롤] [회전] 탭으로 이동하여 영상을 회전시킨다.

 

 

  다만 이렇게 하면 프레임은 여전히 1920 X 1080의 해상도를 갖기 때문에, 영상의 위아래가 잘려 나가게 된다.

 

 

  따라서 시퀀스(Sequence)의 프레임(Frame)의 해상도 또한 변경해 줄 필요가 있다. 따라서 [시퀀스] - [시퀀스 설정]으로 이동한다.

 

 

  비디오의 [프레임 크기]를 원하는 해상도로 설정하면 된다. 필자의 경우 가로와 세로를 서로 바꾸어 1080 X 1920의 해상도를 갖도록 만들었다.

 

 

  결과적으로 동영상이 다음과 같이 정상적으로 회전되었다.

 

728x90
반응형