Spaces:
Sleeping
Sleeping
# Gerekli kütüphaneleri import et | |
import streamlit as st | |
from transformers import BlipProcessor, BlipForConditionalGeneration | |
from PIL import Image | |
import requests | |
from langchain_openai import ChatOpenAI | |
import os | |
# Kullanacağımız dil modeli için api key ayarlayalım | |
os.environ["OPENAI_API_KEY"] = "sk-proj-p2nvtxZx1k6EQDI57QmAT3BlbkFJmHgjHI1xMjqV1058WTuG" | |
# Model yolunu belirt | |
model_dir = "model" | |
# BlipProcessor ve BlipForConditionalGeneration sınıflarını kullanarak | |
# yereldeki eğittiğimiz modeli yükleyelim | |
processor = BlipProcessor.from_pretrained(model_dir) | |
model = BlipForConditionalGeneration.from_pretrained(model_dir) | |
# Altyazı oluşturma fonksiyonu | |
def get_image_captions(images): | |
captions = [] | |
for image in images: | |
inputs = processor(image, return_tensors="pt") | |
out = model.generate(**inputs) | |
caption = processor.decode(out[0], skip_special_tokens=True) | |
captions.append(caption) | |
return captions | |
# Streamlit uygulamasının başlangıcı | |
def main(): | |
st.title("Çoklu resimlere yönelik altyazı oluşturma") | |
# Kullanıcıdan resimleri al | |
uploaded_images = st.file_uploader("Lütfen resimleri yükleyin", accept_multiple_files=True, type=['jpg', 'png', 'jpeg']) | |
if uploaded_images: | |
images = [Image.open(img) for img in uploaded_images] | |
# Resimlerden açıklamaları al | |
captions = get_image_captions(images) | |
# Açıklamaları ekrana yazdır | |
st.subheader("Resim Açıklamaları:") | |
for i, caption in enumerate(captions): | |
translate = f"translate this in turkish: {caption} " | |
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.6,) | |
response = llm.invoke(translate) | |
st.write(f"{i+1}. {response.content.strip()}") | |
# OpenAI ile etkileşim | |
prompt = f"You will be given a list.If there is a common object in the pictures in this list, write the object or the group to which the object belongs, or whatever relevance there is between them. if there is a common verb, write the verb, if there is a common object, write the object, if there is a common relevance, write the relevance. if there are two things in common (e.g. object and verb), write both. if there are all three, write all three. it will be completely common and completely objective. write only one of them as an answer. e.g. 'tech gadgets', 'people playing games', 'extreme sports' etc. write the answer only in Turkish.list: {captions}" | |
# OpenAI'ye prompt gönder | |
llm = ChatOpenAI(model="gpt-4", temperature=0.6,) | |
response = llm.invoke(prompt) | |
# OpenAI'den gelen yanıtı ekrana yazdır | |
st.subheader("Resim koleksiyonunuzun altyazısı:") | |
st.write(response.content.strip()) | |
# Uygulamayı çalıştır | |
if __name__ == "__main__": | |
main() | |