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

【工业场景】用YOLOv12实现饮料类别识别

        饮料类别识别任务的意义在于帮助人们更快速地识别和区分不同类型的饮料,从而提高消费者的购物体验和满意度。对于商家而言,饮料类别识别可以帮助他们更好地管理库存、优化货架布局和预测销售趋势,从而提高运营效率和利润。此外,饮料类别识别还可以应用于自动贩卖机、智能购物系统等领域,为人们提供更便捷的购物服务。总的来说,饮料类别识别任务的意义在于提升消费者和商家的体验,促进商业领域的发展。

        本文以YOLOv12为基础,设计研究了基于YOLOv12的饮料类别识别任务,提取饮料类别自动检测,包含完整数据介绍、训练过程和测试结果全流程。

若需要完整数据集和源代码可以私信

目录

若需要完整数据集和源代码可以私信。

🌷🌷1.数据集介绍

👍👍2.饮料类别识别检测实现效果

🍎🍎3.YOLOv12识别饮料包装类别算法步骤

🍋3.1数据准备

🍋3.2模型选择

🍋3.3加载预训练模型

🍋3.4输入数据组织

🍭🍭4.目标检测训练代码

⭐4.1训练过程

⭐4.2训练结果

🏆🏆5.目标检测推理代码

整理不易,欢迎一键三连!!!送你们一条美丽的--分割线--


🌷🌷1.数据集介绍

        饮料类别识别数据集为特定场景下的15种常见饮料( 

  0: AD  AD钙奶
  1: Wangzai   旺仔牛奶
  2: Wanglaoji  王老吉
  3: Qingdao  青岛啤酒
  4: Xuebi    雪碧
  5: Qixi    七喜
  6: Weita   维他
  7: Dongpeng   东鹏特饮
  8: Baishi   百事
  9: Hongniu  红牛
  10: Xingbake   星巴克
  11: Yongchuangtianya   勇闯天涯
  12: Qingshuang   清爽啤酒
  13: Fenda_Orange   橘色芬达
  14: Meinianda_Orange   橘色美年达
  15: Meinianda_Green   绿色美年达

部分影像展示如下:

  label为txt格式的yolo目标检测格式,示例txt文件内容为:

训练验证比例可以自行调整,这里不赘述。

👍👍2.饮料类别识别检测实现效果

 

🍎🍎3.YOLOv12识别饮料包装类别算法步骤

        通过目标检测方法进行饮料类别识别的方法不限,本文以YOLOv12为例进行说明。

🍋3.1数据准备

数据组织:

----yinliao_dataset
       ----images
                ----train
                ----val
        ----labels
                ----train
                ----val

 image/train文件夹下内容如下:

labels/train文件夹下内容如下:

        模型训练label部分采用的是YOLO格式的txt文件,所以如果自己的数据集是xml格式或者json格式需要进行转换哦,转换可移步这里。

        具体txt格式内容如1.数据集介绍中所示。

🍋3.2模型选择


        以YOLOv812为例,模型选择代码如下:

from ultralytics import YOLO# Load a model
model = YOLO('yolov12n.yaml')  # build a new model from YAML
model = YOLO('yolov12n.pt')  # load a pretrained model (recommended for training)
model = YOLO('yolov12n.yaml').load('yolov12n.pt')  # build from YAML and transfer weights


        其中yolov12n.yaml为./ultralytics/cfg/models/v12/yolov12n.yaml,可根据自己的数据进行模型调整,打开yolov12n.yaml显示内容如下:

# YOLOv12 🚀, AGPL-3.0 license
# YOLOv12 object detection model with P3-P5 outputs. For Usage examples see https://docs.ultralytics.com/tasks/detect# Parameters
nc: 80 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov12n.yaml' will call yolov12.yaml with scale 'n'# [depth, width, max_channels]n: [0.50, 0.25, 1024] # summary: 465 layers, 2,603,056 parameters, 2,603,040 gradients, 6.7 GFLOPss: [0.50, 0.50, 1024] # summary: 465 layers, 9,285,632 parameters, 9,285,616 gradients, 21.7 GFLOPsm: [0.50, 1.00, 512] # summary: 501 layers, 20,201,216 parameters, 20,201,200 gradients, 68.1 GFLOPsl: [1.00, 1.00, 512] # summary: 831 layers, 26,454,880 parameters, 26,454,864 gradients, 89.7 GFLOPsx: [1.00, 1.50, 512] # summary: 831 layers, 59,216,928 parameters, 59,216,912 gradients, 200.3 GFLOPs# YOLO12n backbone
backbone:# [from, repeats, module, args]- [-1, 1, Conv,  [64, 3, 2]] # 0-P1/2- [-1, 1, Conv,  [128, 3, 2]] # 1-P2/4- [-1, 2, C3k2,  [256, False, 0.25]]- [-1, 1, Conv,  [256, 3, 2]] # 3-P3/8- [-1, 2, C3k2,  [512, False, 0.25]]- [-1, 1, Conv,  [512, 3, 2]] # 5-P4/16- [-1, 4, A2C2f, [512, True, 4]]- [-1, 1, Conv,  [1024, 3, 2]] # 7-P5/32- [-1, 4, A2C2f, [1024, True, 1]] # 8# YOLO12n head
head:- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [[-1, 6], 1, Concat, [1]] # cat backbone P4- [-1, 2, A2C2f, [512, False, -1]] # 11- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [[-1, 4], 1, Concat, [1]] # cat backbone P3- [-1, 2, A2C2f, [256, False, -1]] # 14- [-1, 1, Conv, [256, 3, 2]]- [[-1, 11], 1, Concat, [1]] # cat head P4- [-1, 2, A2C2f, [512, False, -1]] # 17- [-1, 1, Conv, [512, 3, 2]]- [[-1, 8], 1, Concat, [1]] # cat head P5- [-1, 2, C3k2, [1024, True]] # 20 (P5/32-large)- [[14, 17, 20], 1, Detect, [nc]] # Detect(P3, P4, P5)

        主要需要修改的地方为nc,也就是num_class,此处数据集类别为16类,所以nc=16。

        如果其他的模型参数不变的话,就默认保持原版yolov12,需要改造模型结构的大佬请绕行。

🍋3.3加载预训练模型


        加载预训练模型yolov12n.pt,可以在第一次运行时自动下载,如果受到下载速度限制,也可以自行下载好(下载链接),放在对应目录下即可。

🍋3.4输入数据组织


        yolov12还是以yolo格式的数据为例,./ultralytics/cfg/datasets/data.yaml的内容示例如下:

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco8  # dataset root dir
train: images/train  # train images (relative to 'path') 4 images
val: images/val  # val images (relative to 'path') 4 images
test:  # test images (optional)# Classes (80 COCO classes)
names:0: person1: bicycle2: car# ...77: teddy bear78: hair drier79: toothbrush


        这个是官方的标准coco数据集,需要换成自己的数据集格式,此处建议根据自己的数据集设置新建一个fall_detect_coco128.yaml文件,放在./ultralytics/cfg/datasets/目录下,最后数据集设置就可以直接用自己的yinliao_detect_coco128.yaml文件了。以我的yinliao_detect_coco128.yaml文件为例:

path: /home/datasets/yinliao# dataset root dir
train: images/train  # train images (relative to 'path') 4 images
val: images/val  # val images (relative to 'path') 4 images
test: images/test # test images (optional)names:0: AD1: Wangzai2: Wanglaoji3: Qingdao4: Xuebi5: Qixi6: Weita7: Dongpeng8: Baishi9: Hongniu10: Xingbake11: Yongchuangtianya12: Qingshuang13: Fenda_Orange14: Meinianda_Orange15: Meinianda_Green


🍭🍭4.目标检测训练代码


准备好数据和模型之后,就可以开始训练了,train.py的内容显示为:

from ultralytics import YOLO# Load a model
#model = YOLO('yolov12n.yaml')  # build a new model from YAML
#model = YOLO('yolov12n.pt')  # load a pretrained model (recommended for training)
model = YOLO('yolov12n.yaml').load('yolov12n.pt')  # build from YAML and transfer weights# Train the model
results = model.train(data='yinliao_detect_coco128.yaml', epochs=200, imgsz=640)


        通常我会选择在基础YOLO模型上进行transfer微调,不会从头开始训练,如果想自己从头开始,可以自行选择第一种方式。这里建议选择第三种。

⭐4.1训练过程


        开始训练之后就会开始打印log文件了。如下图所示:

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size199/200      2.62G     0.3875     0.4138     0.8016         45        640: 100%|██████████| 11/11 [00:01<00:00,  8.74it/s]Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 6/6 [00:00<00:00,  8.67it/s]all        176        484      0.993          1      0.995      0.935Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size200/200      2.63G     0.3813     0.4127     0.8208         43        640: 100%|██████████| 11/11 [00:01<00:00,  8.83it/s]Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 6/6 [00:00<00:00,  8.78it/s]all        176        484      0.993          1      0.995      0.935200 epochs completed in 0.151 hours.
Optimizer stripped from runs/detect/train5/weights/last.pt, 5.5MB
Optimizer stripped from runs/detect/train5/weights/best.pt, 5.5MBValidating runs/detect/train5/weights/best.pt...
Ultralytics 8.3.63 🚀 Python-3.11.0 torch-2.6.0+cu124 CUDA:0 (NVIDIA RTX A6000, 45623MiB)
YOLOv12 summary (fused): 352 layers, 2,559,848 parameters, 0 gradients, 6.3 GFLOPsClass     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 6/6 [00:01<00:00,  4.51it/s]all        176        484      0.995          1      0.995      0.938Wangzai         38         38      0.996          1      0.995      0.946Wanglaoji         38         38      0.996          1      0.995      0.961Qingdao         35         35      0.995          1      0.995      0.972Xuebi         35         35      0.996          1      0.995      0.936Qixi         35         35      0.998          1      0.995      0.915Weita         38         39      0.998          1      0.995      0.904Dongpeng         31         31      0.989          1      0.995      0.868Hongniu         32         32      0.999          1      0.995      0.858Xingbake          6          6      0.976          1      0.995      0.965Yongchuangtianya         35         35      0.995          1      0.995      0.945Qingshuang         35         35      0.996          1      0.995      0.966Fenda_Orange         30         30      0.996          1      0.995      0.946Meinianda_Orange         29         29      0.999          1      0.995      0.973Meinianda_Green         65         66      0.997          1      0.995       0.98
Speed: 0.1ms preprocess, 0.9ms inference, 0.0ms loss, 0.7ms postprocess per image
Results saved to runs/detect/train5

⭐4.2训练结果

训练完成后的结果如下:

        其中weights文件夹内会包含2个模型,一个best.pth,一个last.pth。

        至此就可以使用best.pth进行推理检测是否发生火灾了。

训练精度展示:

可以看到,基本每个类别都能达到99%以上。训练效果还是很不错的。 

🏆🏆5.目标检测推理代码


批量推理python代码如下:

from ultralytics import YOLO
from PIL import Image
import cv2
import osmodel = YOLO('/yolov12/runs/detect/train4/weights/best.pt')  # load a custom model
path = '/home/dataset/yinliao/images/test/'  #test_image_path_dir
img_list = os.listdir(path)
for img_path in img_list:
###  =============detect=====================im1 = Image.open(os.path.join(path,img_path))results = model.predict(source=im1, save=True,save_txt=True)

若需要完整数据集和源代码可以私信。

整理不易,欢迎一键三连!!!
送你们一条美丽的--分割线--

🌷🌷🍀🍀🌾🌾🍓🍓🍂🍂🙋🙋🐸🐸🙋🙋💖💖🍌🍌🔔🔔🍉🍉🍭🍭🍋🍋🍇🍇🏆🏆📸📸⛵⛵⭐⭐🍎🍎👍👍🌷🌷

相关文章:

【工业场景】用YOLOv12实现饮料类别识别

饮料类别识别任务的意义在于帮助人们更快速地识别和区分不同类型的饮料&#xff0c;从而提高消费者的购物体验和满意度。对于商家而言&#xff0c;饮料类别识别可以帮助他们更好地管理库存、优化货架布局和预测销售趋势&#xff0c;从而提高运营效率和利润。此外&#xff0c;饮…...

宽带空时波束形成算法原理及MATLAB仿真

宽带阵列信号处理 空时波束形成、空时波束形成方向图 卫星导航空时抗干扰算法 MATLAB仿真 文章目录 前言一、空时波束形成结构二、空时波束形成方向图三、MATLAB仿真四、MATLAB源代码总结 前言 \;\;\;\;\; 空时波束形成&#xff08;Space-Time Beamforming&#xff09;是一种结…...

406. 根据身高重建队列

链接 406. 根据身高重建队列 - 力扣&#xff08;LeetCode&#xff09; 题目 思路 可能的一个思路是先对高的人进行处理&#xff0c;这样后面插入矮的人时不会影响高的人的位置。比如&#xff0c;如果先处理高个子&#xff0c;那么当插入一个矮个子的时候&#xff0c;前面的高…...

机器学习:人工智能的核心驱动力

近年来&#xff0c;机器学习&#xff08;Machine Learning&#xff0c;简称ML&#xff09;已成为人工智能&#xff08;AI&#xff09;领域的核心驱动力。它不仅广泛应用于图像识别、自然语言处理、医疗诊断等领域&#xff0c;还推动了自动驾驶、智能推荐系统等前沿技术的发展。…...

机器视觉中的传统视觉与深度视觉

工业视觉是现代制造业中一个非常重要的应用领域&#xff0c;广泛用于产品质量检测&#xff0c;尤其是在生产线上。几乎所有的工业产品在流入市场之前&#xff0c;都要经历严格的缺陷检测环节&#xff0c;以确保它们符合质量标准。而在这一过程中&#xff0c;工业视觉检测系统发…...

机器学习开发全流程详解:从数据到部署的完整指南

机器学习项目的成功不仅依赖算法选择&#xff0c;更在于系统化的开发流程。本文详细拆解各阶段的核心任务、工具及注意事项&#xff0c;并通过表格总结帮助开发者快速掌握关键要点。 1. 数据获取与准备 数据是机器学习的基础&#xff0c;需确保数据的质量与代表性。 关键任务…...

春晚魔术[蓝桥]

这里 考虑到N很大则快速幂无法处理&#xff0c;因为它并没有被取模 欧拉定理&#xff1a; 当是质数时 是质数 两边同时取mod&#xff0c; // // Created by yumo_ // #include<bits/stdc.h>using namespace std; #define scin std::cin #define scout std::cout using …...

CF580B Kefa and Company(滑动窗口)

题目描述 Sergei B., the young coach of Pokemons, has found the big house which consists of n flats ordered in a row from left to right. It is possible to enter each flat from the street. It is possible to go out from each flat. Also, each flat is connecte…...

多模态RAG实践:如何高效对齐不同模态的Embedding空间?

目录 多模态RAG实践&#xff1a;如何高效对齐不同模态的Embedding空间&#xff1f; 一、为什么需要对齐Embedding空间&#xff1f; 二、常见的对齐方法与关键技术点 &#xff08;一&#xff09;对比学习&#xff08;Contrastive Learning&#xff09; &#xff08;二&#…...

linux 时钟

chronyc sourcestats 查看所有的源以及那个比较稳定 chronyc tracking 查看当前使用的是那个 ntpstat synchronised to NTP server (119.28.183.184) at stratum 3 time correct to within 57 ms polling server every 1024 s chronyc tracking | grep "Reference ID&quo…...

【leetcode100】每日温度

1、题目描述 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 示例 1: 输…...

华为交换综合实验——VRRP、MSTP、Eth-trunk、NAT、DHCP等技术应用

一、实验拓扑 二、实验需求 1,内网Ip地址使用172.16.0.0/16分配 2,sw1和SW2之间互为备份 3, VRRP/STP/VLAN/Eth-trunk均使用 4,所有Pc均通过DHCP获取IP地址 5,ISP只能配置IP地址 6,所有电脑可以正常访问IsP路由器环回 三、需求分析 1、设备连接需求 二层交换机&#xff08;LS…...

边缘检测技术现状初探2:多尺度与形态学方法

一、多尺度边缘检测方法 多尺度边缘检测通过在不同分辨率/平滑度下分析图像&#xff0c;实现&#xff1a; 粗尺度&#xff08;大σ值&#xff09;&#xff1a;抑制噪声&#xff0c;提取主体轮廓细尺度&#xff08;小σ值&#xff09;&#xff1a;保留细节&#xff0c;检测微观…...

【JavaScript】十四、轮播图

文章目录 实现一个轮播图&#xff0c;功能点包括&#xff1a; 自动播放鼠标经过暂时播放鼠标离开继续播放点击切换按钮手动切换 div盒子嵌套先写出静态HTML&#xff0c;再使用JS来修改样式和数据&#xff0c;渲染页面&#xff1a; <!DOCTYPE html> <html lang"…...

19信号和槽_信号和槽的基本概念

①Linux 信号 Signal 是系统内部的通知机制. 是进程间通信的方式 &#xff08;给进程发信号kill命令&#xff0c;像情景内存泄漏&#xff0c;管道一端关闭另一端还是读&#xff0c;会给进程发信号&#xff09; ②信号三要素 信号源: 谁发的信号 信号的类型: 哪种类别的信号 信…...

云端革命:数字文明的重构与新生

引言&#xff1a;算力大爆炸时代 2023年&#xff0c;当ChatGPT在全球掀起AI狂潮时&#xff0c;很少有人意识到&#xff0c;支撑这场智能革命的正是背后庞大的云计算基础设施。每天&#xff0c;全球云计算平台处理的数据量超过500EB&#xff0c;相当于5亿部高清电影&#xff1b…...

论文阅读笔记:Denoising Diffusion Implicit Models (4)

0、快速访问 论文阅读笔记&#xff1a;Denoising Diffusion Implicit Models &#xff08;1&#xff09; 论文阅读笔记&#xff1a;Denoising Diffusion Implicit Models &#xff08;2&#xff09; 论文阅读笔记&#xff1a;Denoising Diffusion Implicit Models &#xff08…...

红帽Linux怎么重置密码

完整流程 ●重启操作系统&#xff0c;进入启动界面 ●然后按进入选择项界面 ●找到linux单词开头的那一行&#xff0c;然后移动到该行末尾&#xff08;方向键移动或者使用键盘上的end&#xff09;&#xff0c;在末尾加入rd.break ●按ctrl x进入rd.break模式 ●在该模式下依次…...

关于存储的笔记

存储简介 名称适用场景常见运用网络环境备注块存储高性能、低延迟数据库局域网专业文件存储数据共享共享文件夹、非结构化数据局域网通用对象存储大数据、云存储网盘、网络媒体公网&#xff08;断点续传、去重&#xff09;海量 存储协议 名称协议块存储FC-SAN或IP-SAN承载的…...

java根据集合中对象的属性值大小生成排名

1&#xff1a;根据对象属性降序排列 public static <T extends Comparable<? super T>> LinkedHashMap<T, Integer> calculateRanking(List<ProductPerformanceInfoVO> dataList, Function<ProductPerformanceInfoVO, T> keyExtractor) {Linked…...

蓝桥杯嵌入式16届—— LED模块

使用主板 是STMG431RBT6 STMG431RBT6资源 资源配置表 跳线说明表 引脚状况 PC8~PC15分别对应着LD1~LD8 SN74HC573ADWR 是一种锁存器 当 LE&#xff08;锁存使能&#xff09;为高电平&#xff0c;输出 Q 实时跟随输入 D 的变化。​当 LE 为低电平&#xff0c;输出锁定为最后…...

【IOS webview】源代码映射错误,页面卡住不动

报错场景 safari页面报源代码映射错误&#xff0c;页面卡住不动。 机型&#xff1a;IOS13 技术栈&#xff1a;react 其他IOS也会报错&#xff0c;但不影响页面显示。 debug webpack配置不要GENERATE_SOURCEMAP。 解决方法&#xff1a; GENERATE_SOURCEMAPfalse react-app…...

206. 反转链表 92. 反转链表 II 25. K 个一组翻转链表

leetcode Hot 100系列 文章目录 一、翻转链表二、反转链表 II三、K 个一组翻转链表总结 一、翻转链表 建立pre为空&#xff0c;建立cur为head&#xff0c;开始循环&#xff1a;先保存cur的next的值&#xff0c;再将cur的next置为pre&#xff0c;将pre前进到cur的位置&#xf…...

绘制动态甘特图(以流水车间调度为例)

import matplotlib.pyplot as plt import matplotlib.animation as animation import numpy as np from matplotlib import cm# 中文字体配置&#xff08;必须放在所有绘图语句之前&#xff09; plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] Fa…...

生成式AI应用带来持续升级的网络安全风险

生成式AI应用带来持续升级的网络安全风险概要 根据Netskope最新研究&#xff0c;企业向生成式AI&#xff08;GenAI&#xff09;应用共享的数据量呈现爆炸式增长&#xff0c;一年内激增30倍。目前平均每家企业每月向AI工具传输的数据量已达7.7GB&#xff0c;较一年前的250MB实现…...

C++17更新内容汇总

C17 是 C14 的进一步改进版本&#xff0c;它引入了许多增强特性&#xff0c;优化了语法&#xff0c;并提升了编译期计算能力。以下是 C17 的主要更新内容&#xff1a; 1. 结构化绑定&#xff08;Structured Bindings&#xff09; 允许同时解构多个变量&#xff0c;从 std::tup…...

conda activate激活环境失败问题

出现 CondaError: Run conda init before conda activate 的错误&#xff0c;通常是因为 Conda 没有正确初始化当前的命令行环境。以下是解决方法&#xff1a; 1. 初始化 Conda 运行以下命令以初始化 Conda&#xff1a; conda init解释&#xff1a; conda init 会修改当前 S…...

TensorFlow实现逻辑回归

目录 前言TensorFlow实现逻辑回归 前言 实现逻辑回归的套路和实现线性回归差不多, 只不过逻辑回归的目标函数和损失函数不一样而已. TensorFlow实现逻辑回归 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import mak…...

第十四届蓝桥杯大赛软件赛省赛Python 大学 C 组:6.棋盘

题目1 棋盘 小蓝拥有 nn 大小的棋盘&#xff0c;一开始棋盘上全都是白子。 小蓝进行了 m 次操作&#xff0c;每次操作会将棋盘上某个范围内的所有棋子的颜色取反(也就是白色棋子变为黑色&#xff0c;黑色棋子变为白色)。 请输出所有操作做完后棋盘上每个棋子的颜色。 输入格…...

电商场景下高稳定性数据接口的选型与实践

在电商系统开发中&#xff0c;API接口需要应对高并发请求、动态数据更新和复杂业务场景。我将重点解析电商场景对数据接口的特殊需求及选型方案。 一、电商API必备的四大核心能力 千万级商品数据实时同步 支持SKU基础信息/价格/库存多维度更新每日增量数据抓取与历史版本对比…...

内网服务器centos7安装jdk17

1. 下载 JDK 17 安装包&#xff08;在外网环境操作&#xff09; 在可联网的机器上下载 JDK 17 的压缩包&#xff08;推荐使用 OpenJDK&#xff09;&#xff1a; OpenJDK 官方源&#xff1a; Adoptium Eclipse Temurin Azul Zulu 直接下载命令示例&#xff08;在外网机器上执行…...

Git 使用教程

Git 使用教程 Git 是目前最流行的分布式版本控制系统&#xff0c;它能够高效地管理代码&#xff0c;并支持团队协作开发。本文将介绍 Git 的基本概念、常用命令以及如何在实际项目中使用 Git 进行版本控制。 1. Git 基本概念 在使用 Git 之前&#xff0c;需要了解以下几个基…...

【无标题】跨网段耦合器解决欧姆龙CJ系列PLC通讯问题案例

欧姆龙CJ系列PLC不同网段的通讯问题 一、项目背景 某大型制造企业的生产车间内&#xff0c;采用了多台欧姆龙CJ系列PLC对生产设备进行控制。随着企业智能化改造的推进&#xff0c;需要将这些PLC接入工厂的工业以太网&#xff0c;以便实现生产数据的实时采集、远程监控以及与企业…...

13_pandas可视化_seaborn

导入库 import numpy as np import pandas as pd # import matplotlib.pyplot as plt #交互环境中不需要导入 import seaborn as sns sns.set_context({figure.figsize:[8, 6]}) # 设置图大小 # 屏蔽警告 import warnings warnings.filterwarnings("ignore")关系图 …...

【C++进阶四】vector模拟实现

目录 1.构造函数 (1)无参构造 (2)带参构造函数 (3)用迭代器构造初始化函数 (4)拷贝构造函数 2.operator= 3.operator[] 4.size() 5.capacity() 6.push_back 7.reserve 8.迭代器(vector的原生指针) 9.resize 10.pop_back 11.insert 12.erase 13.memcpy…...

14使用按钮实现helloworld(1)

目录 还可以通过按钮的方式来创建 hello world 涉及Qt 中的信号槽机制本质就是给按钮的点击操作,关联上一个处理函数当用户点击的时候 就会执行这个处理函数 connect&#xff08;谁发的信号&#xff0c; 信号类型&#xff0c; 谁来处理这个信息&#xff0c; 怎么处理的&…...

嵌入式EMC设计面试题及参考答案

目录 解释 EMC(电磁兼容性)的定义及其两个核心方面(EMI 和 EMS) 电磁兼容三要素及相互关系 为什么产品必须进行 EMC 设计?列举至少三个实际工程原因 分贝(dB)在 EMC 测试中的作用是什么?为何采用对数单位描述干扰强度? 传导干扰与辐射干扰的本质区别及典型频率范围…...

cursor的.cursorrules详解

文章目录 1. 文件位置与作用2. 基本语法规则3. 常用规则类型与示例3.1 忽略文件/目录3.2 限制代码生成范围3.3 自定义补全建议3.4 安全规则 4. 高级用法4.1 条件规则4.2 正则表达式匹配4.3 继承规则 5. 示例文件6. 注意事项 Cursor 是一款基于 AI 的智能代码编辑器&#xff0c;…...

Opencv计算机视觉编程攻略-第七节 提取直线、轮廓和区域

第七节 提取直线、轮廓和区域 1.用Canny 算子检测图像轮廓2.用霍夫变换检测直线&#xff1b;3.点集的直线拟合4.提取连续区域5.计算区域的形状描述子 图像的边缘区域勾画出了图像含有重要的视觉信息。正因如此&#xff0c;边缘可应用于目标识别等领域。但是简单的二值边缘分布图…...

清明假期在即

2025年4月2日&#xff0c;6~22℃&#xff0c;一般 遇见的事&#xff1a;这么都是清明出去玩&#xff1f;你们不扫墓的么。 感受到的情绪&#xff1a;当精力不放在一个人身上&#xff0c;你就会看到很多人&#xff0c;其实可以去接触的。 反思&#xff1a;抖音上那么多不幸和幸…...

数字孪生技术解析:开启虚拟与现实融合新时代

一、数字孪生技术的概念与原理 数字孪生技术是一种通过构建物理对象的数字映射&#xff0c;实现虚拟与现实同步的技术。该技术集成了物联网、云计算、人工智能、大数据等多种前沿技术&#xff0c;能够对物理世界进行全方位的仿真和管理。在数字孪生技术中&#xff0c;物理建模…...

Docker Registry 清理镜像最佳实践

文章目录 registry-clean1. 简介2. 功能3. 安装 docker4. 配置 docker5. 配置域名解析6. 部署 registry7. Registry API 管理8. 批量清理镜像9. 其他10. 参考 registry-clean 1. 简介 registry-clean 是一个强大而高效的解决方案&#xff0c;旨在简化您的 Docker 镜像仓库管理…...

进程间的通信

一.理解 1.进程间通信的目的 数据传输&#xff0c;资源共享&#xff0c;通知事件&#xff0c;进程控制 2.进程间通信的本质 先让不同的进程看到"同一份"资源&#xff08;该资源只能由OS系统提供&#xff0c;不能由任何一个进程提供&#xff09; 3.具体通信方式 …...

当实时消费遇到 SPL:让数据处理更高效、简单

作者&#xff1a;豁朗 通过 SPL 消费&#xff0c;将业务逻辑“左移” SLS 对实时消费进行了功能升级&#xff0c;推出了 基于 SPL 的规则消费功能。在实时消费过程中&#xff0c;用户只需通过简单的 SPL 配置即可完成服务端的数据清洗和预处理操作。通过SPL消费可以将客户端复…...

Python----机器学习(线性回归:反向传播和梯度下降)

一、前向传播与反向传播的区别 前向传播是在参数固定后&#xff0c;向公式中传入参数&#xff0c;进行预测的一个过程。当参 数值选择的不恰当时&#xff0c;会导致最后的预测值不符合我们的预期&#xff0c;于是我们就 需要重新修改参数值。 在前向传播实验中时&#xff0c;我…...

如何平衡元器件成本与性能

要平衡元器件成本与性能&#xff0c;企业应当明确设计需求和目标、优化元器件选型策略、建立成本性能评估体系、推进标准化设计、加强供应链管理。其中&#xff0c;优化元器件选型策略尤其关键&#xff0c;它直接关系到产品的成本、性能与生命周期。在选型时&#xff0c;工程师…...

java项目分享-分布式电商项目附软件链接

今天来分享一下github上最热门的开源电商项目安装部署&#xff0c;star 12.2k&#xff0c;自行安装部署历时两天&#xff0c;看了这篇文章快的话半天搞定&#xff01;该踩的坑都踩完了&#xff0c;软件也打包好了就差喂嘴里。 项目简介 mall-swarm是一套微服务商城系统&#xf…...

低代码框架

在数字化转型浪潮中&#xff0c;软件开发的效率与成本成为企业关注的焦点。低代码框架应运而生&#xff0c;以其独特的开发模式&#xff0c;打破了传统软件开发的壁垒&#xff0c;为企业和开发者带来了全新的解决方案。那么&#xff0c;究竟什么是低代码框架呢&#xff1f;​ …...

Git Reset 命令详解与实用示例

文章目录 Git Reset 命令详解与实用示例git reset 主要选项git reset 示例1. 撤销最近一次提交&#xff08;但保留更改&#xff09;2. 撤销最近一次提交&#xff0c;并清除暂存区3. 彻底撤销提交&#xff0c;并丢弃所有更改4. 回退到特定的提交5. 取消暂存的文件 git reset 与 …...

多层内网渗透测试虚拟仿真实验环境(Tomcat、ladon64、frp、Weblogic、权限维持、SSH Server Wrapper后门)

在线环境:https://www.yijinglab.com/ 拓扑图 信息收集 IP地址扫描 确定目标IP为10.1.1.121 全端口扫描 访问靶机8080端口,发现目标是一个Tomcat服务,版本...