Zephyrnet Logosu

Derin Öğrenme Tabanlı Bir Gıda Kalitesi Dedektörü Oluşturma

Tarih:

Giriş

Günümüzün hızlı tempolu yerel gıda teslimatı dünyasında, müşteri memnuniyetini sağlamak şirketler için çok önemlidir. Zomato ve Swiggy gibi büyük oyuncular bu sektöre hakim durumda. Müşteriler taze yiyecek bekler; Şımarık ürünler alırlarsa para iadesi veya indirim kuponu almaktan memnun olurlar. Ancak gıda tazeliğinin manuel olarak belirlenmesi müşteriler ve şirket personeli için zahmetlidir. Çözümlerden biri, Derin Öğrenme modellerini kullanarak bu süreci otomatikleştirmektir. Bu modeller gıda tazeliğini tahmin edebiliyor ve yalnızca işaretlenen şikayetlerin çalışanlar tarafından nihai doğrulama için incelenmesine olanak tanıyor. Model gıdanın tazeliğini doğrularsa şikayeti otomatik olarak reddedebilir. Bu yazıda Derin Öğrenmeyi kullanarak bir Gıda Kalitesi Dedektörü oluşturacağız.

Yapay zekanın bir alt kümesi olan Derin Öğrenme, bu bağlamda önemli faydalar sunmaktadır. Spesifik olarak, CNN'ler (Evrişimli Sinir Ağları), tazeliklerini ayırt etmek için gıda resimlerini kullanan modelleri eğitmek için kullanılabilir. Modelimizin doğruluğu tamamen veri setinin kalitesine bağlıdır. İdeal olarak, kullanıcıların chatbot şikayetlerinden elde edilen gerçek yiyecek görsellerinin yerel yemek dağıtım uygulamalarına dahil edilmesi, doğruluğu büyük ölçüde artıracaktır. Ancak bu tür verilere erişimimiz olmadığından, Kaggle'da erişilebilen, "Taze ve Çürük Sınıflandırma veri kümesi" olarak bilinen, yaygın olarak kullanılan bir veri kümesine güveniyoruz. Derin öğrenme kodunun tamamını keşfetmek için sağlanan "Kopyala ve Düzenle" düğmesini tıklamanız yeterlidir. okuyun.

Öğrenme hedefleri

  • Müşteri memnuniyeti ve iş büyümesinde gıda kalitesinin önemini öğrenin.
  • Gıda kalitesi dedektörünün oluşturulmasında derin öğrenmenin nasıl yardımcı olduğunu keşfedin.
  • Bu modelin adım adım uygulanmasıyla uygulamalı deneyim edinin.
  • Uygulamayla ilgili zorlukları ve çözümleri anlayın.

Bu makale, Veri Bilimi Blogatonu.

İçindekiler

Gıda Kalitesi Dedektöründe Derin Öğrenmenin Kullanımının Anlaşılması

Derin Öğrenme, altkümesi Yapay Zeka, modelleri oluşturmak için öncelikle mekansal veri kümelerini kullanır. Derin Öğrenme içindeki sinir ağları, insan beyninin işlevselliğini taklit eden bu modelleri eğitmek için kullanılır.

Derin Öğrenmeyi Anlamak
Kaynak: araştırma kapısı

Gıda kalitesinin tespiti bağlamında, iyi ve kötü kaliteli gıda maddeleri arasında doğru bir şekilde ayrım yapmak için kapsamlı gıda görüntüleri setleriyle derin öğrenme modellerinin eğitilmesi çok önemlidir. Biz yapabiliriz hiperparametre ayarı modeli daha doğru hale getirmek için beslenen verilere dayanmaktadır. 

Yerel Ötesi Teslimatta Gıda Kalitesinin Önemi

Bu özelliğin hiperlokal gıda dağıtımına entegre edilmesi çeşitli faydalar sağlar. Model, belirli müşterilere karşı önyargıyı önler ve doğru tahminler yaparak şikayet çözüm süresini kısaltır. Ek olarak, sipariş paketleme süreci sırasında teslimattan önce gıda kalitesini denetlemek ve müşterilerin sürekli olarak taze gıda almasını sağlamak için bu özelliği kullanabiliriz.

Yerel Ötesi Teslimatta Gıda Kalitesinin Önemi
Kaynak: Yazar

Bir Gıda Kalitesi Dedektörünün Geliştirilmesi

Bu özelliği tamamen oluşturabilmek için veri setini alıp temizlemek, derin öğrenme modelini eğitmek, performansı değerlendirmek ve hiperparametre ayarlaması yapmak ve son olarak modeli kaydetmek gibi birçok adımı izlememiz gerekiyor. h5 biçim. Bundan sonra ön ucu kullanarak uygulayabiliriz. Reactve Python'un çerçevesini kullanan arka uç django. Görüntü yüklemeyi gerçekleştirmek ve işlemek için Django'yu kullanacağız. 

Bir Gıda Kalitesi Dedektörünün Geliştirilmesi
Bir Gıda Kalitesi Dedektörünün Geliştirilmesi

Veri Kümesi Hakkında

Veri ön işleme ve model oluşturmaya derinlemesine girmeden önce veri kümesini anlamak çok önemlidir. Daha önce tartışıldığı gibi, Kaggle'ın adlı veri kümesini kullanacağız. Taze ve Çürük Gıdaların Sınıflandırılması. Bu veri seti iki ana kategoriye ayrılmıştır: Tren ve test hangi sırasıyla eğitim ve test amaçlı kullanılır. Tren klasörünün altında taze meyve ve taze sebzelerden oluşan 9 alt klasörümüz ve çürük meyveler ve çürük sebzelerden oluşan 9 alt klasörümüz var.

Veri Kümesi Hakkında

Veri Kümesinin Temel Özellikleri

  • Görüntü Çeşitliliği: Bu veri seti açı, arka plan ve aydınlatma koşulları açısından çok fazla çeşitlilik gösteren çok sayıda yiyecek görseli içeriyor. Bu, modelin önyargılı olmamasına ve daha doğru olmasına yardımcı olur.
  • Yüksek Kaliteli Görüntüler: Bu veri kümesinde çeşitli profesyonel kameralar tarafından çekilen çok iyi kalitede görüntüler bulunmaktadır.

Veri Yükleme ve Hazırlama

Bu bölümde öncelikle görselleri ' kullanarak yükleyeceğiz.tensorflow.keras.preprocessing.image.load_img' işlevini kullanın ve matplotlib kütüphanesini kullanarak görüntüleri görselleştirin. Bu görüntülerin model eğitimi için ön işlenmesi gerçekten önemlidir. Bu, modele uygun hale getirmek için görüntülerin temizlenmesini ve düzenlenmesini içerir. 

import os
import matplotlib.pyplot as plt
from tensorflow.keras.preprocessing.image import load_img

def visualize_sample_images(dataset_dir, categories):
    n = len(categories)
    fig, axs = plt.subplots(1, n, figsize=(20, 5))
    for i, category in enumerate(categories):
        folder = os.path.join(dataset_dir, category)
        image_file = os.listdir(folder)[0]
        img_path = os.path.join(folder, image_file)
        img = load_img(img_path)
        axs[i].imshow(img)
        axs[i].set_title(category)
    plt.tight_layout()
    plt.show()

dataset_base_dir = '/kaggle/input/fresh-and-stale-classification/dataset'  
train_dir = os.path.join(dataset_base_dir, 'Train')
categories = ['freshapples', 'rottenapples', 'freshbanana', 'rottenbanana']  
visualize_sample_images(train_dir, categories)
Veri Yükleme ve Hazırlama

Şimdi eğitim ve test görsellerini değişkenlere yükleyelim. Tüm görselleri aynı yükseklik ve genişlikte 180 olacak şekilde yeniden boyutlandıracağız. 

from tensorflow.keras.preprocessing.image import ImageDataGenerator

batch_size = 32
img_height = 180
img_width = 180

train_datagen = ImageDataGenerator(
    rescale=1./255,
    rotation_range=40,
    width_shift_range=0.2,
    height_shift_range=0.2,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True,
    fill_mode='nearest',
    validation_split=0.2)  

train_generator = train_datagen.flow_from_directory(
    train_dir,
    target_size=(img_height, img_width),
    batch_size=batch_size,
    class_mode='binary',  
    subset='training')

validation_generator = train_datagen.flow_from_directory(
    train_dir,
    target_size=(img_height, img_width),
    batch_size=batch_size,
    class_mode='binary',
    subset='validation')
ÇIKTI

Model Binası

Şimdi 'tensorflow.keras'taki Sıralı algoritmayı kullanarak derin öğrenme modelini oluşturalım. 3 evrişim katmanı ve bir Adam iyileştirici ekleyeceğiz. Pratik kısma geçmeden önce ' terimlerinin ne olduğunu anlayalım.Sıralı Model''Adam Optimize Edici', ve 'Evrişim Katmanı' Anlam.

Sıralı Model

Sıralı model, Keras'ta temel bir yapı sunan bir katman yığınından oluşur. Sinir ağınızın tek bir giriş tensörüne ve tek bir çıkış tensörüne sahip olduğu senaryolar için idealdir. Katmanları sıralı yürütme sırasına göre eklersiniz, bu da onu yığılmış katmanlara sahip basit modeller oluşturmaya uygun hale getirir. Bu basitlik, sıralı modeli son derece kullanışlı ve uygulanması daha kolay hale getirir.

Adam Optimize Edici

Adam'ın kısaltması 'Uyarlanabilir Moment Tahmini'dir. Ağ ağırlıklarını yinelemeli olarak güncelleyerek stokastik gradyan inişine alternatif bir optimizasyon algoritması görevi görür. Adam Optimizer, her ağ ağırlığı için bir öğrenme oranını (LR) koruduğu için faydalıdır; bu, verilerdeki gürültünün işlenmesinde avantaj sağlar.

Evrişimsel Katman (Conv2D)

Evrişimsel Sinir Ağlarının (CNN'ler) ana bileşenidir. Esas olarak görüntüler gibi mekansal veri kümelerinin işlenmesi için kullanılır. Bu katman girişe bir evrişim fonksiyonu veya işlemi uygular ve ardından sonucu bir sonraki katmana iletir.

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout

model = Sequential([
    Conv2D(32, (3, 3), activation='relu', input_shape=(img_height, img_width, 3)),
    MaxPooling2D(2, 2),
    Conv2D(64, (3, 3), activation='relu'),
    MaxPooling2D(2, 2),
    Conv2D(128, (3, 3), activation='relu'),
    MaxPooling2D(2, 2),
    Flatten(),
    Dense(512, activation='relu'),
    Dropout(0.5),
    Dense(1, activation='sigmoid')  
])

model.compile(optimizer='adam',
              loss='binary_crossentropy',  
              metrics=['accuracy'])

epochs = 10
history = model.fit(
    train_generator,
    steps_per_epoch=train_generator.samples // batch_size,
    epochs=epochs,
    validation_data=validation_generator,
    validation_steps=validation_generator.samples // batch_size)

Gıda Kalitesi Dedektörünün Test Edilmesi

Şimdi modele yeni bir yiyecek imajı vererek test edelim ve ne kadar doğru bir şekilde taze ve çürük yiyecek olarak sınıflandırabildiğini görelim. 

from tensorflow.keras.preprocessing import image
import numpy as np

def classify_image(image_path, model):
    img = image.load_img(image_path, target_size=(img_height, img_width))
    img_array = image.img_to_array(img)
    img_array = np.expand_dims(img_array, axis=0)  
    img_array /= 255.0

    predictions = model.predict(img_array)
    if predictions[0] > 0.5:
        print("Rotten")
    else:
        print("Fresh")


image_path = '/kaggle/input/fresh-and-stale-classification/dataset/Train/
rottenoranges/Screen Shot 2018-06-12 at 11.18.28 PM.png'  
classify_image(image_path, model)
ÇIKTI

Görüldüğü gibi model doğru tahminde bulunmuştur. verdiğimiz gibi çürük turuncu girdi olarak görüntü modelin bunu doğru bir şekilde tahmin etmesi Çürümüş.

Ön uç (React) ve arka uç (Django) kodu için kodumun tamamını GitHub'da burada görebilirsiniz: Link 

Gıda Kalitesi Dedektörü
Gıda Kalitesi Dedektörü
Gıda Kalitesi Dedektörü
Gıda Kalitesi Dedektörü

Sonuç

Sonuç olarak, Hyperlocal Delivery uygulamalarında gıda kalitesi şikayetlerini otomatikleştirmek için bir web uygulamasıyla entegre bir derin öğrenme modeli oluşturmayı öneriyoruz. Ancak sınırlı eğitim verileri nedeniyle model her yiyecek görüntüsünü doğru şekilde tespit edemeyebilir. Bu uygulama daha büyük bir çözüme doğru temel bir adım olarak hizmet ediyor. Bu uygulamalardaki gerçek zamanlı kullanıcı tarafından yüklenen görsellere erişim, modelimizin doğruluğunu önemli ölçüde artıracaktır.

Önemli Noktalar

  • Gıda Kalitesi, yerel gıda dağıtım pazarında müşteri memnuniyetinin sağlanmasında kritik bir rol oynamaktadır.
  • Doğru bir gıda kalitesi tahmincisi yetiştirmek için Derin Öğrenme teknolojisini kullanabilirsiniz.
  • Web uygulamasını oluşturmaya yönelik bu adım adım kılavuzla uygulamalı deneyim kazandınız.
  • Doğru bir model oluşturmak için veri kümesinin kalitesinin önemini anladınız.

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