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

基于OpenCV与PyTorch的智能相册分类器全栈实现教程

引言:为什么需要智能相册分类器?

在数字影像爆炸的时代,每个人的相册都存储着数千张未整理的照片。手动分类不仅耗时,还容易遗漏重要瞬间。本文将手把手教你构建一个基于深度学习的智能相册分类系统,实现:

  1. 三级分类体系:风景/人物/建筑;
  2. 完整的端到端流程:从数据准备到Web部署;
  3. 可视化交互界面:支持拖放上传的实时分类预览。

一、项目架构设计

1.技术栈选型

组件技术选择核心作用
图像处理OpenCV图像预处理与特征提取
深度学习框架PyTorch构建与训练卷积神经网络
Web框架Flask快速搭建RESTful API服务
前端交互HTML5 Drag&Drop + Ajax实现可视化文件上传与结果展示

二、数据集构建与优化(关键步骤详解)

2.1 数据采集规范

  • 来源选择:个人相册/Unsplash/Flickr(需遵守版权协议);
  • 数量要求:每类至少500张(风景/人物/建筑 = 6:3:1比例)。
  • 质量把控:
    • 排除模糊/重复图片;
    • 使用OpenCV进行尺寸标准化(224x224);
    • 直方图均衡化增强对比度。
import cv2
import numpy as npdef preprocess_image(img_path):img = cv2.imread(img_path)img = cv2.resize(img, (224, 224))img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)img = cv2.equalizeHist(img)  # 直方图均衡化return img / 255.0  # 归一化

2.2 数据增强策略

采用Torchvision的transforms模块实现:

train_transform = transforms.Compose([transforms.RandomRotation(15),transforms.RandomHorizontalFlip(),transforms.ColorJitter(brightness=0.2, contrast=0.2),transforms.ToTensor()
])

2.3 标注工具推荐

  • LabelImg:适合小批量标注;
  • CVAT:支持团队协作的云端标注平台;
  • 自定义脚本:批量重命名文件(格式:class_xxx.jpg)。

三、迁移学习模型构建(PyTorch实现)

3.1 为什么选择ResNet18?

  • 轻量化架构(适合初学者);
  • ImageNet预训练权重提供良好特征提取基础;
  • 平衡精度与训练速度。

3.2 模型微调步骤

  1. 加载预训练模型
python复制代码model = torchvision.models.resnet18(pretrained=True)
  1. 修改最后一层
num_ftrs = model.fc.in_features
model.fc = nn.Linear(num_ftrs, 3)  # 3分类输出
  1. 冻结底层参数
for param in model.parameters():param.requires_grad = False
# 仅训练最后的全连接层
model.fc = nn.Linear(num_ftrs, 3)
  1. 定义损失函数与优化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.fc.parameters(), lr=0.001)

3.3 训练技巧

  • 学习率调度:使用StepLR每5个epoch衰减为原来的0.1;
  • 早停机制:连续3个epoch验证损失不下降则终止训练。
  • 模型保存
python复制代码torch.save(model.state_dict(), 'best_model.pth')

四、Flask后端服务开发

4.1 核心路由设计

from flask import Flask, request, jsonifyapp = Flask(__name__)
model = load_trained_model()  # 自定义模型加载函数@app.route('/classify', methods=['POST'])
def classify_image():if 'file' not in request.files:return jsonify({"error": "No file uploaded"}), 400file = request.files['file']img = preprocess_image(file.read())  # 需实现二进制到numpy的转换with torch.no_grad():output = model(img.unsqueeze(0))_, predicted = torch.max(output, 1)return jsonify({"class": class_names[predicted.item()]})

4.2 性能优化策略

  • 多线程加载:使用concurrent.futures处理并发请求;
  • 模型缓存:首次加载后驻留内存;
  • 请求限流:防止恶意大文件上传。

五、前端交互实现

5.1 拖放上传组件

<div id="drop-zone" style="border: 2px dashed #ccc; padding: 20px"><p>拖放图片文件到此区域</p><input type="file" id="file-input" multiple hidden>
</div><script>
const dropZone = document.getElementById('drop-zone');
const fileInput = document.getElementById('file-input');dropZone.addEventListener('dragover', (e) => {e.preventDefault();dropZone.style.borderColor = 'blue';
});dropZone.addEventListener('dragleave', () => {dropZone.style.borderColor = '#ccc';
});dropZone.addEventListener('drop', (e) => {e.preventDefault();const files = e.dataTransfer.files;handleFiles(files);
});fileInput.addEventListener('change', (e) => {handleFiles(e.target.files);
});async function handleFiles(files) {const formData = new FormData();for (const file of files) {formData.append('file', file);}const response = await fetch('/classify', {method: 'POST',body: formData});const result = await response.json();showResult(result);
}
</script>

5.2 实时预览增强

  • 加载动画:使用CSS实现旋转圆圈;
  • 结果可视化:用不同颜色边框标注分类结果;
  • 批量处理:支持多文件并行上传。

六、系统部署与优化

6.1 部署方案选择

方案适用场景性能特点
本地运行开发调试延迟低,依赖本地环境
Docker容器生产环境部署环境隔离,易于迁移
云函数低频请求按需付费,自动扩展

6.2 性能优化方向

  1. 模型量化:使用PyTorch的torch.quantization减少模型体积;
  2. 缓存机制:对重复图片返回缓存结果;
  3. 异步处理:Celery实现后台任务队列。

七、完整项目结构

smart-album-classifier/
├── dataset/
│   ├── train/
│   ├── val/
│   └── test/
├── models/
│   └── best_model.pth
├── static/
│   ├── css/
│   └── js/
├── templates/
│   └── index.html
├── app.py
├── train.py
└── requirements.txt

八、扩展方向建议

  1. 增加分类类别:宠物/美食/文档扫描等;
  2. 多模态融合:结合图像+GPS元数据分类旅行照片;
  3. 移动端部署:使用TensorFlow Lite转换模型;
  4. 云存储集成:自动同步Google Photos分类结果。

结语:智能相册的无限可能

通过本项目,我们不仅掌握了从数据准备到模型部署的完整流程,更建立了对计算机视觉核心技术的深刻理解。这个基础框架可以扩展为个性化影像管理系统,甚至结合NLP技术实现照片自动标注。建议读者从以下方向继续探索:

  • 尝试不同的网络结构(EfficientNet/MobileNet)
  • 研究半监督学习减少标注成本
  • 集成人脸识别的个性化分类

立即动手实践吧!你的智能相册助手正等着为你整理珍贵的记忆碎片。

相关文章:

基于OpenCV与PyTorch的智能相册分类器全栈实现教程

引言&#xff1a;为什么需要智能相册分类器&#xff1f; 在数字影像爆炸的时代&#xff0c;每个人的相册都存储着数千张未整理的照片。手动分类不仅耗时&#xff0c;还容易遗漏重要瞬间。本文将手把手教你构建一个基于深度学习的智能相册分类系统&#xff0c;实现&#xff1a;…...

C++中string库常用函数超详细解析与深度实践

目录 一、引言 二、基础准备&#xff1a;头文件与命名空间 三、string对象的创建与初始化(基础&#xff09; 3.1 直接初始化 3.2 动态初始化&#xff08;空字符串&#xff09; 3.3 基于字符数组初始化 3.4 重复字符初始化 四、核心函数详解 4.1 字符串长度相关 4.1.1 …...

数据结构(3)

实验步骤&#xff1a; 任务&#xff1a;要求使用自定义函数来实现 输入一段文本&#xff0c;统计每个字符出现的次数&#xff0c;按照字符出现次数从多到少&#xff0c;依次输出&#xff0c;格式如下&#xff1a; 字符1-个数 字符2-个数 ...... 解题思路&#xff1a; 构建结构体…...

【C++教程】使用printf语句实现进制转换

在C语言中&#xff0c;printf 函数可以直接实现部分进制转换功能&#xff0c;通过格式说明符&#xff08;format specifier&#xff09;快速输出不同进制的数值。以下是详细使用方法及示例代码&#xff1a; 一、printf 原生支持的进制转换 1. 十进制、八进制、十六进制转换 #…...

el-dialog设置append-to不生效;el-dialog设置挂载层级

文章目录 一、场景二、注意点1. append-to-body何时为true2.设置层级&#xff0c;遮罩层大小不生效3.相关代码 三、ElMessageBox遮罩层 效果&#xff1a; 一、场景 正常情况下&#xff0c;el-dialog的弹框是挂载在body下的&#xff0c;导致我们会有修改样式或者修改弹框的遮罩…...

互联网软件开发自动化平台 的多维度对比分析,涵盖架构、功能、适用场景、成本等关键指标

以下是关于 互联网软件开发自动化平台 的详细解析&#xff0c;涵盖其核心概念、主流平台的功能、架构设计、适用场景及对比分析&#xff1a; 一、自动化平台的定义与核心目标 自动化平台&#xff08;如CI/CD平台&#xff09;是用于 持续集成&#xff08;CI&#xff09; 和 持续…...

UE5 制作方块边缘渐变边框效果

该效果基于之前做的&#xff08;https://blog.csdn.net/grayrail/article/details/144546427&#xff09;进行修改得到&#xff0c;思路也很简单&#xff1a; 1.打开实时预览 1.为了制作时每个细节调整方便&#xff0c;勾选Live Update中的三个选项&#xff0c;开启实时预览。…...

深入探究 GRU 模型:梯度爆炸问题剖析

在深度学习领域&#xff0c;循环神经网络&#xff08;RNN&#xff09;及其变体在处理序列数据时展现出了强大的威力。其中&#xff0c;门控循环单元&#xff08;GRU&#xff09;作为 RNN 的一种进阶架构&#xff0c;备受关注。今天&#xff0c;咱们就来深入聊聊 GRU 模型&#…...

生成对抗网络(GAN)原理详解

生成对抗网络&#xff08;GAN&#xff09;原理详解 1. 背景 生成对抗网络&#xff08;Generative Adversarial Network, GAN&#xff09;由 Ian Goodfellow 等人于 2014 年提出&#xff0c;是一种通过对抗训练生成高质量数据的框架。其核心思想是让两个神经网络&#xff08;生…...

CFD中的动量方程非守恒形式详解

在计算流体力学&#xff08;CFD&#xff09;中&#xff0c;动量方程可以写成守恒形式和非守恒形式&#xff0c;两者在数学上等价&#xff0c;但推导方式和应用场景不同。以下是对非守恒形式的详细解释&#xff1a; 1. 动量方程的守恒形式 首先回顾守恒形式的动量方程&#xff…...

AIoT 智变浪潮演讲实录 | 刘浩然:让硬件会思考:边缘大模型网关助力硬件智能革新

4 月 2 日&#xff0c;由火山引擎与英特尔联合主办的 AIoT “智变浪潮”技术沙龙在深圳成功举行&#xff0c;活动聚焦 AI 硬件产业的技术落地与生态协同&#xff0c;吸引了芯片厂商、技术方案商、品牌方及投资机构代表等 700 多位嘉宾参会。 会上&#xff0c;火山引擎边缘智能高…...

4.B-树

一、常见的查找方式 顺序查找 O(N) 二分查找 O(logN)(要求有序和随机访问) 二叉搜索树 O(N) 平衡二叉搜索树(AVL树和红黑树) O(logN) 哈希 O(1) 考虑效率和要求而言,正常选用 平衡二叉搜索树 和 哈希 作为查找方式。 但这两种结构适合用于数据量相对不是很大,能够一次性…...

怎么看英文论文 pdf沉浸式翻译

https://arxiv.org/pdf/2105.09492 Immersive Translate Xournal打开...

计算机三级第一章:信息安全保障概述(以时间节点推进的总结)

淡蓝色为必背内容 第一阶段:电讯技术的发明19世纪30年代:电报电话的发明 1835年:莫尔斯(Morse)发明了电报 1837年:莫尔斯电磁式有线电报问世 1878年:人工电话交换局出现 1886年:马可尼发明了无线电报机 1876年:贝尔(Bell)发明了电话机 1892年,史瑞桥自动交换…...

车载软件架构 ---单个ECU的AUTOSAR开发流程

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…...

【场景应用7】在TPU上使用Flax/JAX对Transformers模型进行语言模型预训练

在本笔记本中,我们将展示如何使用Flax在TPU上预训练一个🤗 Transformers模型。 这里将使用GPT2的因果语言建模目标进行预训练。 正如在这个基准测试中所看到的,使用Flax/JAX在GPU/TPU上的训练通常比使用PyTorch在GPU/TPU上的训练要快得多,而且也可以显著降低成本。 Fla…...

C++运算符重载全面总结

C运算符重载全面总结 运算符重载是C中一项强大的特性&#xff0c;它允许程序员为自定义类型定义运算符的行为。以下是关于C运算符重载的详细总结&#xff1a; 一、基本概念 1. 什么是运算符重载 运算符重载是指为自定义类型&#xff08;类或结构体&#xff09;重新定义或重…...

PTA | 实验室使用排期

目录 题目&#xff1a; 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; 样例解释&#xff1a; 代码&#xff1a; 无注释版&#xff1a; 有注释版&#xff1a; 题目&#xff1a; 受新冠疫情影响&#xff0c;当前大家的活动都…...

3.7 字符串基础

字符串 &#xff08;str&#xff09;&#xff1a;和列表用法基本一致 1.字符串的创建 -str转换(字符串&#xff0c;可用于将其他字符类型转换为字符串) -单引号 双引号 三引号 2.索引 3.字符串的切片 4.字符串的遍历 5.字符串的格式化 6.字符串的运算符 7.字符串的函数 #…...

《 C++ 点滴漫谈: 三十三 》当函数成为参数:解密 C++ 回调函数的全部姿势

一、前言 在现代软件开发中&#xff0c;“解耦” 与 “可扩展性” 已成为衡量一个系统架构优劣的重要标准。而在众多实现解耦机制的技术手段中&#xff0c;“回调函数” 无疑是一种高效且广泛使用的模式。你是否曾经在编写排序算法时&#xff0c;希望允许用户自定义排序规则&a…...

16bit转8bit的常见方法(图像归一化)

文章目录 16-bit转8-bit的常用方法一、数据类型转换&#xff1a;image.astype(np.uint8) —— 若数值 x 超出 0-255 范围&#xff0c;则取模运算。如&#xff1a;x 600 % 256 88二、截断函数&#xff1a;np.clip().astype(np.uint8) —— 若数值 x 超出 0-255 范围&#xff0…...

消息中间件kafka,rabbitMQ

在分布式系统中,消息中间件是实现不同组件之间异步通信的关键技术。Kafka 和 RabbitMQ 是两个非常流行的消息中间件系统,它们各自有着不同的特点和应用场景。下面将分别介绍 Kafka 和 RabbitMQ,并讨论它们在消息队列中的使用。 一、Kafka (Apache Kafka) 主要特点: 高吞吐…...

C语言编译预处理3

条件编译&#xff1a;是对源程序的一部分指定编译条件&#xff0c;满足条件进行编译否则不编译。 形式1 #indef 标识符 程序段1 #else 程序段2 #endif 标识符已经被定义用#ifdef #include <stdio.h>// 可以通过注释或取消注释下面这行来控制是否定义 DEBUG 宏 // …...

数据结构·树

树的特点 最小连通图 无环 有且只有 n − 1 n-1 n−1 条边 树的建立方式 顺序存储 只适用于满n叉树&#xff0c;完全n叉树 1<<n 表示结点 2 n 2^n 2nP4715 【深基16.例1】淘汰赛 void solve() {cin >> n;for (int i 0; i<(1<<n); i) {cin >&g…...

队列的各种操作实现(数据结构C语言多文件编写)

1.先创建queue.h声明文件(Linux命令&#xff1a;touch queue.h)。编写函数声明如下(打开文件 Linux 操作命令&#xff1a;vim queue.h): //头文件 #ifndef __QUEUE_H__ #define __QUEUE_H__ //队列 typedef struct queue{int* arr;int in;int out;int cap;int size; }queue_t;…...

48V/2kW储能电源纯正弦波逆变器详细设计方案-可量产

48V/2kW储能电源纯正弦波逆变器详细设计方案 1.后级驱动电路图 2.前级驱动电路图 3.功率表电路原理图 4.功率板BOM: 5.后级驱动BOM 6.前级驱动BOM...

[redis进阶二]分布式系统之主从复制结构(2)

目录 一 redis的拓扑结构 (1)什么是拓扑 (2)⼀主⼀从结构 (3)⼀主多从结构 (4)树形主从结构 (5)三种拓扑结构的优缺点,以及适用场景 二 redis的复制原理 (1)复制过程 (2)数据同步psync replicationid/replid (复制id)(标注同步的数据来自哪里:数据来源) offset (偏移…...

Playwright多语言生态:跨Python_Java_.NET的统一采集方案

一、问题背景&#xff1a;爬虫多语言割裂的旧时代 在大规模数据采集中&#xff0c;尤其是学术数据库如 Scopus&#xff0c;开发者常遇到两个经典问题&#xff1a; 技术语言割裂&#xff1a;Python开发人员使用Selenium、requests-html等库&#xff1b;Java阵营使用Jsoup或Htm…...

day30 第八章 贪心算法 part04

452. 用最少数量的箭引爆气球 先排序&#xff0c;再算重叠区间 class Solution:def findMinArrowShots(self, points: List[List[int]]) -> int:if len(points)0:return 0points.sort(keylambda x:x[0])result 1for i in range(1, len(points)):if points[i][0] > point…...

java操作redis库,开箱即用

application.yml spring:application:name: demo#Redis相关配置redis:data:# 地址host: localhost# 端口&#xff0c;默认为6379port: 6379# 数据库索引database: 0# 密码password:# 连接超时时间timeout: 10slettuce:pool:# 连接池中的最小空闲连接min-idle: 0# 连接池中的最…...

clickhouse中的窗口函数

窗口函数 边界核心参数 窗口边界通过 ROWS、RANGE 或 GROUPS 模式定义,语法为: ROWS BETWEEN AND 基于 ​物理行位置 定义窗口,与排序键的实际值无关,适用于精确控制窗口行数 – 或 RANGE BETWEEN AND 基于 ​排序键的数值范围 定义窗口,适用于时间序列或连续数值的场景(…...

YZ系列工具之YZ02:字典的多功能应用

我给VBA下的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套一部VBA手册&#xff0c;教程分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的…...

金山科技在第91届中国国际医疗器械博览会CMEF 首发新品 展现智慧装备+AI

4月8日—11日&#xff0c;国家会展中心&#xff08;上海&#xff09;&#xff0c;第91届中国国际医疗器械&#xff08;春季&#xff09;博览会&#xff08;以下简称“CMEF 2025”&#xff09;举办。金山科技在盛会上隆重推出年度新品——全高清电子内镜光学放大镜与肛肠测压系统…...

STM32 BOOT设置,bootloader,死锁使用方法

目录 BOOT0 BOOT1的配置含义 bootloader使用方法 芯片死锁解决方法开发调试过程中&#xff0c;由于某种原因导致内部Flash锁死&#xff0c;无法连接SWD以及JTAG调试&#xff0c;无法读到设备&#xff0c;可以通过修改BOOT模式重新刷写代码。修改为BOOT01&#xff0c;BOOT10…...

机器学习:让数据开口说话的科技魔法

在人工智能飞速发展的今天&#xff0c;「机器学习」已成为推动数字化转型的核心引擎。无论是手机的人脸解锁、网购平台的推荐系统&#xff0c;还是自动驾驶汽车的决策能力&#xff0c;背后都离不开机器学习的技术支撑。那么&#xff0c;机器学习究竟是什么&#xff1f;它又有哪…...

PDF解析示例代码学习

以下是结合多种技术实现的PDF解析详细示例&#xff08;Python实现&#xff09;&#xff0c;涵盖文本、表格和扫描件处理场景&#xff1a; 一、环境准备与依赖安装 # 核心依赖库 pip install pdfplumber tabula-py pytesseract opencv-python mysql-connector-python 二、完整…...

【云平台监控】安装应用Ansible服务

安装应用Ansible服务 文章目录 安装应用Ansible服务资源列表基础环境一、安装Ansible1.1、部署Ansible1.2、配置主机清单1.2.1、方法11.2.2、方法2 二、Ansible命令应用基础2.1、ping模块2.2、command模块2.3、user模块2.4、group模块2.5、cron模块2.6、copy模块2.7、file模块2…...

项目执行中的目标管理:从战略到落地的闭环实践

——如何让目标不“跑偏”、团队不“掉队”&#xff1f; 引言&#xff1a;为什么目标管理决定项目成败&#xff1f; 根据PMI研究&#xff0c;47%的项目失败源于目标模糊或频繁变更。在复杂多变的项目环境中&#xff0c;目标管理不仅是制定KPI&#xff0c;更是构建“方向感-执行…...

如何优雅地处理 API 版本控制?

API 会不断发展&#xff0c;而用户的需求也会随之变化。那么&#xff0c;如何确保你的 API 在升级时不会影响现有用户&#xff1f;答案就是&#xff1a;API 版本控制。就像你更新了一个应用程序&#xff0c;引入了新功能&#xff0c;但旧功能仍然保留&#xff0c;让老用户继续愉…...

如何通过Radius认证服务器实现虚拟云桌面安全登录认证:安当ASP身份认证系统解决方案

引言&#xff1a;虚拟化时代的安全挑战 随着云计算和远程办公的普及&#xff0c;虚拟云桌面&#xff08;如VMware Horizon、Citrix&#xff09;已成为企业数字化办公的核心基础设施。然而&#xff0c;传统的用户名密码认证方式暴露了诸多安全隐患&#xff1a;弱密码易被暴力破…...

自然语言处理spaCy

spaCy 是一个流行的开源 自然语言处理&#xff08;NLP&#xff09; 库&#xff0c;专注于 高效、易用和工业化应用。它由 Explosion AI 开发&#xff0c;广泛应用于文本处理、信息提取、机器翻译等领域。 zh_core_web_sm 是 spaCy 提供的一个小型中文预训练语言模型&#xff0…...

大语言模型(LLMs)中的强化学习(Reinforcement Learning, RL)

第一部分&#xff1a;强化学习基础回顾 在深入探讨LLMs中的强化学习之前&#xff0c;我们先快速回顾一下强化学习的核心概念&#xff0c;确保基础扎实。 1. 强化学习是什么&#xff1f; 强化学习是一种机器学习范式&#xff0c;目标是让智能体&#xff08;Agent&#xff09;…...

数字后端实现Innovus DRC Violation之如何利用脚本批量解决G4:M7i DRC Violation

大家在跑完物理验证calibre DRC之后&#xff0c;会发现DRC里面存在一种G4:M7i的DRC违例&#xff0c;这种违例一般都是出现在memory的边界。今天教大家如何利用脚本来批量处理这一类DRC问题的解决。 首先&#xff0c;我们需要把calibre的DRC结果读取到innovus里面来&#xff0c…...

Java版企业电子招标采购系统源业码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis

功能描述 1、门户管理&#xff1a;所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含&#xff1a;招标公告、非招标公告、系统通知、政策法规。 2、立项管理&#xff1a;企业用户可对需要采购的项目进行立项申请&#xff0c;并提交审批&#xff0c;查看所…...

CTF web入门之文件上传

知识点 产生文件上传漏洞的原因 原因: 对于上传文件的后缀名(扩展名)没有做较为严格的限制 对于上传文件的MIMETYPE(用于描述文件的类型的一种表述方法) 没有做检查 权限上没有对于上传的文件目录设置不可执行权限,(尤其是对于shebang类型的文件) 对于web server对于上传…...

ArmSoM Sige5 CM5:RK3576 上 Ultralytics YOLOv11 边缘计算新标杆

在计算机视觉技术加速落地的今天&#xff0c;ArmSoM 正式宣布其基于 ​​Rockchip RK3576​​ 的旗舰产品 ​​Sige5 开发板​​ 和 ​​CM5 核心板​​ 全面支持 Ultralytics YOLOv11 模型的 RKNN 部署。这一突破标志着边缘计算领域迎来新一代高性能、低功耗的 AI 解决方案&am…...

游戏引擎学习第224天

回顾游戏运行并指出一个明显的图像问题。 回顾一下之前那个算法 我们今天要做一点预加载的处理。上周刚完成了游戏序章部分的所有剪辑内容。在运行这一部分时&#xff0c;如果观察得足够仔细&#xff0c;就会注意到一个问题。虽然因为视频流压缩质量较低&#xff0c;很难清楚…...

PN1-S25系列ProfiNet网关模组产品方案

PN1-S25系列ProfiNet网关模组是一款专为工业通信环境设计的先进设备&#xff0c;旨在实现ProfiNet与Modbus RTU协议之间的无缝转换&#xff0c;从而优化工业自动化系统中的数据传输效率。以下是对该系列ProfiNet网关模组产品的详细介绍&#xff1a; 一、ProfiNet网关模组功能特…...

提示工程指南学习记录(三)

提示词示例 文本概括 Explain the above in one sentence&#xff08;用一句话解释上面的信息&#xff09;&#xff1a; 提示词工程是一种用于自然语言处理的任务&#xff0c;目的是通过给定的文本或语音输入来生成相应的输出。它基于预训练的大型语言模型&#xff0c;例如通…...

04 GE - 钳制属性,等级

1.PostGameplayEffectExecute 1.作用&#xff1a;在这里对生命值进行最后的钳制防止越界。 2.参数中有什么&#xff1a; FGameplayEffectModCallbackData //传进来的值 {EffectSpec; //GESpecTargetASC //目标ASCFGameplayModifierEvaluatedData& EvaluatedData{Magni…...