2024年华为杯数学建模E题-高速公路应急车道启用建模-基于YOLO8的数据处理代码参考(无偿分享)

利用YOLO模型进行高速公路交通流量分析


识别效果:
在这里插入图片描述

免责声明

本文所提供的信息和内容仅供参考。尽管我尽力确保所提供信息的准确性和可靠性,但我们不对其完整性、准确性或及时性作出任何保证。使用本文信息所造成的任何直接或间接损失,本人概不负责。请在做出任何决策之前自行进行必要的研究和咨询专业人士。

无偿提供代码,感谢点赞收藏关注


随着交通管理的日益重要,自动化监测系统的需求也随之增加。利用计算机视觉技术,我们可以高效地分析视频中的车辆流量,提升交通管理的科学性和有效性。本文将详细介绍如何使用YOLO(You Only Look Once)模型分析高速公路的交通流,结合视频数据提取车辆信息、速度计算和流量分析。整个过程将结合代码,逐步解析每个步骤的细节及其背后的原理。

1. 问题背景

在交通流量分析中,实时监测和处理车辆数据是一个具有挑战性的任务。我们希望能够快速且准确地识别视频中的车辆,并计算它们的速度、流量和密度。为此,我们将使用YOLO模型来进行目标检测,结合一些图像处理技术,分析交通状况。

2. 准备工作

在开始之前,我们需要确保安装必要的库,包括OpenCV、Pandas、NumPy、YOLO等。以下是我们将用到的库:

import cv2
import pandas as pd
import numpy as np
from ultralytics import YOLO
from datetime import datetime
from scipy.spatial import distance

3. 计算视频时长

首先,我们需要计算视频的时长,以便在后续处理中使用。以下是计算视频时长的函数:

def calculate_duration(start_time, end_time):fmt = '%H:%M:%S'start = datetime.strptime(start_time, fmt)end = datetime.strptime(end_time, fmt)duration = end - startreturn duration

在这个函数中,我们使用datetime模块将输入的开始时间和结束时间转换为datetime对象,并计算它们之间的差值,这就是视频的总时长。

4. 获取视频信息

我们需要从视频中提取一些关键信息,例如总帧数、帧率和每帧的时间间隔。可以使用以下函数来实现:

def get_video_info(video_path, duration):cap = cv2.VideoCapture(video_path)if not cap.isOpened():raise ValueError("无法打开视频文件")total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))fps = cap.get(cv2.CAP_PROP_FPS)frame_time = 1 / fps if fps > 0 else 0interval_time = duration.total_seconds() / total_frames if total_frames > 0 else 0cap.release()return total_frames, fps, frame_time, interval_time

这个函数会返回视频的总帧数、帧率、每帧时间以及每帧之间的时间间隔,供后续处理使用。

初始化路径和视频时长

接下来,我们需要初始化视频路径和时长:

video_path = './高速公路交通流数据/32.31.250.103/20240501_20240501125647_20240501140806_125649.mp4'
duration = calculate_duration('12:56:47', '14:08:05')
total_frames, fps, frame_time, interval_time = get_video_info(video_path, duration)

5. 加载YOLO模型

我们将加载预训练的YOLOv8模型以进行目标检测:

model = YOLO('yolov8n.pt')

这一步确保我们有一个强大的目标检测模型,可以处理视频中的车辆检测。

6. 处理视频帧

我们将处理视频的前10%帧,以减少计算量并专注于关键时刻。以下是相关代码:

num_frames_to_process = total_frames // 1
frame_count = 0# 存储车辆信息
vehicle_data = {}
unique_vehicle_counter = 0
data = []

6.1 定义参数

我们还需要定义一些判断参数,以帮助后续判断车辆是否为同一辆车:

IOU_THRESHOLD = 0.3
MAX_MOVEMENT_DISTANCE = 50
MAX_SIZE_DIFFERENCE = 0.2
COLOR_THRESHOLD = 30
  • IOU_THRESHOLD:用于判断车辆边界框重叠的阈值。
  • MAX_MOVEMENT_DISTANCE:判断车辆在相邻帧之间的最大移动距离。
  • MAX_SIZE_DIFFERENCE:判断车辆大小差异的最大阈值。
  • COLOR_THRESHOLD:用于判断颜色差异的阈值。

7. 定义辅助函数

7.1 计算IoU(交并比)

def calculate_iou(box1, box2):x1, y1, x2, y2 = box1x1b, y1b, x2b, y2b = box2inter_x1 = max(x1, x1b)inter_y1 = max(y1, y1b)inter_x2 = min(x2, x2b)inter_y2 = min(y2, y2b)inter_area = max(0, inter_x2 - inter_x1) * max(0, inter_y2 - inter_y1)box1_area = (x2 - x1) * (y2 - y1)box2_area = (x2b - x1b) * (y2b - y1b)union_area = box1_area + box2_area - inter_areareturn inter_area / union_area if union_area > 0 else 0

此函数计算两个边界框的交并比(IoU),用于判断两个检测框的重叠程度。

7.2 计算中心距离

def calculate_center_distance(box1, box2):center1 = ((box1[0] + box1[2]) / 2, (box1[1] + box1[3]) / 2)center2 = ((box2[0] + box2[2]) / 2, (box2[1] + box2[3]) / 2)return distance.euclidean(center1, center2)

计算两个边界框中心点之间的距离,以判断车辆是否为同一辆车。

7.3 提取车辆颜色

def extract_vehicle_color(frame, box):x1, y1, x2, y2 = map(int, box)vehicle_roi = frame[y1:y2, x1:x2]hsv_roi = cv2.cvtColor(vehicle_roi, cv2.COLOR_BGR2HSV)return cv2.mean(hsv_roi)[:3]

提取车辆在当前帧中的颜色,便于后续判断车辆是否相同。

7.4 计算颜色差异

def calculate_color_difference(color1, color2):return np.linalg.norm(np.array(color1) - np.array(color2))

计算两个颜色之间的差异,为车辆匹配提供依据。

7.5 判断是否为同一辆车

def is_same_vehicle(vehicle_info, new_box, new_color):prev_box = vehicle_info["box"]prev_color = vehicle_info["color"]iou = calculate_iou(prev_box, new_box)center_distance = calculate_center_distance(prev_box, new_box)prev_size = (prev_box[2] - prev_box[0]) * (prev_box[3] - prev_box[1])new_size = (new_box[2] - new_box[0]) * (new_box[3] - new_box[1])size_difference = abs(new_size - prev_size) / prev_size if prev_size > 0 else 1color_difference = calculate_color_difference(prev_color, new_color)return (iou > IOU_THRESHOLDand center_distance < MAX_MOVEMENT_DISTANCEand size_difference < MAX_SIZE_DIFFERENCEand color_difference < COLOR_THRESHOLD)

这个函数综合考虑了IoU、中心距离、大小差异和颜色差异,来判断检测到的车辆是否与之前记录的车辆相同。

7.6 车型类别映射

class_map = {2: 'car',7: 'truck',5: 'bus',3: 'motorcycle',1: 'bicycle',
}

我们定义了一个字典,用于将YOLO模型输出的类别编号映射到相应的车辆类型。

8. 处理视频帧

我们开始逐帧处理视频,检测车辆并记录相关信息:

cap = cv2.VideoCapture(video_path)start_time_seconds = 12 * 3600 + 56 * 60 + 47  # 起始时间转换为秒
frame_count = 0
LANE_WIDTH = 3  # 车道宽度(米)
LANE_LENGTH = 30  # 识别范围的长度(米)# 用于存储流量计算的车辆ID
unique_vehicles_in_interval = set()while cap.isOpened() and frame_count < num_frames_to_process:ret, frame = cap.read()if not ret:breakresults = model(frame)current_frame_vehicle_ids = []vehicle_speeds = []truck_count = 0other_count = 0# 处理检测结果for result in results:for box in result.boxes:coords = box.xyxy[0]x1, y1, x2, y2 = coords[0], coords[1], coords[2], coords[3]cv2.rectangle(frame, (int(x1), int(y1)), (int(x2), int(y2)), (0, 255, 0), 2)vehicle_class = int(box.cls.item())vehicle_type = class_map.get(vehicle_class, 'unknown')if vehicle_type == 'truck':truck_count += 1else:other_count += 1vehicle_color = extract_vehicle_color(frame, (x1, y1, x2, y2))matched_vehicle_id = Nonefor vehicle_id, vehicle_info in vehicle_data.items():if is_same_vehicle(vehicle_info, (x1, y1, x2, y2), vehicle_color):matched_vehicle_id = vehicle_idbreakif matched_vehicle_id is None:unique_vehicle_counter += 1matched_vehicle_id = unique_vehicle_countervehicle_data[matched_vehicle_id] = {"box": (x1, y1, x2, y2),"color": vehicle_color,"first_frame": frame_count,"last_frame": frame_count}else:vehicle_data[matched_vehicle_id]["last_frame"] = frame_countvehicle_data[matched_vehicle_id]["box"] = (x1, y1, x2, y2)vehicle_data[matched_vehicle_id]["color"] = vehicle_colorcurrent_frame_vehicle_ids.append(matched_vehicle_id)

在这段代码中,我们使用YOLO模型检测当前帧中的车辆,并提取每辆车的边界框、类型和颜色。通过判断条件,我们可以将车辆与已知车辆进行匹配,确保我们能够跟踪同一辆车。

9. 计算车辆速度

根据检测到的车辆信息,我们可以计算车辆的速度。以下是速度计算的代码:

# 计算车辆速度
for vehicle_id in current_frame_vehicle_ids:vehicle_info = vehicle_data[vehicle_id]first_frame = vehicle_info["first_frame"]last_frame = vehicle_info["last_frame"]frame_diff = last_frame - first_frame + 1if frame_diff > 0:vehicle_speed = 30 / (frame_diff * 0.4)  # 计算速度的公式vehicle_speeds.append(vehicle_speed)

根据车辆在视频中的帧差和已知车道长度,计算每辆车的速度。

10. 过滤速度异常值

为了确保计算结果的可靠性,我们对速度进行过滤,去除异常值:

filtered_speeds = []
if vehicle_speeds:lower_bound = 0upper_bound = 40filtered_speeds = [speed for speed in vehicle_speeds if lower_bound <= speed <= upper_bound]

在这里,我们设定了速度的上下限,仅保留在该范围内的速度数据。

11. 计算流量和密度

在每20帧中,我们将计算流量和车辆密度:

unique_vehicles_in_interval.update(current_frame_vehicle_ids)
if (frame_count + 1) % 20 == 0:flow = len(unique_vehicles_in_interval)  # 每20帧的唯一车辆数unique_vehicles_in_interval.clear()  # 清空当前周期的车辆ID
else:flow = None

通过维护一个唯一车辆ID的集合,我们能够计算特定时间间隔内的流量。

12. 输出信息

最后,我们将输出当前帧的分析结果,并将所有数据存储在一个列表中,便于后续分析:

current_time_seconds = start_time_seconds + frame_count * interval_time
current_time = datetime.utcfromtimestamp(current_time_seconds).strftime('%H:%M:%S')# 输出信息
total_vehicles = truck_count + other_count
print(f"当前帧: {frame_count}, 时间: {current_time}, 卡车数: {truck_count}, 其他车辆数: {other_count}, 总车辆数: {total_vehicles}")
print(f"车辆编号集合: {current_frame_vehicle_ids}")
print(f"原始车辆速度: {vehicle_speeds}")
print(f"过滤后的车辆速度: {filtered_speeds}")
print(f"每帧平均速度: {average_speed:.2f}")
print(f"流量: {flow}辆 " if flow is not None and density is not None else "")
print(f"密度: {density:.2f}辆/米")
# 存储帧相关数据
data.append({'timestamp': current_time,                   'frame': frame_count,'total_vehicles': total_vehicles,'trucks': truck_count,'others': other_count,'vehicle_ids': current_frame_vehicle_ids,  'original_speeds': vehicle_speeds,          'filtered_speeds': filtered_speeds,          'average_speed': average_speed,              'flow': flow,                                'density': density                            
})

13. 显示结果

最后,我们将每帧的结果显示出来,并在按下’q’键时退出视频:

cv2.imshow('frame', frame)
frame_count += 1
if cv2.waitKey(1) & 0xFF == ord('q'):break

14. 保存结果

完成视频处理后,我们将分析结果转换为DataFrame,并保存到Excel文件中,以便后续分析:

df = pd.DataFrame(data)
df.to_excel('./video_analysis_with_color.xlsx', index=False)

输出表格展示:

在这里插入图片描述

15. 总结

通过上述步骤,我们实现了一个基于YOLO模型的高速公路交通流量分析系统。该系统不仅可以检测和跟踪车辆,还能计算它们的速度、流量和密度,为交通管理提供重要的数据支持。随着技术的不断进步,我们期待在交通流量监测方面能够实现更高的自动化和智能化。

完整代码

import cv2
import pandas as pd
import numpy as np
from ultralytics import YOLO
from datetime import datetime
from scipy.spatial import distance# 计算视频时长
def calculate_duration(start_time, end_time):fmt = '%H:%M:%S'start = datetime.strptime(start_time, fmt)end = datetime.strptime(end_time, fmt)duration = end - startreturn duration# 获取视频信息
def get_video_info(video_path, duration):cap = cv2.VideoCapture(video_path)if not cap.isOpened():raise ValueError("无法打开视频文件")total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))fps = cap.get(cv2.CAP_PROP_FPS)frame_time = 1 / fps if fps > 0 else 0interval_time = duration.total_seconds() / total_frames if total_frames > 0 else 0cap.release()return total_frames, fps, frame_time, interval_time# 初始化路径和视频时长
video_path = './高速公路交通流数据/32.31.250.103/20240501_20240501125647_20240501140806_125649.mp4'
duration = calculate_duration('12:56:47', '14:08:05')
total_frames, fps, frame_time, interval_time = get_video_info(video_path, duration)# 加载预训练的YOLOv8模型
model = YOLO('yolov8n.pt')# 处理前10%的帧
num_frames_to_process = total_frames // 100
frame_count = 0# 存储车辆信息
vehicle_data = {}
unique_vehicle_counter = 0
data = []# 定义IoU阈值以及其他判断参数
IOU_THRESHOLD = 0.3
MAX_MOVEMENT_DISTANCE = 50
MAX_SIZE_DIFFERENCE = 0.2
COLOR_THRESHOLD = 30# 计算IoU(交并比)
def calculate_iou(box1, box2):x1, y1, x2, y2 = box1x1b, y1b, x2b, y2b = box2inter_x1 = max(x1, x1b)inter_y1 = max(y1, y1b)inter_x2 = min(x2, x2b)inter_y2 = min(y2, y2b)inter_area = max(0, inter_x2 - inter_x1) * max(0, inter_y2 - inter_y1)box1_area = (x2 - x1) * (y2 - y1)box2_area = (x2b - x1b) * (y2b - y1b)union_area = box1_area + box2_area - inter_areareturn inter_area / union_area if union_area > 0 else 0# 计算中心距离
def calculate_center_distance(box1, box2):center1 = ((box1[0] + box1[2]) / 2, (box1[1] + box1[3]) / 2)center2 = ((box2[0] + box2[2]) / 2, (box2[1] + box2[3]) / 2)return distance.euclidean(center1, center2)# 提取车辆颜色
def extract_vehicle_color(frame, box):x1, y1, x2, y2 = map(int, box)vehicle_roi = frame[y1:y2, x1:x2]hsv_roi = cv2.cvtColor(vehicle_roi, cv2.COLOR_BGR2HSV)return cv2.mean(hsv_roi)[:3]# 计算颜色差异
def calculate_color_difference(color1, color2):return np.linalg.norm(np.array(color1) - np.array(color2))# 判断车辆是否为同一辆车
def is_same_vehicle(vehicle_info, new_box, new_color):prev_box = vehicle_info["box"]prev_color = vehicle_info["color"]iou = calculate_iou(prev_box, new_box)center_distance = calculate_center_distance(prev_box, new_box)prev_size = (prev_box[2] - prev_box[0]) * (prev_box[3] - prev_box[1])new_size = (new_box[2] - new_box[0]) * (new_box[3] - new_box[1])size_difference = abs(new_size - prev_size) / prev_size if prev_size > 0 else 1color_difference = calculate_color_difference(prev_color, new_color)return (iou > IOU_THRESHOLDand center_distance < MAX_MOVEMENT_DISTANCEand size_difference < MAX_SIZE_DIFFERENCEand color_difference < COLOR_THRESHOLD)# 车型类别映射
class_map = {2: 'car',7: 'truck',5: 'bus',3: 'motorcycle',1: 'bicycle',
}# 打开视频文件
cap = cv2.VideoCapture(video_path)start_time_seconds = 12 * 3600 + 56 * 60 + 47  # 起始时间转换为秒
frame_count = 0
LANE_WIDTH = 3  # 车道宽度(米)
LANE_LENGTH = 30  # 识别范围的长度(米)# 用于存储流量计算的车辆ID
unique_vehicles_in_interval = set()while cap.isOpened() and frame_count < num_frames_to_process:ret, frame = cap.read()if not ret:breakresults = model(frame)current_frame_vehicle_ids = []vehicle_speeds = []truck_count = 0other_count = 0# 处理检测结果for result in results:for box in result.boxes:coords = box.xyxy[0]x1, y1, x2, y2 = coords[0], coords[1], coords[2], coords[3]cv2.rectangle(frame, (int(x1), int(y1)), (int(x2), int(y2)), (0, 255, 0), 2)vehicle_class = int(box.cls.item())vehicle_type = class_map.get(vehicle_class, 'unknown')if vehicle_type == 'truck':truck_count += 1else:other_count += 1vehicle_color = extract_vehicle_color(frame, (x1, y1, x2, y2))matched_vehicle_id = Nonefor vehicle_id, vehicle_info in vehicle_data.items():if is_same_vehicle(vehicle_info, (x1, y1, x2, y2), vehicle_color):matched_vehicle_id = vehicle_idbreakif matched_vehicle_id is None:unique_vehicle_counter += 1matched_vehicle_id = unique_vehicle_countervehicle_data[matched_vehicle_id] = {"box": (x1, y1, x2, y2),"color": vehicle_color,"first_frame": frame_count,"last_frame": frame_count}else:vehicle_data[matched_vehicle_id]["last_frame"] = frame_countvehicle_data[matched_vehicle_id]["box"] = (x1, y1, x2, y2)vehicle_data[matched_vehicle_id]["color"] = vehicle_colorcurrent_frame_vehicle_ids.append(matched_vehicle_id)# 计算车辆速度for vehicle_id in current_frame_vehicle_ids:vehicle_info = vehicle_data[vehicle_id]first_frame = vehicle_info["first_frame"]last_frame = vehicle_info["last_frame"]frame_diff = last_frame - first_frame + 1if frame_diff > 0:vehicle_speed = 30 / (frame_diff * 0.4)  # 计算速度的公式vehicle_speeds.append(vehicle_speed)# 过滤速度异常值filtered_speeds = []if vehicle_speeds:lower_bound = 0upper_bound = 40filtered_speeds = [speed for speed in vehicle_speeds if lower_bound <= speed <= upper_bound]# 计算每一帧的平均速度average_speed = np.mean(filtered_speeds) if filtered_speeds else 0# 计算流量和密度unique_vehicles_in_interval.update(current_frame_vehicle_ids)if (frame_count + 1) % 20 == 0:flow = len(unique_vehicles_in_interval)  # 每20帧的唯一车辆数unique_vehicles_in_interval.clear()  # 清空当前周期的车辆IDelse:flow = None# 计算实际时间current_time_seconds = start_time_seconds + frame_count * interval_timecurrent_time = datetime.utcfromtimestamp(current_time_seconds).strftime('%H:%M:%S')# 输出信息total_vehicles = truck_count + other_countdensity = total_vehicles / (LANE_WIDTH * LANE_LENGTH)  # 单位长度内的车辆数print(f"当前帧: {frame_count}, 时间: {current_time}, 卡车数: {truck_count}, 其他车辆数: {other_count}, 总车辆数: {total_vehicles}")print(f"车辆编号集合: {current_frame_vehicle_ids}")print(f"原始车辆速度: {vehicle_speeds}")print(f"过滤后的车辆速度: {filtered_speeds}")print(f"每帧平均速度: {average_speed:.2f}")print(f"流量: {flow}辆 " if flow is not None and density is not None else "")print(f"密度: {density:.2f}辆/米")# 存储帧相关数据data.append({'timestamp': current_time,                   # 当前帧的时间戳'frame': frame_count,'total_vehicles': total_vehicles,'trucks': truck_count,'others': other_count,'vehicle_ids': current_frame_vehicle_ids,  # 记录当前帧车辆编号'original_speeds': vehicle_speeds,          # 原始速度'filtered_speeds': filtered_speeds,          # 过滤后的速度'average_speed': average_speed,              # 每帧平均速度'flow': flow,                                # 流量'density': density                            # 密度})# 显示结果cv2.imshow('frame', frame)# 更新帧计数器frame_count += 1if cv2.waitKey(1) & 0xFF == ord('q'):break
cap.release()
cv2.destroyAllWindows()# 转换为DataFrame并保存到Excel
df = pd.DataFrame(data)
df.to_excel('./video_analysis_with_color.xlsx', index=False)

再次提醒:本文内容仅供参考,作者对此不负任何责任。希望读者能够从中获得启发,继续探索交通流量分析的更深入领域。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《深度学习》—— 卷积神经网络(CNN)的简单介绍和工作原理

文章目录 一、卷积神经网络的简单介绍二、工作原理(还未写完)1.输入层2.卷积层3.池化层4.全连接层5.输出层 一、卷积神经网络的简单介绍 基本概念 定义&#xff1a;卷积神经网络是一种深度学习模型&#xff0c;通常用于图像、视频、语音等信号数据的分类和识别任务。其核心思想…

Java笔试面试题AI答之设计模式(5)

文章目录 21. 简述Java什么是适配器模式 ?适配器模式的主要组成部分包括&#xff1a;适配器模式的实现方式主要有两种&#xff1a;适配器模式的优点&#xff1a;适配器模式的缺点&#xff1a;示例说明&#xff1a; 22. 请用Java代码实现适配器模式的案例 &#xff1f; 21. 简述…

【Transformers基础入门篇1】基础知识与环境安装

文章目录 一、自然语言处理基础知识1.1 常见自然语言处理任务1.2 自然语言处理的几个阶段 二、Transformers简单介绍2.1 Transformers相关库介绍2.2 Transformers 相关库安装 三、简单代码&#xff0c;启动NLP应用 一、自然语言处理基础知识 1.1 常见自然语言处理任务 情感分…

2024风湿免疫科常用评估量表汇总,附操作步骤与评定标准!

常笑医学整理了5个风湿免疫科常用的评估量表&#xff0c;包括类风湿关节炎患者病情评价&#xff08;DAS28&#xff09;、系统性狼疮活动性测定&#xff08;SLAM&#xff09;等。这些量表在常笑医学网均支持在线评估、下载和创建项目使用。 01 类风湿关节炎患者病情评价 &#x…

【MYSQL】聚合查询、分组查询、联合查询

目录 聚合查询聚合函数count()sum()avg()max()和min()总结 分组查询group by 子句having 子句 联合查询笛卡尔积内连接外连接自连接子查询单行子查询多行子查询from子句使用子查询 合并查询 聚合查询 聚合查询就是针对表中行与行之间的查询。 聚合函数 count() count(列名)&a…

828华为云征文 | 使用Flexus X实例搭建Dubbo-Admin服务

一、Flexus X实例简介 华为云推出的Flexus云服务&#xff0c;作为专为中小企业及开发者设计的新一代云服务产品&#xff0c;以其开箱即用、体验卓越及高性价比而著称。其中的Flexus云服务器X实例&#xff0c;更是针对柔性算力需求量身打造&#xff0c;能够智能适应业务负载变化…

工业交换机故障快速排查的方法有哪些

在现代工业自动化的环境中&#xff0c;工业交换机作为网络连接的重要设备&#xff0c;其稳定性和可靠性至关重要。然而&#xff0c;实际使用过程中难免会遇到各种故障&#xff0c;这对生产线和系统的正常运作造成了影响。为了有效应对这些问题&#xff0c;下面将介绍一些工业交…

一文详解大语言模型Transformer结构

目录 1. 什么是Transformer 2. Transformer结构 2.1 总体结构 2.2 Encoder层结构 2.3 Decoder层结构 2.4 动态流程图 3. Transformer为什么需要进行Multi-head Attention 4. Transformer相比于RNN/LSTM&#xff0c;有什么优势&#xff1f;为什么&#xff1f; 5. 为什么说Transf…

Vue项目之Element-UI(Breadcrumb)动态面包屑效果 el-breadcrumb

效果预览 需要导航的页面Vue.js 最笨的方法就是在每个需要面包屑的页面中固定写好 <template><div class="example-container"><el-breadcrumb separator="/"

【Linux】指令和权限的这些细节,你确定都清楚吗?

&#x1f680;个人主页&#xff1a;奋斗的小羊 &#x1f680;所属专栏&#xff1a;Linux 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 前言&#x1f4a5;一、Linux基本指令&#x1f4a5;1.1 mv 指令&#x1f4a5;1.2 cat 指令&#x1f4a5;…

HarmonyOS鸿蒙开发实战(5.0)自定义全局弹窗实践

鸿蒙HarmonyOS开发实战往期文章必看&#xff1a; HarmonyOS NEXT应用开发性能实践总结 最新版&#xff01;“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线&#xff01;&#xff08;从零基础入门到精通&#xff09; 非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线&am…

新手上路:在Windows CPU上安装Anaconda和PyCharm

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一. 确认自己是CPU为什么选择CPU教程&#xff1f;GPU与CPU的区别如何判断自己是CPU 二. Anaconda 安装包 和 Pycharm 安装包步骤1&#xff1a;下载Anaconda步骤2&am…

Golang开发的OCR-身份证号码识别(不依赖第三方)

身份证号码识别&#xff08;golang&#xff09; 使用golang的image库写的身份证号码识别&#xff0c;还有用了一个resize外部库&#xff0c;用来更改图片尺寸大小&#xff0c;将每个数字所在的图片的大小进行统一可以更好的进行数字识别&#xff0c;库名 &#xff1a;“github…

上海我店平台 8月新增注册用户89w 两年破百亿销售额!

近年来&#xff0c;网络空间内涌现了一个备受瞩目的新平台——“上海我店”&#xff0c;其公布的业绩数据显示&#xff0c;短短三年内&#xff0c;该平台交易流水已突破百亿大关&#xff0c;上月更是迎来了近百万的新增注册用户&#xff0c;这一消息迅速吸引了众多商家的目光。…

系统架构设计师 需求分析篇一

&#x1f4d8; 结构化分析SA 思想 自顶向下&#xff1a;像剥洋葱一样&#xff0c;层层深入&#xff0c;大问题拆成小问题&#xff0c;再拆成更小的问题。 核心模型 数据字典 &#x1f4d4;&#xff1a;记录数据元素的点点滴滴&#xff0c;从属性到使用方式&#xff0c;无所…

Java基础面试题——异常

目录 关系图 1. Throwable和Exception之间的关系 2.异常分为哪两大类 3.常见的 RuntimeException 4. 常见的 Error 5.什么是已检查异常和未检查异常&#xff1f;它们的区别是什么&#xff1f; 6.Java 中如何自定义异常&#xff1f; 7.throw 和 throws 的区别是什么&…

简述混沌神经网络

混沌神经网络是一种结合了神经网络与混沌理论的新型智能信息处理系统。以下是对混沌神经网络的详细解析&#xff1a; 一、定义与背景 混沌神经网络是由于神经网络具有高度非线性动力学系统的特性&#xff0c;而混沌又具有无规则性、遍历性、随机性等特点&#xff0c;因此神经网…

端侧 AI 的新突破:面壁智能 MiniCPM 3.0

在人工智能领域&#xff0c;每一次技术的革新都可能引发一场小小的革命。 ChatGPT-3.5 曾经凭借其惊人的表现赢得了大众的关注&#xff0c;但如今&#xff0c;随着国内AI公司面壁智能推出的新端侧基座模型&#xff0c;人们开始重新审视端侧AI的潜力和未来。 这款名为MiniCPM …

linux----进程地址空间

前言 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、空间分布 二、栈和堆的特点 &#xff08;1&#xff09;栈堆相对而生&#xff0c;堆是向上增长的&#xff0c;栈是向下增长的。 验证&#xff1a;堆是向上增长的 这里我们看到申请的堆&#xff…

Ubuntu 20.04安装pycharm2022及配置快捷方式

一、下载与安装 1. 下载 在 官网 下载所需版本&#xff0c;如&#xff1a;下载 2022.3.3 - Linux (tar.gz) 2. 安装 设置自定义安装路径(推荐在 /opt/ 路径下)并安装 mkdir -p ~/Documents/software/pycharm/ cd ~/Documents/software/pycharm/ mv ~/Downloads/pycharm-c…