import boto3 import gradio as gr from transformers import pipeline from PIL import Image import matplotlib.pyplot as plt import matplotlib.patches as patches aws_access_key_id='ASIAWDEJB3WQULQXBS72' aws_secret_access_key='OrMNfIfCZD7knsUvs3RQ3VpUNoE/hX2bFXRqpOWx' aws_session_token='IQoJb3JpZ2luX2VjELb//////////wEaCXVzLXdlc3QtMiJIMEYCIQD5JVTnkUfl7ehFSSNW+KpDzhtEsZKYVn4piDOjVMmzZgIhANfdBnBPS4oU9YLaxmQfmTVnrfYmhi5sxGpUt7Q/NqCqKqMCCE4QARoMNDE5MDQ2NzQzNDU3IgwN3iW0SrX7qURt0wcqgAL/dVk7U6i/X6B6kItJkl9FfpaKT8Yj3vrjGTuUILGR+uArJkWJV0/4oeL35wyCkAMD9rvmJYspNEqZbg/IT4DJrXJGX4nlL7vJg9J9xrtPpZIrAa7EMgE1q/zz6d9UNMnyeqnV+ARZ6D2/Wa3uxEUZ47y6p7WPBW0fJVnoQtpdEO6hJ13CL69QCb6QWkr2eg9Ei2DCwboWY3DKTaEbTwsP/OZ2pkEznFM52ub1PSNCOsEnoCJxytNgBXaLdG30FeAmvaLeCispXppHpV8ofiMiEEXo8G9VcubN/vPASIizbF4dgjIj8lVYWkBTIw+BYilHuPDtUdOJNm3EBGyMmd6qMLSctcAGOpwBuGHNR2QZIimzBqUJlEJcLi4AGbBxwp4R9uV/2hqLcOG1/PAOhp4rq5cub587mSa1E47BPNHj8/WqQ+sh1CprvoVe8zI2D4nuXIkDRnkjFdlpbWyjJswbo7IlTCRxnJjsfcURuCuGYyyZuhuiUoo6JgMqGcXeQ4sHNns+4Qf4U6vrMUUKG6k/vyDvxXoSpbKm2XcPQ45HELl7cyIu' s3 = boto3.client('s3',aws_access_key_id=aws_access_key_id,aws_secret_access_key=aws_secret_access_key,aws_session_token=aws_session_token,region_name='us-east-1') nom_bucket = 'jiongzem3eac5bucket' rekognition = boto3.client('rekognition',aws_access_key_id=aws_access_key_id,aws_secret_access_key=aws_secret_access_key,aws_session_token=aws_session_token,region_name='us-east-1') def detect_labels(image_path): s3.upload_file(image_path, nom_bucket, 'image_predict.jpg') response = rekognition.detect_labels(Image={'S3Object': {'Bucket': nom_bucket, 'Name': 'image_predict.jpg'}}, MaxLabels=10) s3.delete_object(Bucket=nom_bucket, Key='image_predict.jpg') img = Image.open(image_path) plt.imshow(img) ax = plt.gca() results_label = [] labels = response['Labels'] for label in labels : for instance in label['Instances'] : bbox = instance['BoundingBox'] left = bbox['Left'] * img.width top = bbox['Top'] * img.height width = bbox['Width'] * img.width height = bbox['Height'] * img.height rect = patches.Rectangle((left, top), width, height, linewidth=1, edgecolor='r', facecolor='none') ax.add_patch(rect) label_text = label['Name'] + ' (' + str(round(label['Confidence'], 2)) + '%)' results_label.append(label_text) plt.text(left, top - 2, label_text, color='r', fontsize=8) plt.show() plt.savefig('result.png') plt.close() return results_label, Image.open('result.png') with gr.Blocks() as demo: gr.Markdown("Label detection.") with gr.Row(): with gr.Column(): input_image = gr.Image(visible=False,type="filepath") image_box = gr.Image() with gr.Row(): examples = gr.Examples( examples=[ ['./image_1.jpg'], ['./image_2.jpg'], ], inputs=input_image, ) btn = gr.UploadButton("Use your own image", file_count="single") labels_text = gr.Textbox("Results") btn.upload(fn=detect_labels, inputs=btn, outputs=[labels_text,image_box]) input_image.change(fn=detect_labels, inputs=input_image, outputs=[labels_text,image_box]) demo.launch(debug=True)