clearml/examples/reporting/image_reporting.py
2020-06-15 22:48:51 +03:00

68 lines
2.0 KiB
Python

# TRAINS - Example of manual graphs and statistics reporting
#
import os
import numpy as np
from PIL import Image
from trains import Task, Logger
def report_debug_images(logger, iteration=0):
# type: (Logger, int) -> ()
"""
reporting images to debug samples section
:param logger: The task.logger to use for sending the plots
:param iteration: The iteration number of the current reports
"""
# report image as float image
m = np.eye(256, 256, dtype=np.float)
logger.report_image("image", "image float", iteration=iteration, image=m)
# report image as uint8
m = np.eye(256, 256, dtype=np.uint8) * 255
logger.report_image("image", "image uint8", iteration=iteration, image=m)
# report image as uint8 RGB
m = np.concatenate((np.atleast_3d(m), np.zeros((256, 256, 2), dtype=np.uint8)), axis=2)
logger.report_image("image", "image color red", iteration=iteration, image=m)
# report PIL Image object
image_open = Image.open(os.path.join("data_samples", "picasso.jpg"))
logger.report_image("image", "image PIL", iteration=iteration, image=image_open)
# Image can be uploaded via 'report_media' too.
logger.report_media(
"image",
"image with report media",
iteration=iteration,
local_path=os.path.join("data_samples", "picasso.jpg"),
file_extension="jpg",
)
def main():
# Create the experiment Task
task = Task.init(project_name="examples", task_name="image reporting")
print('reporting a few debug images')
# Get the task logger,
# You can also call Task.current_task().get_logger() from anywhere in your code.
logger = task.get_logger()
# report debug images
report_debug_images(logger)
# force flush reports
# If flush is not called, reports are flushed in the background every couple of seconds,
# and at the end of the process execution
logger.flush()
print('We are done reporting, have a great day :)')
if __name__ == "__main__":
main()