eac5 / app.py
Jiongze's picture
Update app.py
5ad8672 verified
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)