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

FPGA 多路视频处理:图像缩放+视频拼接显示,HDMI采集,提供2套工程源码和技术支持

目录

  • 1、前言
    • 版本更新说明
    • 免责声明
  • 2、相关方案推荐
    • FPGA图像缩放方案推荐
    • FPGA视频拼接方案推荐
  • 3、设计思路框架
    • 视频源选择
    • IT6802解码芯片配置及采集
    • 动态彩条
    • 缓冲FIFO
    • 图像缩放模块详解
      • 设计框图
      • 代码框图
      • 2种插值算法的整合与选择
    • 视频拼接算法
    • 图像缓存
    • 视频输出
  • 4、vivado工程1:2路视频缩放拼接
  • 5、vivado工程2:4路视频缩放拼接
  • 6、工程移植说明
    • vivado版本不一致处理
    • FPGA型号不一致处理
    • 其他注意事项
  • 7、上板调试验证并演示
    • 准备工作
    • 静态演示
    • 动态演示
  • 8、福利:工程源码获取

FPGA 多路视频处理:图像缩放+视频拼接显示,HDMI采集,提供2套工程源码和技术支持

1、前言

没玩过图像缩放和视频拼接都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。本文使用Xilinx的Kintex7 FPGA的图像缩放多路视频拼接方案,视频源有两种,分别对应开发者手里有没有摄像头的情况,一种是使用板载的HDMI输入接口(笔记本电脑模拟HDMI输入),使用IT6802解码芯片将TMDS的差分HDMI视频解码为24位的RGB视频数据供FPGA使用;如果你的FPGA开发板没有HDMI输入接口,则可使用代码内部生成的动态彩条模拟摄像头视频;视频源的选择通过代码顶层的`define宏定义进行选择,上电默认使用HDMI输入作为视频源;提供2套vivado2019.1版本的工程源码,2套工程源码的不同点在于图像缩放后的分辨率不同和视频拼接的方式不同,工程1将输入的1920x1080分辨率视频通过图像缩放模块缩小到960x1080,然后将视频复制两份,用以模拟两路视频输入,做两路视频拼接后在1920x1080分辨率的输出视频上做2分屏拼接显示;工程2将输入的1920x1080分辨率视频通过图像缩放模块缩小到960x480,然后将视频复制4份,用以模拟4路视频输入,做4路视频拼接后在1920x1080分辨率的输出视频上做4分屏拼接显示;FPGA缩放后的视频,用我常用的FDMA套路进行图像缓存,缓存的介质为DDR3,然后读出视频,生成标准的1920x1080分辨率的VGA时序,再用纯verilog实现的RGB转HDMI模块将视频输出到显示器显示;

本博客详细描述了FPGA 图像缩放多路视频拼接的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做学习提升,可应用于医疗、军工等行业的高速接口或图像处理领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

版本更新说明

此版本为第2版,根据读者的建议,对第1版工程做了如下改进和更新:
1:增加了输入视频静态彩条的选择,有的读者说他的FPGA开发板没有HDMI输入接口,导致在移植过程中困难很大,基于此,增加了静态彩条,它由FPGA内部产生,不需要外接摄像头就可以使用,使用方法在后文有说明;
2:优化了FDMA,之前的FDMA内AXI4的数据读写突发长度为256,导致在低端FPGA上带宽不够,从而图像质量不佳,基于此,将FDMA内AXI4的数据读写突发长度改为128;
3:优化了HDMI输出模块,之前用的自定义IP,有读者说IP无法更新,虽能正常使用,但看源码不方便,基于此,将HDMI输出模块改为纯verilog实现的,直接了当;

免责声明

本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等),若大佬们觉得有所冒犯,请私信批评教育;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,禁止用于商业用途,若由于读者或粉丝自身原因用于商业用途所导致的法律问题,与本博客及博主无关,请谨慎使用。。。

2、相关方案推荐

本工程是图像缩放和视频拼接的整合版,在此之前,我分别推出过FPGA图像缩放方案和FPGA视频拼接方案,所以推荐如下:

FPGA图像缩放方案推荐

该方案使用纯verilog代码实现任意尺寸图像缩放,详细请参考我之前的博客,博客链接如下:
直接点击前往

FPGA视频拼接方案推荐

该方案使用纯verilog代码实现多路视频拼接,详细请参考我之前的博客,博客链接如下:
4路视频拼接方案参考博客链接如下:直接点击前往
8路视频拼接方案参考博客链接如下:直接点击前往
16路视频拼接方案参考博客链接如下:直接点击前往

3、设计思路框架

视频源有两种,分别对应开发者手里有没有摄像头的情况,一种是使用板载的HDMI输入接口(笔记本电脑模拟HDMI输入),使用IT6802解码芯片将TMDS的差分HDMI视频解码为24位的RGB视频数据供FPGA使用;如果你的FPGA开发板没有HDMI输入接口,则可使用代码内部生成的动态彩条模拟摄像头视频;视频源的选择通过代码顶层的`define宏定义进行选择,上电默认使用HDMI输入作为视频源;提供2套vivado2019.1版本的工程源码,2套工程源码的不同点在于图像缩放后的分辨率不同和视频拼接的方式不同,工程1将输入的1920x1080分辨率视频通过图像缩放模块缩小到960x1080,然后将视频复制两份,用以模拟两路视频输入,做两路视频拼接后在1920x1080分辨率的输出视频上做2分屏拼接显示;工程2将输入的1920x1080分辨率视频通过图像缩放模块缩小到960x480,然后将视频复制4份,用以模拟4路视频输入,做4路视频拼接后在1920x1080分辨率的输出视频上做4分屏拼接显示;FPGA缩放后的视频,用我常用的FDMA套路进行图像缓存,缓存的介质为DDR3,然后读出视频,生成标准的1920x1080分辨率的VGA时序,再用纯verilog实现的RGB转HDMI模块将视频输出到显示器显示;
工程1设计框图如下:
在这里插入图片描述
工程2设计框图如下:
在这里插入图片描述

视频源选择

视频源有两种,分别对应开发者手里有没有摄像头的情况,一种是使用板载的HDMI输入接口(笔记本电脑模拟HDMI输入),使用IT6802解码芯片将TMDS的差分HDMI视频解码为24位的RGB视频数据供FPGA使用;如果你的FPGA开发板没有HDMI输入接口,则可使用代码内部生成的动态彩条模拟摄像头视频;视频源的选择通过代码顶层的宏定义进行选择,上电默认使用HDMI输入作为视频源;视频源的选择通过代码顶层的`define宏定义进行;如下:
在这里插入图片描述
视频源选择逻辑代码部分如下:
在这里插入图片描述
选择逻辑如下:
当(注释) define USE_SENSOR时,输入源视频是动态彩条;
当(不注释) define USE_SENSOR时,输入源视频是HDMI;

IT6802解码芯片配置及采集

IT6802解码芯片需要i2c配置才能使用,关于IT6802解码芯片的配置和使用,请参考我往期的博客,博客地址:点击直接前往
IT6802解码芯片配置及采集这两部分均用verilog代码模块实现,代码位置如下:
在这里插入图片描述
代码中配置为1920x1080分辨率;

动态彩条

动态彩条可配置为不同分辨率的视频,视频的边框宽度,动态移动方块的大小,移动速度等都可以参数化配置,我这里配置为辨率1280x720,动态彩条模块代码位置和顶层接口和例化如下:
在这里插入图片描述
在这里插入图片描述

缓冲FIFO

缓冲FIFO的作用是为了解决跨时钟域的问题,当视频不进行缩放时不存在视频跨时钟域问题,但当视频缩小或放大时就存在此问题,用FIFO缓冲可以使图像缩放模块每次读到的都是有效的输入数据,注意,原视频的输入时序在这里就已经被打乱了;

图像缩放模块详解

设计框图

本设计将常用的双线性插值和邻域插值算法融合为一个代码中,通过输入参数选择某一种算法;代码使用纯verilog实现,没有任何ip,可在Xilinx、Intel、国产FPGA间任意移植;代码以ram和fifo为核心进行数据缓存和插值实现,设计架构如下:
在这里插入图片描述
视频输入时序要求如下:
在这里插入图片描述
输入像素数据在dInValid和nextDin同时为高时方可改变;
视频输出时序要求如下:
在这里插入图片描述
输出像素数据在dOutValid 和nextdOut同时为高时才能输出;

代码框图

代码使用纯verilog实现,没有任何ip,可在Xilinx、Intel、国产FPGA间任意移植;
图像缩放的实现方式很多,最简单的莫过于Xilinx的HLS方式实现,用opencv的库,以c++语言几行代码即可完成,关于HLS实现图像缩放请参考我之前写的文章HLS实现图像缩放
网上也有其他图像缩放例程代码,但大多使用了IP,导致在其他FPGA器件上移植变得困难,通用性不好;相比之下,本设计代码就具有通用性;代码架构如图;
在这里插入图片描述
其中顶层接口部分如下:
在这里插入图片描述

2种插值算法的整合与选择

本设计将常用的双线性插值和邻域插值算法融合为一个代码中,通过输入参数选择某一种算法;
具体选择参数如下:

input  wire i_scaler_type //0-->bilinear;1-->neighbor

通过输入i_scaler_type 的值即可选择;

输入0选择双线性插值算法;
输入1选择邻域插值算法;

关于这两种算法的数学差异,请参考我之前写的文章HLS实现图像缩放

视频拼接算法

视频拼接方案如下:以工程2的4路OV5640摄像头拼接为例;
在这里插入图片描述
输出屏幕分辨率为1920X1080;
输入摄像头分辨率为960X540;
4路输入刚好可以占满整个屏幕;
多路视频的拼接显示原理如下:
在这里插入图片描述
以把 2 个摄像头 CAM0 和 CAM1 输出到同一个显示器上为列,为了把 2 个图像显示到 1 个显示器,首先得搞清楚以下关系:
hsize:每 1 行图像实际在内存中占用的有效空间,以 32bit 表示一个像素的时候占用内存大小为 hsize4;
hstride:用于设置每行图像第一个像素的地址,以 32bit 表示一个像素的时候 v_cnt
hstride4;
vsize:有效的行;
因此很容易得出 cam0 的每行第一个像素的地址也是 v_cnt
hstride4;
同理如果我们需要把 cam1 在 hsize 和 vsize 空间的任何位置显示,我们只要关心 cam1 每一行图像第一个像素的地址,可以用以下公式 v_cnt
hstride*4+offset;
uifdma_dbuf 支持 stride 参数设置,stride 参数可以设置输入数据 X(hsize)方向每一行数据的第一个像素到下一个起始像素的间隔地址,利用 stride 参数可以非常方便地摆放输入视频到内存中的排列方式。
关于uifdma_dbuf,可以参考我之前写的文章点击查看:FDMA实现视频数据三帧缓存
根据以上铺垫,每路摄像头缓存的基地址如下:
CAM0:ADDR_BASE=0x80000000;
CAM1:ADDR_BASE=0x80000000+(1920-960)X4;
CAM2:ADDR_BASE=0x80000000+(1080-540)X1920X4;
CAM3:ADDR_BASE=0x80000000+(1080-540)X1920X4+(1920-960)X4;
地址设置完毕后基本就完事儿了;

图像缓存

经常看我博客的老粉应该都知道,我做图像缓存的套路是FDMA,他的作用是将图像送入DDR中做3帧缓存再读出显示,目的是匹配输入输出的时钟差和提高输出视频质量,关于FDMA,请参考我之前的博客,博客地址:点击直接前往
这里多路视频拼接时,调用多路FDMA进行缓存,具体讲就是每一路视频调用1路FDMA,以4路视频拼接为例:
调用4路FDMA,其中三路配置为写模式,因为这三路视频在这里只需要写入DDR3,读出是由另一个FDMA完成,配置如下:
在这里插入图片描述
另外1路FDMA配置为读写模式,因为4路视频需要同时一并读出,配置如下:
在这里插入图片描述
视频拼接的关键点在于4路视频在DDR3中缓存地址的不同,还是以4路视频拼接为例,4路FDMA的写地址以此为:
第一路视频缓存写基地址:0x80000000;
第二路视频缓存写基地址:0x80000f00;
第三路视频缓存写基地址:0x803f4800;
第四路视频缓存写基地址:0x803f5700;
视频缓存读基地址:0x80000000;

视频输出

视频从FDMA读出后,经过VGA时序模块和HDMI发送模块后输出显示器,代码位置如下:
在这里插入图片描述
VGA时序配置为1280X720,HDMI发送模块采用verilog代码手写,可以用于FPGA的HDMI发送应用,关于这个模块,请参考我之前的博客,博客地址:点击直接前往

4、vivado工程1:2路视频缩放拼接

开发板FPGA型号:Xilinx–Kintex7–xc7k325tffg676-2;
开发环境:Vivado2019.1;
输入:HDMI(IT6802解码)或动态彩条,分辨率1920x1080;
输出:HDMI,1080P分辨率下的显示2路拼接视频;
工程应用:FPGA 图像缩放多路视频拼接;
工程BD如下:
在这里插入图片描述
工程代码架构如下:
在这里插入图片描述
工程的资源消耗和功耗如下:
在这里插入图片描述

5、vivado工程2:4路视频缩放拼接

开发板FPGA型号:Xilinx–Kintex7–xc7k325tffg676-2;
开发环境:Vivado2019.1;
输入:HDMI(IT6802解码)或动态彩条,分辨率1920x1080;
输出:HDMI,1080P分辨率下的显示4路拼接视频;
工程应用:FPGA 图像缩放多路视频拼接;
工程BD如下:
在这里插入图片描述
工程代码架构如下:
在这里插入图片描述
工程的资源消耗和功耗如下:
在这里插入图片描述

6、工程移植说明

vivado版本不一致处理

1:如果你的vivado版本与本工程vivado版本一致,则直接打开工程;
2:如果你的vivado版本低于本工程vivado版本,则需要打开工程后,点击文件–>另存为;但此方法并不保险,最保险的方法是将你的vivado版本升级到本工程vivado的版本或者更高版本;
在这里插入图片描述
3:如果你的vivado版本高于本工程vivado版本,解决如下:
在这里插入图片描述
打开工程后会发现IP都被锁住了,如下:
在这里插入图片描述
此时需要升级IP,操作如下:
在这里插入图片描述
在这里插入图片描述

FPGA型号不一致处理

如果你的FPGA型号与我的不一致,则需要更改FPGA型号,操作如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
更改FPGA型号后还需要升级IP,升级IP的方法前面已经讲述了;

其他注意事项

1:由于每个板子的DDR不一定完全一样,所以MIG IP需要根据你自己的原理图进行配置,甚至可以直接删掉我这里原工程的MIG并重新添加IP,重新配置;
2:根据你自己的原理图修改引脚约束,在xdc文件中修改即可;
3:纯FPGA移植到Zynq需要在工程中添加zynq软核;

7、上板调试验证并演示

准备工作

你需要有以下装备才能移植并测试该工程代码:
1:FPGA开发板;
2:板载的HDMI输入接口,如果没有也可以,就选择动态彩条;
3:HDMI传输线;
4:HDMI显示,要求分辨率支持1920x1080;

静态演示

工程1:HDMI(IT6802解码)1920x1080输入缩放到960x1080后2路视频拼接2分屏输出如下:
在这里插入图片描述
工程1:动态彩条1920x1080输入缩放到960x1080后2路视频拼接2分屏输出如下:
在这里插入图片描述
工程2:HDMI(IT6802解码)1920x1080输入缩放到960x540后4路视频拼接4分屏输出如下:
在这里插入图片描述
工程2:动态彩条1920x1080输入缩放到960x540后4路视频拼接4分屏输出如下:
在这里插入图片描述

动态演示

动态视频演示如下:

FPGA-视频缩放拼接-HDMI-2023

8、福利:工程源码获取

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
网盘资料如下:
在这里插入图片描述

相关文章:

FPGA 多路视频处理:图像缩放+视频拼接显示,HDMI采集,提供2套工程源码和技术支持

目录 1、前言版本更新说明免责声明 2、相关方案推荐FPGA图像缩放方案推荐FPGA视频拼接方案推荐 3、设计思路框架视频源选择IT6802解码芯片配置及采集动态彩条缓冲FIFO图像缩放模块详解设计框图代码框图2种插值算法的整合与选择 视频拼接算法图像缓存视频输出 4、vivado工程1&am…...

【数据结构】抽象数据类型

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 🎏数据类型 🎏抽象数据类型 结语 🎏数据类型 数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称. 数据类型(d…...

Android 查看路由表

Android 查看路由表_android 路由表_念雅的博客-CSDN博客...

vulnhub靶机-DC系列-DC-3

文章目录 信息收集漏洞查找漏洞利用SQL注入John工具密码爆破反弹shell 提权 信息收集 主机扫描 arp-scan -l可以用netdiscover 它是一个主动/被动的ARP 侦查工具。使用Netdiscover工具可以在网络上扫描IP地址,检查在线主机或搜索为它们发送的ARP请求。 netdiscover -r 192.1…...

【CTFHUB】SSRF原理之简单运用(一)

一、漏洞原理 SSRF 服务端请求伪造 原理:在某些网站中提供了从其他服务器获取数据的功能,攻击者能通过构造恶意的URL参数,恶意利用后可作为代理攻击远程或本地的服务器。 二、SSRF的利用 1.对目标外网、内网进行端口扫描。 2.攻击内网或本…...

wepack打包生产环境使用http-proxy-middleware做api代理转发的方法

首先安装http-proxy-middleware依赖,这个用npm和yarn安装都可以。 然后在express服务器的代码增加如下内容: const express require("express"); const app express(); const { createProxyMiddleware, fixRequestBody, } require("h…...

一百八十六、大数据离线数仓完整流程——步骤五、在Hive的DWS层建动态分区表并动态加载数据

一、目的 经过6个月的奋斗,项目的离线数仓部分终于可以上线了,因此整理一下离线数仓的整个流程,既是大家提供一个案例经验,也是对自己近半年的工作进行一个总结。 二、数仓实施步骤 (五)步骤五、在Hive的…...

Idea引入thymeleaf失败解决方法

报错 Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback.Fri Sep 29 09:42:00 CST 2023 There was an unexpected error (typeNot Found, status404). 原因:html没有使用thymeleaf 首先要引入…...

Dev C++安装与运行

参考: https://blog.csdn.net/Keven_11/article/details/126388791 https://www.cnblogs.com/-Wallace-/p/cpp-stl.html 2021年真题要求 2022年真题要求 河南省的考试环境 IDE环境 Dev C 安装 下载 安装 点击OK,选择我接受 修改安装路径为D盘d:\Program Fi…...

Docker下如何构建包含延迟插件的RabbitMQ镜像

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是 DevO…...

Vue3理解(6)

列表渲染 1.v-for指令基于一个数组来渲染列表,v-for指令的值需要使用 item in items形式的特殊语法,items是源数据的数组,而item是迭代项的别名。 2.在v-for块中可以完整访问父作用域内的属性和变量,v-for的第二个参数表示当前项的位置索引。…...

react+IntersectionObserver实现页面丝滑帧动画

实现效果: 加入帧动画前: 普通的静态页面 加入帧动画后: 可以看到,加入帧动画后,页面效果还是比较丝滑的。 技术实现 加入animation动画类 先用 **scss **定义三种动画类: .withAnimation {.fade1 {ani…...

项目实战第四十六讲:财务经营看板

项目实战第四十六讲:财务经营看板 本文是项目实战第四十六讲,财务经营看板。财务模块划分为两类:① 财务工具(执行和业务财务闭环)② 财务报表,本期需求为新增财务看板,共增加4个看板 文章目录 项目实战第四十六讲:财务经营看板1、需求背景2、流程图3、技术方案4、相关…...

【VUE复习·10】v-for 高级::key 作用和原理;尽量不要使用 index 来遍历

总览 1.:key 作用和原理 2.尽量不要使用 index 来遍历 一、:key 作用和原理 1.数据产生串位的原因 在我们使用 index 进行遍历的时候,会出现虚拟 DOM 和 真实 DOM 的渲染问题。 二、尽量不要使用 index 来遍历 详情见视频 1/3 处: https://www.bili…...

阿里云七代云服务器实例、倚天云服务器及通用算力型和经济型实例规格介绍

在目前阿里云的云服务器产品中,既有五代六代实例规格,也有七代和八代倚天云服务器,同时还有通用算力型及经济型这些刚推出不久的新品云服务器实例,其中第五代实例规格目前不在是主推的实例规格了,现在主售的实例规格是…...

《IIS系列》IIS日志文件管理

我们在使用IIS部署网站的时候,随着时间推移,IIS 生成的日志文件可能会消耗大量磁盘空间。 日志可能会填满整个硬盘驱动器,为了缓解此问题,许多用户完全关闭日志记录,但关了记录又会导致出现问题无从排查,故…...

3D孪生场景搭建:模型阵列摆放

阵列摆放概念 阵列摆放是指将物体、设备或元件按照一定的规则和间距排列组合的方式。在工程和科学领域中,阵列式摆放常常用于优化空间利用、提高效率或增强性能。 阵列摆放通常需要考虑间距、角度、方向、对称性等因素,以满足特定的要求和设计目标。不同…...

什么是大数据可视化

在互联网高速发展的当今,5G的兴起加速了数据传输的速度;与此同时,智能物联网如智慧家电、可穿戴设备等产品的火热,进一步扩充了数据获取的渠道。不仅仅在网页上、手机和电脑应用上以秒计产生海量数据,智能设备同时也在…...

python监控ES索引数量变化

文章目录 1, datafram根据相同的key聚合2, 数据合并:获取采集10,20,30分钟es索引数据脚本测试验证 1, datafram根据相同的key聚合 # 创建df1 > json {key:A, value:1 } {key:B, value:2 } data1 {key: [A, B], value: [1, 2]} df1 pd.DataFrame(data1)# 创建d…...

MySQL explain SQL分析工具详解与最佳实践

目录 一、explain工具介绍二、添加示例表和数据用于后续演示三、explain中的列3.1、id列3.2、select_type列3.3、table列3.4、partitions列3.5、type列NULLsystemconsteq_refrefrangeindexALL 3.6、possible_keys列3.7、key列3.8、key_len列3.9、ref列3.10、rows列3.11、filter…...

【2023年11月第四版教材】第16章《采购管理》(第一部分)

第16章《采购管理》(第一部分) 1 章节内容2 管理基础3 管理过程4 采购管理ITTO汇总 1 章节内容 【本章分值预测】大部分内容不变,细节有一些变化,预计选择题考3-4分,案例和论文 都有可能考;是需要重点学习…...

矢量图形编辑软件illustrator 2023 mac软件特点

illustrator 2023 mac是一款矢量图形编辑软件,用于创建和编辑排版、图标、标志、插图和其他类型的矢量图形。 illustrator mac软件特点 矢量图形:illustrator创建的图形是矢量图形,可以无限放大而不失真,这与像素图形编辑软件&am…...

前端架构师之01_JavaScript_Ajax

1 Web基础知识 1.1 Web服务器 Web服务器又称为网站服务器,主要用于提供网上信息浏览服务。常见的Web服务器软件有Apache HTTP Server(简称Apache)、Nginx等。 浏览器与服务器交互 在Web服务器中,请求资源又分为静态资源和动态…...

Java Spring Boot 目录结构介绍

Java Spring Boot 是一个用于简化Java应用程序开发的框架,它提供了一套灵活、易用的开发工具和约定,帮助开发者更快速地构建各种类型的Java应用程序。Spring Boot 的目录结构是一个重要的组成部分,它规定了如何组织和管理项目代码和资源文件。…...

ubuntu apt工具软件操作

apt工具 -----> 网关 国内网络(仓库源) 美国网络(仓库源)/etc/apt/sources.list https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/sudo apt-get update sudo apt install sl 安装包 sudo apt-cache show sl 查看包信…...

【论文阅读】UniDiffuser: Transformer+Diffusion 用于图、文互相推理

而多模态大模型将能够打通各种模态能力,实现任意模态之间转化,被认为是通用式生成模型的未来发展方向。 最近看到不少多模态大模型的工作,有医学、金融混合,还有CV&NLP。 今天介绍: One Transformer Fits All Di…...

Python爬虫教程——解析网页中的元素

前言: 嗨喽~大家好呀,这里是小曼呐 ~ 在我们理解了网页中标签是如何嵌套,以及网页的构成之后, 我们就是可以开始学习使用python中的第三方库BeautifulSoup筛选出一个网页中我们想要得到的数据。 接下来我们了解一下爬取网页信息…...

BiMPM实战文本匹配【上】

引言 今天来实现BiMPM模型进行文本匹配,数据集采用的是中文文本匹配数据集。内容较长,分为上下两部分。 数据准备 数据准备这里和之前的模型有些区别,主要是因为它同时有字符词表和单词词表。 from collections import defaultdict from …...

【C++】构造函数和析构函数第二部分(拷贝构造函数)--- 2023.9.28

目录 什么是拷贝构造函数?编译器默认的拷贝构造函数构造函数的分类及调用结束语 什么是拷贝构造函数? 用一句话来描述为拷贝构造即 “用一个已知的对象去初始化另一个对象” 具体怎么使用我们直接看代码,代码如下: class Maker…...

现在学RPA,还有前途吗,会不会太卷?

RPA是机器人流程自动化的缩写,是一种通过软件机器人模拟人类操作计算机的技术。随着人工智能和自动化技术的不断发展,RPA已经成为了企业数字化转型的重要工具之一。那么,现在学习RPA还有前途吗?会不会太卷? 一、RPA的…...

国内有做外汇的正规网站吗/廊坊seo网站管理

一,原因1,没有响应到css等文件2,响应类型是由文件的后缀名决定(1)html的请求头Content-Type : text/html ; charsetutf-8(2) CSS的请求头content-type:text/css; charsetutf-8(3)JavaScript的请求头content-type:text/javascrpt; charsetutf-…...

wordpress 图片热点/品牌传播方案

在oracle 12.1版本之前,oracle日志写进程LGWR为单进程,oracle 12.1开始实现了SCALABLE LGWR多进程,采用多个LGWR协同对redo log日志进行并行写入,这是Oracle数据库内部最重要的改进,解决了最后的并发瓶颈点 SCALABLE LGWR主要受到隐藏参数_use_single_l…...

如何网页制作/郑州网站seo

px与pt区别 字体大小的设置单位,常用的有2种:px、pt。这两个有什么区别呢? 先搞清基本概念: px就是表示pixel,像素,是屏幕上显示数据的最基本的点;pt就是point,是印刷行业常用单位&a…...

装修类网站模板下载/整合营销传播方案

双向链表的概念 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向…...

怎么做vip网站/如何用google搜索产品关键词

问题描述: 在 JSP 页面中使用 JSTL 标签库,访问 JSP 页面时抛出了如下异常信息: 问题原因: 因为使用了 JSP 2.0, 但又没有使用 JSTL 标签库的备用版本(RT库) 解决方案: 方案1. 修改web.xml …...

c 网站开发人员工具/app推广渠道

几个新手刚刚开始接触 Git,为了维护核心仓库的“纯洁”,避免太多无关信息被误提交进仓库(再次批评一些图形化工具默认的“Select All”),采用了核心仓库只读,邮件提交 patch,审核后再提交的工作…...