Zephyrnet Logosu

GenAI Kullanılarak Kalori Danışmanı Uygulaması Nasıl Oluşturulur?

Tarih:

Giriş

Yapay Zeka birçok kullanım alanı vardır ve en iyilerinden bazıları Sağlık Sektöründedir. İnsanların daha sağlıklı bir yaşam sürdürmelerine gerçekten yardımcı olabilir. Artan patlamayla birlikte üretken yapay zekaGünümüzde bazı uygulamalar daha az karmaşıklıkla yapılmaktadır. Oluşturulabilecek çok kullanışlı uygulamalardan biri Kalori Danışmanı Uygulamasıdır. Bu yazımızda sadece sağlığımıza dikkat etmekten ilham alarak buna bakacağız. Yiyeceklerin resimlerini girebileceğimiz basit bir Kalori Danışmanı Uygulaması oluşturacağız ve uygulama, yiyecekte bulunan her bir öğenin kalorisini hesaplamamıza yardımcı olacak. Bu proje, yapay zeka yoluyla sağlığa odaklanan NutriGen'in bir parçasıdır.

Besin Gen

Öğrenme Hedefi

  • Bu makalede oluşturacağımız Uygulama, temel Prompt mühendisliği ve görüntü işleme tekniklerine dayalı olacaktır.
  • Kullanım örneğimiz için Google Gemini Pro Vision API'yi kullanacağız.
  • Daha sonra Görüntü İşleme ve İstem Mühendisliği gerçekleştireceğimiz kodun yapısını oluşturacağız. Son olarak Streamlit kullanarak Kullanıcı Arayüzü üzerinde çalışacağız.
  • Daha sonra uygulamamızı şu adrese dağıtacağız: Sarılma Yüz Ücretsiz Platform.
  • Gemini'nin bir gıda maddesini tasvir edememesi ve o gıda için yanlış kalori hesabı vermesi gibi çıktılarda karşılaşacağımız bazı sorunları da göreceğiz. Bu soruna yönelik farklı çözümleri de tartışacağız.

Ön Koşullar

Projemizi uygulamaya başlayalım, ancak bundan önce lütfen üretken yapay zeka ve yüksek lisans (LLM) hakkında temel bir anlayışa sahip olduğunuzdan emin olun. Çok az şey bilmenizde sorun yok çünkü bu yazıda her şeyi sıfırdan uygulayacağız.

Temel Python İstemi Mühendisliği için, Üretken Yapay Zeka konusunda temel bir anlayış ve Google Gemini'ye aşinalık gereklidir. Ayrıca temel bilgi Akışlı, Github, ve Sarılma Yüz kütüphaneler gereklidir. Görüntü ön işleme amacıyla PIL gibi kütüphanelere aşina olmak da faydalıdır.

Bu makale, Veri Bilimi Blogatonu.

İçindekiler

Proje Hattı

Bu makalede, beslenme uzmanlarına ve bireylere yiyecek seçimleri konusunda bilinçli kararlar vermelerinde ve sağlıklı bir yaşam tarzı sürdürmelerinde yardımcı olacak bir yapay zeka asistanı oluşturmaya çalışacağız.

Akış şu şekilde olacaktır: giriş görüntüsü -> görüntü işleme -> bilgi istemi mühendisliği -> yiyeceğin giriş görüntüsünün çıktısını almak için son işlev çağrısı. Bu, bu sorun bildirimine nasıl yaklaşacağımıza dair kısa bir genel bakıştır.

Gemini Pro Vision'a Genel Bakış

İkizler Uzmanı çok modlu bir modeldir Yüksek Lisans Google tarafından oluşturuldu. Sıfırdan çok modlu olacak şekilde eğitildi. Görüntü altyazısı dahil olmak üzere çeşitli görevlerde iyi performans gösterebilir, sınıflandırma, özetleme, soru cevaplama vb. Bu konudaki büyüleyici gerçeklerden biri de ünlü Transformer Decoder Mimarimizi kullanmasıdır. Çoklu veri türleri üzerinde eğitilerek çok modlu girdilerin çözülmesinin karmaşıklığı azaltıldı ve kaliteli çıktılar sağlandı.

Adım 1: Sanal Ortamın Oluşturulması

Sanal bir ortam oluşturmak, projemizi ve bağımlılıklarını diğerleriyle çakışmayacak şekilde izole etmek için iyi bir uygulamadır ve farklı sanal ortamlarda ihtiyaç duyduğumuz kitaplıkların farklı sürümlerine her zaman sahip olabiliriz. Şimdi proje için sanal bir ortam oluşturacağız. Bunu yapmak için aşağıda belirtilen adımları izleyin:

  • Proje için masaüstünde Boş bir klasör oluşturun.
  • Bu klasörü VS Code'da açın.
  • Terminali açın.

Aşağıdaki komutu yazın:

pip install virtualenv
python -m venv genai_project

Sa et yürütme politikası hatası alıyorsanız aşağıdaki komutu kullanabilirsiniz:

Set-ExecutionPolicy RemoteSigned -Scope Process

Şimdi sanal ortamımızı aktif hale getirmemiz gerekiyor, bunun için aşağıdaki komutu kullanıyoruz:

.genai_projectScriptsactivate

Sanal ortamımızı başarıyla oluşturduk.

Adım Google Colab'da Sanal Ortam Oluşturun

Sanal Ortamımızı Google Colab'da da oluşturabiliriz; bunu yapmak için adım adım prosedür aşağıda verilmiştir:

  • Yeni bir Colab Not Defteri Oluşturun
  • Aşağıdaki komutları adım adım kullanın
!which python
!python --version
#to check if python is installed or not
%env PYTHONPATH=
# setting python path environment variable in empty value ensuring that python
# won't search for modules and packages in additional directory. It helps
# in avoiding conflicts or unintended module loading.
!pip install virtualenv 
# create virtual environment 
!virtualenv genai_project
!wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

#This will help download the miniconda installer script which is used to create
# and manage virtual environments in python
!chmod +x Miniconda3-latest-Linux-x86_64.sh
# this command is making our mini conda installer script executable within
# the colab environment. 
!./Miniconda3-latest-Linux-x86_64.sh -b -f -p /usr/local
# this is used to run miniconda installer script and 
# specify the path where miniconda should be installed
!conda install -q -y --prefix /usr/local python=3.8 ujson
#this will help install ujson and python 3.8 installation in our venv.
import sys
sys.path.append('/usr/local/lib/python3.8/site-packages/')
#it will allow python to locate and import modules from a venv directory
import os
os.environ['CONDA_PREFIX'] = '/usr/local/envs/myenv'

# used to activate miniconda enviornment 
!python --version
#checks the version of python within the activated miniconda environment

Böylece Google Colab'da sanal ortamımızı da oluşturduk. Şimdi burada nasıl temel bir .py dosyası oluşturabileceğimizi kontrol edip görelim.

!source myenv/bin/activate
#activating the virtual environment
!echo "print('Hello, world!')" >> my_script.py
# writing code using echo and saving this code in my_script.py file
!python my_script.py
#running my_script.py file

Bu, çıktıda bizim için Merhaba Dünya'yı yazdıracaktır. İşte bu kadar. Bunların hepsi Google Colab'da Sanal Ortamlarla çalışmakla ilgiliydi. Şimdi projeye devam edelim.

Adım 2: Gerekli Kitaplıkları İçe Aktarma

import streamlit as st
import google.generativeaias genai 
import os 
from dotenv import load_dotenv
load_dotenv()
from PIL import Image

Yukarıdaki kütüphanelerden herhangi birini içe aktarırken sorun yaşıyorsanız, yüklemek için her zaman “pip install kütüphane_adı” komutunu kullanabilirsiniz.

Temel kullanıcı arayüzünü oluşturmak için Streamlit kütüphanesini kullanıyoruz. Kullanıcı bir görsel yükleyebilir ve bu görsele dayalı çıktıları alabilir.

Yüksek Lisans derecesini almak için Google Generative'i kullanıyoruz ve yemeğimizdeki kalori miktarını öğe bazında elde etmek için görseli analiz ediyoruz.

Görüntü, bazı temel görüntü ön işlemelerini gerçekleştirmek için kullanılıyor.

3. Adım: API Anahtarını Ayarlama

Aynı dizinde yeni bir .env dosyası oluşturun ve API anahtarınızı saklayın. Google'ı alabilirsiniz Gemini API'si anahtar Google Maker Suite.

Adım 4: Yanıt Oluşturucu İşlevi

Burada bir yanıt üreteci fonksiyonu oluşturacağız. Adım adım parçalayalım:

İlk olarak genleri kullandık. Google MakerSuite Web Sitesinden oluşturduğumuz API'yi yapılandırmak için yapılandırın. Daha sonra, 2 giriş parametresini alan get_gemini_response fonksiyonunu oluşturduk: giriş istemi ve görüntü. Bu, çıktıyı metin olarak döndürecek birincil işlevdir.

genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))

def get_gemini_response(input_prompt, image):

    model = genai.GenerativeModel('gemini-pro-vision')

    response = model.generate_content([input_prompt, image[0]])

    return response

Burada multimodal olduğu için 'Gemini-pro-vision' modelini kullanıyoruz. Genie.GenerativeModel bağımlılığından modelimizi çağırdıktan sonra sadece istemimizi ve görüntü verimizi modele aktarıyoruz. Son olarak, istemde sağlanan talimatlara ve beslediğimiz görüntü verilerine dayanarak model, çıktıyı görüntüde bulunan farklı gıda maddelerinin kalori sayısını temsil eden metin biçiminde döndürecektir.

Adım5: Görüntü Ön İşleme

Bu işlev, uploaded_file parametresinin Yok olup olmadığını, yani kullanıcının bir dosya yüklediğini kontrol eder. Bir dosya yüklendiyse kod, uploaded_file nesnesinin getvalue() yöntemini kullanarak dosya içeriğini bayt cinsinden okumaya devam eder. Bu, yüklenen dosyanın ham baytlarını döndürecektir.

Yüklenen dosyadan elde edilen bayt verileri, "mime_type" ve "data" anahtar/değer çifti altında sözlük formatında depolanır. “mime_type” anahtarı, yüklenen dosyanın içeriğin türünü belirten (örneğin, resim/jpeg, resim/png) MIME türünü saklar. "Veri" anahtarı, yüklenen dosyanın ham baytlarını saklar.

Görüntü verileri daha sonra yüklenen dosyanın MIME türü ve verilerini içeren bir sözlüğü içeren image_parts adlı bir listede saklanır.

def input_image_setup(uploaded_file):
    if uploaded_file isnotNone:
        #Read the file into bytes
        bytes_data = uploaded_file.getvalue()
        image_parts = [
            {
                "mime_type":uploaded_file.type, 
                "data":bytes_data
            }
        ]
        return image_parts
    else:
        raise FileNotFoundError("No file uploaded")

Adım 6: Kullanıcı Arayüzü Oluşturma

Sonunda projemiz için kullanıcı arayüzünü oluşturmanın zamanı geldi. Daha önce de belirttiğimiz gibi, ön uç kodunu yazmak için Streamlit kütüphanesini kullanacağız.

## initialising the streamlit app
st.set_page_config(page_title="Calories Advisor App")
st.header("Calories Advisor App")
uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"])
image = ""
if uploaded_file isnotNone:
    image = Image.open(uploaded_file)
    st.image(image, caption="Uploaded Image", use_column_width=True)
submit = st.button("Tell me about the total calories")

Başlangıçta set_page_config kullanarak sayfa konfigürasyonunu ayarladık ve uygulamaya bir başlık verdik. Daha sonra bir başlık oluşturduk ve kullanıcıların resim yükleyebileceği bir dosya yükleme kutusu ekledik. St. Resim, kullanıcının kullanıcı arayüzüne yüklediği resmi gösterir. Son olarak gönder butonu var, sonrasında büyük dil modelimiz Gemini Pro Vision'dan çıktıları alacağız.

Adım 7: Sistem İsteminin Yazılması

Şimdi yaratıcı olmanın zamanı geldi. Burada, modelden uzman bir beslenme uzmanı olarak hareket etmesini isteyerek girdi istemimizi oluşturacağız. Aşağıdaki istemi kullanmanıza gerek yoktur; ayrıca özel isteminizi de sağlayabilirsiniz. Modelimizin şimdilik belli bir şekilde hareket etmesini istiyoruz. Sağlanan yiyeceğin girdi görüntüsüne dayanarak, modelimizden bu görüntü verilerini okumasını ve görüntüde bulunan gıda maddelerinin kalori sayısını bize verecek ve yiyeceğin sağlıklı olup olmadığına dair bir karar verecek çıktıyı oluşturmasını istiyoruz. veya sağlıksız. Eğer gıda zararlı ise imajımızdaki gıda maddelerine daha besleyici alternatifler vermesini istiyoruz. İhtiyaçlarınıza göre daha fazla özelleştirebilir ve sağlığınızı takip etmenin mükemmel bir yolunu elde edebilirsiniz.

Bazen görüntü verilerini düzgün okuyamayabilir, bununla ilgili çözümleri de yazımızın sonunda ele alacağız.

input_prompt = """

You are an expert nutritionist where you need to see the food items from the 
image and calculate the total calories, also give the details of all 
the food items with their respective calorie count in the below fomat.

        1. Item 1 - no of calories

        2. Item 2 - no of calories

        ----

        ----

Finally you can also mention whether the food is healthy or not and also mention 
the percentage split ratio of carbohydrates, fats, fibers, sugar, protein and 
other important things required in our diet. If you find that food is not healthy 
then you must provide some alternative healthy food items that user can have 
in diet.

"""
if submit:

    image_data = input_image_setup(uploaded_file)

    response = get_gemini_response(input_prompt, image_data)

    st.header("The Response is: ")

    st.write(response)

Son olarak eğer kullanıcı Submit butonuna basarsa resim verisini alıp almayacağımızı kontrol ediyoruz.

Daha önce oluşturduğumuz input_image_setup işlevi. Daha sonra giriş istemimizi ve bu görüntü verisini daha önce oluşturduğumuz get_gemini_response fonksiyonuna aktarıyoruz. Yanıt olarak depolanan son çıktıyı almak için daha önce oluşturduğumuz tüm işlevleri çağırırız.

Adım 8: Uygulamayı Hugging Face'te dağıtma

Şimdi dağıtım zamanı. Hadi başlayalım.

Oluşturduğumuz bu uygulamayı dağıtmanın en basit yolunu açıklayacağız. Uygulamamızı dağıtmak istersek inceleyebileceğimiz iki seçenek vardır: Biri Streamlit Share, diğeri ise Hugging Face. Burada dağıtım için Hugging Face'i kullanacağız; İsterseniz Streamlit Share iFaceu'da dağıtımı keşfetmeyi deneyebilirsiniz. İşte bunun için referans bağlantısı: Streamlit Share'de Dağıtım

Öncelikle dağıtım için ihtiyacımız olan gereksinimleri.txt dosyasını hızlı bir şekilde oluşturalım.

Terminali açın ve bir gereksinimler.txt dosyası oluşturmak için aşağıdaki komutu çalıştırın.

pip freeze > requirements.txt1plainText

Bu, gereksinimleri adında yeni bir metin dosyası oluşturacaktır. Tüm proje bağımlılıkları orada mevcut olacak. Bu bir hataya neden oluyorsa sorun değil. Çalışma dizininizde her zaman yeni bir metin dosyası oluşturabilir ve daha sonra vereceğim GitHub bağlantısından gereksinimleri.txt dosyasını kopyalayıp yapıştırabilirsiniz.

Şimdi bu dosyaların elinizin altında olduğundan emin olun (çünkü dağıtım için ihtiyacımız olan şey budur):

  • uygulama.py
  • .env (API kimlik bilgileri için)
  • gereksinimler.txt

Eğer sizde yoksa tüm bu dosyaları alın ve Sarılma Yüzünde bir hesap oluşturun. Daha sonra yeni bir alan oluşturun ve dosyaları oraya yükleyin. Bu kadar. Uygulamanız bu şekilde otomatik olarak dağıtılacaktır. Ayrıca dağıtımın gerçek zamanlı olarak nasıl gerçekleştiğini görebileceksiniz. Bir hata meydana gelirse, bunu basit arayüz ve elbette dağıtım sırasında bazı yaygın hataların çözümüne ilişkin birçok içeriğe sahip olan kucaklayan yüz topluluğuyla her zaman çözebilirsiniz.

Bir süre sonra uygulamanın çalıştığını göreceksiniz. Vay vay! Nihayet kalori tahmin uygulamamızı oluşturduk ve kullanıma sunduk. Tebrikler!!, Uygulamanın çalışma bağlantısını yeni oluşturduğunuz arkadaşlarınız ve ailenizle paylaşabilirsiniz.

İşte yeni oluşturduğumuz uygulamanın çalışma bağlantısı: The Alorcalcoriorisor Mobil Uygulama

Uygulamamıza bir giriş görüntüsü sağlayarak test edelim:

Önce:

Besin Gen

Sonra:

Besin Gen

İşte tam github deposu bağlantısı kaynak kodunu ve projeyle ilgili diğer yararlı bilgileri içerir.

Depoyu klonlayabilir ve ihtiyaçlarınıza göre özelleştirebilirsiniz. İsteminizde daha yaratıcı ve net olmaya çalışın; bu, modelinize doğru ve uygun çıktılar üretme konusunda daha fazla güç verecektir.

İyileştirme Kapsamı

Modelin ürettiği çıktılarda oluşabilecek sorunlar ve çözümleri:

Bazen modelden doğru çıktıyı alamadığınız durumlar olabilir. Bunun nedeni modelin görüntüyü doğru şekilde tahmin edememesi olabilir. Örneğin, yemeğinizin giriş görsellerini verirseniz ve yiyecek öğeniz turşu içeriyorsa modelimiz bunu başka bir şey olarak değerlendirebilir. Burada öncelikli endişe bu.

  • Bununla başa çıkmanın bir yolu, modeli örneklerle besleyebileceğiniz, birkaç adımlı bilgi istemi mühendisliği gibi etkili istem mühendisliği teknikleridir ve daha sonra bu örneklerden ve sağladığınız bilgi isteminden öğrenilenlere dayalı olarak çıktılar üretecektir.
  • Burada dikkate alınabilecek bir diğer çözüm ise özel verilerimizi oluşturup ince ayar yapmaktır. Bir sütunda gıda maddesinin görselini, diğer sütunda ise mevcut gıda maddesinin açıklamasını içeren veriler oluşturabiliriz. Bu, modelimizin temel kalıpları öğrenmesine ve sağlanan görüntüdeki öğeleri doğru şekilde tahmin etmesine yardımcı olacaktır. Bu nedenle, gıda resimlerinin kalori sayımına ilişkin daha doğru çıktılar elde etmek çok önemlidir.
  • Kullanıcıya beslenme hedeflerini sorarak ve modelden buna göre çıktılar üretmesini isteyerek bunu daha da ileri götürebiliriz. (Bu sayede modelin ürettiği çıktıları uyarlayabileceğiz ve daha kullanıcıya özel çıktılar verebileceğiz.)

Sonuç

Kalori Danışmanı Uygulamasının oluşturulmasına odaklanarak, Üretken Yapay Zekanın sağlık hizmetlerinde pratik uygulamasını inceledik. Bu proje, yapay zekanın bireylerin yiyecek seçimleri konusunda bilinçli kararlar almalarına ve sağlıklı bir yaşam tarzı sürdürmelerine yardımcı olma potansiyelini ortaya koyuyor. Ortamımızı kurmaktan görüntü işleme ve hızlı mühendislik tekniklerini uygulamaya kadar önemli adımları ele aldık. Uygulamanın Hugging Face'te konuşlandırılması, uygulamanın daha geniş bir kitleye erişilebilirliğini gösteriyor. Görüntü tanıma hataları gibi zorluklar, etkili istem mühendisliği gibi çözümlerle giderildi. Sonuç olarak Kalori Danışmanı Uygulaması, Üretken Yapay Zekanın refahı artırmadaki dönüştürücü gücünün bir kanıtıdır.

Önemli Noktalar

  • Şu ana kadar proje akışından başlayarak ve ardından büyük dil modeli Gemini Pro Vision'a temel bir giriş yaparak çok şey tartıştık.
  • Daha sonra uygulamalı olarak uygulamaya başladık. Sanal ortamımızı ve API anahtarımızı Google MakerSuite'ten oluşturduk.
  • Daha sonra oluşturulan sanal ortamda tüm kodlamalarımızı gerçekleştirdik. Ayrıca uygulamanın Hugging Face ve Streamlit Share gibi birden fazla platformda nasıl dağıtılacağını tartıştık.
  • Bunun dışında oluşabilecek olası sorunları da değerlendirdik ve bu sorunlara yönelik çözümleri tartıştık.
  •  Bu nedenle bu proje üzerinde çalışmak eğlenceliydi. Bu makalenin sonuna kadar kaldığınız için teşekkür ederiz; Umarım yeni bir şeyler öğrenmişsindir.

Sık Sorulan Sorular

Q1. Google Gemini Pro Vision Modeli Nedir?

Google, çok modlu yetenekleriyle tanınan ünlü bir Yüksek Lisans olan Gemini Pro Vision'ı geliştirdi. Görüntü altyazısı oluşturma, oluşturma ve özetleme gibi görevleri yerine getirir. Kullanıcılar Gemini Pro Vision'a erişmek için MakerSuite Web Sitesinde bir API anahtarı oluşturabilir.

Q2. Üretken Yapay Zeka Sağlık/Beslenme alanına nasıl uygulanabilir?

C. Üretken yapay zekanın gerçek dünyadaki sorunları çözme konusunda büyük bir potansiyeli var. Sağlık/beslenme alanına uygulanabileceği yollardan bazıları, doktorların semptomlara dayalı ilaç reçeteleri vermesine yardımcı olabilmesi ve kullanıcıların diyetleri için sağlıklı öneriler alabileceği bir beslenme danışmanı olarak hareket edebilmesidir.

Q3. Hızlı mühendislik, Üretken Yapay Zeka kullanımı durumunu nasıl çözer?

C. Hızlı mühendislik, günümüzde ustalaşmak için gerekli bir beceridir. Trompt mühendisliğini temelden ileri seviyeye kadar öğrenmek için en iyi yer burası - https://www.promptingguide.ai/

Q4. Modelin daha doğru çıktılar üretme yeteneği nasıl artırılır?

C. Modelin daha doğru çıktılar üretme yeteneğini artırmak için şu taktikleri kullanabiliriz: Etkili İstemde Bulunma, İnce Ayar ve Alma-Artırılmış Üretim (RAG).

Bu makalede gösterilen medya Analytics Vidhya'ya ait değildir ve Yazarın takdirine bağlı olarak kullanılır.

spot_img

En Son İstihbarat

spot_img