MyFirstApp / app.py
Romanchik333's picture
new tabs
12288ea
import gradio as gr
from transformers import pipeline
from transformers import BlipProcessor, BlipForConditionalGeneration
translator_ru = pipeline("translation_en_to_ru", model="Helsinki-NLP/opus-mt-en-ru")
translator_en = pipeline("translation_ru_to_en", model="Helsinki-NLP/opus-mt-ru-en")
image_classifier = pipeline("image-classification", model="microsoft/resnet-50")
processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base")
captioner = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-base")
def translate_to_russian(text):
try:
translation = translator_ru(text)
return translation[0]['translation_text']
except Exception as e:
print(f"Ошибка перевода на ru: {e}")
return text
def translate_to_english(text):
try:
translation = translator_en(text)
return translation[0]['translation_text']
except Exception as e:
print(f"Ошибка перевода на en: {e}")
return text
def classify_image(image):
results = image_classifier(image)
output = {}
for result in results:
output[translate_to_russian((result['label'].split(','))[0])] = result['score']
return output
def capt_image(image, text):
if len(text) != 0:
inputs = processor(image, translate_to_english(text), return_tensors="pt")
else:
inputs = processor(image, return_tensors="pt")
out = captioner.generate(**inputs)
return translate_to_russian(processor.decode(out[0], skip_special_tokens=True))
with gr.Blocks() as demo:
gr.Markdown("#Домашнее задание для курса ML2")
with gr.Tab("Классификация изображений"):
with gr.Row():
img_input = gr.Image(type="pil", label="Загрузите изображение")
label_output = gr.Label(label="Результаты классификации")
btn_classify = gr.Button("Классифицировать")
btn_classify.click(fn=classify_image, inputs=img_input, outputs=label_output)
with gr.Tab("Перевод текста"):
with gr.Row("en-ru"):
text_input_1 = gr.Textbox(label="EN text", placeholder="Напишите сюда английский текст")
text_output_1 = gr.Textbox(label="RU text", placeholder="Переведённый текст")
btn_translate_en_ru = gr.Button("Перевести")
btn_translate_en_ru.click(fn=translate_to_russian, inputs=text_input_1, outputs=text_output_1)
with gr.Row("ru-en"):
text_input_2 = gr.Textbox(label="RU text", placeholder="Напишите сюда русский текст")
text_output_2 = gr.Textbox(label="EN text", placeholder="Переведённый текст")
btn_translate_ru_en = gr.Button("Перевести")
btn_translate_ru_en.click(fn=translate_to_english, inputs=text_input_2, outputs=text_output_2)
with gr.Tab("Написание заголовков"):
with gr.Row():
with gr.Column():
img_capt = gr.Image(type="pil", label="Загрузите изображение")
pre_capt = gr.Textbox(label="Начало заголовка")
with gr.Column():
caption = gr.Label(label="Заголовок для картинки")
btn_captioning = gr.Button("Написать заголовок")
btn_captioning.click(fn=capt_image, inputs=[img_capt, pre_capt], outputs=caption)
if __name__ == "__main__":
demo.launch()