自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 项目实训(十二)—项目实训总结

目标:实现一个针对影视类型视频进行智能剪辑的APP,具有智能剪辑和智能预览两大主要功能:1、智能剪辑的流程为用户自行上传本地视频、需要剪辑的目标人物图片以及场景约束图片,利用场景划分和视频摘要算法实现智能视频切分,并进行人脸识别和场景匹配,返回给用户有关该人物在多场景或约束场景下的关键视频片段。2、智能预览的流程为用户自行上传本地视频,利用场景划分和视频摘要算法首先实现智能视频切分。而后对切分后的视频片段进行相似度计算,建立视频关系图。用户随意拖动视频进度条,系统就在视频下方展示与当前片段相关的其余关键视频

2022-06-11 08:43:30 633 2

原创 项目实训(七)—场景视频切割

二分类问题,即对每个镜头进行是否为场景边界的分类预测。(1)首先采用一个边界网络(BNet)对镜头的差异与关系进行提取,BNet由两个分支网络构建,Bd捕捉镜头前后两幕的差异,Br用于捕捉镜头关系,由一个卷积加一个最大池化层构建。(2)基于获得通过Bnet得到的镜头代表,构建一个LSTM模型获得镜头构成场景边界的概率,通过设定场景个数阈值得到结果。(3)在获得每个镜头边界bi的代表之后,问题变成根据表示序列[b1,···,bn-1]的序列来预测序列二进制labels [o1,o2,···,on-1],

2022-06-10 22:11:46 739 1

原创 项目实训(十一)—相似场景聚类

上一篇博客中已经将所有的场景视频的特征提取出来了,下面介绍一下如何将相似的场景视频聚类到一起。1、读取h5特征文件:2、相似度对比:思路是对于每一个视频,计算与除自己外的所有其他视频的相似度,相似度计算使用余弦相似度方法,设定相似度阈值为0.95,大于阈值的视频就被添加到列表中,该列表之后作为字典结构的值存在,键则为对应的目标视频路径。3、以字典结构存储结果:4、将结果保存为json文件:完整代码如下:...

2022-06-09 22:53:46 344

原创 项目实训(九)—本地调用服务器算法

前言:上一篇博客中已经介绍过,如何使用SSH-2实现Java远程连接服务器,以及实现了四个操作:1、创建目录结构,执行服务器命令python create_files.py2、在faceS下建立一个以照片名为文件名的文件夹,上传人脸照片到该文件夹下,用于第三阶段人脸检测算法3、上传本地文件(视频)到服务器4、下载服务器的文件到本地(返回给用户)Java通过SSH-2连接远程服务器调用后端三个算法:除了这四个操作,我们还需要实现一个操作:通过Java远程连接服务器来执行后端的三个算法,我们仍然打

2022-06-09 20:29:35 557

原创 项目实训(十)—提取视频特征

为了实现智能预览功能:将与视频进度条所在的视频片段的场景相似的场景视频展示给用户,即用户看到某个场景片段的同时也会看到相似的场景片段,并且当点击某个相似场景片段时,进度条会跳转到该场景片段。使用 googlenet 网络进行特征的提取。...

2022-06-09 15:56:48 2113

原创 项目实训(八)—文件结构生成及Java通过SSH-2连接远程服务器

一、文件结构生成:根据用户ID和视频名称VideoName,在服务器生成一个用于保存原视频、中间结果和最终结果的目录结构。——EasyCut ——ID ——ID_VideoName ——Original_Video ——SceneSeg_Video ——Key_Frame ——Resources ——video ——result ——gif ——featureMean

2022-06-09 15:48:12 454

原创 项目实训(六)—场景划分之镜头切割

镜头切割的实现

2022-04-29 08:46:37 327

原创 项目实训(五)—参数设置与调用接口

前言:我们在服务器中专门建立了一个文件夹用于保存用户上传的视频、视频处理的中间结果以及最终果,结构如下:(每个用户都会有一个以ID命名的文件夹,这里我们创建的文件夹仅仅用于测试)——EasyCut ——ID ——ID_VideoName ——Original_Video //原视频地址 ——SceneSeg_Video //场景划分结果 ——Key_Frame ——Resources1、命令行参数设置:LGSS框架关于场景划分处理的原

2022-04-26 23:59:51 1909

原创 项目实训(四)—提取地点特征和音频特征

前言:前面运行 demo 程序时只使用了图像(也就是地点)元素进行场景分割,下面运行一下提取地点特征和音频特征的程序。一、提取视频的地点特征:cd ./prepython place/extract_feat.py运行时出现了如下问题:RuntimeError: CUDA out of memory. Tried to allocate 784.00 MiB (GPU 0; 10.76 GiB total capacity; 9.24 GiB already allocated; 125.5

2022-04-17 22:17:14 199

原创 项目实训—场景划分(三)

1、环境配置1.1 要求:(1)Python 3.6+(2)PyTorch 1.0 或更高版本(3)mmcv1、安装 PyTorch 和 torchvision :conda install pytorch torchvision -c pytorch2、安装 python 包:pip install -r docs/requirements.txt1.2 遇到的问题:(1)问题1:ImportError: libGL.so.1: cannot open shared obj

2022-04-02 22:57:43 1479

原创 项目实训—场景划分(二)

LGSS 框架代码结构分析

2022-03-27 23:59:02 3353

原创 项目实训—场景划分(一)

LGSS:一种局部到全局的多模态电影场景分割方法场景作为电影讲故事的关键单元,包含了演员的复杂活动及其在物理位置上的互动。识别场景的组成和语义是视觉理解复杂长视频(如电影、电视剧、娱乐节目和综艺节目)的关键一步。场景是一系列连续的镜头,场景分割可以被公式化为二元分类问题,即确定镜头边界是否是场景边界。从视频到分段场景基本上需要两个步骤,包括整体特征提取和时间场景分割。要做到分割场景并不容易,因为分割场景需要识别多个语义方面和使用复杂的时间信息,为了解决这个问题,我们使用了一种从局部到全局的场景分割框架

2022-03-20 23:54:12 4459

原创 Netty提供的粘包拆包解决方案(四)

2021SC@SDUSCLengthFieldBasedFrameDecoderLengthFieldBasedFrameDecoder:基于长度字段的解码器。在发送的数据中,使用一个字段表示数据的长度,当接收方接收到数据后,先读出该长度字段,从而知道发送的数据有多长,根据这个长度对数据进行解码。LengthFieldBasedFrameDecoder中定义的成员变量如下:// 长度字段的偏移量private final int lengthFieldOffset;// 长度字段的长度pri

2021-12-25 09:28:07 369

原创 Netty提供的粘包拆包解决方案(三)

2021SC@SDUSCDelimiterBasedFrameDecoderDelimiterBasedFrameDecoder是基于分隔符的解码器,根据用户自己指定的分割符来进行解码,并且可以同时指定多个分割符,只要在读取数据时,碰到了其中任意一个分隔符,就可以进行一次解码需要注意的是:如果只指定两个分隔符,并且是\r\n 和\n 时,基于分隔符的解码器就变成了一个基于行的解码器,那么在解码时,就直接使用行分割器 LineBaseFrameDecoder 解码DelimiterBasedFram

2021-12-18 00:50:26 103

原创 Netty提供的粘包拆包解决方案(二)

2021SC@SDUSCLineBasedFrameDecoder:通过换行符,即\n或者\r\n对数据进行处理,每当读到行分隔符(\n 或者\r\n)的时候,就解析出一个数据对象。对于数据的编码,即在每个数据包最后添加换行符或者指定分割符的部分也需要用户自行进行处理LineBaseFrameDecoder定义了如下几个成员变量:// 解码的最大长度private final int maxLength;// 当通过换行符读出来的数据超过maxLength规定的长度后,是否立即抛出异常。t

2021-12-12 00:44:10 358

原创 Netty提供的粘包拆包解决方案(一)

2021SC@SDUSC前言前面已经介绍过粘包与拆包问题:粘包拆包问题粘包和拆包实例演示下面介绍一下Netty提供的粘包拆包解决方案Netty提供了一系列的编解码器来解决 TCP 的粘包、半包问题:FixedLengthFrameDecoder(基于固定长度的解码器)LineBasedFrameDecoder (基于行分隔符的解码器)DelimiterBasedFrameDecoder (基于自定义分割符的解码器)LengthFieldBasedFrameDecoder(基于长度.

2021-12-04 00:26:05 356

原创 深入了解Netty之ChannelHandler与Pipeline(六)

2021SC@SDUSC异常的传播在Netty中如果发生了异常,那么异常事件的传播和当前的节点是 入站处理器还是出站处理器是无关的,异常会一直往下一个节点传播,如果一直没有handler处理异常,最后会由tail节点处理为了说明这一点,看一个例子:public class InBoundHandlerA extends ChannelInboundHandlerAdapter { @Override public void exceptionCaught(ChannelHand.

2021-11-27 00:52:13 310

原创 深入了解Netty之ChannelHandler与Pipeline(五)

2021SC@SDUSC接上篇的 Netty 中的传播事件,本篇博客讲解 outBound 事件这里将 outBound 事件的传播分成两部分来分析:(1)outBound事件和ChannelOutBoundHandler (2)write事件的传播一、outBound事件和ChannelOutBoundHandler同样先看一下 ChannelOutBoundHandler 定义的方法有哪些:上述方法中:1、bind :端口绑定事件2、close :关闭事件3、connect :连接

2021-11-21 10:48:39 373

原创 深入了解Netty之ChannelHandler与Pipeline(四)

2021SC@SDUSC一、Netty 中的传播事件在前面的博客中提到, AbstractChannelHandlerContext 中有 inbound 和 outbound 两个 boolean 变量,分别用于标识 Context 所对应的 handler 的类型:1、inbound 为 true表示其对应的 ChannelHandler 是 ChannelInboundHandler 的子类。2、outbound 为 true 表示对应的 ChannelHandler 是 ChannelO.

2021-11-14 09:56:23 299

原创 深入了解Netty之ChannelHandler与Pipeline(三)

2021SC@SDUSC前言上一篇博客分析了Pipeline创建、Pipleline 初始节点:head和tail、添加一个新的节点,这次分析一下回调添加完成事件和删除一个节点操作。Pipeline代码分析1.回调添加完成事件上一篇博客中分析添加一个节点时,分析了DefaultChannelPipeline中的addLast() 方法: public final ChannelPipeline addLast(EventExecutorGroup group, String .

2021-11-07 19:36:48 108

原创 深入了解Netty之ChannelHandler与Pipeline(二)

2021SC@SDUSC目录前言一、Pipeline原理二、代码分析1.Pipeline创建2.Pipleline 初始节点:head和tail3.添加一个新的节点前言上一篇博客大体介绍了ChannelHandler、Pipeline、ChannelHandlerContext三者之间的关系,本篇博客主要进行代码分析一、Pipeline原理(1)ChannelPipeline 是一个 Handler 的集合,它负责处理和拦截 inbound 或者 outbound 的事件和操作,相.

2021-10-31 22:25:47 259

原创 深入了解Netty之ChannelHandler与Pipeline(一)

2021SC@SDUSC目录前言一、ChannelHandler1.ChannelInboundHandler入站处理器2.ChannelOutboundHandler出站处理器二、Pipeline三、ChannelHandlerContext前言本篇博客主要介绍ChannelHandler、Pipeline、ChannelHandlerContext及三者之间的关系。Reactor模式的两个重要的组件,一个是Reactor反应器,在Netty中的对应的实现是EventLoop,另一个重要的组.

2021-10-24 19:32:51 217

原创 粘包拆包实例演示

2021SC@SDUSC编写Netty程序时,如果没有做处理,就会发生粘包和拆包问题。下面看一个粘包和拆包的实例。具体代码实现:客户端代码:MyClient:import io.netty.bootstrap.Bootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.EventLoopGroup;import io.netty.channel.nio.NioEventLoopGroup;impo.

2021-10-17 21:59:52 153

原创 粘包拆包问题

2021SC@SDUSC目录一、什么是粘包拆包问题二、出现粘包拆包的原因三、粘包拆包问题的解决方法四、Netty解决粘包拆包的四种方案一、什么是粘包拆包问题TCP 协议是流数据,流数据的特点就是没有分界线。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送。如果通讯的一端一次性连续发送多条数据包,TCP协议会将多个数据包打包成一个TCP报文发送出去,这

2021-10-10 21:01:47 553

原创 软件工程应用与实践Netty项目综述

2021SC@SDUSC文章目录一、项目介绍二、代码下载三、任务分工一、项目介绍Netty是由JBOSS提供的一个Java开源框架,现为 Github上的独立项目。它利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架,提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。Netty 是基于NIO的客户、服务器端的编程框架,使用Netty 可以确保你快速地开发高性能、高可靠性的网络服务器/客户端

2021-09-30 23:33:39 245

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除