기초 지식

blob 이란?

도시쥐 2022. 2. 15. 02:17

Blob이란 무엇일까요?

2진수, Binary

  • Binary Large Object의 약자로 어떠한 큰 객체를 Binary(2진수) 형태로 저장하는 데 사용합니다.

 

  • 독립체(entity)로 된 2진수의 집합이라고 볼 수 있습니다.
  • 그럼 여기서 2진수로 된 객체란 뭘까요?
    • 객체는 이미지, 비디오, 사운드 부터 프로젝트, 애플리케이션, 실행파일(런타임)까지 이 모든것을 하나의 객체로 보고 2진수로 저장하게 되는 것입니다.

 

  • 어떠한 객체를 2진화(Serialize)시켜서 저장하거나 불러온다는 것은 이러한 객체를 하나의 '상수'로써 이용하겠다는 뜻이 될 수도 있습니다.
    • 이를테면, 어떠한 코드를 컴파일한 뒤에 생기는 실행파일은 코드의 수정 없이 단일 객체로써 프로세스를 수행할 것입니다.
    • 데이터베이스로 영역에서 이러한 Blob은 지속적으로 유지되는 상수 데이터로도 볼 수 있습니다.

 

 

  • 인공지능의 Object Detection, 자연어 처리, Image Classification 등에서는 각 Layer별 연산 또는 최적화한 연산Blob의 형태Runtime(실행파일)을 만들어 추론 단계에서 사용합니다. 

 

 

그렇다면 파이썬에서는 blob을 어떻게 사용하고 있을까요?

 

간단한 blob 사용을 위해 wand 라이브러리를 사용하겠습니다.

 

  with open('image_path') as f:
 image_blob = f.read()

1) 'image_path'에 있는 이미지에서 blob을 불러옵니다.

 

with Image(blob=image_binary) as image:

1) blob에서 이미지를 불러와 image에 저장합니다.

 

실제 적용예시)

# 기본 라이브러리
from __future__ import print_function
 
# wand 라이브러리 import
from wand.image import Image
 
# file 입출력으로 image.jpeg를 열어줍니다.
with open('image.jpeg') as f:
 
    # 이미지파일에서 'blob'을 불러옵니다.
    image_blob = f.read()
 
# 'blob'파일에서 이미지를 불러와 img변수에 씁니다.
with Image(blob = image_binary) as img:
 
    # get height of image
    print('height =', img.height)
 
    # get width of image
    print('width =', img.width)

실제 적용 예시는 위와 같습니다.

 

 

이상으로 포스팅을 마치겠습니다.

 

 

감사합니다.

'기초 지식' 카테고리의 다른 글

TensorRT란?  (1) 2022.02.27
구글 드라이브와 코랩(Colab) 연동하기  (0) 2022.02.07