Update app.py
Browse files
app.py
CHANGED
|
@@ -1,95 +1,95 @@
|
|
| 1 |
-
import gradio as gr
|
| 2 |
-
from PIL import Image, ImageDraw, ImageFont
|
| 3 |
-
from io import BytesIO
|
| 4 |
-
import boto3
|
| 5 |
-
|
| 6 |
-
aws_access_key_id="ASIATKZWHQXR3GIFNWXP"
|
| 7 |
-
aws_secret_access_key="AIFIEEtDPiu2CQ8jGzH3b64HvltAcXW43TKwVHu6"
|
| 8 |
-
aws_session_token="IQoJb3JpZ2luX2VjEPr//////////wEaCXVzLXdlc3QtMiJIMEYCIQDqhebksoGudG3oAPyv25zEiDmnKizqdYK0hBeYcn12VQIhAL/Id52ZcO7usB7m1sAKYQSbljYRToblKHsy7c2iEXqbKq8CCEMQABoMMjI5MzU3NjE4NjU5IgyLkpI2HHlw8sZwdEMqjAKT+6BHbNouiNmAYkJTKyN6H0NATeEBZydNsjD90xDJdVd68GSTKLG+5vTrg0jwfcSBvdlXz0bzdwwar5qLXoBeK+UoQhSX+x01zSydjwxBqjZeYYnAJuQuQvGdCXM+hrJlFXwwVQRXO8F8SkjH544aN2Vuljmno99Vsu94bubuSHZ5UZIpQF8IdFQe4HqOfxfs7ZEP7vOqKT0XO5PnYw9Vo/tk0OmED/UahKVTdP1d7KdvERPsgoLGy5Gx8hflV4BdFDapDuw9mK1hrepZrNXS5x0cc5qPumc57+VczSNOFyYhbPo3z9VRc+SJSncRqG92MFKxkMwR6/hgTOzU/kUispDkazisF7mjRI6FMNSm37cGOpwBRuTL1lmTJ3KN5kwNccqLsJ7fyAtptv0/1p9EcRCrLDocw75Bz9ytMgUFyWXzWlB5Hz/ZiyTYpCnXP708sqbCnTw2HnVRhgL3oPxpKyAPiPQKBMulFxCygEY7yvYqS886eJFGIsTvmJs9DaFIRWOSlSuT3eylIpusRbjdiEAriSs2CwTuT2x+v7sUdOUMStmwPucy2DqSvsJslDhH"
|
| 9 |
-
|
| 10 |
-
BUCKET_NAME = "ioc1980"
|
| 11 |
-
nom_arxiu = 'imatge.jpg'
|
| 12 |
-
|
| 13 |
-
s3 = boto3.client(
|
| 14 |
-
's3',
|
| 15 |
-
aws_access_key_id=aws_access_key_id,
|
| 16 |
-
aws_secret_access_key=aws_secret_access_key,
|
| 17 |
-
aws_session_token=aws_session_token,
|
| 18 |
-
region_name='us-east-1'
|
| 19 |
-
)
|
| 20 |
-
rekognition = boto3.client(
|
| 21 |
-
'rekognition',
|
| 22 |
-
aws_access_key_id=aws_access_key_id,
|
| 23 |
-
aws_secret_access_key=aws_secret_access_key,
|
| 24 |
-
aws_session_token=aws_session_token,
|
| 25 |
-
region_name='us-east-1'
|
| 26 |
-
)
|
| 27 |
-
|
| 28 |
-
def analitzar_imatge(imatge):
|
| 29 |
-
# Pujar la imatge a S3
|
| 30 |
-
s3.upload_file(imatge, BUCKET_NAME, nom_arxiu)
|
| 31 |
-
|
| 32 |
-
# Analitzar la imatge amb Rekognition
|
| 33 |
-
response = rekognition.detect_faces(
|
| 34 |
-
Image={
|
| 35 |
-
'S3Object':{
|
| 36 |
-
'Bucket':BUCKET_NAME,
|
| 37 |
-
'Name':nom_arxiu
|
| 38 |
-
}
|
| 39 |
-
},
|
| 40 |
-
Attributes=['ALL'])
|
| 41 |
-
|
| 42 |
-
# Descarrega la imatge per dibuixar
|
| 43 |
-
image_file = s3.get_object(Bucket=BUCKET_NAME, Key=nom_arxiu)
|
| 44 |
-
image_bytes = image_file['Body'].read()
|
| 45 |
-
image = Image.open(BytesIO(image_bytes))
|
| 46 |
-
|
| 47 |
-
# Crear un objecte ImageDraw
|
| 48 |
-
draw = ImageDraw.Draw(image)
|
| 49 |
-
|
| 50 |
-
# Processar els resultats i dibuixar les capses
|
| 51 |
-
resultats = []
|
| 52 |
-
for i, face in enumerate(response['FaceDetails'], 1):
|
| 53 |
-
# Obtenir informaci贸 de cada cara
|
| 54 |
-
resultats.append(f"\nCara {i}:")
|
| 55 |
-
resultats.append(f" Edat: {face['AgeRange']['Low']}-{face['AgeRange']['High']} anys")
|
| 56 |
-
resultats.append(f" G猫nere: {face['Gender']['Value']}")
|
| 57 |
-
resultats.append(f" Emoci贸: {max(face['Emotions'], key=lambda x: x['Confidence'])['Type']}")
|
| 58 |
-
|
| 59 |
-
# Obtenir les coordenades de la caixa delimitadora
|
| 60 |
-
bounding_box = face["BoundingBox"]
|
| 61 |
-
left = int(bounding_box["Left"] * image.width)
|
| 62 |
-
top = int(bounding_box["Top"] * image.height)
|
| 63 |
-
width = int(bounding_box["Width"] * image.width)
|
| 64 |
-
height = int(bounding_box["Height"] * image.height)
|
| 65 |
-
|
| 66 |
-
# Dibuixar el quadre delimitador i l'etiqueta
|
| 67 |
-
draw.rectangle([left, top, left + width, top + height], outline="red", width=2)
|
| 68 |
-
draw.text((left, top - 25), f"Cara {i}", fill="red")
|
| 69 |
-
|
| 70 |
-
# Eliminar la imatge de S3 despr茅s de l'an脿lisi
|
| 71 |
-
s3.delete_object(Bucket=BUCKET_NAME, Key=nom_arxiu)
|
| 72 |
-
|
| 73 |
-
return "\n".join(resultats) if resultats else "No s'han detectat cares a la imatge.", image
|
| 74 |
-
|
| 75 |
-
# Crear la interf铆cie amb Gradio Blocks
|
| 76 |
-
with gr.Blocks() as demo:
|
| 77 |
-
gr.Markdown("#
|
| 78 |
-
|
| 79 |
-
# Definim un bloc de columna per al layout de la interf铆cie
|
| 80 |
-
with gr.Row():
|
| 81 |
-
with gr.Column():
|
| 82 |
-
imatge_input = gr.Image(type='filepath', label="Puja una imatge")
|
| 83 |
-
with gr.Column():
|
| 84 |
-
resultats_text = gr.Textbox(label="Resultats")
|
| 85 |
-
|
| 86 |
-
# Imatge de sortida amb capses dibuixades
|
| 87 |
-
imatge_output = gr.Image(label="Imatge processada")
|
| 88 |
-
|
| 89 |
-
# Defineix qu猫 passa autom脿ticament quan l'usuari puja una imatge
|
| 90 |
-
imatge_input.change(fn=analitzar_imatge,
|
| 91 |
-
inputs=imatge_input,
|
| 92 |
-
outputs=[resultats_text, imatge_output])
|
| 93 |
-
|
| 94 |
-
# Executar l'aplicaci贸
|
| 95 |
demo.launch()
|
|
|
|
| 1 |
+
import gradio as gr
|
| 2 |
+
from PIL import Image, ImageDraw, ImageFont
|
| 3 |
+
from io import BytesIO
|
| 4 |
+
import boto3
|
| 5 |
+
|
| 6 |
+
aws_access_key_id="ASIATKZWHQXR3GIFNWXP"
|
| 7 |
+
aws_secret_access_key="AIFIEEtDPiu2CQ8jGzH3b64HvltAcXW43TKwVHu6"
|
| 8 |
+
aws_session_token="IQoJb3JpZ2luX2VjEPr//////////wEaCXVzLXdlc3QtMiJIMEYCIQDqhebksoGudG3oAPyv25zEiDmnKizqdYK0hBeYcn12VQIhAL/Id52ZcO7usB7m1sAKYQSbljYRToblKHsy7c2iEXqbKq8CCEMQABoMMjI5MzU3NjE4NjU5IgyLkpI2HHlw8sZwdEMqjAKT+6BHbNouiNmAYkJTKyN6H0NATeEBZydNsjD90xDJdVd68GSTKLG+5vTrg0jwfcSBvdlXz0bzdwwar5qLXoBeK+UoQhSX+x01zSydjwxBqjZeYYnAJuQuQvGdCXM+hrJlFXwwVQRXO8F8SkjH544aN2Vuljmno99Vsu94bubuSHZ5UZIpQF8IdFQe4HqOfxfs7ZEP7vOqKT0XO5PnYw9Vo/tk0OmED/UahKVTdP1d7KdvERPsgoLGy5Gx8hflV4BdFDapDuw9mK1hrepZrNXS5x0cc5qPumc57+VczSNOFyYhbPo3z9VRc+SJSncRqG92MFKxkMwR6/hgTOzU/kUispDkazisF7mjRI6FMNSm37cGOpwBRuTL1lmTJ3KN5kwNccqLsJ7fyAtptv0/1p9EcRCrLDocw75Bz9ytMgUFyWXzWlB5Hz/ZiyTYpCnXP708sqbCnTw2HnVRhgL3oPxpKyAPiPQKBMulFxCygEY7yvYqS886eJFGIsTvmJs9DaFIRWOSlSuT3eylIpusRbjdiEAriSs2CwTuT2x+v7sUdOUMStmwPucy2DqSvsJslDhH"
|
| 9 |
+
|
| 10 |
+
BUCKET_NAME = "ioc1980"
|
| 11 |
+
nom_arxiu = 'imatge.jpg'
|
| 12 |
+
|
| 13 |
+
s3 = boto3.client(
|
| 14 |
+
's3',
|
| 15 |
+
aws_access_key_id=aws_access_key_id,
|
| 16 |
+
aws_secret_access_key=aws_secret_access_key,
|
| 17 |
+
aws_session_token=aws_session_token,
|
| 18 |
+
region_name='us-east-1'
|
| 19 |
+
)
|
| 20 |
+
rekognition = boto3.client(
|
| 21 |
+
'rekognition',
|
| 22 |
+
aws_access_key_id=aws_access_key_id,
|
| 23 |
+
aws_secret_access_key=aws_secret_access_key,
|
| 24 |
+
aws_session_token=aws_session_token,
|
| 25 |
+
region_name='us-east-1'
|
| 26 |
+
)
|
| 27 |
+
|
| 28 |
+
def analitzar_imatge(imatge):
|
| 29 |
+
# Pujar la imatge a S3
|
| 30 |
+
s3.upload_file(imatge, BUCKET_NAME, nom_arxiu)
|
| 31 |
+
|
| 32 |
+
# Analitzar la imatge amb Rekognition
|
| 33 |
+
response = rekognition.detect_faces(
|
| 34 |
+
Image={
|
| 35 |
+
'S3Object':{
|
| 36 |
+
'Bucket':BUCKET_NAME,
|
| 37 |
+
'Name':nom_arxiu
|
| 38 |
+
}
|
| 39 |
+
},
|
| 40 |
+
Attributes=['ALL'])
|
| 41 |
+
|
| 42 |
+
# Descarrega la imatge per dibuixar
|
| 43 |
+
image_file = s3.get_object(Bucket=BUCKET_NAME, Key=nom_arxiu)
|
| 44 |
+
image_bytes = image_file['Body'].read()
|
| 45 |
+
image = Image.open(BytesIO(image_bytes))
|
| 46 |
+
|
| 47 |
+
# Crear un objecte ImageDraw
|
| 48 |
+
draw = ImageDraw.Draw(image)
|
| 49 |
+
|
| 50 |
+
# Processar els resultats i dibuixar les capses
|
| 51 |
+
resultats = []
|
| 52 |
+
for i, face in enumerate(response['FaceDetails'], 1):
|
| 53 |
+
# Obtenir informaci贸 de cada cara
|
| 54 |
+
resultats.append(f"\nCara {i}:")
|
| 55 |
+
resultats.append(f" Edat: {face['AgeRange']['Low']}-{face['AgeRange']['High']} anys")
|
| 56 |
+
resultats.append(f" G猫nere: {face['Gender']['Value']}")
|
| 57 |
+
resultats.append(f" Emoci贸: {max(face['Emotions'], key=lambda x: x['Confidence'])['Type']}")
|
| 58 |
+
|
| 59 |
+
# Obtenir les coordenades de la caixa delimitadora
|
| 60 |
+
bounding_box = face["BoundingBox"]
|
| 61 |
+
left = int(bounding_box["Left"] * image.width)
|
| 62 |
+
top = int(bounding_box["Top"] * image.height)
|
| 63 |
+
width = int(bounding_box["Width"] * image.width)
|
| 64 |
+
height = int(bounding_box["Height"] * image.height)
|
| 65 |
+
|
| 66 |
+
# Dibuixar el quadre delimitador i l'etiqueta
|
| 67 |
+
draw.rectangle([left, top, left + width, top + height], outline="red", width=2)
|
| 68 |
+
draw.text((left, top - 25), f"Cara {i}", fill="red")
|
| 69 |
+
|
| 70 |
+
# Eliminar la imatge de S3 despr茅s de l'an脿lisi
|
| 71 |
+
s3.delete_object(Bucket=BUCKET_NAME, Key=nom_arxiu)
|
| 72 |
+
|
| 73 |
+
return "\n".join(resultats) if resultats else "No s'han detectat cares a la imatge.", image
|
| 74 |
+
|
| 75 |
+
# Crear la interf铆cie amb Gradio Blocks
|
| 76 |
+
with gr.Blocks() as demo:
|
| 77 |
+
gr.Markdown("# An脿lisi de cares amb Amazon Rekognition")
|
| 78 |
+
|
| 79 |
+
# Definim un bloc de columna per al layout de la interf铆cie
|
| 80 |
+
with gr.Row():
|
| 81 |
+
with gr.Column():
|
| 82 |
+
imatge_input = gr.Image(type='filepath', label="Puja una imatge")
|
| 83 |
+
with gr.Column():
|
| 84 |
+
resultats_text = gr.Textbox(label="Resultats")
|
| 85 |
+
|
| 86 |
+
# Imatge de sortida amb capses dibuixades
|
| 87 |
+
imatge_output = gr.Image(label="Imatge processada")
|
| 88 |
+
|
| 89 |
+
# Defineix qu猫 passa autom脿ticament quan l'usuari puja una imatge
|
| 90 |
+
imatge_input.change(fn=analitzar_imatge,
|
| 91 |
+
inputs=imatge_input,
|
| 92 |
+
outputs=[resultats_text, imatge_output])
|
| 93 |
+
|
| 94 |
+
# Executar l'aplicaci贸
|
| 95 |
demo.launch()
|