探索计算机视觉:开启智能图像处理的新纪元

news2024/11/17 7:19:31

1ba423e428264240aa4519e9aee743e8.png

第一部分:计算机视觉概述与基本原理

计算机视觉,作为人工智能领域的重要分支,旨在让计算机具备处理和理解图像和视频数据的能力。随着深度学习技术的飞速发展,计算机视觉已经在许多实际应用场景中取得了显著的成果,如图像识别、目标检测、图像分割等。本部分将为您详细解析计算机视觉的基本原理,并介绍Python在计算机视觉中的应用。

1.1 图像处理基础

图像处理是计算机视觉的基础,主要包括图像预处理、图像增强、图像复原等。在Python中,我们通常使用OpenCV和PIL(Python Imaging Library)等库进行图像处理。以下是一个简单的图像处理示例:

import cv2
import matplotlib.pyplot as plt

# 读取图像
image = cv2.imread('example.jpg', cv2.IMREAD_GRAYSCALE)

# 显示原始图像
plt.subplot(1, 2, 1)
plt.imshow(image, cmap='gray')
plt.title('Original Image')
plt.axis('off')

# 应用高斯模糊
blurred_image = cv2.GaussianBlur(image, (5, 5), 0)

# 显示模糊后的图像
plt.subplot(1, 2, 2)
plt.imshow(blurred_image, cmap='gray')
plt.title('Blurred Image')
plt.axis('off')

plt.show()

1.2 特征提取

特征提取是计算机视觉的核心任务之一,它将图像数据转换为可以用于分类、识别的数值表示。常见的特征提取方法包括HOG(Histogram of Oriented Gradients)、SIFT(Scale-Invariant Feature Transform)和SURF(Speeded Up Robust Features)等。在Python中,我们可以使用OpenCV和skimage等库进行特征提取。以下是一个基于HOG特征提取的示例:

from skimage.feature import hog
from skimage import data, exposure
import matplotlib.pyplot as plt

# 读取图像
image = data.astronaut()

# 计算HOG特征
fd, hog_image = hog(image, orientations=8, pixels_per_cell=(16, 16),
                    cells_per_block=(1, 1), visualize=True, multichannel=True)

# 显示原始图像和HOG特征图像
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(8, 4), sharex=True, sharey=True)

ax1.imshow(image, cmap=plt.cm.gray)
ax1.set_title('Original Image')
ax1.axis('off')

# 可视化HOG特征
hog_image_rescaled = exposure.rescale_intensity(hog_image, in_range=(0, 10))

ax2.imshow(hog_image_rescaled, cmap=plt.cm.gray)
ax2.set_title('HOG Image')
ax2.axis('off')

plt.show()

1.3 深度学习与计算机视觉

深度学习技术在计算机视觉领域取得了显著的成果,特别是卷积神经网络(Convolutional Neural Networks, CNN)在图像分类、目标检测等任务中表现优异。在Python中,我们可以使用TensorFlow、Keras等深度学习框架来实现计算机视觉应用。以下是一个简单的CNN模型示例:

from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Activation

# 创建一个简单的CNN模型
model = Sequential()

# 添加卷积层
model.add(Conv2D(32, (3, 3), input_shape=(28, 28, 1)))
model.add(Activation('relu'))

# 添加最大池化层
model.add(MaxPooling2D(pool_size=(2, 2)))

# 添加全连接层
model.add(Flatten())
model.add(Dense(128))
model.add(Activation('relu'))

# 添加输出层
model.add(Dense(10))
model.add(Activation('softmax'))

# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# 打印模型概述
model.summary()

本部分简要介绍了计算机视觉的基本原理和Python在计算机视觉中的应用。接下来,我们将深入探讨计算机视觉的其他核心技术和应用场景。

第二部分:图像分类与深度学习框架

图像分类是计算机视觉中最基础的任务之一,它要求模型能够识别并标记图像中的对象。随着深度学习技术的发展,尤其是卷积神经网络(CNN)的广泛应用,图像分类的准确率得到了显著提升。在本部分中,我们将探讨如何使用Python中的深度学习框架来构建和训练图像分类模型。

2.1 卷积神经网络(CNN)

卷积神经网络是一种特殊的神经网络结构,它在图像处理方面表现出色。CNN通过一系列的卷积层、池化层和全连接层来提取图像特征,并最终进行分类。卷积层使用卷积操作提取图像的局部特征,池化层减小特征图的维度,而全连接层则将提取的特征转换为分类结果。

2.2 深度学习框架

Python中有许多流行的深度学习框架,如TensorFlow、Keras、PyTorch等,它们提供了丰富的API来构建和训练深度学习模型。以下是一个使用Keras构建CNN模型进行图像分类的示例:

from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Activation
from keras.datasets import cifar10
from keras.utils import to_categorical

# 加载CIFAR-10数据集
(x_train, y_train), (x_test, y_test) = cifar10.load_data()

# 数据预处理
x_train = x_train.astype('float32') / 255
x_test = x_test.astype('float32') / 255
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

# 创建CNN模型
model = Sequential()
model.add(Conv2D(32, (3, 3), padding='same', input_shape=x_train.shape[1:]))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, (3, 3), padding='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dense(10))
model.add(Activation('softmax'))

# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# 训练模型
model.fit(x_train, y_train, batch_size=32, epochs=10, validation_split=0.2)

# 评估模型
score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])

2.3 数据增强

在实际应用中,我们通常会遇到数据不足或数据分布不均的问题。数据增强是一种通过人工方式增加训练数据多样性的技术,它可以提高模型的泛化能力。在Python中,我们可以使用ImageDataGenerator类来实现数据增强:

from keras.preprocessing.image import ImageDataGenerator

# 创建数据增强生成器
datagen = ImageDataGenerator(
    rotation_range=40,
    width_shift_range=0.2,
    height_shift_range=0.2,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True,
    fill_mode='nearest')

# 显示一些增强后的图像
for x_batch, y_batch in datagen.flow(x_train, y_train, batch_size=9):
    plt.figure(figsize=(10, 10))
    for i in range(9):
        plt.subplot(3, 3, i+1)
        plt.imshow(x_batch[i])
        plt.axis('off')
    plt.show()
    break

2.4 模型评估与优化

在训练模型后,我们需要评估模型的性能,并根据评估结果对模型进行优化。常用的评估指标包括准确率、召回率、F1分数等。此外,我们还可以使用学习曲线、混淆矩阵和ROC曲线等工具来分析模型的性能。

from sklearn.metrics import classification_report, confusion_matrix
import seaborn as sns

# 预测测试集
y_pred = model.predict(x_test)
y_pred_classes = np.argmax(y_pred, axis=1)
y_true_classes = np.argmax(y_test, axis=1)

# 计算分类报告
report = classification_report(y_true_classes, y_pred_classes)

# 绘制混淆矩阵
cm = confusion_matrix(y_true_classes, y_pred_classes)
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')
plt.xlabel('Predicted labels')
plt.ylabel('True labels')
plt.show()

# 打印分类报告
print(report)

本部分介绍了如何使用Python中的深度学习框架构建和训练图像分类模型,以及如何进行数据增强和模型评估。在下一部分中,我们将探讨计算机视觉中的目标检测技术。

第三部分:目标检测与卷积神经网络

目标检测是计算机视觉中的一个重要领域,它不仅要识别图像中的对象,还要定位对象的边界框。随着深度学习技术的进步,尤其是卷积神经网络(CNN)的发展,目标检测的准确性和实时性都得到了显著提升。在本部分中,我们将探讨如何使用Python中的深度学习框架来实现目标检测。

3.1 目标检测算法

目标检测算法可以分为两大类:一类是两阶段检测算法,如R-CNN、Fast R-CNN、Faster R-CNN等;另一类是单阶段检测算法,如YOLO(You Only Look Once)、SSD(Single Shot MultiBox Detector)等。两阶段算法首先生成候选区域,然后对每个区域进行分类和边界框回归;而单阶段算法则直接在图像上预测类别和边界框。

3.2 Faster R-CNN

Faster R-CNN是一种流行的两阶段目标检测算法,它引入了区域建议网络(Region Proposal Network, RPN)来生成高质量的候选区域。以下是一个使用Python和TensorFlow实现Faster R-CNN的示例:

import tensorflow as tf

# 定义Faster R-CNN模型
def build_faster_rcnn_model():
    # 加载预训练的卷积基模型,例如ResNet50
    base_model = tf.keras.applications.ResNet50(weights='imagenet', include_top=False, input_tensor=None, input_shape=(None, None, 3))
    
    # 构建RPN
    # ...
    
    # 构建ROI Pooling层
    # ...
    
    # 构建分类和边界框回归头
    # ...
    
    # 组合模型
    model = tf.keras.Model(inputs=[base_model.input], outputs=[classifications, bounding_boxes])
    
    return model

# 构建Faster R-CNN模型
model = build_faster_rcnn_model()

# 编译模型
model.compile(optimizer='adam', loss={'classifications': 'categorical_crossentropy', 'bounding_boxes': 'mean_squared_error'}, metrics=['accuracy'])

# 训练模型
# ...

3.3 YOLO (You Only Look Once)

YOLO是一种流行的单阶段目标检测算法,它将目标检测任务视为一个单一的回归问题,直接在图像上预测类别和边界框。YOLO的核心思想是将图像分割成多个区域,并为每个区域预测边界框和类别概率。以下是一个使用Python和PyTorch实现YOLOv5的示例:

首先,确保你已经安装了PyTorch和YOLOv5的依赖库。你可以从YOLOv5的官方GitHub仓库(https://github.com/ultralytics/yolov5)克隆代码并安装所需的依赖。

# 导入所需的库
import torch
import cv2
from yolov5 import YOLOv5

# 加载预训练的YOLOv5模型
model = YOLOv5('yolov5s.pt', device='cuda')

# 读取图像
image = cv2.imread('example.jpg')

# 将图像转换为YOLOv5所需的格式
results = model(image)

# 获取检测结果
detections = results.pandas().xyxy[0]

# 遍历检测结果并绘制边界框
for index, row in detections.iterrows():
    x1, y1, x2, y2 = int(row['xmin']), int(row['ymin']), int(row['xmax']), int(row['ymax'])
    confidence = round(row['confidence'], 2)
    label = row['name']
    
    # 绘制边界框和标签
    cv2.rectangle(image, (x1, y1), (x2, y2), (255, 0, 0), 2)
    cv2.putText(image, f'{label} {confidence}', (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 2)

# 显示图像
cv2.imshow('YOLOv5 Detection', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

3.4 模型评估与优化

在训练目标检测模型后,我们需要评估模型的性能,并根据评估结果对模型进行优化。常用的评估指标包括平均精度(AP)、平均精度均值(mAP)、精确度、召回率等。此外,我们还可以使用混淆矩阵、PR曲线和ROC曲线等工具来分析模型的性能。

为了评估目标检测模型,我们通常需要在多个图像上运行模型,并使用评估工具计算性能指标。以下是一个使用Python和COCO API评估目标检测模型的示例:

# 导入所需的库
from pycocotools.coco import COCO
from pycocotools.cocoeval import COCOeval

# 加载COCO数据集的注释
coco_gt = COCO('annotations/instances_val2017.json')

# 加载模型预测结果
coco_dt = coco_gt.loadRes('predictions.json')

# 初始化COCOeval对象
coco_eval = COCOeval(coco_gt, coco_dt, 'bbox')

# 运行评估
coco_eval.evaluate()
coco_eval.accumulate()
coco_eval.summarize()

本部分介绍了如何使用Python中的深度学习框架实现目标检测,包括Faster R-CNN和YOLO算法。我们还讨论了如何评估和优化目标检测模型。在下一部分中,我们将探讨计算机视觉中的图像分割技术。

第四部分:图像分割与语义理解

图像分割是计算机视觉中的另一个重要任务,它旨在将图像划分为多个区域或对象,以便于进一步的分析和理解。图像分割技术广泛应用于医学影像、自动驾驶、无人机监控等领域。在本部分中,我们将探讨如何使用Python中的深度学习框架来实现图像分割。

4.1 图像分割算法

图像分割算法主要分为两类:语义分割和实例分割。语义分割将图像中的每个像素分配给一个类别,而不区分不同的实例;实例分割不仅区分不同的类别,还区分同一类别中的不同实例。常见的图像分割算法有FCN(Fully Convolutional Network)、Mask R-CNN、U-Net等。

4.2 FCN(Fully Convolutional Network)

FCN是一种用于语义分割的卷积神经网络,它将传统的卷积层和全连接层替换为卷积层,从而可以接受任意尺寸的输入图像,并输出相应尺寸的分割图像。以下是一个使用Python和TensorFlow实现FCN的示例:

import tensorflow as tf
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D, UpSampling2D, Concatenate

# 定义FCN模型
def build_fcn_model(input_shape, num_classes):
    inputs = Input(shape=input_shape)
    
    # 编码器部分
    x = Conv2D(32, (3, 3), activation='relu', padding='same')(inputs)
    x = MaxPooling2D((2, 2))(x)
    
    x = Conv2D(64, (3, 3), activation='relu', padding='same')(x)
    x = MaxPooling2D((2, 2))(x)
    
    x = Conv2D(128, (3, 3), activation='relu', padding='same')(x)
    x = MaxPooling2D((2, 2))(x)
    
    # 解码器部分
    x = Conv2D(128, (3, 3), activation='relu', padding='same')(x)
    x = UpSampling2D((2, 2))(x)
    
    x = Conv2D(64, (3, 3), activation='relu', padding='same')(x)
    x = UpSampling2D((2, 2))(x)
    
    x = Conv2D(32, (3, 3), activation='relu', padding='same')(x)
    x = UpSampling2D((2, 2))(x)
    
    # 输出层
    outputs = Conv2D(num_classes, (1, 1), activation='softmax')(x)
    
    model = Model(inputs=[inputs], outputs=[outputs])
    return model

# 构建FCN模型
model = build_fcn_model((256, 256, 3), 10)

# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# 显示模型概述
model.summary()

4.3 Mask R-CNN

Mask R-CNN是在Faster R-CNN的基础上扩展而来的,它不仅可以检测图像中的对象,还可以为每个对象生成一个精确的分割掩码。以下是一个使用Python和TensorFlow实现Mask R-CNN的示例:

import tensorflow as tf
from mrcnn.model import MaskRCNN

# 定义Mask R-CNN模型
def build_mask_rcnn_model(num_classes):
    model = MaskRCNN(mode="training", config=Config(), model_dir='logs')
    return model

# 构建Mask R-CNN模型
model = build_mask_rcnn_model(10)

# 编译模型
model.compile(optimizer='adam', loss={'mrcnn_class_loss': 'categorical_crossentropy', 'mrcnn_bbox_loss': 'mean_squared_error', 'mrcnn_mask_loss': 'binary_crossentropy'}, metrics=['accuracy'])

# 显示模型概述
model.summary()

4.4 模型评估与优化

评估图像分割模型的关键指标是模型的精确度、召回率、交并比(IoU,Intersection over Union)以及Dice系数。这些指标可以帮助我们了解模型在像素级别上的性能。为了评估图像分割模型,我们通常需要在多个图像上运行模型,并使用评估工具计算性能指标。以下是一个使用Python和Dice系数评估语义分割模型的示例:

import numpy as np

# 计算Dice系数
def dice_coefficient(y_true, y_pred, smooth=1):
    intersection = np.sum(y_true * y_pred)
    union = np.sum(y_true) + np.sum(y_pred)
    dice = (2. * intersection + smooth) / (union + smooth)
    return dice

# 预测测试集
y_pred = model.predict(x_test)

# 将预测结果转换为二值图像
y_pred_binary = (y_pred > 0.5).astype(np.uint8)

# 计算Dice系数
dice = dice_coefficient(y_test, y_pred_binary)

# 打印Dice系数
print(f'Dice Coefficient: {dice}')

在实际应用中,我们可能需要根据具体任务调整模型的架构或超参数,以提高模型的性能。例如,我们可以通过增加卷积层的深度或宽度来提高模型的复杂度,或者通过数据增强来增加训练样本的多样性。此外,我们还可以使用迁移学习技术,利用预训练模型在特定任务上微调,以加快训练速度和提高模型性能。

本部分介绍了如何使用Python中的深度学习框架实现图像分割,包括FCN和Mask R-CNN算法。我们还讨论了如何评估和优化图像分割模型。在下一部分中,我们将探讨计算机视觉中的视频处理技术。

第五部分:视频处理与行为分析

视频处理是计算机视觉中的一个重要领域,它涉及从视频中提取有用信息、分析和理解视频内容的能力。随着技术的进步,视频处理在安全监控、无人驾驶、体育分析等领域得到了广泛应用。在本部分中,我们将探讨如何使用Python中的深度学习框架来实现视频处理和行为分析。

5.1 视频处理基础

视频可以看作是连续的图像帧序列,因此视频处理在很多方面与图像处理相似。在Python中,我们通常使用OpenCV库来处理视频,包括读取视频、提取帧、转换颜色空间等。以下是一个简单的视频处理示例:

import cv2

# 打开视频文件
video_capture = cv2.VideoCapture('example.mp4')

# 检查视频是否成功打开
if not video_capture.isOpened():
    print("Error: Could not open video.")
    exit()

# 循环读取视频帧
while True:
    # 读取下一帧
    ret, frame = video_capture.read()
    
    # 如果正确读取帧,ret为True
    if not ret:
        print("Can't receive frame (stream end?). Exiting ...")
        break
    
    # 在这里可以添加视频处理的代码
    # 例如,转换为灰度图像
    gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    
    # 显示结果帧
    cv2.imshow('Video Processing', gray_frame)
    
    # 按下 'q' 键退出循环
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放视频流
video_capture.release()
# 关闭所有OpenCV窗口
cv2.destroyAllWindows()

5.2 行为分析

行为分析是视频处理中的一个高级任务,它旨在从视频中识别和理解人类或物体的行为。这通常涉及到目标跟踪、行为识别和事件检测等技术。在Python中,我们可以使用深度学习框架来构建行为分析模型。以下是一个使用Python和TensorFlow实现行为识别的示例:

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense

# 定义行为识别模型
def build_behavior_recognition_model(input_shape, num_classes):
    model = Sequential()
    model.add(LSTM(64, return_sequences=True, input_shape=input_shape))
    model.add(LSTM(64, return_sequences=False))
    model.add(Dense(num_classes, activation='softmax'))
    return model

# 构建模型
model = build_behavior_recognition_model((30, 2048), 10)

# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# 显示模型概述
model.summary()

在这个示例中,我们使用LSTM(Long Short-Term Memory)网络来处理视频序列数据。LSTM网络是一种特殊的循环神经网络(RNN),它能够学习长期依赖关系,适合处理时间序列数据。我们首先将视频帧通过预训练的卷积神经网络提取特征,然后将这些特征输入到LSTM网络中进行行为识别。

5.3 模型评估与优化

评估视频处理模型的性能通常需要考虑准确率、召回率、F1分数等指标。为了评估模型,我们通常需要在多个视频上运行模型,并使用评估工具计算性能指标。以下是一个使用Python评估行为分析模型的示例:

# 评估模型
test_loss, test_accuracy = model.evaluate(test_data, test_labels)

# 打印评估结果
print(f'Test Loss: {test_loss}')
print(f'Test Accuracy: {test_accuracy}')

在实际应用中,我们可能需要根据具体任务调整模型的架构或超参数,以提高模型的性能。例如,我们可以通过增加LSTM单元的个数或堆叠多个LSTM层来提高模型的复杂度,或者通过数据增强来增加训练样本的多样性。此外,我们还可以使用迁移学习技术,利用预训练模型在特定任务上微调,以加快训练速度和提高模型性能。

本部分介绍了如何使用Python中的深度学习框架实现视频处理和行为分析。我们还讨论了如何评估和优化视频处理模型。随着计算机视觉技术的不断进步,视频处理将在更多领域发挥重要作用,为我们的生活带来便利。

知识点总结

以下是本篇博客的五个部分的知识点总结:

第一部分:计算机视觉概述与基本原理

  • 计算机视觉的定义:使计算机能够“看到”和理解图像和视频中的信息。
  • 图像处理基础:包括图像预处理、增强、复原等,以及Python中的OpenCV和PIL库。
  • 特征提取:从图像中提取有用的信息,如HOG、SIFT、SURF等算法。
  • 深度学习与计算机视觉:介绍深度学习技术在计算机视觉中的应用,如CNN、RNN等。

第二部分:图像分类与深度学习框架

  • 图像分类任务:识别图像中的对象并标记类别。
  • 卷积神经网络(CNN):一种特殊的神经网络结构,适合于图像处理。
  • 深度学习框架:介绍Python中的TensorFlow、Keras等深度学习框架。
  • 数据增强:通过人工方式增加训练数据多样性,提高模型泛化能力。
  • 模型评估与优化:介绍评估模型性能的指标和方法,如准确率、召回率、F1分数等。

第三部分:目标检测与卷积神经网络

  • 目标检测任务:识别图像中的对象并定位对象的边界框。
  • 目标检测算法:介绍两阶段检测算法(如R-CNN、Faster R-CNN)和单阶段检测算法(如YOLO、SSD)。
  • Faster R-CNN:介绍Faster R-CNN算法的原理和实现。
  • YOLO:介绍YOLO算法的原理和实现。
  • 模型评估与优化:介绍评估目标检测模型的指标和方法,如平均精度(AP)、平均精度均值(mAP)等。

第四部分:图像分割与语义理解

  • 图像分割任务:将图像划分为多个区域或对象。
  • 图像分割算法:介绍语义分割和实例分割的区别,以及常见的图像分割算法(如FCN、Mask R-CNN、U-Net)。
  • FCN:介绍FCN算法的原理和实现。
  • Mask R-CNN:介绍Mask R-CNN算法的原理和实现。
  • 模型评估与优化:介绍评估图像分割模型的指标和方法,如精确度、召回率、IoU、Dice系数等。

第五部分:视频处理与行为分析

  • 视频处理基础:介绍视频处理的基本概念和方法,如读取视频、提取帧、转换颜色空间等。
  • 行为分析任务:从视频中识别和理解人类或物体的行为。
  • 行为分析模型:介绍使用深度学习框架(如TensorFlow、Keras)构建行为分析模型的方法。
  • 模型评估与优化:介绍评估视频处理模型的指标和方法,如准确率、召回率、F1分数等。

总结

计算机视觉是一个涉及图像和视频处理的复杂领域,涵盖了从基础的图像处理到高级的深度学习算法。在本篇博客中,我们探讨了计算机视觉的各个方面,包括图像分类、目标检测、图像分割、视频处理和行为分析。我们学习了如何使用Python中的深度学习框架(如TensorFlow、Keras)来构建和训练这些模型,以及如何使用OpenCV和PIL等库进行图像处理。我们还了解了如何评估和优化这些模型,以提高它们的性能和泛化能力。随着计算机视觉技术的不断进步,这些知识将在许多领域发挥重要作用,为我们的生活带来便利。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1792633.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十七)- 微服务(7)

11.1 : 同步调用的问题 11.2 异步通讯的优缺点 11.3 MQ MQ就是事件驱动架构中的Broker 安装MQ docker run \-e RABBITMQ_DEFAULT_USERxxxx \-e RABBITMQ_DEFAULT_PASSxxxxx \--name mq \--hostname mq1 \-p 15672:15672 \-p 5672:5672 \-d \rabbitmq:3-management 浏览器访问1…

RabbitMQ-直连交换机(direct)使用方法

RabbitMQ-默认读、写方式介绍 RabbitMQ-发布/订阅模式 目录 1、概述 2、直连交换机 3、多重绑定 4、具体代码实现 4.1 生产者部分 4.2 消费者部分 5、运行代码 6、总结 1、概述 直连交换机,可以实现类似路由的功能,消息从交换机发送到哪个队列…

详细分析Mysql中的SQL_MODE基本知识(附Demo讲解)

目录 前言1. 基本知识2. Demo讲解2.1 ONLY_FULL_GROUP_BY2.2 STRICT_TRANS_TABLES2.3 NO_ZERO_IN_DATE2.4 NO_ENGINE_SUBSTITUTION2.5 ANSI_QUOTES 前言 了解Mysql内部的机制有助于辅助开发以及形成整体的架构思维 对于基本的命令行以及优化推荐阅读: 数据库中增…

【C语言】详解函数(下)(庖丁解牛版)

文章目录 1. 前言2. 数组做函数形参3. 函数嵌套调用和链式访问3.1 嵌套调用3.2 链式访问 1. 前言 详解C语言函数(上)的链接:http://t.csdnimg.cn/EGsfe 经过对函数的初步了解之后,相信大家已经对C语言标准库里的函数已经有初步的认知了,并且还学会了如…

HashMap第2讲——put方法源码及细节

上篇文章介绍了HashMap在JDK 1.8前后的四大变化,今天就进入到put方法的源码解析。HashMap的设计非常巧妙,细节也很多,今天来看看部分细节,后续的文章会一一介绍。 ps:学习源码的目的不仅仅是为了了解它的运行机制&…

Java——Stream流(2/2):Stream流的中间方法、终结方法(方法、案例演示)

目录 Stream流的中间方法 方法 案例演示 Stream流的终结方法 方法 案例演示1 收集 案例演示2 Stream流的中间方法 方法 中间方法指的是调用完成后会返回新的Stream流&#xff0c;可以继续使用(支持链式编程)。 Stream提供的常用中间方法说明Stream<T> filter(P…

Ansible部署 之 zookeeper集群

简介 Ansible是近年来越来越火的一款轻量级运维自动化工具&#xff0c;主要功能为帮助运维实现运维工作的自动化、降低手动操作的失误、提升运维工作效率。常用于自动化部署软件、自动化配置、自动化管理&#xff0c;支持playbook编排。配置简单&#xff0c;无需安装客户端&am…

【小白专用 已验证24.5.30】ThinkPHP6 视图

ThinkPHP6 视图 模板引擎支持普通标签和XML标签方式两种标签定义&#xff0c;分别用于不同的目的 标签类型描述普通标签主要用于输出变量、函数过滤和做一些基本的运算操作XML标签也称为标签库标签&#xff0c;主要完成一些逻辑判断、控制和循环输出&#xff0c;并且可扩展 c…

keil下载及安装(社区版本)

知不足而奋进 望远山而前行 目录 文章目录 前言 Keil有官方版本和社区版本&#xff0c;此文章为社区版本安装&#xff0c;仅供参考。 1.keil MDK 2.keil社区版介绍 3.keil下载 (1)打开进入登录界面 (2)点击下载,跳转到信息页面 (3)填写个人信息,点击提交 (4)点击下载…

基于web的垃圾分类回收系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;用户管理&#xff0c;公告管理&#xff0c;运输管理&#xff0c;基础数据管理 用户账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;运输管理&#xff0c;公告…

Web安全:Web体系架构存在的安全问题和解决方案

「作者简介」&#xff1a;2022年北京冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础对安全知识体系进行总结与归纳&#xff0c;著作适用于快速入门的 《网络安全自学教程》&#xff0c;内容涵盖系统安全、信息收集等…

Python算法于强化学习库之rlax使用详解

概要 在强化学习领域,开发和测试各种算法需要使用高效的工具和库。rlax 是 Google 开发的一个专注于强化学习的库,旨在提供一组用于构建和测试强化学习算法的基础构件。rlax 基于 JAX,利用 JAX 的自动微分和加速计算功能,使得强化学习算法的实现更加高效和简洁。本文将详细…

植物大战僵尸杂交版2.0.88最新版安装包

游戏简介 游戏中独特的杂交植物更是为游戏增添了不少亮点。这些杂交植物不仅外观独特&#xff0c;而且拥有更强大的能力&#xff0c;能够帮助玩家更好地应对游戏中的挑战。玩家可以通过一定的条件和方式&#xff0c;解锁并培养这些杂交植物&#xff0c;从而不断提升自己的战斗…

SpringBoot:SpringBoot中使用Redisson实现分布式锁

一、前言 Redisson是一个在Redis的基础上实现的Java驻内存数据网格&#xff08;In-Memory Data Grid&#xff09;。它不仅提供了一系列的分布式的Java常用对象&#xff0c;还提供了许多分布式服务。 刚好项目中需要使用到分布式锁&#xff0c;记录一下Redisson是如何使用分布式…

SpringBoot+Vue幼儿园管理系统(前后端分离)

技术栈 JavaSpringBootMavenMyBatisMySQLVueElement-UI 系统角色 教师用户管理员 功能截图

C++ STL - 容器

C STL&#xff08;标准模板库&#xff09;中的容器是一组通用的、可复用的数据结构&#xff0c;用于存储和管理不同类型的数据。 目录 零. 简介&#xff1a; 一 . vector&#xff08;动态数组&#xff09; 二. list&#xff08;双向链表&#xff09; 三. deque&#xff08…

k8s Pods漂移时间配置

默认为300秒 apiVersion: apps/v1 kind: Deployment metadata:name: my-test spec:replicas: 1selector:matchLabels:app: my-apptemplate:metadata:labels:app: my-appspec:containers:- name: my-containerimage: nginx:latestports:- containerPort: 80tolerations:- key: &…

LabVIEW传感器虚拟综合实验系统

LabVIEW传感器虚拟综合实验系统 开发了一个基于LabVIEW的传感器虚拟综合实验系统&#xff0c;该系统集成了NIELVIS和CSY系列传感器实验平台&#xff0c;通过图形化编程语言进行数据处理和实验管理。系统允许用户进行多种传感器参数的测量和实验报告的自动生成&#xff0c;支持…

使用DLL还是通讯协议进行LabVIEW设备集成

在使用LabVIEW进行设备集成时&#xff0c;可以选择通过设备提供的DLL或直接使用通讯协议。选择方法取决于开发效率、性能、灵活性和维护成本等因素。本文将从这几个方面详细分析两种方法的优劣&#xff0c;帮助做出最佳决策。 分析角度 1. 开发效率&#xff1a; DLL&a…

全能大模型AIGC产品的使用体验、选择倾向与未来展望

随着人工智能技术的迅猛发展&#xff0c;AIGC&#xff08;人工智能生成内容&#xff09;领域正迎来前所未有的繁荣。其中&#xff0c;全能大模型产品以其强大的生成能力和广泛的应用场景&#xff0c;吸引了众多用户的关注。腾讯元宝APP的上线更是为这一领域注入了新的活力。本文…