tensorflow - ¿Cómo crear un conjunto de datos en el mismo formato que el conjunto de datos FSNS?
dataset (2)
El formato de datos para almacenar la capacitación / prueba se define en el documento FSNS https://arxiv.org/pdf/1702.03970.pdf (Tabla 4).
Para almacenar archivos tfrecord con tf. Ejemplos de protos puede usar tf.python_io.TFRecordWriter . Hay un buen tutorial , una respuesta existente en el stackoverflow y una breve descripción .
Suponga que tiene una imagen ndarray numpy que tiene imágenes
num_of_views
almacenadas una al lado de la otra (consulte la Fig. 3 en el
https://arxiv.org/pdf/1702.03970.pdf
):
y un texto correspondiente en un
text
variable.
Deberá definir alguna función para convertir una cadena Unicode en una lista de identificadores de caracteres rellenados a una longitud fija y también sin relleno.
Por ejemplo:
char_ids_padded, char_ids_unpadded = encode_utf8_string(
text=''abc'',
charset={''a'':0, ''b'':1, ''c'':2},
length=5,
null_char_id=3)
el resultado debería ser:
char_ids_padded = [0,1,2,3,3]
char_ids_unpadded = [0,1,2]
Si usa las funciones
_int64_feature
y
_bytes_feature
definidas en la
esencia
, puede crear un tf compatible con FSNS. Ejemplo de proto usando un fragmento de código siguiente:
char_ids_padded, char_ids_unpadded = encode_utf8_string(
text, charset, length, null_char_id)
example = tf.train.Example(features=tf.train.Features(
feature={
''image/format'': _bytes_feature("PNG"),
''image/encoded'': _bytes_feature(img.tostring()),
''image/class'': _int64_feature(char_ids_padded),
''image/unpadded_class'': _int64_feature(char_ids_unpadded),
''height'': _int64_feature(img.shape[0]),
''width'': _int64_feature(img.shape[1]),
''orig_width'': _int64_feature(img.shape[1]/num_of_views),
''image/text'': _bytes_feature(text)
}
))
Estoy trabajando en este project basado en TensorFlow.
Solo quiero entrenar un modelo de OCR portention_ocr basado en mis propios conjuntos de datos, pero no sé cómo almacenar mis imágenes y la verdad básica en el mismo formato que los conjuntos de datos FSNS.
¿Alguien también trabaja en este proyecto o sabe cómo resolver este problema?
No debe usar el siguiente código directamente:
"''image/encoded'': _bytes_feature(img.tostring()),"
En mi código, escribí esto:
_,jpegVector = cv2.imencode(''.jpeg'',img)
imgStr = jpegVector.tostring()
''image/encoded'': _bytes_feature(imgStr)