综合设计 ——多源异构数据采集与融合应用综合实践

综合设计 ——多源异构数据采集与融合应用综合实践

#综合设计 ——多源异构数据采集与融合应用综合实践 码云地址

这个项目属于哪个课程 <班级的链接>
组名、项目简介 组名:黑马楼:直面爬虫 项目需求:实现宠物具体种类的识别 项目目标:根据用户上传的文本和图片识别具体的宠物种类 项目开展技术路线:html,css,js,flask
团队成员学号 102202113许煊宇,102202103王文豪,102202148路治,102202129林伟宏,102102151黄靖,172209028伊晓,102202102王子聪,102202116李迦勒
这个项目的目标 根据用户上传的文本和图像,识别图像内容和文本信息,确定具体的宠物种类(例如:贵宾犬,比熊犬等)
其他参考文献 如何使用Python和大模型进行数据分析和文本生成 Python 调用常见大模型 API 全解析
#项目介绍
名称:福宠
背景:宠物在人们的生活中扮演着越来越重要的角色,对于宠物的准确识别和分类有助于宠物饲养者更好地了解宠物的品种等信息,同时也有利于宠物相关产业的精细化管理。
意义:传统的宠物识别方法主要依赖人工观察和经验判断,效率较低且准确性难以保证。随着大模型技术在图像识别和自然语言处理领域的快速发展,利用计算机视觉和自然语言处理技术实现宠物信息的自动识别和分类成为可能。本项目旨在设计并实现一个综合的宠物信息识别与分类系统,通过整合图像分类和文本分析技术,提高宠物信息识别的准确性和效率。
功能需求:
1.用户上传图片和文本:用户能够上传宠物的照片,并填写相关描述文本(生活习惯,性格特征等)。
2.图像处理与分析:通过调用星火认知大模型(图片理解)识别宠物种类(如狗、猫等)。
3.文本分析与匹配:通过调用星火认知大模型(spark4.0 ultra)分析文本描述,以补充图像分类的结果。
4.比对和分类:将图像和文本信息与本地数据库中的宠物信息进行比对,得出最终的宠物分类。
5.展示结果:将识别的宠物类型呈现给用户。
6.反馈机制:用户可以对分类结果提供反馈,帮助优化系统。

个人分工

1 后端API接口编写

from flask import Flask, render_template, request, jsonify, redirect
import os
import json

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')


@app.route('/upload', methods=['POST'or 'GET'])
def upload():
    text_data = request.form.get('text')
    image = request.files.get('image')
    if text_data and image:
        current_dir = os.getcwd()
        image_path = os.path.join(current_dir,'static', 'uploaded_image.jpg')

        # 确保'static'目录存在
        static_dir = os.path.join(current_dir,'static')
        if not os.path.exists(static_dir):
            os.makedirs(static_dir)

        image.save(image_path)

        data = {
            'text': text_data,
            'image_path': image_path
        }
        with open('data.json', 'w') as f:
            json.dump(data, f)

        return redirect('/result')
    return jsonify({"message": "Error in upload"})

@app.route('/result')
def result():
    try:
        with open('data.json', 'r') as f:
            data = json.load(f)
        return render_template('result.html', text=data['text'], image_path=data['image_path'])
    except Exception as e:
        return jsonify({"message": "Error reading data", "error": str(e)})


if __name__ == '__main__':
    app.run(debug=True)

    

2测试文件编写

import ImageUderstanding
import TextUnderstanding
import json
import os
from difflib import SequenceMatcher


def analyze_image():
    """
    调用图像分析相关代码的函数
    """
    appid_image = "12a87c9d"
    api_secret_image = "NjE5NDQ0MGQxMmM0YmU5ODRkNDM3NmZj"
    api_key_image = "aced078d1684e76684197c76ce66adcc"
    imageunderstanding_url_image = "wss://spark-api.cn-huabei-1.xf-yun.com/v2.1/image"

    question_image = ImageUderstanding.checklen(ImageUderstanding.getText("user", "图片里的动物是猫,还是狗。你只需回复我猫或者狗。"))
    answer_image = ""

    print("图像分析回答: ", end="")
    return ImageUderstanding.main(appid_image, api_key_image, api_secret_image, imageunderstanding_url_image, question_image)


def analyze_text():
    """
    调用文本分析相关代码的函数
    """
    # 设置相关参数
    url_text = "https://spark-api-open.xf-yun.com/v1/chat/completions"
    appid_text = "442e1010"
    api_secret_text = "YmE1OGQyZjJkMGQ0MDAyZDUxZjExNWVm"
    api_key_text = "87dfd1fd1743eb715ab6fe4d67da5313"

    data_text = {
        "model": "4.0Ultra",
        "max_tokens": 4096,
        "top_k": 4,
        "temperature": 0.5,
        "messages": [
            {
                "role": "system",
                "content": "你是一个能够根据用户输入的文字智能回答的ai,根据用户输入的文字以及要求来分析这段文字,总结这段文字内体现的情感,包括但不限于温和、好动、活泼、友善等,只要给我二字词语,最好提供三个词语。"
            },
            {
                "role": "user",
                "content": "我这个宠物很安分。"
            }
        ]
    }

    data_text["stream"] = True

    header_text = {
        "Authorization": "Bearer aQEgIGHCaCVlSeVoyFKh:daOBiYnDCjPHhkhqtPOg"
    }

    print("文本分析回答: ")
    response = TextUnderstanding.send_text_analysis_request(url_text, appid_text, api_secret_text, api_key_text, data_text,
                                                            header_text)
    return TextUnderstanding.process_text_analysis_response(response)



def read_json_file(file_path):
    """
    读取指定的JSON文件内容,并返回数据
    """
    with open(file_path, 'r', encoding='utf-8') as f:
        json_data = json.load(f)
    return json_data


def find_most_similar_data(text_result, json_data_list):
    """
    根据文本分析结果,在给定的JSON数据列表中找到相似度最高的数据
    """
    result_dict = {}
    text_words = text_result.split("、")
    i=0
    for data in json_data_list:
        id_value = data.get('id',i)  # 获取唯一标识字段的值
        keywords = data.get('关键词', [])
        i += 1
        count = 0
        for word in text_words:
            if word in keywords:
                count += 1
        result_dict[id_value] = count  # 使用唯一标识作为键

    sorted_results = sorted(result_dict.items(), key=lambda x: x[1], reverse=True)

    # 返回前五个相似度最高的结果对应的完整数据
    return [json_data_list[result[0]] for result in sorted_results[:5]]

if __name__ == "__main__":
    image_answer = analyze_image()
    print(image_answer)
    text_answer = analyze_text()
    print(text_answer)
    json_folder_path = os.path.join(os.getcwd(), 'chongwulist')
    if image_answer == "猫。":
        image_answer = "cat"
    if image_answer == "狗。":
        image_answer = "dog"
    json_file_name = f"{image_answer.lower()}.json"
    print(json_file_name)
    json_file_path = os.path.join(json_folder_path, json_file_name)

    if os.path.exists(json_file_path):
        json_data_list = read_json_file(json_file_path)
        most_similar_data = find_most_similar_data(text_answer, json_data_list)

        if most_similar_data:
            print("最相似的5个数据:")
            for data in most_similar_data:
                print("宠物名称:", data.get('宠物名称', '未找到宠物名称'))
        else:
            print("未找到与分析结果匹配的相关数据")
    else:
        print(f"未找到对应的JSON文件: {json_file_path}")

3帮助模型评估优化

  • 设计并实现模型评估指标,例如准确率、召回率、F1 值等,对模型性能进行评估。
  • 根据评估结果,对模型进行优化,例如调整超参数、增加训练数据、采用数据增强技术等,提高模型的性能。

个人心得

  • 在这次团队项目中 我学会了许多 如后端页面的布局整合分配 js api接口 大模型的协调 并懂得了团队协作的重要性
posted @ 2024-12-16 10:24  Yx114514  阅读(7)  评论(0编辑  收藏  举报