Xây dựng máy dò chất lượng thực phẩm dựa trên Deep Learning

Xây dựng máy dò chất lượng thực phẩm dựa trên Deep Learning

Nút nguồn: 2501916

Giới thiệu

Trong thế giới giao hàng thực phẩm địa phương có nhịp độ phát triển nhanh chóng ngày nay, việc đảm bảo sự hài lòng của khách hàng là chìa khóa đối với các công ty. Những người chơi lớn như Zomato và Swiggy thống trị ngành này. Khách hàng mong đợi thực phẩm tươi sống; nếu họ nhận được những món đồ bị hư hỏng, họ sẽ đánh giá cao một phiếu hoàn tiền hoặc giảm giá. Tuy nhiên, việc xác định độ tươi của thực phẩm theo cách thủ công gây khó khăn cho khách hàng và nhân viên công ty. Một giải pháp là tự động hóa quá trình này bằng các mô hình Deep Learning. Những mô hình này có thể dự đoán độ tươi của thực phẩm, chỉ cho phép nhân viên xem xét các khiếu nại được gắn cờ để xác nhận lần cuối. Nếu mô hình xác nhận độ tươi của thực phẩm, nó có thể tự động loại bỏ khiếu nại. Trong bài viết này, chúng tôi sẽ xây dựng Máy dò chất lượng thực phẩm bằng cách sử dụng Deep Learning.

Deep Learning, một tập hợp con của trí tuệ nhân tạo, mang lại tiện ích đáng kể trong bối cảnh này. Cụ thể, CNN (Mạng thần kinh chuyển đổi) có thể được sử dụng để đào tạo các mô hình sử dụng hình ảnh thực phẩm để nhận biết độ tươi của chúng. Độ chính xác của mô hình của chúng tôi hoàn toàn phụ thuộc vào chất lượng của tập dữ liệu. Lý tưởng nhất là việc kết hợp hình ảnh thực phẩm thực tế từ các khiếu nại chatbot của người dùng trong các ứng dụng phân phối thực phẩm siêu địa phương sẽ nâng cao đáng kể độ chính xác. Tuy nhiên, do thiếu quyền truy cập vào dữ liệu đó, chúng tôi dựa vào tập dữ liệu được sử dụng rộng rãi được gọi là “tập dữ liệu Phân loại mới và thối”, có thể truy cập được trên Kaggle. Để khám phá toàn bộ mã học sâu, chỉ cần nhấp vào nút “Sao chép & Chỉnh sửa” được cung cấp tại đây.

Mục tiêu học tập

  • Tìm hiểu tầm quan trọng của chất lượng thực phẩm đối với sự hài lòng của khách hàng và tăng trưởng kinh doanh.
  • Khám phá cách deep learning hỗ trợ việc xây dựng máy dò chất lượng thực phẩm.
  • Tích lũy kinh nghiệm thực tế thông qua việc triển khai từng bước mô hình này.
  • Hiểu những thách thức và giải pháp liên quan đến việc thực hiện nó.

Bài báo này đã được xuất bản như một phần của Blogathon Khoa học Dữ liệu.

Mục lục

Hiểu cách sử dụng Deep Learning trong Máy dò chất lượng thực phẩm

Học kĩ càng, một tập hợp con của Trí tuệ nhân tạo, chủ yếu sử dụng các bộ dữ liệu không gian để xây dựng các mô hình. Mạng lưới thần kinh trong Deep Learning được sử dụng để đào tạo các mô hình này, mô phỏng chức năng của bộ não con người.

Hiểu học sâu
Nguồn: cổng nghiên cứu

Trong bối cảnh phát hiện chất lượng thực phẩm, việc đào tạo các mô hình deep learning với bộ hình ảnh thực phẩm phong phú là điều cần thiết để phân biệt chính xác giữa các mặt hàng thực phẩm chất lượng tốt và kém. Chúng tôi có thể làm điều chỉnh siêu tham số dựa trên dữ liệu đang được cung cấp để làm cho mô hình chính xác hơn. 

Tầm quan trọng của chất lượng thực phẩm trong giao hàng siêu địa phương

Việc tích hợp tính năng này vào dịch vụ giao đồ ăn siêu địa phương mang lại một số lợi ích. Mô hình tránh thiên vị đối với các khách hàng cụ thể và dự đoán chính xác, từ đó giảm thời gian giải quyết khiếu nại. Ngoài ra, chúng tôi có thể sử dụng tính năng này trong quá trình đóng gói đơn hàng để kiểm tra chất lượng thực phẩm trước khi giao hàng, đảm bảo khách hàng luôn nhận được thực phẩm tươi sống.

Tầm quan trọng của chất lượng thực phẩm trong giao hàng siêu địa phương
Nguồn: Tác giả

Phát triển máy dò chất lượng thực phẩm

Để xây dựng hoàn chỉnh tính năng này, chúng ta cần làm theo nhiều bước như lấy và làm sạch tập dữ liệu, huấn luyện mô hình học sâu, Đánh giá hiệu suất và thực hiện điều chỉnh siêu tham số và cuối cùng là lưu mô hình vào h5 định dạng. Sau này, chúng ta có thể triển khai giao diện người dùng bằng cách sử dụng Phản ứngvà phần phụ trợ sử dụng khung của Python django. Chúng tôi sẽ sử dụng Django để xử lý việc tải lên hình ảnh và xử lý nó. 

Phát triển máy dò chất lượng thực phẩm
Phát triển máy dò chất lượng thực phẩm

Giới thiệu về Dataset

Trước khi đi sâu vào quá trình tiền xử lý dữ liệu và xây dựng mô hình, điều quan trọng là phải hiểu tập dữ liệu. Như đã thảo luận trước đó, chúng tôi sẽ sử dụng tập dữ liệu từ Kaggle có tên Phân loại thực phẩm tươi và thối. Bộ dữ liệu này được chia thành hai loại chính có tên TrainThử nghiệm cái nào được sử dụng cho mục đích đào tạo và kiểm tra tương ứng. Trong thư mục tàu hỏa, chúng ta có 9 thư mục con trái cây tươi, rau tươi và 9 thư mục con trái cây thối, rau thối.

Giới thiệu về Dataset

Các tính năng chính của Bộ dữ liệu

  • Hình ảnh đa dạng: Tập dữ liệu này chứa rất nhiều hình ảnh món ăn với nhiều biến thể về góc độ, phông nền và điều kiện ánh sáng. Điều này giúp mô hình không bị sai lệch và chính xác hơn.
  • Hình ảnh chất lượng cao: Bộ dữ liệu này có hình ảnh chất lượng rất tốt được chụp bởi nhiều máy ảnh chuyên nghiệp khác nhau.

Tải và chuẩn bị dữ liệu

Trong phần này, trước tiên chúng ta sẽ tải hình ảnh bằng cách sử dụng 'tensorflow.keras.preprocessing.image.tải_img' chức năng và hiển thị hình ảnh bằng thư viện matplotlib. Việc xử lý trước những hình ảnh này để đào tạo mô hình thực sự quan trọng. Điều này liên quan đến việc làm sạch và sắp xếp các hình ảnh để phù hợp với mô hình. 

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)
Tải và chuẩn bị dữ liệu

Bây giờ hãy tải hình ảnh huấn luyện và kiểm tra vào các biến. Chúng tôi sẽ thay đổi kích thước tất cả hình ảnh thành cùng chiều cao và chiều rộng 180. 

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')
OUTPUT

Xây dựng mô hình

Bây giờ, hãy xây dựng mô hình học sâu bằng thuật toán Tuần tự từ 'tensorflow.keras'. Chúng tôi sẽ thêm 3 lớp chập và trình tối ưu hóa Adam. Trước khi đi sâu vào phần thực tế, trước tiên chúng ta hãy hiểu các thuật ngữ 'Mô hình tuần tự','Trình tối ưu hóa Adam', và'Lớp tích chập' nghĩa là.

Mô hình tuần tự

Mô hình tuần tự bao gồm một chồng các lớp, cung cấp cấu trúc cơ bản trong Keras. Điều này lý tưởng cho các tình huống trong đó mạng thần kinh của bạn có một tensor đầu vào duy nhất và một tensor đầu ra duy nhất. Bạn thêm các lớp theo thứ tự thực hiện tuần tự, làm cho nó phù hợp để xây dựng các mô hình đơn giản với các lớp xếp chồng lên nhau. Sự đơn giản này làm cho mô hình tuần tự trở nên hữu ích và dễ thực hiện hơn.

Trình tối ưu hóa Adam

Chữ viết tắt của Adam là 'Ước tính thời điểm thích ứng'. Nó phục vụ như một thuật toán tối ưu hóa thay thế cho việc giảm độ dốc ngẫu nhiên, cập nhật trọng số mạng lặp đi lặp lại. Adam Optimizer có lợi vì nó duy trì tốc độ học tập (LR) cho mỗi trọng lượng mạng, điều này thuận lợi trong việc xử lý nhiễu trong dữ liệu.

Lớp chập (Conv2D)

Nó là thành phần chính của Mạng thần kinh chuyển đổi (CNN). Nó chủ yếu được sử dụng để xử lý các tập dữ liệu không gian như hình ảnh. Lớp này áp dụng hàm tích chập hoặc thao tác cho đầu vào và sau đó chuyển kết quả sang lớp tiếp theo.

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)

Kiểm tra máy dò chất lượng thực phẩm

Bây giờ, hãy kiểm tra mô hình bằng cách cho nó một hình ảnh thực phẩm mới và xem nó có thể phân loại thực phẩm tươi và thực phẩm thối chính xác đến mức nào. 

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)
OUTPUT

Như chúng ta có thể thấy mô hình đã dự đoán chính xác. Như chúng tôi đã đưa ra cam thối hình ảnh làm đầu vào, mô hình đã dự đoán chính xác nó như .

Đối với mã frontend(React) và backend(Django), bạn có thể xem mã hoàn chỉnh của tôi trên GitHub tại đây: liên kết 

Máy dò chất lượng thực phẩm
Máy dò chất lượng thực phẩm
Máy dò chất lượng thực phẩm
Máy dò chất lượng thực phẩm

Kết luận

Tóm lại, để tự động hóa các khiếu nại về chất lượng thực phẩm trong ứng dụng Hyperlocal Delivery, chúng tôi đề xuất xây dựng mô hình học sâu được tích hợp với ứng dụng web. Tuy nhiên, do dữ liệu huấn luyện còn hạn chế nên mô hình có thể không phát hiện chính xác mọi hình ảnh món ăn. Việc triển khai này đóng vai trò là bước nền tảng hướng tới một giải pháp lớn hơn. Việc truy cập vào hình ảnh do người dùng tải lên theo thời gian thực trong các ứng dụng này sẽ nâng cao đáng kể độ chính xác của mô hình của chúng tôi.

Chìa khóa chính

  • Chất lượng thực phẩm đóng một vai trò quan trọng trong việc đạt được sự hài lòng của khách hàng trong thị trường giao đồ ăn siêu địa phương.
  • Bạn có thể sử dụng công nghệ Deep Learning để đào tạo công cụ dự đoán chất lượng thực phẩm chính xác.
  • Bạn đã có được trải nghiệm thực tế nhờ hướng dẫn từng bước này để xây dựng ứng dụng web.
  • Bạn đã hiểu tầm quan trọng của chất lượng của tập dữ liệu để xây dựng một mô hình chính xác.

Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định riêng của Tác giả.

Dấu thời gian:

Thêm từ Phân tích Vidhya