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

计算机视觉技术解析:从基础到前沿

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

计算机视觉是人工智能领域的一个重要分支,旨在使计算机能够理解和处理图像和视频数据。随着深度学习技术的飞速发展,计算机视觉已经在许多实际应用场景中取得了显著的成果,如图像识别、目标检测、图像分割等。本部分将为您详细解析计算机视觉的基本原理,并介绍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模型。我们还讨论了CNN模型的基本架构,包括卷积层、池化层和全连接层。在下一部分中,我们将探讨计算机视觉中的目标检测技术。

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

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

2.1 目标检测算法

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

2.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():# 加载预训练的卷积基模型,例如ResNet50base_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'])# 训练模型
# ...

2.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()

在这个示例中,我们首先加载了一个预训练的YOLOv5模型,并将其应用于一个图像上。YOLOv5模型输出检测结果,包括边界框、类别和置信度。我们遍历检测结果,绘制每个检测到的对象,并显示最终的图像。

在实际应用中,YOLOv5模型可以根据需要进行调整,以适应不同的任务和场景。例如,我们可以使用不同的模型配置文件(.pt文件)来改变模型的架构和参数,或者使用不同的输入图像大小来适应不同的输入数据。

YOLOv5模型的性能评估通常涉及在多个图像上运行模型,并使用评估工具计算性能指标,如平均精度(AP)、平均精度均值(mAP)等。这些指标可以帮助我们了解模型在像素级别上的性能,并指导我们如何进一步优化模型。

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

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

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

3.1 图像分割算法

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

3.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()

在这个示例中,我们首先定义了一个FCN模型,该模型包括编码器和解码器部分。编码器部分用于提取图像的低级特征,而解码器部分用于将这些特征上采样回原始图像尺寸,并输出最终的分割结果。输出层使用卷积层和softmax激活函数来预测每个像素的类别概率。

3.3 模型评估与优化

评估图像分割模型的性能是确保其准确性和适用性的关键步骤。在计算机视觉中,常用的评估指标包括精确度、召回率、交并比(IoU,Intersection over Union)以及Dice系数。这些指标有助于我们理解模型在像素级别上的性能,并指导我们如何进一步优化模型。

在Python中,我们可以使用各种库来评估和优化图像分割模型。以下是一个使用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}')

在这个示例中,我们首先定义了一个函数来计算Dice系数,这是一个常用的评估指标,用于评估两个二值图像之间的相似度。然后,我们使用模型对测试集进行预测,并将预测结果转换为二值图像。最后,我们计算并打印了Dice系数,以评估模型在分割任务中的性能。

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

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

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

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

4.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为Trueif 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()

在这个示例中,我们首先使用OpenCV库读取了一个视频文件,并检查视频是否成功打开。然后,我们循环读取视频帧,并在每个帧上执行视频处理操作,例如转换为灰度图像。最后,我们显示处理后的帧,并在用户按下’q’键时退出循环。

4.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层和一个全连接层。LSTM层用于处理时间序列数据,全连接层用于输出每个时间步的类别概率。我们首先定义了模型的架构,然后编译并显示了模型概述。

4.3 模型评估与优化

模型评估是确保视频处理和行为分析模型性能的关键步骤。在实际应用中,我们通常需要在多个视频上运行模型,并使用评估工具计算性能指标,如准确率、召回率、F1分数等。这些指标可以帮助我们了解模型在处理不同类型的行为时的表现,并指导我们如何进一步优化模型。

在Python中,我们可以使用各种库来评估和优化视频处理模型。以下是一个使用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中的深度学习框架实现视频处理和行为分析,并讨论了如何评估和优化视频处理模型。在下一部分中,我们将探讨计算机视觉中的其他前沿技术和应用场景。

第五部分:计算机视觉的前沿技术与应用

随着技术的不断进步,计算机视觉领域也不断涌现出新的技术和应用。在本部分中,我们将探讨一些计算机视觉的前沿技术和它们在现实世界中的应用。

5.1 增强现实(AR)

增强现实技术将虚拟对象叠加到现实世界中,为用户带来一种新的交互体验。在计算机视觉中,AR技术通常涉及图像识别、物体跟踪和场景理解。以下是一个使用Python和OpenCV实现简单的AR示例:

import cv2
import numpy as np# 加载虚拟对象(如图像或3D模型)
virtual_object = cv2.imread('virtual_object.png', cv2.IMREAD_UNCHANGED)# 读取现实世界中的图像
real_world_image = cv2.imread('real_world_image.jpg')# 计算虚拟对象和现实世界图像的混合
alpha = 0.5
beta = 1.0 - alpha
combined_image = cv2.addWeighted(real_world_image, alpha, virtual_object, beta, 0)# 显示混合后的图像
cv2.imshow('AR', combined_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这个示例中,我们首先加载了一个虚拟对象和现实世界中的图像。然后,我们计算了两者的混合,并将混合后的图像显示出来。

5.2 3D重建

3D重建技术通过从多个角度拍摄同一物体,利用计算机视觉算法重建物体的3D模型。在Python中,我们可以使用OpenCV和PCL(Point Cloud Library)等库来实现3D重建。以下是一个简单的3D重建示例:

import cv2
import pcl# 读取多个角度拍摄的图像
images = [cv2.imread('image1.jpg'), cv2.imread('image2.jpg'), cv2.imread('image3.jpg')]# 提取图像的特征点
keypoints1 = cv2.findContours(images[0], cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
keypoints2 = cv2.findContours(images[1], cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
keypoints3 = cv2.findContours(images[2], cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 创建点云
cloud = pcl.PointCloud()
cloud.from_list([[kp.reshape(2) for kp in keypoints1], [kp.reshape(2) for kp in keypoints2], [kp.reshape(2) for kp in keypoints3]])# 显示点云
cloud.show()

在这个示例中,我们首先读取了多个角度拍摄的图像,并提取了图像的特征点。然后,我们创建了一个点云,并显示了点云。

5.3 无人机的计算机视觉

无人机在农业、物流、监控等领域具有广泛的应用。计算机视觉技术可以帮助无人机实现自主导航、目标检测和跟踪等功能。在Python中,我们可以使用OpenCV和PCL等库来实现无人机的计算机视觉。以下是一个简单的无人机计算机视觉示例:

import cv2
import pcl# 读取无人机摄像头拍摄的图像
image = cv2.imread('drone_camera_image.jpg')# 提取图像的特征点
keypoints = cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 创建点云
cloud = pcl.PointCloud()
cloud.from_list([[kp.reshape(2) for kp in keypoints]])# 显示点云
cloud.show()

在这个示例中,我们首先读取了无人机摄像头拍摄的图像,并提取了图像的特征点。然后,我们创建了一个点云,并显示了点云。

本部分介绍了计算机视觉的一些前沿技术和它们在现实世界中的应用。随着技术的不断进步,计算机视觉将在更多领域发挥重要作用,为我们的生活带来便利。

总结

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

 

相关文章:

计算机视觉技术解析:从基础到前沿

第一部分:计算机视觉基础与基本原理 计算机视觉是人工智能领域的一个重要分支,旨在使计算机能够理解和处理图像和视频数据。随着深度学习技术的飞速发展,计算机视觉已经在许多实际应用场景中取得了显著的成果,如图像识别、目标检…...

unity游戏开发003:深入理解Unity中的坐标系

Unity游戏开发 “好读书,不求甚解;每有会意,便欣然忘食。” 本文目录: Unity游戏开发 Unity游戏开发深入理解Unity中的坐标系前言1. 坐标轴2. 左手坐标系3. 世界坐标系 vs. 局部坐标系4. 坐标变换5. 注意事项 总结 深入理解Unity中…...

伊索寓言两则

马和驴 马为自己精美的马具感到骄傲,在大马路上遇见了驴子子正驮着重担挪着步子,挡了路,马儿没法过去,就不耐烦叫道:真想踢你两脚,好让你走快点。驴子沉默不语,但没忘马儿的傲慢。不久后马儿患…...

嵌入式硬件产品开发:编码文件规则

目录 简介 文件内容的一般规则 文件名命名的规则 简介 一个工程是往往由多个文件组成。 这些文件怎么管理、怎么命名都是非常重要的。 文件内容的一般规则 【规则1】每个头文件和源文件的头部必须包含文件头部说明和修改记录。 源文件和头文件的头部说明必须包含的内容和次…...

设计模式 - 组合模式

💝💝💝首先,欢迎各位来到我的博客!本文深入理解设计模式原理、应用技巧、强调实战操作,提供代码示例和解决方案,适合有一定编程基础并希望提升设计能力的开发者,帮助读者快速掌握并灵活运用设计模式。 💝💝💝如有需要请大家订阅我的专栏【设计模式】哟!我会定…...

打靶记录11——Billu_b0x

靶机: https://download.vulnhub.com/billu/Billu_b0x.zip难度: 中(两种攻击路线) 目标: 取得root权限 涉及的攻击方法: 主机发现端口扫描Web信息收集SQL注入(Sqlmap跑不出来)…...

一、在cubemx上配置sd和fatfs示例演示

一、sd和fatfs的配置流程界面 1、选择sd4bits 根据自己的sd卡的硬件插槽进行选择。 2、fatfs配置由于使用的是sd卡所以直接选择sd选项 3、程序中对sd卡的初始化需要进行改动,直接使用默认的参数sd卡是挂载不上的。 4、在sd卡挂载好后,就可以使用文件系统…...

C++ 语言特性02 - 命名空间

一:概述 现代C中的命名空间是什么? C中的命名空间允许用户在命名空间范围内对类、方法、变量和函数等实体进行分组,而不是在全局范围内使用。这可以防止大型项目中的类、方法、函数和变量之间发生命名冲突。命名空间将开发人员编写的代码组织…...

drools规则引擎 规则配置文件drl语法使用案例

前提:环境搭建,参考博文springboot整合drools规则引擎 示例入门-CSDN博客案例1,商城系统消费赠送积分 100元以下, 不加分 100元-500元 加100分 500元-1000元 加500分 1000元 以上 加1000分订单pojo编写 package cn.beijing.model;import lom…...

C++编程:高性能通信组件Capnproto与Protobuf的对比分析

文章目录 0. 概要1. 测试环境2. 测试方法3. 测试结果及分析3.1 延迟测试3.2 吞吐量测试3.3 稳定性测试3.4 一对二测试记录3.5 二对一测试记录3.6 Inter-process 单个点开销分析 4. CapnProto 与 Protobuf 的对比测试总结 0. 概要 本文主要探讨了两种高性能通信组件&#xff1a…...

【Python读书数据,并计算数据的相关系数、方差,均方根误差】

为了处理Python中的读书数据(假设这里指的是一系列关于书籍阅读量或评分的数据),并计算这些数据的相关系数、方差以及均方根误差(RMSE),我们首先需要明确数据的结构。这里,我将假设我们有一组关…...

垃圾收集器G1ZGC详解

G1收集器(-XX:UseG1GC) G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征. G1将Java堆划分为多个大小相等的独立区域(Region),JVM目…...

AI芯片:高性能卷积计算中的数据复用

随着深度学习的飞速发展,对处理器的性能要求也变得越来越高,随之涌现出了很多针对神经网络加速设计的AI芯片。卷积计算是神经网络中最重要的一类计算,本文分析了高性能卷积计算中的数据复用,这是AI芯片设计中需要优化的重点之一&a…...

gitlab修改默认访问端口

GitLab 自带了一个 Nginx 服务器实例,用于处理 HTTP 和 HTTPS 请求。这个内置的 Nginx 服务器被配置为与 GitLab 应用程序实例一起工作,并且它负责处理所有前端的网络通信。 通过yum或者apt安装Gitlab时,nginx通常是被自带安装并配置好的。 …...

python——异常

Python 中的异常及继承关系 在 Python 中,异常用于表示程序在运行过程中遇到的错误,所有异常类最终都继承自 BaseException。通过异常处理,我们可以捕获和处理这些错误,避免程序崩溃。 Python 异常继承关系图 BaseException-- …...

【人工智能】利用TensorFlow.js在浏览器中实现一个基本的情感分析系统

使用TensorFlow.js在浏览器中进行情感分析是一个非常实用的应用场景。TensorFlow.js 是一个用于在JavaScript环境中训练和部署机器学习模型的库,使得开发者能够在客户端直接运行复杂的机器学习任务。对于情感分析,我们可以使用预先训练好的模型来识别文本…...

Python——扩展数据类型

Python 的扩展数据类型是对内置数据类型的增强,旨在解决特定需求,提供更高级的功能。我们来看一些常见的扩展数据类型及其原理、用途,并通过示例逐步讲解。 1. collections.namedtuple namedtuple 是增强的元组,允许用名称访问元…...

JavaScript 详解——Vue基础

第一章 JavaScript简介 为什么学习javascript ? JavaScript 是全球最流行的编程语言。 JavaScript 是属于 Web 的编程语言。 JavaScript 是 web 开发者必学的三种语言之一: HTML 定义网页的内容 CSS 规定网页的布局 JavaScript 对网页行为进行编程 …...

机械行业数字化生产供应链产品解决方案(十二)

我们为机械行业提供的数字化生产供应链解决方案通过集成物联网、人工智能和大数据技术,打造了一套智能化的生产和供应链管理系统,实现了从设计、生产到物流的全程数字化、智能化。该系统通过实时数据采集与分析,优化生产计划和资源配置&#…...

Git——命令集合

Git命令集合 1. 基本操作 1.1 创建版本库 初始化本地仓库:git init添加文件到仓库:git add | git add file file2… | git add.提交文件到本地仓库:git commit -m “message” 1.2 版本回退 查看状态: git status查看全部修改…...

python 数据可视化折线图练习(下:代码演示)

根据上篇对三国疫情情况数据的罗列,构建折线图完成数据展示。(示例如下) 接下来是具体代码演示 import json from pyecharts.charts import Line from pyecharts.options import TitleOpts , LegendOpts , ToolboxOpts ,VisualMapOpts , T…...

深入探索 Go 1.18 的 debug/buildinfo:构建信息的获取与应用

标题:深入探索 Go 1.18 的 debug/buildinfo:构建信息的获取与应用 引言 Go 语言自 1.18 版本起,引入了对构建信息的标准化处理,这一特性极大地简化了获取程序构建信息的过程。debug/buildinfo 包提供了访问 Go 二进制文件中嵌入…...

Nios II的BSP Editor

1.菜单打开BSP Editor (1) (2) (3) 项目文件夹 -> software文件夹 -> ... _bsp文件夹 -> settings.bsp文件 2.文件打开BSP Editor 选中项目文件,右键,Nios II -> …...

Android-自适用高度的ViewPager

需求 在项目中,我们常常遇到需要动态调整 ViewPager 的高度,以适应其内容大小的需求。默认情况下,ViewPager 的高度是固定的,无法根据每个页面的内容高度进行调整。这会导致在内容高度不一致时,出现不必要的空白区域或…...

代码随想录day38|| 322零钱兑换 279完全平方数 139单词拆分

322零钱兑换 力扣题目链接 题目描述: 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c…...

Cesium天空盒子(Skybox)制作(js代码)和显示

介绍 在Cesium中,星空背景是通过天空盒子方式(6张图片)来显示的,原生的图片分辨率太低,本项目用于生成天空盒子的6张图片。最终生成的6个图片大小约为500kb(每个),格式为jpg,总共的恒星数目约为…...

JAVA中的缓冲流BufferedInputStream

在Java中,BufferedInputStream 是一种用于包装其他输入流(如 FileInputStream)的过滤流。它通过内部缓冲区机制提高了输入流处理的效率。使用缓冲流可以减少读取数据的次数,因为每次从输入流读取数据时,BufferedInputS…...

WindowContainerTransaction类详解(一)

1、WindowContainerTransaction是什么: windowContainerTransaction类的对象是用来存储对windowContainer的修改的一个集合,windowContainer。因为应用侧是无法直接操作windowContainer的,如果应用侧需要修改windowContainer的话&#xff0c…...

安装NFS扩展

#添加helm源 helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner #创建个namespace(可选,主要是为了查看资源方便) kubectl create ns nfs-sc-default #使用helm安装(10.1.129.86为NFS地址,/home/data/nfs…...

计算机网络——运输层(进程之间的通信、运输层端口,UDP与TCP、TCP详解)

运输层协议概述 进程之间的通信 运输层向它上面的应用层提供通信服务。 当网络边缘部分的两台主机使用网络核心部分的功能进行端到端的通信时,都要使用协议栈中的运输层;而网络核心部分中的路由器在转发分组时只用到下三层的功能。 Q1:我们…...