Blob이란 무엇일까요?
- 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 |