当前位置: 首页 > news >正文

Python实例题:基于 TensorFlow 的图像识别与分类系统

目录

Python实例题

题目

问题描述

解题思路

关键代码框架

难点分析

扩展方向

Python实例题

题目

基于 TensorFlow 的图像识别与分类系统

问题描述

开发一个基于 TensorFlow 的图像识别与分类系统,包含以下功能:

  • 图像分类模型:基于预训练模型的图像分类器
  • 数据处理与增强:图像预处理和数据增强
  • 模型训练与评估:自定义数据集上的模型训练
  • API 服务:提供图像识别的 RESTful API
  • 前端界面:用户上传图像并获取分类结果

解题思路

  • 使用 TensorFlow 和 Keras 构建深度学习模型
  • 基于预训练模型(如 ResNet、VGG、EfficientNet)进行迁移学习
  • 设计数据处理和增强管道
  • 使用 Flask 或 FastAPI 构建 API 服务
  • 开发前端界面实现图像上传和结果展示

关键代码框架

import tensorflow as tf
from tensorflow.keras.applications import ResNet50, EfficientNetB0
from tensorflow.keras.layers import Dense, GlobalAveragePooling2D
from tensorflow.keras.models import Model
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint
import numpy as np
import os
from flask import Flask, request, jsonify, render_template
from PIL import Image
import io
import base64# 配置参数
IMAGE_SIZE = (224, 224)
BATCH_SIZE = 32
NUM_CLASSES = 10  # 根据实际数据集调整
EPOCHS = 50
BASE_MODEL = 'efficientnet'  # 可选 'resnet' 或 'efficientnet'# 创建数据增强和预处理
def create_data_generators(train_dir, val_dir):# 训练数据生成器(包含数据增强)train_datagen = ImageDataGenerator(rescale=1./255,rotation_range=20,width_shift_range=0.2,height_shift_range=0.2,shear_range=0.2,zoom_range=0.2,horizontal_flip=True,fill_mode='nearest')# 验证数据生成器(仅缩放)val_datagen = ImageDataGenerator(rescale=1./255)# 生成训练数据train_generator = train_datagen.flow_from_directory(train_dir,target_size=IMAGE_SIZE,batch_size=BATCH_SIZE,class_mode='categorical')# 生成验证数据val_generator = val_datagen.flow_from_directory(val_dir,target_size=IMAGE_SIZE,batch_size=BATCH_SIZE,class_mode='categorical')return train_generator, val_generator# 构建模型
def build_model(input_shape, num_classes, base_model_type='efficientnet'):# 选择基础模型if base_model_type == 'resnet':base_model = ResNet50(weights='imagenet',include_top=False,input_shape=input_shape)else:  # efficientnetbase_model = EfficientNetB0(weights='imagenet',include_top=False,input_shape=input_shape)# 冻结基础模型的所有层for layer in base_model.layers:layer.trainable = False# 添加自定义层x = base_model.outputx = GlobalAveragePooling2D()(x)x = Dense(1024, activation='relu')(x)predictions = Dense(num_classes, activation='softmax')(x)# 构建最终模型model = Model(inputs=base_model.input, outputs=predictions)# 编译模型model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])return model# 模型微调(解冻部分层)
def fine_tune_model(model, num_layers_to_unfreeze=20):# 解冻最后几层for layer in model.layers[-num_layers_to_unfreeze:]:layer.trainable = True# 重新编译模型,使用较低的学习率model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=1e-5),loss='categorical_crossentropy',metrics=['accuracy'])return model# 训练模型
def train_model(model, train_generator, val_generator, epochs=EPOCHS, model_path='model.h5'):# 设置回调函数callbacks = [EarlyStopping(monitor='val_loss', patience=5, restore_best_weights=True),ModelCheckpoint(model_path, monitor='val_accuracy', save_best_only=True)]# 训练模型history = model.fit(train_generator,steps_per_epoch=train_generator.samples // BATCH_SIZE,validation_data=val_generator,validation_steps=val_generator.samples // BATCH_SIZE,epochs=epochs,callbacks=callbacks)return history, model# 预测函数
def predict_image(model, image_path=None, image_bytes=None, class_names=None):# 从文件路径或字节数据加载图像if image_path:img = Image.open(image_path).convert('RGB')elif image_bytes:img = Image.open(io.BytesIO(image_bytes)).convert('RGB')else:raise ValueError("必须提供图像路径或图像字节数据")# 调整图像大小img = img.resize(IMAGE_SIZE)# 转换为numpy数组并归一化img_array = np.array(img) / 255.0img_array = np.expand_dims(img_array, axis=0)# 预测predictions = model.predict(img_array)predicted_class = np.argmax(predictions[0])confidence = np.max(predictions[0])# 获取类别名称if class_names and predicted_class < len(class_names):class_name = class_names[predicted_class]else:class_name = f"Class {predicted_class}"return {"class": class_name,"confidence": float(confidence),"all_predictions": predictions.tolist()[0]}# 创建Flask应用
app = Flask(__name__)# 加载模型和类别名称
model = None
class_names = None@app.before_first_request
def load_model_and_classes():global model, class_names# 加载训练好的模型model = tf.keras.models.load_model('model.h5')# 加载类别名称(从训练数据生成或手动定义)if os.path.exists('class_names.txt'):with open('class_names.txt', 'r') as f:class_names = [line.strip() for line in f.readlines()]@app.route('/')
def index():return render_template('index.html')@app.route('/predict', methods=['POST'])
def predict():try:# 获取上传的图像file = request.files['image']if not file:return jsonify({"error": "未提供图像文件"}), 400# 读取图像数据image_bytes = file.read()# 进行预测result = predict_image(model, image_bytes=image_bytes, class_names=class_names)return jsonify(result)except Exception as e:return jsonify({"error": str(e)}), 500@app.route('/train', methods=['POST'])
def train():try:# 获取训练配置data = request.jsontrain_dir = data.get('train_dir', 'data/train')val_dir = data.get('val_dir', 'data/val')epochs = data.get('epochs', EPOCHS)base_model = data.get('base_model', BASE_MODEL)# 创建数据生成器train_generator, val_generator = create_data_generators(train_dir, val_dir)# 构建模型model = build_model((*IMAGE_SIZE, 3), train_generator.num_classes, base_model)# 训练模型history, model = train_model(model, train_generator, val_generator, epochs)# 保存类别名称class_names = list(train_generator.class_indices.keys())with open('class_names.txt', 'w') as f:f.write('\n'.join(class_names))return jsonify({"message": "模型训练完成","classes": class_names})except Exception as e:return jsonify({"error": str(e)}), 500# 前端模板 (index.html)
<!DOCTYPE html>
<html>
<head><title>图像分类系统</title><style>body {font-family: Arial, sans-serif;max-width: 800px;margin: 0 auto;padding: 20px;text-align: center;}.container {background-color: #f5f5f5;padding: 20px;border-radius: 10px;box-shadow: 0 0 10px rgba(0,0,0,0.1);}h1 {color: #333;}.upload-area {margin: 20px 0;}.upload-btn {background-color: #4CAF50;color: white;padding: 10px 20px;border: none;border-radius: 5px;cursor: pointer;}.upload-btn:hover {background-color: #45a049;}.result-area {margin-top: 20px;padding: 15px;background-color: #fff;border-radius: 5px;min-height: 100px;}.image-preview {max-width: 100%;height: auto;margin: 20px 0;border-radius: 5px;}</style>
</head>
<body><div class="container"><h1>图像分类系统</h1><div class="upload-area"><input type="file" id="imageUpload" accept="image/*" style="display: none;"><button class="upload-btn" onclick="document.getElementById('imageUpload').click()">选择图像</button><button class="upload-btn" id="predictBtn" onclick="predictImage()" disabled>预测</button></div><div><img id="imagePreview" class="image-preview" src="" alt="图像预览"></div><div class="result-area" id="resultArea"><p>请上传一张图像进行分类</p></div></div><script>let selectedImage = null;document.getElementById('imageUpload').addEventListener('change', function(e) {if (this.files && this.files[0]) {const reader = new FileReader();reader.onload = function(e) {document.getElementById('imagePreview').src = e.target.result;document.getElementById('resultArea').innerHTML = '<p>图像已加载,请点击预测按钮</p>';document.getElementById('predictBtn').disabled = false;selectedImage = this.files[0];}.bind(this);reader.readAsDataURL(this.files[0]);}});function predictImage() {if (!selectedImage) {alert('请先选择一张图像');return;}const formData = new FormData();formData.append('image', selectedImage);document.getElementById('resultArea').innerHTML = '<p>正在预测,请稍候...</p>';fetch('/predict', {method: 'POST',body: formData}).then(response => response.json()).then(data => {if (data.error) {document.getElementById('resultArea').innerHTML = `<p>错误: ${data.error}</p>`;} else {let resultHTML = `<h3>预测结果</h3>`;resultHTML += `<p>类别: ${data.class}</p>`;resultHTML += `<p>置信度: ${(data.confidence * 100).toFixed(2)}%</p>`;document.getElementById('resultArea').innerHTML = resultHTML;}}).catch(error => {document.getElementById('resultArea').innerHTML = `<p>错误: ${error.message}</p>`;});}</script>
</body>
</html># 训练脚本示例
if __name__ == "__main__":# 创建数据生成器train_generator, val_generator = create_data_generators('data/train', 'data/val')# 构建模型model = build_model((*IMAGE_SIZE, 3), train_generator.num_classes, BASE_MODEL)# 训练模型print("开始训练基础模型...")history, model = train_model(model, train_generator, val_generator, EPOCHS, 'base_model.h5')# 模型微调print("开始微调模型...")model = fine_tune_model(model)history, model = train_model(model, train_generator, val_generator, EPOCHS//2, 'fine_tuned_model.h5')# 保存类别名称class_names = list(train_generator.class_indices.keys())with open('class_names.txt', 'w') as f:f.write('\n'.join(class_names))print("模型训练完成!")

难点分析

  • 数据预处理:设计合理的图像增强和预处理策略
  • 模型选择与调优:选择合适的预训练模型并进行有效微调
  • 计算资源优化:在有限资源下高效训练大型模型
  • API 设计:设计稳定可靠的图像识别 API 接口
  • 前端交互:实现流畅的图像上传和结果展示界面

扩展方向

  • 添加多类别分类支持
  • 实现目标检测功能
  • 添加模型解释和可视化
  • 集成摄像头实时识别
  • 部署到云服务平台

相关文章:

Python实例题:基于 TensorFlow 的图像识别与分类系统

目录 Python实例题 题目 问题描述 解题思路 关键代码框架 难点分析 扩展方向 Python实例题 题目 基于 TensorFlow 的图像识别与分类系统 问题描述 开发一个基于 TensorFlow 的图像识别与分类系统&#xff0c;包含以下功能&#xff1a; 图像分类模型&#xff1a;基于…...

Windows 10开始菜单优化方案,如何实现Win7风格开始菜单的还原

今天阿灿给大家安利个好东西 Start10这软件能让Win10的开始菜单变回Win7那种经典样式&#xff0c;用起来特别顺手。不仅能改开始菜单外观&#xff0c;还能调整任务栏布局&#xff0c;想怎么设置都行。 我用它主要就图两点&#xff1a; 1. 找回Win7那种简洁好用的开始菜单 2.…...

Kafka性能压测报告撰写

在大数据生态体系中&#xff0c;Kafka以其卓越的高吞吐、低延迟特性&#xff0c;成为消息队列领域的中流砥柱。然而&#xff0c;随着业务规模不断扩张&#xff0c;数据流量日益激增&#xff0c;Kafka的性能表现直接关乎业务系统的稳定运行与效率提升。通过科学严谨的性能压测&a…...

IP 地理库的使用指南:从基础应用到深度实践​

P 地理库的使用指南&#xff1a;从基础应用到深度实践​ ​ 在数字化时代&#xff0c;IP 地址如同网络世界里的 “门牌号码”&#xff0c;而 IP 地理库则是解读这些号码背后秘密的 “解码器”。它不仅能定位 IP 对应的地理位置&#xff0c;还能挖掘出丰富的网络属性信息。接下来…...

C#的泛型和匿名类型

一、C#的泛型简介 泛型是一种允许你延迟编写类或方法中的数据类型规范&#xff0c;直到你在实际使用时才替换为具体的数据类型【简单的说&#xff1a;泛型就是允许我们编写能够适用于任何数据类型的代码&#xff0c;而无需为每种特定类型重写相同的代码】(T是类型参数&#xff…...

ABP VNext + MongoDB 数据存储:多模型支持与 NoSQL 扩展

&#x1f680; ABP VNext MongoDB 数据存储&#xff1a;多模型支持与 NoSQL 扩展&#xff08;生产级实践&#xff09; 目录 &#x1f680; ABP VNext MongoDB 数据存储&#xff1a;多模型支持与 NoSQL 扩展&#xff08;生产级实践&#xff09;&#x1f3af; 引言&#x1f9f0…...

JETBRAINS IDE 开发环境自定义设置快捷键

Date: 2025-06-18 20:39:52 author: lijianzhan JetBrains简介 让它发生。 用代码。 在JetBrains&#xff0c;代码是我们的激情所在。自成立以来&#xff0c;我们一直致力于打造世界上最强大、最有效的开发工具。 1.JETBRAINS官网&#xff0c;可以在官网下载代码编辑器 2.进入…...

JAVA——泛型

泛型&#xff08;Generics&#xff09;是Java语言在JDK 5.0版本中引入的一种强大特性&#xff0c;用于在编译时提供更强的类型检查和类型安全。它允许程序员在定义类、接口和方法时使用类型参数&#xff08;Type Parameters&#xff09;&#xff0c;从而实现类型参数化。通过泛…...

攻防演练:1.木马后门文件演练

为了防止 Linux 服务器上传木马后门文件&#xff0c;可以编写一个脚本&#xff0c;定期检查系统中的可疑文件、进程和权限。以下是一个示例脚本&#xff0c;用于检查常见的后门文件、异常进程和权限问题。 脚本功能 检查常见后门文件路径。检查异常 SUID/SGID 文件。检查异常进…...

c++ STL---vector使用

本文对STL---中的vector的使用是参考网站 vector - C Reference 的内容&#xff0c;该网站是外文的哦&#xff0c;大家可以尝试打开看看更深刻的理解。本文是抽取其中常使用&#xff0c;然后加上自己的是理解哦。 前言 vector其实是顺序表类模板的封装啊&#xff01; 数据结构…...

windows标题栏显示奇怪的蓝色,怎么解决

背景 如下&#xff0c;非常奇怪&#xff0c;如果窗口是active状态就是蓝色的&#xff0c;为什么&#xff1f; 如果你遇到上述问题&#xff0c;可以这么解决&#xff1a; 右键点击桌面&#xff0c;选择 “个性化”&#xff0c; 滚动到下面&#xff0c;看到 “标题栏和窗口边…...

Kafka存储设计深度剖析:日志、索引与文件管理的底层奥秘

引言 在分布式消息系统领域&#xff0c;Kafka凭借卓越的性能与高可靠性占据重要地位&#xff0c;而这一切都离不开其精妙的存储设计。从消息的持久化存储到高效检索&#xff0c;从日志分段管理到数据清理策略&#xff0c;Kafka的存储架构设计巧妙&#xff0c;能够支撑海量消息…...

将多个Excel合并到一个Excel中的方法

今天遇到这么一个问题&#xff0c;需要将多个Excel表格中的数据汇总表&#xff0c;合并在一个Excel中&#xff0c;并且显示一致。 因此编写了以下代码来解决这个问题&#xff0c; 1.在Excel中按AltF11&#xff0c;快速调出命令控制台 2.工具栏选择插入——模块——将以下脚本…...

Debian配置Redis主从、哨兵

前言 Redis的下载安装可参考Centos安装配置Redis6.x&#xff0c;Centos和Debian的步骤基本类似&#xff0c;或自行在网上搜索相关资料 注意&#xff1a;远程连接需放开相应端口 主从 搭建一个一主二从的主从模式 处理conf文件 #进入redis所在目录 cd /tools/redis/redis6 …...

OpenSSL引擎 + PKCS11 + SoftHSM2认证

OpenSSL引擎 PKCS11 SoftHSM2 前言&#xff1a;金融级安全的基石 在金融、军工等高安全领域&#xff0c;硬件安全模块&#xff08;HSM&#xff09; 是保护加密密钥的黄金标准。本文将深度剖析HSM核心组件libpkcs11.so的工作原理&#xff0c;并手把手教你搭建基于SoftHSM2的…...

flex布局 项目属性

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>flex布局 项目属性</title> <link href"css/k.css" rel"stylesheet" /> </head> <bod…...

流水表延迟处理方案设计

**### 流水表延迟处理方案设计 针对你的场景&#xff08;流水表插入记录&#xff0c;当type4时需要1秒后处理&#xff09;&#xff0c;结合现有技术栈&#xff08;JDK8、MySQL、定时任务、Redis、RabbitMQ&#xff09;&#xff0c;我推荐以下几种可行方案&#xff1a; 一、方…...

密室出逃消消乐小游戏微信流量主小程序开源

这个密室出逃消消乐小游戏采用了微信小程序的标准目录结构&#xff0c;包含以下核心功能&#xff1a; 游戏界面&#xff1a;6x6 的网格布局&#xff0c;随机生成不同类型的物品 游戏逻辑&#xff1a;交换相邻物品&#xff0c;消除三个或以上相同类型的物品 计分系统&#xff1a…...

Docker 日志

Docker 日志是排查容器故障、监控运行状态的重要工具。下面从 日志查看命令、详解字段、日志驱动、最佳实践 四个方面给你详细解析。 一、最常用日志命令 1. 查看容器日志&#xff08;默认 stdout、stderr&#xff09; docker logs <container_name|container_id>2. 实…...

嵌入Linux快速入门第3篇

01_嵌入式Linux开发环境介绍 在Windows环境下的操作&#xff1a; 02_配置VMware使用双网卡之NAT网卡 虚拟机内部有两个网卡&#xff0c;一个是NAT网卡&#xff0c;另外一个是桥接网卡。NAT网卡用来保证Ubuntu可以上网&#xff0c;桥接网卡用来保证Ubuntu可以和开发板进行数据…...

详解鸿蒙Next仓颉开发语言中的全屏模式

大家好&#xff0c;今天跟大家分享一下仓颉开发语言中的全屏模式。 和ArkTS一样&#xff0c;仓颉的新建项目默认是非全屏模式的&#xff0c;如果你的应用颜色比较丰富&#xff0c;就会发现屏幕上方和底部的留白&#xff0c;这是应用自动避让了屏幕上方摄像头区域和底部的导航条…...

Oracle/MySQL/SqlServer/PostgreSQL等数据库的数据类型映射以及各版本数据类型情况说明

1 引言 近期工作聚焦于跨数据库系统的数据类型兼容性研究&#xff0c;旨在解决多源异构数据迁移、系统集成及版本升级中的类型映射难题。具体任务包括&#xff1a;1&#xff09;建立主流数据库&#xff08;如MySQL、Oracle、PostgreSQL、SQL Server等&#xff09;的数据类型映射…...

新生活的开启:从 Trae AI 离开后的三个月

很久没有写文章了&#xff0c;想借着入职新公司一个月的机会&#xff0c;和大家唠唠嗑。 离职 今年2月份我从字节离职了&#xff0c;结束了四年的经历&#xff0c;当时离开的核心原因是觉得加班时间太长了&#xff0c;平均每天都要工作15&#xff0c;16个小时&#xff0c;周末…...

背包问题概论(01背包,完全背包,多重背包)DP

背包问题概论&#xff08;01背包&#xff0c;完全背包&#xff0c;多重背包&#xff09;DP 背包问题一种经典的组合优化问题&#xff0c;主要用于在有限的容量下选择物品以最大化总价值。它分为几种类型&#xff1a;   ①&#xff1a;0/1背包问题&#xff1a;每种物品只能选择…...

攻克SQL审核“最后堡垒”!PawSQL首发T-SQL存储过程深度优化引擎

为什么存储过程审核那么难&#xff1f; 存储过程将数据操作逻辑固化在数据库层&#xff0c;一次编译、多次执行&#xff0c;既能大幅提升性能&#xff0c;也能通过权限隔离增强安全。然而&#xff0c;正因其逻辑复杂、分支众多&#xff0c;存储过程内部的 SQL 审核与优化常常成…...

Stable Diffusion 实战-手机壁纸制作 第二篇:优化那些“崩脸”和“马赛克”问题,让图像更加完美!

欢迎回来!在《StableDiffusion实战-手机壁纸制作》系列的第一篇中,我们成功完成了基础操作,制作出了令人炫目的手机壁纸。 今天,我们将进入一个更高阶的领域——优化处理。因为谁不想让生成的艺术品更完美呢?尤其是避免“崩脸”和“马赛克”这种让人抓狂的问题! 创作的路…...

Kafka消费者客户端源码深度解析:从架构到核心流程

在Kafka生态系统中&#xff0c;消费者客户端作为数据消费的入口&#xff0c;其设计与实现直接影响数据处理的效率和可靠性。本文将深入Kafka消费者客户端源码&#xff0c;通过核心组件解析、流程拆解与源码分析&#xff0c;揭示其高性能消费背后的技术奥秘&#xff0c;并辅以架…...

Linux进程间通信:从入门到精通(2)

嘿&#xff0c;小伙伴&#xff01;今天我们来聊聊Linux系统中一个超级重要的话题——进程间通信&#xff08;IPC&#xff09;。看到"进程间通信"这个词&#xff0c;别急着打哈欠&#xff0c;这可是Linux内核中的"社交达人"&#xff0c;让进程们能够愉快地交…...

从源码到生产:Apache 2.4.57 自动化安装实战指南(附脚本)

引言&#xff1a;为何选择源码安装 Apache&#xff1f; 在服务器运维场景中&#xff0c;源码编译安装 Apache HTTP Server 是实现精细化配置的重要方式。相比包管理器安装&#xff0c;源码安装可自定义模块组合、适配特定依赖环境&#xff0c;并精确控制版本。本文将通过自动化…...

CMake实践:指定gcc版本编译和交叉编译

目录 1.指定gcc版本编译 1.1.通过CMake参数来实现 1.2.使用 RPATH/RUNPATH 直接指定库路径 1.3.使用符号链接和 LD_LIBRARY_PATH 1.4.使用 wrapper 脚本封装 LD_LIBRARY_PATH 2.交叉编译 2.1.基本用法 2.2.工具链文件关键配置 2.3.多平台工具链示例 2.4.注意事项 2.…...

【MySQL基础】MySQL内置函数全面解析:提升你的数据库操作效率

MySQL学习&#xff1a; https://blog.csdn.net/2301_80220607/category_12971838.html?spm1001.2014.3001.5482 前言&#xff1a; MySQL提供了丰富的内置函数来帮助开发者高效地处理数据。这些函数覆盖了字符串操作、数值计算、日期时间处理、流程控制等多个方面。本文将全面…...

OpenCV CUDA模块设备层-----在GPU上计算两个uchar1类型像素值的反正切(arctangent)比值函数atan2()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 对输入的两个 uchar1 像素值 a 和 b&#xff0c;先分别归一化到 [0.0, 1.0] 浮点区间&#xff0c;然后计算它们的 四象限反正切函数。 函数原型…...

unity 半透明描线shader

效果如图 Shader "Custom/TransparentWithOutline_Fixed" {Properties{// 主材质属性_Color ("Main Color", Color) (1,1,1,1)_MainTex ("Base (RGB) Trans (A)", 2D) "white" {}_Glossiness ("Smoothness", Range(0,1)…...

react中使用antd的form表单去受控switch时初始值没有正确显示

解决方案 antd内api中有valuePropName熟悉 只需正常绑定当前元素触发事件即可...

01__QT的背景介绍和工程创建

一、QT软件的安装 1、qt的背景介绍 Qt 是一个跨平台的 图形界面库&#xff08;重量级&#xff09;&#xff0c;1994年由罗威troll tech公司出品&#xff0c;它集成了网络、数据库、串口通信协议&#xff08;RS232&#xff0c;蓝牙&#xff0c;NFC&#xff09;、打印、PDF生成…...

Java Map 深度解析

一、HashMap 底层实现详解 1. 核心数据结构 HashMap 在 JDK 8 中的底层结构是 数组 链表 红黑树&#xff0c;其核心成员变量包括&#xff1a; transient Node<K,V>[] table;&#xff1a;哈希桶数组transient int size;&#xff1a;实际键值对数量int threshold;&…...

异地组网工具

目前手头上两台服务器&#xff08;一台主力&#xff0c;一台有gpu用来跑点深度学习任务&#xff09;&#xff0c;两台pc&#xff08;一台是主力&#xff0c;一台是便携碎片化时间随时赶工用&#xff09;&#xff1b; 之前组网的时候&#xff0c;用zerotiertailscale&#xff0…...

我们为什么要模拟

大约 25 年前&#xff0c;当我开始从事高速 PCB 设计时&#xff0c;速度很慢&#xff0c;层数少&#xff0c;介电常数和损耗角正切很高&#xff0c;设计裕量很宽&#xff0c;铜粗糙度无关紧要&#xff0c;玻璃编织样式也无关紧要。我们称电介质为“FR-4”&#xff0c;它们的特性…...

MySQL 三大日志:Redo、Undo 与 Binlog 详解

写在前面 关于三大日志&#xff0c;博主看了无数视频和文章&#xff0c;也是总结的非常精辟了&#xff01; 在 MySQL 数据库的运行机制中&#xff0c;Redo Log、Undo Log 和 Binlog 起着至关重要的作用&#xff0c;它们各司其职&#xff0c;共同保障数据库的数据安全、事务一…...

JMeter-SSE响应数据自动化3.0

背景 此次因为多了一些需要过滤排除的错误(数量很少)&#xff0c;还需要修改下JMeter的jtl文件输出数据&#xff08;后续统计数据需要&#xff09; 所以只涉及到JSR脚本的一些改动(此部分改动并不会影响到JMeter的HTML报告) 改动 主要通过设置JMeter中prev输出数据变量threadN…...

C#上位机通过WebApi访问WinCC

在智能工厂架构中&#xff0c;WinCC作为SCADA一级&#xff0c;负责着与上级MES和下级PLC及其他现场组件的联系。与下层通信&#xff0c;WinCC支持S7、MC、Modbus TCP、OPC等多种接口和协议。对上层通信&#xff0c;WinCC从7.5 SP2开始支持REST Api这种Web接口方式。 今天跟大家…...

【深度学习新浪潮】什么是端侧AI?

什么是端侧AI? 端侧AI的定义 端侧AI(Edge AI)是指在终端设备(如手机、智能家居、穿戴设备等)本地运行的人工智能技术,无需将数据上传至云端服务器,直接在设备端完成数据处理、模型推理和决策。其核心优势在于低延迟、高隐私性、减少网络依赖,尤其适合对实时性和数据安…...

Postman 的 Jenkins 管理 - 自动构建

目录 一、环境准备 创建 Postman 集合和环境 二、postman Postman 集合和环境并导出 1. 打开已完成并测试无误的 postman 项目脚本。 再次执行测试。 ​编辑​2. 导出&#xff08; 测试用例集、环境变量 两个文件&#xff09;**“不 支 持 中 文”** —— 全部改成英文&a…...

HomeBrew MAC PRO 安装教程

1、检查xcode工具 这个东西一般是有的&#xff0c;命令后输入以下内容即可 xcode-select --install如安装&#xff0c;结果为&#xff1a; 2、安装HomeBrew 方式1&#xff08;推荐&#xff09; /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebr…...

多模态大语言模型arxiv论文略读(129)

Task Success Prediction for Open-Vocabulary Manipulation Based on Multi-Level Aligned Representations ➡️ 论文标题&#xff1a;Task Success Prediction for Open-Vocabulary Manipulation Based on Multi-Level Aligned Representations ➡️ 论文作者&#xff1a;M…...

Android 实现 Toast 显示重叠问题,有效提升用户体验

Android 实现 Toast 显示重叠问题 在 Android 开发中&#xff0c;Toast 是一个非常常用的提示工具&#xff0c;能够为用户提供短暂的信息展示。然而&#xff0c;Toast 的默认实现中&#xff0c;存在一个体验上的问题&#xff0c;当多次触发 Toast 显示时&#xff0c;会导致多个…...

Spring Boot + MyBatis + Vue:构建高效全栈应用的实战指南

一、项目需求分析 假设我们需要开发一个简单的任务管理系统&#xff0c;用户可以通过该系统创建、查看和删除任务。以下是项目的基本需求&#xff1a; 用户管理&#xff1a;用户可以注册和登录系统。 任务管理&#xff1a;用户可以创建、查看和删除任务。 数据持久化&#x…...

语音情感识别:CNN-LSTM 和注意力增强 CNN-LSTM 模型的比较分析

摘要: 语音情感识别 &#xff08;SER&#xff09; 技术可帮助计算机理解语音中的人类情感&#xff0c;这在推进人机交互和心理健康诊断方面占据了关键地位。本研究的主要目标是通过创新的深度学习模型提高 SER 的准确性和泛化性。尽管它在人机交互和心理健康诊断等各个领域都很…...

Cursor Pro取消500次请求限制,无限用的体验更好了吗?

目录 前言 一、发生了什么&#xff1f;从"限量"到"无限"的升级 1.1 "顶配" Ultra 套餐的登场 1.2 Pro 套餐的"静默升级" 1.3 新旧方案对比 二、"无限"背后的体验&#xff1a;一个开发者的真实感受 三、Cursor 为何要…...

视频汇聚EasyCVR平台v3.7.2发布:新增全局搜索、播放器默认解码方式等4大功能

EasyCVR视频汇聚平台带着全新的v3.7.2版本重磅登场&#xff01;此次升级&#xff0c;绝非简单的功能堆砌&#xff0c;而是从用户体验、操作效率以及系统性能等多维度进行的深度优化与革新&#xff0c;旨在为大家带来更加强大、稳定且高效的视频监控管理体验。 一、全局功能搜索…...