본문 바로가기
MLOps

데이터 수집(3)

by Nowkeeh Ahc

수집 전략

 완전히 새로운 프로젝트로 시작할 때는 올바른 데이터 수집 전략을 선택하기가 어렵다. 그래서 가장 많이 쓰는 세 가지 데이터 유형(정형 데이터, 텍스트 데이터, 이미지 데이터)에 관한 몇 가지 전략을 추천하고자 한다.

 

 

정형 데이터

 정형 데이터는 데이터베이스나 디스크에 파일 형식으로 저장될 때가 많으며 표 형식의 데이터를 지원한다. 데이터가 데이터베이스에 있다면 CSV로 내보내거나 PrestoExampleGen 또는 BigQueryExampleGen 컴포넌트로 데이터를 직접 사용할 수 있다.

 

 표 형식 데이터를 지원하는 파일 형식으로 저장된 디스크에서 사용할 수 있는 데이터는 CSV로 변환하고 CsvExampleGen 컴포넌트를 사용하여 파이프라인으로 수집해야 한다. 데이터양이 수백 메가바이트 이상으로 증가할 때는 데이터를 TFRecord 파일로 변환해야 한다.

 

 

자연어 처리를 위한 텍스트 데이터

 text corpus는 눈덩이처럼 상당한 크기로 불어날 수 있다. 이런 데이터셋을 효율적으로 수집하려면 데이터셋을 TFRecord로 변환하는 것이 좋다. 수행 데이터 파일 형식을 사용하면 corpus 문서를 효율적이고 점진적으로 로드할 수 있다. 또한 데이터베이스에서 corpus를 수집할 수도 있지만, 네트워크 트래픽 비용과 병목 현상을 고려해야 한다.

 

 

컴퓨터 비전에서 사용하는 이미지 데이터

 이미지 데이터셋을 이미지 파일에서 TFRecord 파일로 변환하는 것은 좋지만, 이미지 디코딩은 권장하지 않는다. 고도로 압축된 이미지를 디코딩하면 중간 tf.Example 레코드를 저장하는데 필요한 디스크 공간만 증가한다. 압축한 이미지는 tf.Example 레코드에 바이트 문자열로 저장할 수 있다.

 

import os

import tensorflow as tf

base_path = "/path/to/images"
filenames = os.listdir(base_path)


def generate_label_from_path(image_path):
    pass
    # ...
    # return label


def _bytes_feature(value):
    return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))


def _int64_feature(value):
    return tf.train.Feature(int64_list=tf.train.Int64List(value=[value]))


tfrecord_filename = 'data/image_dataset.tfrecord'

with tf.io.TFRecordWriter(tfrecord_filename) as writer:
    for img_path in filenames:
        image_path = os.path.join(base_path, img_path)
        try:
            raw_file = tf.io.read_file(image_path)
        except FileNotFoundError:
            print("File {} could not be found".format(image_path))
            continue
        example = tf.train.Example(features=tf.train.Features(feature={
            'image_raw': _bytes_feature(raw_file.numpy()),
            'label': _int64_feature(generate_label_from_path(image_path))
        }))
        writer.write(example.SerializeToString())

 

 

드디어 3파트로 나눠서 구성한 데이터 수집 단계가 끝이 났다.

이 단계에서는 머신러닝 파이프라인으로 데이터를 수집하는 다양한 방법을 살펴봤고 수집된 데이터 레코드가 다운스트림 구성 요소의 사용을 위해 TFRecord 파일로 변환되는 것도 알아봤다.

 

다음 단계는 데이터 검증으로 생성된 TFRecord 파일을 유효성 검사하는 방법을 알아보겠다.

 


This post was written based on what I read and studied the book below.
https://www.oreilly.com/library/view/building-machine-learning/9781492053187/

댓글