首页 > 其他分享 >基于YOLOv8目标检测与chef-transformer(T5)从图像创建食谱

基于YOLOv8目标检测与chef-transformer(T5)从图像创建食谱

时间:2024-09-26 15:53:35浏览次数:9  
标签:transformer image T5 recipe st chef names path model

前言

在本文中,将演示如何使用从Roboflow获得的开源产品数据来训练我的YOLOv8模型,然后将其与从Hugging Face获得的chef-transformer(T5)模型集成。应用程序的主要目标是将检测到的对象参数化地发送到语言模型,并在NLP和CV之间建立关系。
在这里插入图片描述

YOLOv8 目标检测

YOLOv8是由ultralytics公司在2023年1月10日开源的一款重量级更新版本,作为YOLOv5的继承者,它支持图像分类、物体检测和实例分割等任务。在开源之前,YOLOv8就已经受到了用户的热切期待。作为一个SOTA(State of the Art)模型,YOLOv8在前代YOLO系列的成功基础上,引入了多项创新,旨在进一步提升模型的性能和灵活性。这些创新包括一个全新的骨干网络、一个无Anchor的检测头,以及一个新型的损失函数,使得模型能够在从CPU到GPU的各种硬件平台上流畅运行。

ultralytics公司并没有将这个开源库命名为YOLOv8,而是选择了“ultralytics”这个名称。这样做的原因是,公司希望将这个库定位为一个算法框架,而不仅仅是一个特定的算法。ultralytics的主要特点是其可扩展性,它不仅能够支持YOLO系列模型,还旨在兼容非YOLO模型,并能够广泛应用于分类、分割、姿态估计等多种任务。

环境安装

conda create -n yolov8 python=3.8
activate ylolv8
conda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.7 -c pytorch -c nvidia
pip install ultralytics

从Roboflow获取YOLOv8训练数据

Roboflow 是一个资源丰富的平台,拥有超过2亿张图像和20多万个数据集,为训练模型提供了广泛的选择。它能够满足对水果和蔬菜图像数据的需求,以便训练我的模型。此外,Roboflow 提供了 Roboflow Health Check 模块,这是一个功能强大的模块,允许在训练模型之前进行深入分析。这有助于更好地理解所需数据,并确保使用最恰当的数据集。
在这里插入图片描述

导入库并定义需求

import os
import streamlit as st
from ultralytics import YOLO
from IPython.display import display, Image
from langchain import PromptTemplate, HuggingFaceHub, LLMChain

模型推理

使用模型预测测试图像,并将检测到的对象类别存储在变量中。

model = YOLO('C:\\Users\\batuh\\Desktop\\last_pr_best.pt')
results = model.predict(source='test.jpeg', conf=0.50, save = True)
unique_names = set()
names = model.names
for r in results:
    for c in r.boxes.cls:
        unique_names.add(names[int(c)])

print(unique_names)

以这种方式返回唯一类别并将像这样将它们传递给语言模型。

{'Potato', 'Garlic', 'Onion', 'Tomato', 'Green Chili'}

语言模型

pip install transformers

在语言模型中使用检测到的对象

使用Langchain库来训练了超过200万食谱的语言模型。在这里,将的YOLO模型检测到的对象作为文本输入,以便生成菜谱。

template = """Question: {question}: """
prompt = PromptTemplate(template=template, input_variables=["question"])
    
llm_chain = LLMChain(prompt=prompt, 
                     llm=HuggingFaceHub(repo_id="flax-community/t5-recipe-generation", 
                                    model_kwargs={"temperature": 0.3, "max_length": 512}))
    
question = ', '.join(unique_names)
recipe = llm_chain.run(question)

得到了一个不错的炸三角食谱,如下:

'title: samosas ingredients: 1 large potato 1 tbsp minced garlic 1 tbsp minced onion 1 tbsp minced tomato 1 tbsp minced green chili answer the call 1 tbsp do cook. directions: cut the potato into small cubes. add the minced garlic, minced onion, minced tomato, and minced green chili. mix well. heat a griddle or frying pan over medium heat. place the samosas on the griddle and cook until golden brown on both sides.'

使用Streamlit创建界面

使用Streamlit创建了一个交互式界面,Streamlit是一个开源的Python库,可以轻松创建和共享机器学习和数据科学项目的Web应用程序。

import os
import streamlit as st
from ultralytics import YOLO
from IPython.display import display, Image
from langchain import PromptTemplate, HuggingFaceHub, LLMChain

model_path = 'C:\\Users\\batuh\\Desktop\\last_pr_best.pt'


st.set_page_config(
    page_title="Recipe Generator",  
    page_icon="

标签:transformer,image,T5,recipe,st,chef,names,path,model
From: https://blog.csdn.net/matt45m/article/details/142556357

相关文章

  • 一个基于Transformer模型的中文问答系统926.1
    这个代码实现了一个基于Transformer模型的中文问答系统。以下是代码的主要功能和可能的完善方向:主要功能数据处理:代码首先定义了处理中文文本的函数,包括分词、构建词汇表、将句子转换为张量等。数据加载:从.jsonl或.json文件中加载问题和答案数据,并进行数据增强。模型定......
  • MT5016A-ASEMI三相整流桥MT5016A
    编辑:llMT5016A-ASEMI三相整流桥MT5016A型号:MT5016A品牌:ASEMI封装:D-63批号:2024+类型:三相整流桥电流(ID):50A电压(VF):1600V安装方式:直插式封装特性:大功率、整流方桥产品引线数量:4产品内部芯片个数:4产品内部芯片尺寸:MIL工作结温:-55℃~150℃功率:大功率包装方式:500/盒:3000/箱MT5016A应用领......
  • MT5016A-ASEMI三相整流桥MT5016A
    编辑:llMT5016A-ASEMI三相整流桥MT5016A型号:MT5016A品牌:ASEMI封装:D-63批号:2024+类型:三相整流桥电流(ID):50A电压(VF):1600V安装方式:直插式封装特性:大功率、整流方桥产品引线数量:4产品内部芯片个数:4产品内部芯片尺寸:MIL工作结温:-55℃~150℃功率:大功率包装方式:500/盒:3000......
  • PyQt5 使用 QLabel 实现对图片圆角或者圆形图片
    PyQt5使用QLabel实现对图片圆角或者圆形图片本文圆角实现代码,是基于Qt处理图片:设置图片圆角样式,支持全圆角和部分圆角这篇文章将C++用Python重写得到,感谢!!实现方法就是使用QPainter与QPainterPath,将原QPixmap对象,先裁剪出一个圆角QPixmap对象并返回,最后通过QLabel的setPixmap......
  • Pyqt5 修改表格排序箭头
    实现效果:代码fromchatgptimportsysfromPyQt5.QtWidgetsimportQApplication,QTableWidget,QTableWidgetItem,QVBoxLayout,QWidgetfromPyQt5.QtCoreimportQtclassTableDemo(QWidget):def__init__(self):super().__init__()#创建表......
  • EfficientViT(2023CVPR):具有级联组注意力的内存高效视觉Transformer!
    EfficientViT:MemoryEfficientVisionTransformerwithCascadedGroupAttentionEfficientViT:具有级联组注意力的内存高效视觉Transformer万文长字,请耐心观看~论文地址:https://arxiv.org/abs/2305.07027代码地址:Cream/EfficientViTatmain·microsoft/Cream......
  • QT5程序部署提示缺少Qt5系统库问题的解决方法 symbol lookup error /libQt5XcbQpa.so.
    https://blog.csdn.net/qq_29852231/article/details/128853681 QT5程序部署提示缺少Qt5系统库问题的解决方法问题:在用QT5.12开发程序后,部署至现场(Ubuntu18/20)发现提示缺少QT5的平台库(platform)或者系统提供的QT5平台库无法正常支撑程序运行解析:经过研究发现,即时将Platform文件......
  • CAS-ViT:用于高效移动应用的卷积加法自注意力视觉Transformer
    近年来,VisionTransformer(ViT)在计算机视觉领域取得了巨大突破。然而ViT模型通常计算复杂度高,难以在资源受限的移动设备上部署。为了解决这个问题,研究人员提出了ConvolutionalAdditiveSelf-attentionVisionTransformers(CAS-ViT),这是一种轻量级的ViT变体,旨在在效率和性......
  • TPAMI 2024 | SMART: 基于语法校准的多方面关系Transformer用于变化描述生成
    题目:SMART:Syntax-CalibratedMulti-AspectRelationTransformerforChangeCaptioningSMART:基于语法校准的多方面关系Transformer用于变化描述生成作者:YunbinTu;LiangLi;LiSu;Zheng-JunZha;QingmingHuang摘要变化描述生成旨在描述两幅相似图像之间的语......
  • 模型压缩:CNN和Transformer通用,修剪后精度几乎无损,速度提升40%
    前言随着目标检测的蓬勃发展,近年来提出了几种深度卷积神经网络模型,例如R-CNN、SSD和YOLO等。然而,随着网络变得越来越复杂,这些模型的规模不断增加,这使得在现实生活中将这些模型部署到嵌入式设备上变得越来越困难。因此,开发一种高效快速的物体检测模型以在不影响目标检测质量的情况下......