AWS DeepLens Guía para desarrolladores
Crear y ejecutar el proyecto de
detección de posición de cabeza
output_node_names: a comma-separated string, containing the names of
all output nodes,
"""
# We start a session using a temporary fresh Graph
with tf.Session(graph=tf.Graph()) as sess:
# We import the meta graph in the current default Graph
tf.saved_model.loader.load(sess,
[tf.saved_model.tag_constants.SERVING], model_dir)
# We use a built-in TF helper to export variables to constants
input_graph_def = tf.graph_util.convert_variables_to_constants(
sess, # The session is used to retrieve the weights
tf.get_default_graph().as_graph_def(), # The graph_def is used to
retrieve the nodes
output_node_names.split(",") # The output node names are used to
select the usefull nodes
)
# We generate the inference graph_def
input_node_names=['Const_1']
output_graph_def =
optimize_for_inference_lib.optimize_for_inference(tf.graph_util.remove_training_nodes(input
input_node_names.split(","),
output_node_names.split(","), # an array of output nodes
tf.float32.as_datatype_enum)
# Finally we serialize and dump the output graph_def to the filesystem
with tf.gfile.GFile('frozen_model.pb', "wb") as f:
f.write(output_graph_def.SerializeToString())
freeze_graph(model_dir[0], 'Const_1', 'softmax_tensor')
Como el resultado, el artefacto del modelo se transforma al formato protobuff congelado
(frozen_model.pb) y se guarda en el directorio raíz de la instancia de bloc de notas
(model_dir[0]).
En el código anterior, debe especificar los nodos de entrada y salida, es decir, 'Const_1' y
'softmax_tensor'. Para obtener más información, consulte resnet_model_headpose.py.
Al crear un proyecto de AWS DeepLens posteriormente, tendrá que añadir este gráfico
congelado al proyecto. Para ello, debe cargar el archivo protobuff en una carpeta de
Amazon S3. Para este tutorial, puede utilizar la carpeta de salida de su trabajo de
rastreo SageMaker (s3://deeplens-sagemaker-models-<my-name>/headpose/
TFartifacts/<sagemaker-job-name>/output) en S3. Sin embargo, se considera que
el modelo es un modelo entrenado externamente en AWS DeepLens.
d.
Para cargar el gráfico congelado en la carpeta de salida del trabajo de entrenamiento de
SageMaker, ejecute el siguiente fragmento de código Python en una celda de código de la
instancia de bloc de notas en ejecución:
data = open('frozen_model.pb', "rb")
#key = '{}/{}/{}/output/frozen_model.pb'.format(headpose_folder,
model_artifacts_folder,estimator.latest_training_job.name)
key = '{}/{}/{}/output/frozen_model.pb'.format(headpose_folder,
model_artifacts_folder, 'deeplens-TF-headpose-2018-08-16-20-10-09-991')
s3.Bucket(s3_bucket).put_object(Key=key, Body=data)
# an array of the input node(s)
# an array of input nodes
103