Python 实现视频去抖动技术

👽发现宝藏

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。

视频去抖动是视频处理中的一项重要技术,它可以有效地减少视频中由于相机震动或手持拍摄等原因而导致的画面抖动,提高视频的质量。本文将介绍如何利用 Python 中的 OpenCV 库实现视频去抖动的方法,并提供代码实例。

介绍

Python 视频去抖动是指利用 Python 编程语言和相关的图像处理库,对视频中由于相机震动或手持拍摄等原因而导致的画面抖动进行处理的技术。视频去抖动的目的是使得视频画面更加稳定,减少抖动,提高观看体验。

通常,视频去抖动的实现可以采用多种方法,包括基于帧差的方法、运动估计方法、深度学习方法等。其中,基于帧差的方法通过比较相邻帧之间的差异来进行处理,可以简单有效地减少画面抖动。而运动估计方法则通过对视频帧之间的运动进行估计,进而校正画面,使得画面更加稳定。深度学习方法则利用深度学习模型学习视频帧之间的关系,从而进行去抖动处理,具有更高的准确性和适用性。

Python 提供了丰富的图像处理库,如 OpenCV、scikit-image 等,这些库提供了丰富的图像处理函数和算法,可以方便地实现视频去抖动技术。利用这些库,我们可以编写简洁高效的代码来实现视频去抖动,提高视频质量和观赏性。

视频去抖动是指通过一系列算法和技术,对视频中的抖动进行平滑处理,使得视频画面更加稳定。在很多应用场景中,如监控视频、运动摄像等,视频去抖动技术都扮演着重要的角色。

Python 中的 OpenCV(Open Source Computer Vision Library)是一个广泛使用的计算机视觉库,提供了丰富的图像处理和计算机视觉算法,包括视频处理的功能。

在本文中,我们将使用 OpenCV 库实现一种简单的视频去抖动方法,以便在 Python 中进行视频处理。

方法

我们将采用基于帧差的方法来实现视频去抖动。基本思路是对视频的连续帧进行比较,找出相邻帧之间的差异,并将这些差异用于平滑化画面。

步骤:
  1. 读取视频文件;
  2. 逐帧处理视频,计算相邻帧之间的差异;
  3. 将差异应用于原始帧,以实现去抖动效果;
  4. 输出处理后的视频。

代码实现

import cv2

def stabilize_video(input_file, output_file):
    # 打开视频文件
    cap = cv2.VideoCapture(input_file)
    
    # 获取视频帧率和尺寸
    fps = int(cap.get(cv2.CAP_PROP_FPS))
    width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    
    # 创建 VideoWriter 对象,用于保存处理后的视频
    fourcc = cv2.VideoWriter_fourcc(*'XVID')
    out = cv2.VideoWriter(output_file, fourcc, fps, (width, height))
    
    # 读取第一帧
    ret, prev_frame = cap.read()
    if not ret:
        return
    
    # 处理视频帧
    while True:
        ret, frame = cap.read()
        if not ret:
            break
        
        # 计算相邻帧之间的差异
        diff = cv2.absdiff(prev_frame, frame)
        
        # 将差异应用于原始帧,平滑画面
        stabilized_frame = cv2.subtract(frame, diff)
        
        # 写入输出视频文件
        out.write(stabilized_frame)
        
        # 更新上一帧
        prev_frame = frame
    
    # 释放 VideoCapture 和 VideoWriter 对象
    cap.release()
    out.release()
    cv2.destroyAllWindows()

# 调用函数进行视频去抖动处理
input_file = 'input_video.mp4'
output_file = 'stabilized_video.avi'
stabilize_video(input_file, output_file)

性能优化与改进

虽然上述方法可以简单地实现视频去抖动,但是在处理大型视频文件时可能存在一些性能问题。为了改进和优化算法,我们可以考虑以下几点:

  1. 多帧差分:不仅仅使用相邻帧之间的差异,还可以考虑使用多帧之间的差异来平滑画面。这样可以更好地消除不同帧之间的抖动。

  2. 运动估计:使用光流算法等方法估计帧与帧之间的运动,然后根据运动信息对帧进行校正。这种方法可以更精确地处理抖动,并且适用于更复杂的场景。

  3. 并行处理:利用多线程或者并行处理的技术,可以加快视频处理的速度,提高程序的性能。

  4. 参数调优:调整算法中的参数,如帧差阈值、平滑系数等,可以进一步提高视频去抖动的效果。

代码改进

下面是一个改进后的代码示例,使用多帧差分和运动估计的方法来实现视频去抖动:

import cv2

def stabilize_video(input_file, output_file):
    cap = cv2.VideoCapture(input_file)
    fps = int(cap.get(cv2.CAP_PROP_FPS))
    width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    num_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
    
    fourcc = cv2.VideoWriter_fourcc(*'XVID')
    out = cv2.VideoWriter(output_file, fourcc, fps, (width, height))
    
    prev_frame = None
    for _ in range(num_frames):
        ret, frame = cap.read()
        if not ret:
            break
        
        if prev_frame is None:
            prev_frame = frame
            continue
        
        # 多帧差分
        diff = cv2.absdiff(prev_frame, frame)
        
        # 运动估计
        flow = cv2.calcOpticalFlowFarneback(prev_frame, frame, None, 0.5, 3, 15, 3, 5, 1.2, 0)
        flow = flow.astype('int32')
        flow = -flow
        stabilized_frame = cv2.remap(frame, flow[:,:,0], flow[:,:,1], cv2.INTER_LINEAR)
        
        out.write(stabilized_frame)
        prev_frame = frame
    
    cap.release()
    out.release()
    cv2.destroyAllWindows()

input_file = 'input_video.mp4'
output_file = 'stabilized_video.avi'
stabilize_video(input_file, output_file)

进一步改进与应用

除了以上提到的改进方法外,还有一些其他的技术和思路可以进一步提高视频去抖动的效果和应用:

  1. 深度学习方法:利用深度学习模型,如卷积神经网络(CNN)或循环神经网络(RNN),对视频进行学习和预测,从而实现更加精细的视频去抖动效果。

  2. 自适应参数调整:根据视频的内容和特点,动态调整算法中的参数,以适应不同场景下的视频去抖动需求。

  3. 实时处理:将视频去抖动算法应用于实时视频流中,例如实时监控系统或视频通话应用中,提高用户体验。

  4. 结合其他技术:将视频去抖动与其他视频处理技术相结合,如视频稳定、视频降噪等,以进一步提高视频质量。

  5. 应用于特定场景:针对特定应用场景,如运动摄影、无人机航拍等,优化和定制视频去抖动算法,以满足特定需求。

深度学习方法示例

下面是一个简单的示例,演示如何利用深度学习模型(这里使用的是预训练的深度学习模型)来实现视频去抖动:

import cv2
import numpy as np
from tensorflow.keras.applications import VGG16

def stabilize_video_deep_learning(input_file, output_file):
    # 加载预训练的VGG16模型
    model = VGG16(weights='imagenet', include_top=False)
    
    cap = cv2.VideoCapture(input_file)
    fps = int(cap.get(cv2.CAP_PROP_FPS))
    width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    num_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
    
    fourcc = cv2.VideoWriter_fourcc(*'XVID')
    out = cv2.VideoWriter(output_file, fourcc, fps, (width, height))
    
    prev_frame = None
    for _ in range(num_frames):
        ret, frame = cap.read()
        if not ret:
            break
        
        if prev_frame is None:
            prev_frame = frame
            continue
        
        # 利用VGG16模型提取特征
        prev_features = model.predict(np.expand_dims(prev_frame, axis=0))
        curr_features = model.predict(np.expand_dims(frame, axis=0))
        
        # 计算特征差异
        diff = np.abs(prev_features - curr_features)
        
        # 根据特征差异对帧进行校正
        stabilized_frame = cv2.subtract(frame, diff)
        
        out.write(stabilized_frame)
        prev_frame = frame
    
    cap.release()
    out.release()
    cv2.destroyAllWindows()

input_file = 'input_video.mp4'
output_file = 'stabilized_video_dl.avi'
stabilize_video_deep_learning(input_file, output_file)

实时处理与应用示例

在某些场景下,需要对实时生成的视频进行即时的去抖动处理,比如视频通话或实时监控系统。下面是一个简单的示例,演示如何利用多线程技术实现实时视频去抖动:

import cv2
import numpy as np
import threading

class VideoStabilizer:
    def __init__(self, input_file, output_file):
        self.cap = cv2.VideoCapture(input_file)
        self.fps = int(self.cap.get(cv2.CAP_PROP_FPS))
        self.width = int(self.cap.get(cv2.CAP_PROP_FRAME_WIDTH))
        self.height = int(self.cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
        self.out = cv2.VideoWriter(output_file, cv2.VideoWriter_fourcc(*'XVID'), self.fps, (self.width, self.height))
        self.prev_frame = None
        self.lock = threading.Lock()
    
    def stabilize_frame(self, frame):
        if self.prev_frame is None:
            self.prev_frame = frame
            return frame
        
        # 多帧差分
        diff = cv2.absdiff(self.prev_frame, frame)
        
        # 运动估计
        flow = cv2.calcOpticalFlowFarneback(self.prev_frame, frame, None, 0.5, 3, 15, 3, 5, 1.2, 0)
        flow = flow.astype('int32')
        flow = -flow
        stabilized_frame = cv2.remap(frame, flow[:,:,0], flow[:,:,1], cv2.INTER_LINEAR)
        
        self.prev_frame = frame
        return stabilized_frame
    
    def process_video(self):
        while True:
            ret, frame = self.cap.read()
            if not ret:
                break
            
            stabilized_frame = self.stabilize_frame(frame)
            
            with self.lock:
                self.out.write(stabilized_frame)
    
    def start(self):
        video_thread = threading.Thread(target=self.process_video)
        video_thread.start()
        video_thread.join()
        self.cap.release()
        self.out.release()
        cv2.destroyAllWindows()

input_file = 'input_video.mp4'
output_file = 'realtime_stabilized_video.avi'
stabilizer = VideoStabilizer(input_file, output_file)
stabilizer.start()

在这个示例中,我们创建了一个 VideoStabilizer 类,它负责从输入视频中读取帧,并在多线程中实时进行视频去抖动处理。每个帧都会通过 stabilize_frame 方法来进行处理,然后写入输出视频文件。使用多线程技术可以确保视频处理不会阻塞主线程,从而实现实时处理的效果。

除了实时处理之外,我们还可以将视频去抖动技术应用于特定的场景和应用中。

运动摄影

在运动摄影中,如自行车运动、滑雪等,摄像机通常会受到振动和晃动的影响,导致视频画面不稳定。通过应用视频去抖动技术,可以改善视频的观感,使得观众能够更清晰地观察到运动者的动作和技巧。

无人机航拍

无人机航拍视频通常受到风力和飞行姿态变化的影响,导致画面抖动。通过视频去抖动技术,可以提高航拍视频的质量,使得画面更加平稳、清晰,从而提升用户体验。

视频监控

在视频监控系统中,摄像头通常会被安装在固定位置或者移动平台上,但是受到环境因素或者设备振动的影响,画面可能会出现抖动。通过应用视频去抖动技术,可以确保监控视频的稳定性,提高监控系统的效果和可靠性。

摄像头防抖设备

一些摄像头防抖设备也可以使用视频去抖动技术来实现。这些设备通常会通过传感器或者陀螺仪来检测和补偿设备的晃动和振动,从而实现视频的稳定输出。

另一个值得关注的方面是应用视频去抖动技术的挑战和限制。

计算资源需求

一些视频去抖动算法需要大量的计算资源,特别是针对高分辨率或高帧率的视频。这可能导致处理速度慢或者需要高性能的硬件设备。

复杂场景处理

在复杂的场景中,如背景变化剧烈、运动速度快的情况下,传统的视频去抖动算法可能效果不佳。这可能需要更复杂的算法或者结合其他技术来解决。

参数调整和优化

视频去抖动算法通常具有许多参数需要调整和优化,以适应不同的视频场景和质量要求。这需要耗费大量的时间和精力进行参数调试和优化。

下面是一个使用深度学习模型进行视频去抖动的代码案例。我们将使用预训练的深度学习模型来学习视频帧之间的运动,并根据学习到的信息对视频进行稳定处理。

import cv2
import numpy as np
from tensorflow.keras.applications import VGG16

def stabilize_video_deep_learning(input_file, output_file):
    # 加载预训练的VGG16模型
    model = VGG16(weights='imagenet', include_top=False)
    
    cap = cv2.VideoCapture(input_file)
    fps = int(cap.get(cv2.CAP_PROP_FPS))
    width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    num_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
    
    fourcc = cv2.VideoWriter_fourcc(*'XVID')
    out = cv2.VideoWriter(output_file, fourcc, fps, (width, height))
    
    prev_frame = None
    for _ in range(num_frames):
        ret, frame = cap.read()
        if not ret:
            break
        
        if prev_frame is None:
            prev_frame = frame
            continue
        
        # 利用VGG16模型提取特征
        prev_features = model.predict(np.expand_dims(prev_frame, axis=0))
        curr_features = model.predict(np.expand_dims(frame, axis=0))
        
        # 计算特征差异
        diff = np.abs(prev_features - curr_features)
        
        # 根据特征差异对帧进行校正
        stabilized_frame = cv2.subtract(frame, diff)
        
        out.write(stabilized_frame)
        prev_frame = frame
    
    cap.release()
    out.release()
    cv2.destroyAllWindows()

input_file = 'input_video.mp4'
output_file = 'stabilized_video_dl.avi'
stabilize_video_deep_learning(input_file, output_file)

在这个示例中,我们使用了预训练的 VGG16 模型来提取视频帧的特征,并计算帧与帧之间的特征差异。然后,根据特征差异对帧进行校正,从而实现视频的稳定处理。这种基于深度学习的方法可以更准确地处理视频去抖动,并适用于各种不同的场景和应用需求。

实时处理需求

在某些应用中,需要对实时生成的视频进行即时的去抖动处理。这对计算资源和算法效率提出了更高的要求,需要针对实时处理进行专门的优化和改进。

误差累积

一些视频去抖动算法可能会引入误差累积的问题,特别是在长时间的视频处理过程中。这可能会导致最终的稳定效果不佳或者画面出现畸变。

了解这些挑战和限制可以帮助我们更好地选择合适的视频去抖动算法和方法,并在实际应用中做出适当的调整和优化,以达到最佳的效果。

针对这些挑战和限制,我们可以采取一些策略和方法来应对:

并行和分布式处理

利用多线程、多进程或者分布式计算技术,可以加速视频去抖动算法的处理速度,提高计算效率。这样可以更快地处理大规模的视频数据,同时减少处理时间和资源消耗。

算法优化和改进

持续优化和改进视频去抖动算法,针对不同的场景和应用需求进行适当的调整和改进。例如,结合深度学习技术、增加自适应参数调整、优化运动估计算法等,以提高算法的准确性和效率。

实时处理优化

针对实时处理需求,对算法进行专门的优化和改进,以保证实时性和响应性。可以采用流式处理技术、缓冲区管理、实时调整参数等方法,以满足实时处理的要求。

下面是一个基于 OpenCV 库的简单视频去抖动的代码案例,使用了帧差法来处理视频中的抖动:

import cv2

def stabilize_video(input_file, output_file):
    cap = cv2.VideoCapture(input_file)
    fps = int(cap.get(cv2.CAP_PROP_FPS))
    width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    
    # 创建 VideoWriter 对象,用于保存处理后的视频
    fourcc = cv2.VideoWriter_fourcc(*'XVID')
    out = cv2.VideoWriter(output_file, fourcc, fps, (width, height))
    
    # 读取第一帧
    ret, prev_frame = cap.read()
    if not ret:
        return
    
    # 处理视频帧
    while True:
        ret, frame = cap.read()
        if not ret:
            break
        
        # 计算相邻帧之间的差异
        diff = cv2.absdiff(prev_frame, frame)
        
        # 将差异应用于原始帧,平滑画面
        stabilized_frame = cv2.subtract(frame, diff)
        
        # 写入输出视频文件
        out.write(stabilized_frame)
        
        # 更新上一帧
        prev_frame = frame
    
    # 释放 VideoCapture 和 VideoWriter 对象
    cap.release()
    out.release()
    cv2.destroyAllWindows()

# 调用函数进行视频去抖动处理
input_file = 'input_video.mp4'
output_file = 'stabilized_video.avi'
stabilize_video(input_file, output_file)

在这个示例中,我们使用了 OpenCV 库来读取视频文件,并逐帧处理视频,通过计算相邻帧之间的差异来进行视频去抖动。最后,将处理后的帧写入输出视频文件中。这个简单的代码示例演示了如何使用 Python 和 OpenCV 库实现视频去抖动的基本方法。

高性能硬件支持

利用高性能的硬件设备,如GPU加速、专用的视频处理芯片等,可以提高视频去抖动算法的处理速度和效率。这样可以更快地处理大规模视频数据,同时减少计算资源的消耗。

实验和评估

进行实验和评估,对不同的视频去抖动算法和方法进行比较和评估,选择最适合特定场景和需求的算法。通过实验和评估,可以找到最佳的算法和参数组合,以达到最佳的效果。

综合利用这些策略和方法,可以更好地应对视频去抖动技术面临的挑战和限制,从而实现更高效、更可靠的视频去抖动处理。

总结

视频去抖动技术在当今数字视频处理领域扮演着重要角色,它可以有效地减少视频中由相机振动或手持拍摄等原因引起的画面抖动,从而提高视频的质量和观赏性。本文介绍了如何利用Python和OpenCV库实现视频去抖动的方法,并提供了多种技术和方法的示例。我们从基本的帧差法到更复杂的运动估计和深度学习方法,介绍了不同的实现思路和应用场景。此外,我们还讨论了视频去抖动技术面临的挑战和限制,并提出了一些应对策略和方法。通过不断优化和改进算法,结合高性能硬件支持和实时处理优化,可以实现更高效、更可靠的视频去抖动处理,满足不同场景和应用的需求。视频去抖动技术的发展和应用将进一步推动数字视频处理技术的发展,为用户提供更优质的视频体验。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华为matebook 14安装ubuntu双系统

一、准备u盘 首先格式化u盘(选择FAT32) 二、确认电脑类型 键盘按下win+r(win:开始键/也就是Windows的标志那个键),在输入框内输入msinfo32后,回车确认 确定自己电脑 硬盘 的类型: 在显示屏下方的搜索框内搜索“计算机管理” 点击进入后,再点击左边列表内的“磁…

拉普拉斯IPO:荣获国家级专精特新和国家级制造业单项冠军殊荣

近期,拉普拉斯荣获国家级专精特新和国家级制造业单项冠军的殊荣,这无疑是对其在技术和发展方面的肯定。这些荣誉证明了拉普拉斯在光伏行业的卓越表现和持续创新,以及其在国内制造业中的领先地位,进一步彰显了拉普拉斯在技术研发和…

智慧浪潮下的产业园区:洞察智慧化转型如何打造高效、绿色、安全的新园区

目录 一、引言 二、智慧化转型的内涵与价值 三、打造高效园区的智慧化策略 1、建设智能化基础设施 2、推广智能化应用 3、构建智慧化服务平台 四、实现绿色园区的智慧化途径 1、推动绿色能源应用 2、实施绿色建筑设计 3、加强环境监测与治理 五、保障园区安全的智慧…

【办公类-22-14】周计划系列(5-6)“周计划-06 19周的周计划教案合并打印PDF(最终打印版))

背景需求: 花了十周,终于把周计划教案的文字都写满、加粗、节日替换了。为了便于打印,我把19周的周计划教案全部合并在一起PDF。制作打印用PDF 思路 1、周计划是单独打印一张,因此要在第2页插入空白页, 2、教案有3页…

[计算机效率] 截图工具:FastStone Capture

3.19 截图工具:FastStone Capture FastStone Capture是一款功能强大的屏幕捕捉软件,体积小巧、功能强大,不但具有常规截图等功能,更有从扫描器获取图像,和将图像转换为PDF文档等功能。 截屏功能:支持全屏截…

【Python数据库】MongoDB

文章目录 [toc]数据插入数据查询数据更新数据删除 个人主页:丷从心 系列专栏:Python数据库 学习指南:Python学习指南 数据插入 from pymongo import MongoClientdef insert_data():mongo_client MongoClient(hostlocalhost, port27017)co…

Git变更账户、查看账户

1、变更账户 (1)修改当前文件夹用户 git config user.name “新用户名” git config user.email “新邮箱” (2)修改全局git用户 git config - -global user.name “新用户名” git config - -global user.email “新邮箱”…

计算机网络——初识网络

一、局域网与广域网 1.局域网(LAN) 局域网:即Local Area Network,简称LAN。Local即标识了局域⽹是本地,局部组建的⼀种私有⽹络。局域⽹内的主机之间能⽅便的进⾏⽹络通信,⼜称为内⽹;局域⽹和…

【c++】----STL简介string

目录 1. 什么是STL 2. STL的版本 3. STL的六大组件 4.STL的缺陷 5.string类 1. 为什么学习string类? 6.string类的常用接口说明(下面我们只讲解最常用的接口) 1.string 常见构造 2.string类的遍历 iterator 迭代器遍历 (…

前端开发攻略---模拟后端接口返回数据,教你三种方式实现滚动到底部加载更多数据

1、演示 2、方式一:手动监听滚动事件 原理: 手动监听滚动事件的原理是通过添加滚动事件监听器,当页面滚动时触发相应的回调函数,检测页面是否已经滚动到底部,从而触发加载更多数据的逻辑。 优点: 1、相对简…

理解ROS2的动作

​ 1. 创建一个动作 目标: 在ROS 2软件包中定义一个动作。 1.1 新建包 设置一个 workspace 并创建一个名为 action_tutorials_interfaces 的包: mkdir -p ros2_ws/src #you can reuse existing workspace with this naming convention cd ros2_ws/s…

HTTPS证书申请:相关流程及注意事项

HTTPS证书(即HTTPS证书、服务器证书)是实现网络通信安全的重要技术产品,它为网站提供HTTPS加密和服务器身份验证的功能。HTTPS证书申请有那些流程?如何快速完成HTTPS证书申请?有哪些注意事项?本文将以沃通H…

Meta Llama 3 性能提升与推理服务部署

利用 NVIDIA TensorRT-LLM 和 NVIDIA Triton 推理服务器提升 Meta Llama 3 性能 我们很高兴地宣布 NVIDIA TensorRT-LLM 支持 Meta Llama 3 系列模型,从而加速和优化您的 LLM 推理性能。 您可以通过浏览器用户界面立即试用 Llama 3 8B 和 Llama 3 70B(该…

Android优化RecyclerView图片展示:Glide成堆加载批量Bitmap在RecyclerView成片绘制Canvas,Kotlin(b)

Android优化RecyclerView图片展示:Glide成堆加载批量Bitmap在RecyclerView成片绘制Canvas,Kotlin(b) 对 Android GridLayoutManager Glide批量加载Bitmap绘制Canvas画在RecyclerView,Kotlin(a)-…

【哔哩哔哩笔试题汇总】2024-04-28-哔哩哔哩春招笔试题-三语言题解(CPP/Python/Java)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新b站近期的春秋招笔试题汇总~ 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢&#x1f497…

基于Hadoop的网上购物行为分析设计与实现

2.8 数据分析及可视化 2.8.1 店铺销售情况分析 通过这里可以看出,该店家的数据用户访问量比较的大,有接近6W多条数据,但是通过对用户进行透视分析发现只有981位用户,其次就是对于用户购买次数进行分析,发现数据只有27…

2017年全国职业院校技能大赛高职组“信息安全管理与评估”样题

培训、环境、资料、考证 公众号:Geek极安云科 网络安全群:624032112 网络系统管理群:223627079 网络建设与运维群:870959784 移动应用开发群:548238632 极安云科专注于技能提升,赋能 2024年广东省高校的技…

2.Neo4j的搭建启动

Graph Database 图数据库 版本对应关系 官网都是高版本,推荐使用下载地址可以找到社区老版本: https://we-yun.com/doc/neo4j/ neo4j.bat 启动脚本 cypher-shell.bat 执行CQL语句的。 import文件夹可以放入excel,csv等数据文件,导入到…

Transformer - Layer Normalization

Transformer - Layer Normalization flyfish y x − E [ x ] V a r [ x ] ϵ ∗ γ β y \frac{x - \mathrm{E}[x]}{ \sqrt{\mathrm{Var}[x] \epsilon}} * \gamma \beta yVar[x]ϵ ​x−E[x]​∗γβ 论文 Layer Normalization import numpy as np import torch import…

交直流充电桩检测的基础知识

交直流充电桩检测是电动汽车充电设施的重要组成部分,其目的是确保充电桩的正常运行,保障电动汽车的安全充电。以下是关于交直流充电桩检测的一些基础知识。 我们需要了解什么是交直流充电桩,简单来说,交直流充电桩是一种为电动汽车…