笨鸟的共鸣

​ 今天刷谈笑间,看的一位同学很沮丧,说自己在南师大感受到了前所未有的压力,自己是高考发挥超常才来到南师大的,而身边很多同学却是高考发挥失常,在大学的学习中感受同辈人巨大的压力,不禁让我引起共鸣。别人的失常发挥上的学校,却是高中三年竭尽全力的结晶,甚至是高考的超常发挥才带来的。想到这里,我不禁再次感慨人与人之间差距的巨大。

​ 但是,大一一年已经过去,回望这一年,笨鸟变了吗,变了,这只原来的笨鸟也获得很多成就,也在成长,也遇到很多同行路上的好友,甚至也成了别人口中的优秀者。但他真的变了吗,其实没变,他还是那只笨鸟,天赋比他好的大有人在,比他努力者也数不胜数,他始终要以一种谦逊的态度,然后不断学习,不断奔跑。高中,大学,都只是一个跳板,这种笨鸟天生不会飞,通过这一个个跳板,爬至高处,才能看见世间美景。

总结与反思-11.20

距离我正式开始写博客不知不觉已经过去一个多月,决定写一篇随笔,总结反思一下

期中已经考完了,回过头看,其实我对我这个学期的上半学期并不满意,大物的期中和线代的第一次阶段性考核实在是不理想,这跟我自己的学习状态有关,开学一开始给自己定的这学期的主基调是不要太累,导致一直对去图书馆学习十分反感,每天就是在宿舍玩一玩浪费时间,现在回想起来还是挺后悔的,除了期中考试的不如意,主要还因为一个事情让我启发很大,就是我同学的动态,他分享每天自己的收获,可能是学习可能是看书,我看了之后第一感觉是非常的佩服的,觉得他很有毅力很自律,但是他在动态下面评论的一句话让我深有感触,他说他并不觉得他很自律,他没有强迫自己学习,他是以一个享受地态度做这些事,当时我看了可以说大受震撼,因为在过去的一年大学生活中,我一直是以强迫的态度让自己去图书馆的,有时就算到图书馆也坐立不安,最后干脆去都不去了。相比之下,我发现我对自律的理解真是太浅薄了。自律不是强迫自己做某件事情,而是想做成什么事一定会做成的决心。于是,我以一种全新的态度重新审视学习。不想学线代了?那就别强迫自己,看看科研项目相关的事,这样坚持几天下来,我发现这几天过的十分充实,一种精神上的满足。这对我来说,确确实实是一大收获,希望这种享受学习的态度能伴我一直走下去。

这里引用一下他的话,作为记录

有人爱一行干一行,有人干一行不爱一行,有人爱不干的那一行…感觉我是那种“干一行爱一行”的人,越做越觉得有趣,做一点就想知道更多(可能是我运气好刚好碰上的都是能爱上的..)如果单纯为了绩点不需要这样,刷题就好,但是我会把“学习”当做是我的一种生活或者说是娱乐方式

我很少痛苦地去学习,我要是觉得不舒服就会去学别的,去看书(或者刷刷手机)我也经常写很慢写很久停不下来,如果只是为了做题完全不需要。嗯希望给大家一个思路都能发现生活中的美好~导

但令我感到开心的是,我在健身这件事上做到了坚持,以前我一直觉得自己总是三分钟热度,什么事情都做不长久,如今回想起来,我自高中以来,已经做成了很多很多我以前不敢想的事情,包括对英语的学习,包括高考的超常发挥,包括大学以来获得的很多成就,希望能对自己更有自信一些,向更好的自己前进!

树的基本术语

d72517fa6b39dc28ff37c0942cda4df1

  1. 结点的度和树的度

    树中结点的最大度数称为树的度。如结点B的度为2,结点D的度为3,树的度为3。

  2. 孩子,双亲,兄弟结点

  3. 路径和路径长度

    树中两个结点之间的路径是由这两个结点之间所经过的结点序列构成的,而路径长度是路径上所经过的边的个数。
    注意:由于树中的分支是有向的,即从双亲指向孩子,所以树中的路径是从上向下的,同一双亲的两个孩子之间不存在路径。

  4. 子孙结点和祖先结点

    根A到结点K的唯一路径上的任意结点,称为结点K的祖先。如结点B是结点K的祖先,而结点K是结点B的子孙

  5. 结点的层次和树的高度

    结点的层次从树根开始定义,根结点为第1层,它的子结点为第2层,以此类推。

  6. 有序树和无序树

    树中结点的各子树从左到右是有次序的,不能互换,称该树为有序树,否则称为无序树

  7. 森林

    森林是m (m≥0)棵互不相交的树的集合。

树的存储结构

多叉链表表示法

fasdfa

采用多叉链表表示法存储树,许多算法设计可以直接参照二叉树的二叉链表结构的算法。其优点是简单易学,缺点是存在许多指针域的浪费。设树中结点数是n,树的度是k,则共使用了n×k个指针域,而这其中只有n -1个非空指针城。

孩子链表表示法

safsafsxcx

当树的度较大时,CTree类可以减少多叉链表表示法的空间浪费。但是,当插入、删除结点时,却会涉及多个孩子链表的调整,还有可能造成存储空间的再分配,因此时间复杂度较大。在CTree类中,利用孩子链表可以方便、快捷地查找指定结点的孩子结点。但是,查找双亲结点则需遍历所有的孩子链表,因此效率就低得多了。

双亲表示法

sadfas

在PTree类中,不仅利用结点的双亲指针域很容易找到其双亲结点,而且查找其所有祖先结点也非常便利、高效。若需要查找指定结点的孩子或子孙结点,则需遍历整个树的存储空间,效率就低得多了。

孩子兄弟表示法

dasfgae

因为孩子兄弟表示法建立起了树和二叉树之间的对应关系,所以常常将其称为树的二叉树表示法。相比树的其他存储结构,孩子兄弟表示法既简化了结构,又可以将许多二叉树的优秀算法移植到树结构的应用中来,因此具有很好的学习、应用价值。

树的操作算法

构造算法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// 构造函数
CSTree(vector<pair<T, T>>& ps) {
if (ps.empty()) {
root = nullptr;
return;
}
// 创建根节点
root = new CSNode<T>(ps[0].first);
root->firstchild = nullptr;
root->nextsibling = nullptr;

// 插入其他节点
for (size_t i = 0; i < ps.size(); i++) {
InsertNode(ps[i]);
}
}
// 插入节点
void InsertNode(pair<T, T>& p) {
// 创建新节点
CSNode<T>* child = new CSNode<T>(p.second);
child->firstchild = nullptr;
child->nextsibling = nullptr;

// 找到父节点
CSNode<T>* parent = Search(root, p.first);
if (!parent) {
cout << "Parent node " << p.first << " not found!" << endl;
return;
}

// 若父节点无子节点,将新节点作为第一个子节点
if (parent->firstchild == nullptr) {
parent->firstchild = child;
} else {
// 若父节点已有子节点,将新节点作为最后一个子节点
CSNode<T>* temp = parent->firstchild;
while (temp->nextsibling != nullptr) {
temp = temp->nextsibling;
}
temp->nextsibling = child;
}
}

计算树的高度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// 计算指定节点子树的高度
template <class T>
int CSTree<T>::Height(CSNode<T>* p) {
if (p == nullptr) // 如果节点为空,返回高度 0
return 0;

int maxheight = 0; // 初始化子树的最大高度为 0

// 遍历所有子节点
for (CSNode<T>* child = p->firstchild; child != nullptr; child = child->nextsibling) {
int height = Height(child); // 递归计算子节点的高度
if (height > maxheight) // 更新最大高度
maxheight = height;
}

return maxheight + 1; // 当前节点的高度为子树最大高度 + 1
}

// 外部接口:计算整棵树的高度
template <class T>
int CSTree<T>::Height() {
return Height(root); // 从根节点开始计算高度
}

计算所有结点的度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 计算指定节点的度并递归处理其子树
template <class T>
void CSTree<T>::Degree(CSNode<T>* p) {
if (p == nullptr) // 如果节点为空,直接返回
return;

p->degree = 0; // 初始化节点的度为 0

// 遍历所有子节点,统计度
for (CSNode<T>* child = p->firstchild; child != nullptr; child = child->nextsibling) {
p->degree++; // 子节点存在则度加 1
}

Degree(p->firstchild); // 递归处理子节点的度
Degree(p->nextsibling); // 递归处理兄弟节点的度
}

// 外部接口:计算整棵树的所有节点的度
template <class T>
void CSTree<T>::Degree() {
Degree(root); // 从根节点开始计算度
}

二叉树

特殊的二叉树

3ca44306b6c5f97c3544f5d091be9ac4

a99ebdd407f8c2508597d85c610c44a7

二叉树的性质

非空二叉树上的叶子结点数等于度为2的结点数加1,即$\ n{_0}=n{_1}+1$

因为二叉树中所有节点的度只能是 0、1、2,所以节点总数 $\ n=n{_0}+n{_1}+n{_2}$

其次考虑二叉树的分支总数。将二叉树的分支总数记作 m。
因为所有的分支是由度为 1 和度为 2 的节点发出的,所以$m=n{_1}+2×n{_2}$

最后,由树的性质 1,可得 $n=m+1$,即$n{_0}+n{_1}+n{_2}=n{_1}+2×n{_2}+1$

二叉树的存储结构

顺序结构

afdfa

当二叉树单分支节点较多,高度变化较大时,空间浪费现象惊人

链式结构

adsfgad

二叉树的遍历

前序遍历:根左右

中序遍历:左根右

后序遍历:左右根

先序遍历算法如下

1
2
3
4
5
6
7
8
9
10
11
12
13
template <class T>
void BiTree<T>::PreOrder(BiNode<T>* p) {
if (p == NULL)
return; // ① 若二叉树为空,则遍历结束
cout << p->data; // ② 访问当前结点
PreOrder(p->lchild); // ③ 先序遍历当前结点的左子树
PreOrder(p->rchild); // ④ 先序遍历当前结点的右子树
}

template <class T>
void BiTree<T>::PreOrder() {
PreOrder(root);
}

层序遍历:利用队列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
template <class T>
void BiTree<T>::LevelOrder() {
if (root == NULL)
return; // ① 若二叉树为空,则遍历结束

LinkQueue<BiNode<T>*> Q; // 定义一个队列存储节点指针
Q.EnQueue(root); // ② 将根指针加入指针队列

while (!Q.Empty()) { // ③ 若指针队列不空,则循环
BiNode<T>* p = Q.DeQueue(); // ④ 出队列,得到当前指针 p
cout << p->data; // ④ 访问当前结点

// ⑤ 若当前结点有左孩子,则左孩子地址进指针队列
if (p->lchild != NULL)
Q.EnQueue(p->lchild);

// ⑤ 若当前结点有右孩子,则右孩子地址进指针队列
if (p->rchild != NULL)
Q.EnQueue(p->rchild);
}
}

二叉树的构造算法

sADF

先序序列是abdecf,带空指针标记的先序序列是abd**e**cf ***

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
template <class T>
BinNode<T>* BinTree<T>::CreateByPre(vector<T>& pre, int& i) {
T e = pre[i]; // 提取当前数据
i++;
if (e == '*') // 若是特殊数据,返回空指针
return NULL;

// 创建新结点
BinNode<T>* p = new BinNode<T>;
p->data = e;
// 创建左子树
p->lchild = CreateByPre(pre, i);
// 创建右子树
p->rchild = CreateByPre(pre, i);

return p;
}

template <class T>
BinTree<T>::BinTree(vector<T>& pre) {
int i = 0; // 向量 pre 的下标变量
root = CreateByPre(pre, i); // 从先序序列构造二叉树
}

二叉树的其他操作算法

计算结点数

1
2
3
4
5
6
7
8
9
10
11
12
13
template <class T>
int BiTree<T>::Count(BiNode<T>* p) {
if (p == NULL)
return 0; // 当前节点为空,返回 0
int left = Count(p->lchild); // 统计左子树节点数
int right = Count(p->rchild); // 统计右子树节点数
return 1 + left + right; // 当前节点总数 = 左子树 + 右子树 + 当前节点
}

template <class T>
int BiTree<T>::Count() {
return Count(root); // 从根节点开始统计
}

计算高度

1
2
3
4
5
6
7
8
9
10
11
12
13
template <class T>
int BiTree<T>::Height(BiNode<T>* p) {
if (p == NULL)
return 0; // 空节点高度为 0
int left = Height(p->lchild); // 左子树高度
int right = Height(p->rchild); // 右子树高度
return (left > right ? left : right) + 1; // 树高度为左右子树最大高度 + 1
}

template <class T>
int BiTree<T>::Height() {
return Height(root); // 从根节点开始计算树高度
}

查找结点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
template <class T>
BinNode<T>* BiTree<T>::Search(BinNode<T>* p, T e) {
if (p == NULL)
return NULL; // 查找失败
if (p->data == e)
return p; // 查找成功,返回节点指针

// 在左子树中递归查找
BinNode<T>* q = Search(p->lchild, e);
if (q != NULL)
return q; // 若在左子树中找到,返回结果

// 在右子树中递归查找
return Search(p->rchild, e);
}

template <class T>
BinNode<T>* BiTree<T>::Search(T e) {
return Search(root, e); // 从根节点开始查找
}

线索二叉树

asfafs

哈夫曼树

wqqwr

qetqt

参考文献

数据结构:树(Tree)【详解】_数据结构 树-CSDN博客

本文对目前已收集到的论文进行筛选工作,并简单概述可取之处

视频监控中人体暴力行为检测系统设计与应用

非常非常好的一篇,跟我们要做的方向很贴合,每个人都要看一下,以下是我认为可以学习的地方:

  1. 绪论部分:课题研究的背景和意义;从智能视频监控技术和行为识别算法两个方面介绍了研究现状

  2. 同样选用了RWF-2000数据集,并给出了理由,同时介绍了三大常见数据集并进行了比较(HMDB-51,UCF101,Kinetics);在模型框架技术选型方面,简要介绍了 传统方法,然后对比了深度学习下的基于人体骨架的方法以及基于视频的方法。 之后详细介绍了三类基于视频的深度学习方法(双流法,3D卷积方法 和基于时序模型的方法)

​ 本文文采用了双流模型 作为基础框架,我后续了解双流法与我们的 多模态方向是很贴合的

  1. 本文完成了人体暴力行为检测系统的设计与实现,包含离线分析和在线监测两种模式,这跟我们的设想很符合

基于注意力机制的暴力音视频检测方法研究

与上一篇同样是哈尔滨工业大学的硕士论文,侧重点也是多模态暴力检测,本文先提出分别基于视觉通道和基于听觉通道的暴力音频检测,再提出了基于视听觉通道的音视频特征融合的暴力音视频检测

本文开头的课题研究的背景和意义和研究现状同样值得参考

基于多模态的校园暴力检测

给我感觉一般,多模态的部分写的并不是很好,他还说的一个基于多模态的校园暴力检测,感觉什么都写到了什么都写的不是很精

但是他在相关理论基础详细地介绍了深度学习网络(RNN,LSTM,GRU)和人体动作识别(openpose),可以参考学习

基于对比学习的视频暴力行为检测算法及 TensorRT 平台实现

里面的对比学习和注意力机制不是很看得懂,但感觉写的挺好的,这篇还把识别系统做在TensorRT 平台实现轻量化,这个跟我们关系不大,只做了解

基于YOLO和ConvLSTM混合神经网络的暴力视频检测

有yolo相关知识,后续可做参考学习

国外论文

因为英文看的太费劲,对国外论文暂时只做初步筛选

Conv3D-Based Video Violence Detection Network Using Optical
Flow and RGB Data:光流和RGB数据多模态

Multimodal vision-based human action recognition using deep learning: a review:关于多模态的综述论文,这一篇写的不错,有时间值得啃一下

A Real-Time 3-Dimensional Object Detection Based Human Action Recognition Model:3D卷积神经网络(3DCNN)、LSTM乘法递归网络和YOLOv6实时目标检测

学习计划

  • [ ] yolo深入学习,代码初步运行尝试
  • [x] 视频异常检测与视频动作识别的概念明晰与区分
  • [ ] 实际操作知识储备:视频预处理,训练,测试
  • [x] 具体算法知识储备:3D CNN2D CNN + RNNLSTM
  • [x] 根据PPT初步构建立项书框架

视频异常检测与视频动作识别的概念明晰与区分

我们后续做的主要是暴力行为的识别,我个人原本概念并没有清楚,以为是属于视频异常检测领域,但这里更关注的是人的动作,应该与视频动作识别更贴合,以下是我结合网上文章理解的二者区别,用词不严谨处还请指正

视频异常检测系统能够检测明显偏离正常的异常行为或实体,例如在视频监控的先验知识有限的情况下识别多个移动物体,或检测特定事件,例如打架、踩踏、交通事故和流浪。视频异常通常是上下文的,并根据真实场景定义。具体来说,检测过程集中于识别所有视频中包含异常的视频片段,而定位致力于确定哪一帧是异常的,并解释该帧的哪一部分是异常的。

视频动作识别是通过已标记的数据集训练模型实现视频理解视频分类的功能。动作识别的目标是识别出视频中出现的动作,通常是视频中人的动作。视频可以看作是由一组图像帧按时间顺序排列而成的数据结构,比图像多了一个时间维度。动作识别不仅要分析视频中每帧图像的内容,还需要从视频帧之间的时序信息中挖掘线索。动作识别是视频理解的核心领域,虽然动作识别主要是识别视频中人的动作,但是该领域发展出来的算法大多数不特定针对人,也可以用于其他视频分类场景。

二维卷积 2D CNN

卷积神经网络(convolutional neural network)是含有卷积层(convolutional layer)的神经网络。它有高和宽两个空间维度,常用来处理图像数据。

卷积神经网络的结构

层级网络,数据包括输入层,卷积层,激活层,池化层,全连接层等

输入层:就是原始图像,非提取的信息,因此卷积神经网络是一个无监督的特征学习网络,数据输入层主要对原始图像数据进行预处理,基础的操作包括去均值、灰度归一化,数据增强等;

卷积层:就是特征提取层,一般卷积神经网络包含多个卷积层,一个卷积层可以有多个不同的卷积核。通过不同的多个卷积核对图像进行预处理,提取特征,每个卷积核会映射出新的特征平面。再通过非线性激活函数对卷积结果进行处理;

激活层:卷积神经网络需要激活层进行特征的选择和抑制;

池化层:用于降低特征平面分辨率及抽象特征,可以有效的压缩网络参数和数据,减少过拟合。池化层最主要的作用就是压缩图像同时保存图像的特征不变;

全连接层:是卷积神经网络的最后,具有卷积核和偏移量两个参数。(fully connected layers,FC)在整个卷积神经网络中起到“分类器”的作用,全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用。在实际使用中,全连接层可由卷积操作实现:对前层是全连接的全连接层可以转化为卷积核为1x1的卷积;而前层是卷积层的全连接层可以转化为卷积核为hxw的全局卷积,h和w分别为前层卷积结果的高和宽

3c266da23107494b04b09683b8427f0e

卷积核的运算

7b8af7c9507e7652df6ff7e3c14f8a1f

应用

2D卷积神经网络(2D CNN)则主要用于处理二维图像数据,如人脸识别、物体检测和自动驾驶等任务。2D CNN通过将图像划分为多个小的矩形区域(也称为滤波器或卷积核),可以对每个区域进行独立的特征提取。这种网络结构可以有效地减少计算量,同时提高特征提取的精度。在计算机视觉领域,2D CNN已经成为许多重要应用的基石,如人脸识别和目标检测等。

三维卷积 3D CNN

三维卷积输入多了深度C这个维度,输入是高度H宽度W深度C的三维矩阵。

7d1a499a0a3c3a43c7677e57c85e1890

3D CNN是如何对时间维度进行操作的,如下图所示,我们将时间维度看成是第三维,这里是对连续的四帧图像进行卷积操作,3D卷积是通过堆叠多个连续的帧组成一个立方体,然后在立方体中运用3D卷积核。在这个结构中,卷积层中每一个特征map都会与上一层中多个邻近的连续帧相连,因此捕捉运动信息。
f8c08dd50063b71d02bbfe5c73c364dd

三维卷积和多通道卷积的区别

多通道卷积

61bbb9de76c74320cb9d22077a128612

具体的实现过程为:

968772caaeba0e8b02257717f4019d97

3D CNN主要运用在视频分类、动作识别等领域,它是在2D CNN的基础上改变而来。由于2D CNN不能很好的捕获时序上的信息,因此我们采用3D CNN,这样就能将视频中时序信息进行很好的利用。

循环神经网络 RNN 与 长短期记忆 LSTM

史上最详细循环神经网络讲解(RNN/LSTM/GRU) - 知乎

【循环神经网络】5分钟搞懂RNN,3D动画深入浅出_哔哩哔哩_bilibili

【LSTM长短期记忆网络】3D模型一目了然,带你领略算法背后的逻辑_哔哩哔哩_bilibili

立项书框架构建

工作清单

  1. 每个人写一份自我介绍,包括自身具备的知识条件、自己的特长、兴趣、已有的实践创新成果
  2. 每个人查找8篇关于人体动作识别或者暴力事件识别的相关论文,要求:1.国内外论文都要有 2.每个人找好后打成一个压缩包发群里,并把论文名发群里,后面发的就不要跟上面重复了 3.压缩包中除了包含论文,再有一个word文档,简单说明收集每个论文的主要内容
  3. 简单看一下我发群里的两份去年的立项书,结合立项书框架想一想,后续会进行分工

立项书框架

  1. 项目研究背景
    1. 研究意义
    2. 国内外研究现状
      1. 人类动作识别现状
      2. 暴力行为识别现状
    3. 项目研究目标及主要内容
    4. 项目创新特色概述
    5. 项目研究技术路线
    6. 项目方案设计

PPT思路初步构建

背景与意义

  1. 人体行为事件的含义与应用
  2. 视频暴力行为识别的意义
  3. 暴力行为的定义,早期与后续方法的比较,数据集的比较,暴力行为识别任务和应用

研究现状

单模态与多模态的优点和挑战

行为识别和暴力行为的识别和挑战

数据集的对比

解决方法的比较:3D CNN, 2D CNN+ RNN, 骨架

研究方法:抓住识别暴力的要素

一方面:抓住重要因素进行特征提取

另一方面:尽可能去除冗余信息(裁剪 / 去背景)

算法框架

注意力融合模块

总结

  1. 提出了一种基于多模态特征融合的视频暴力行为识别算法。通过融合RGB模态提供的外观信息、RGB帧差提供的运动信息以及Depth模态提供的相对位置信息,丰富、完善了暴力行为的特征,使其能够准确、鲁棒地在复杂的真实环境下进行暴力行为识别。
  1. 提出了一种自适应的注意力算法用于多模态融合。让模型自适应地学习不同模态特征之间的权重关系,允许模型根据具体任务动态调整每个模态的重要性,从而更灵活地应对不同的场景。

参考文献

【视频异常检测综述-论文阅读】Deep Video Anomaly Detection: Opportunities and Challenges-CSDN博客

视频理解综述:动作识别、时序动作定位、视频Embedding-CSDN博客

深度学习笔记——三维卷积及其应用(3DCNN,PointNet,3D U-Net)-CSDN博客

前言

基于 LLM (Large Language Model)最火热的应用技术是什么,检索增强生成(RAG,Retrieval Augmented Generation)技术必占据重要的一席。RAG 最初是为了解决 LLM 的各类问题的产生的,但后面大家发现在现阶段的很多企业痛点上,使用RAG好像是更好的解决方案。

LLM的问题

尽管LLM拥有令人印象深刻的能力,但是它们还面临着一些问题和挑战:

  • 幻觉问题:大模型的底层原理是基于概率,在没有答案的情况下经常会胡说八道,提供虚假信息。

  • 时效性问题:规模越大(参数越多、tokens 越多),大模型训练的成本越高。类似 ChatGPT3.5,起初训练数据是截止到 2021 年的,对于之后的事情就不知道了。而且对于一些高时效性的事情,大模型更加无能为力,比如帮我看看今天晚上有什么电影值得去看?这种任务是需要去淘票票、猫眼等网站先去获取最新电影信息的,大模型本身无法完成这个任务。

  • 数据安全:OpenAI 已经遭到过几次隐私数据的投诉,而对于企业来说,如果把自己的经营数据、合同文件等机密文件和数据上传到互联网上的大模型,那想想都可怕。既要保证安全,又要借助 AI 能力,那么最好的方式就是把数据全部放在本地,企业数据的业务计算全部在本地完成。而在线的大模型仅仅完成一个归纳的功能,甚至,LLM 都可以完全本地化部署。


解决这些挑战对于 LLMs 在各个领域的有效利用至关重要。一个有效的解决方案是集成检索增强生成(RAG)技术,该技术通过获取外部数据来响应查询来补充模型,从而确保更准确和最新的输出。主要表现方面如下:

  • 有效避免幻觉问题:虽然无法 100% 解决大模型的幻觉问题,但通过 RAG 技术能够有效的降低幻觉,在软件系统中结合大模型提供幂等的API接口就可以发挥大模型的重要作用。

  • 经济高效的处理知识&开箱即用:只需要借助信息检索和向量技术,将用户的问题和知识库进行相关性搜索结合,就能高效的提供大模型不知道的知识,同时具有权威性。

  • 数据安全:企业的数据可以得到有效的保护,通过私有化部署基于 RAG 系统开发的AI产品,能够在体验AI带来的便利性的同时,又能避免企业隐私数据的泄漏。

什么是RAG

RAG 是检索增强生成(Retrieval Augmented Generation )的简称,它为大语言模型 (LLMs) 提供了从数据源检索信息的能力,并以此为基础生成回答。简而言之,RAG 结合了信息检索技术和大语言模型的提示功能,即模型根据搜索算法找到的信息作为上下文来查询回答问题。无论是查询还是检索的上下文,都会被整合到发给大语言模型的提示中。
v2-76c9a386a70bbcd610f76f1f32423165_1440w

e9280ebbd3c04d400de7c0619fd0bb50

RAG 的架构如图中所示。它既不是一个特定的开源代码库,也不是某个特定的应用,是一个开发框架。

完整的 RAG 应用流程主要包含两个阶段:

数据准备阶段:(A)数据提取—> (B)分块(Chunking)—> (C)向量化(embedding)—> (D)数据入库

检索生成阶段:(1)问题向量化—> (2)根据问题查询匹配数据—> (3)获取索引数据 —> (4)将数据注入Prompt—> (5)LLM生成答案

向量数据库

GPT 的缺陷

GPT-3.5/4 带给我们无限震撼的同时,其天然的缺陷和诸多的限制也让开发者头痛不已,例如其输入端上下文(tokens)大小的限制困扰着很多的开发者和消费者,像 gpt-3.5-turbo 模型它的限制是 4K tokens(~3000字),这意味着使用者最多只能输入 3000 字给 GPT 来理解和推理答案。

向量数据库的崛起

在 GPT 模型的限制下,开发者们不得不寻找其他的解决方案,而向量数据库就是其中之一。向量数据库的核心思想是将文本转换成向量,然后将向量存储在数据库中,当用户输入问题时,将问题转换成向量,然后在数据库中搜索最相似的向量和上下文,最后将文本返回给用户。

当我们有一份文档需要 GPT 处理时,例如这份文档是客服培训资料或者操作手册,我们可以先将这份文档的所有内容转化成向量(这个过程称之为 Vector Embedding),然后当用户提出相关问题时,我们将用户的搜索内容转换成向量,然后在数据库中搜索最相似的向量,匹配最相似的几个上下文,最后将上下文返回给 GPT。这样不仅可以大大减少 GPT 的计算量,从而提高响应速度,更重要的是降低成本,并绕过 GPT 的 tokens 限制。

RAG的挑战

一个基本的 RAG 通常集成了一个向量数据库和一个 LLM,其中向量数据库存储并检索与用户查询相关的上下文信息,LLM 根据检索到的上下文生成答案。虽然这种方法在大部分情况下效果都很好,但在处理复杂任务时却面临一些挑战,如多跳推理(multi-hop reasoning)或联系不同信息片段全面回答问题。

以这个问题为例:“What name was given to the son of the man who defeated the usurper Allectus?

一个基本的 RAG 通常会遵循以下步骤来回答这个问题:

  1. 识别那个人:确定谁打败了 Allectus。
  2. 研究那个人的儿子:查找有关这个人家庭的信息,特别是他的儿子。
  3. 找到名字:确定儿子的名字。

通常第一步就会面临挑战,因为基本的 RAG 根据语义相似性检索文本,而不是基于在数据集中没有明确提及具体细节来回答复杂的查询问题。这种局限性让我们很难找到所需的确切信息。解决方案通常是为常见查询手动创建问答对。但这种解决方案通常十分昂贵甚至不切实际。

为了应对这些挑战,微软研究院引入了 GraphRAG,这是一种全新方法,它通过知识图谱增强 RAG 的检索和生成。

GraphRAG的诞生

与使用向量数据库检索语义相似文本的基本 RAG 不同,GraphRAG 通过结合知识图谱(KGs)来增强 RAG。知识图谱是一种数据结构,它根据数据间的关系来存储和联系相关或不相关的数据。

GraphRAG 流程通常包括两个基本过程:索引和查询。

1_03c0dcc161

GraphRAG的优势

基础 RAG 和 GraphRAG 都被问到了同样的问题,这需要汇总整个数据集中的信息来构成答案。

问:What are the top 5 themes in the dataset?

下图为答案。基础 RAG 提供的结果与战争主题无关,因为向量搜索检索到了无关的文本,导致了答案的不准确。相比之下,GraphRAG 提供了一个清晰且高度相关的答案,识别了主要的主题和相关细节。结果与数据集一致,并引用了源材料。

上述例子展示了 GraphRAG 如何通过结合知识图谱和向量数据库,更有效地处理需要跨数据集整合信息的复杂查询,从而提高答案的相关性和准确性。

5_8bd8df7ac9

GraphRAG 在多跳推理和复杂信息总结方面性能明显更佳。研究表明GraphRAG 在全面性和多样性方面都超过了基础 RAG:

  • 全面性:答案覆盖问题的所有方面。
  • 多样性:答案提供的观点和见解具有多样性和丰富性。

参考文献

大模型RAG入门及实践(非常详细)零基础入门到精通,收藏这一篇就够了-CSDN博客

向量数据库|一文全面了解向量数据库的基本概念、原理、算法、选型-腾讯云开发者社区-腾讯云

GraphRAG 详解: 通过知识图谱提升 RAG 系统 - Zilliz 向量数据库

论文: https://arxiv.org/pdf/2404.16130

GraphRAG:知识图谱+RAG、更高质量的检索_哔哩哔哩_bilibili

微软开源的GraphRAG代码: https://github.com/microsoft/graphrag

安装,注意配置环境变量
$env:ZINC_FIRST_ADMIN_USER=”admin”
$env:ZINC_FIRST_ADMIN_PASSWORD=”admin”
.\zinc.exe

加载示例数据,利用bash
curl -L https://github.com/zincsearch/zincsearch/releases/download/v0.1.1/olympics.ndjson.gz -o olympics.ndjson.gz
gzip -d olympics.ndjson.gz
curl http://localhost:4080/api/_bulk -i -u admin:Complexpass#123 —data-binary “@olympics.ndjson”

概念
ZincSearch 是一个搜索引擎,允许您在上传到 ZincSearch 时搜索自己的数据。将其视为“Google”或“Bing”搜索,但仅用于您自己的数据。
ZincSearch 允许您索引 (json) 文档并允许进行全文搜索。

添加索引
使用 JSON 格式:{ “分析”: { “分析器”: { “默认”: { “type”: “standard” } } } }
{
“index”: “my_index”,
“settings”: {
“analysis”: {
“analyzer”: {
“default”: {
“type”: “standard”
}
}
}
}
}’
“index”: 指定你要创建的索引名称,这里是 my_index。
“settings”: 包含索引的设置。
“analysis”: 定义分析器的部分。
“analyzer”: 指定分析器的配置。
“default”: 定义默认分析器,类型为 standard。

索引的映射(mapping)
映射(mapping)是指在数据存储系统(如数据库或搜索引擎)中定义索引中字段的结构和属性的过程。它类似于数据库中的表结构定义
使用 JSON 格式:{ “属性”: { “内容”: { “type”: “text” } } }

参考文献
https://geekdaxue.co/read/ZincSearch-doc/create-update-index
https://prabhatsharma.in/blog/in-search-of-a-search-engine-beyond-elasticsearch-introducing-zinc/

视频异常检测初步了解

传统方法检测异常样本:

  • 高斯分布 Gaussian Distribute
  • 高斯混合模型 Gaussian Mixture Model

深度学习方法下的异常检测:

  • 两种主流的异常检测任务:
    • 重构任务 Reconstruction:图像通过深度神经网络DNN输出一张重构图像,通过损失函数,先训练调整DNN,测试结果由AUC评判(AUC(Area Under the Curve)是用于评估分类模型性能的一个重要指标)
    • 预测任务 Prediction:连续输入图像,预测新图像,用预测与非预测比较
  • 自动编码器 Auto-Encoder:U-Net 是一种用于图像分割的深度学习模型,主要特点是采用了编码器-解码器结构(也叫对称结构),并在编码器和解码器之间引入了跳跃连接(skip connections)

编码器(Contracting Path):这一部分类似于卷积神经网络(CNN),用于提取输入图像的特征。

瓶颈层(Bottleneck):编码器和解码器之间的连接层,负责处理最深层次的特征。

解码器(Expansive Path):这一部分用于将编码器提取的特征还原回原始图像的大小。

跳跃连接(Skip Connections):解码器部分会与编码器的对应层进行直接连接,从而帮助模型在恢复空间分辨率的过程中更好地保留细节信息。

v2-39073bacc426f0e464b53336c83e19da_1440w

根据学习方法分类:

  • 无监督学习 unsupervised learning 只有正常样本训练
  • 半监督学习 weakly spervised learning 以不平衡的样本比例训练
  • 监督学习 spervised learning 都训练

视频异常检测领域未来挑战:

  • 异常检测视频大部分采用mini-batch训练方法,非常消耗时间和资源,无法实时进行视频检测
  • 现实的数据集,模型难以训练
  • 异常的情况定义模糊
  • 模型的迁移性差,shanghaiTech的数据集是多摄像头融合的数据集,大部分数据集表现一般

了解yolo

YOLO(You Only Look Once)系列算法是计算机视觉领域中重要的目标检测技术。凭借其高效的实时处理能力,YOLO被广泛应用于视频监控、自动驾驶等多个领域。

论文一:Human Action Recognition from Various Data Modalities: A Review

概述

人类动作识别(Human Action Recognition, HAR)旨在理解人类的行为,并为每个行为分配一个标签。

多种不同的数据形态都可以用来表示人类的动作和行为。这些模态可以分为2类:视觉模态和非视觉模态

视觉模态和非视觉模态的主要区别在于:视觉模态的数据对人类行为的表示相对直观,但是非视觉模态的数据则不是。视觉模态主要包括:如RGB,骨架,深度,红外,点云,事件流(event stream)等数据模态,而非视觉模态则主要包括音频,加速度,雷达,wifi信号等数据模态

然而,由于不同的模态对 HAR 具有不同的优势和局限性,因此多种数据模态的融合和跨模态的知识传递以提高 HAR 的准确性和稳健性,近年来也受到了极大的关注 [23],[24]。更具体地说,融合是指将两种或多种模态的信息组合起来,以识别动作

该综述对基于不同数据模态的深度学习HAR方法的最新进展做了一个综合调研。介绍调研的主要内容分为三部分

  • 当前主流的单模态深度学习方法
  • 当前主流的多模态深度学习方法,包括基于融合(fusion)和协同学习(co-learning)的学习框架
  • 当前HAR任务的主流数据集

单一模态 SINGLE MODALITY

RGB模态 RGB MODALITY

RGB 模态通常是指由 RGB 相机捕获的图像或视频(图像序列),旨在重现人眼所见。

RGB模态优点主要有:(1)RGB数据容易收集,通常是最常用的数据模态。(2)RGB模态包含所捕获的场景上下文的信息。(3)基于RGB的HAR方法也可以用来做pretrained model。

缺点主要有:(1)由于RGB数据中存在背景、视点、尺度和光照条件的变化,所以在RGB模态中进行识别通常具有挑战性。(2)RGB 视频通常具有较大的数据量,导致在为 HAR 的时空环境建模时会产生高计算成本。

下面介绍面向基于 RGB 的 HAR 的高级深度学习,主要可分为四大类,即双流 2D 卷积神经网络 (CNN)、递归神经网络 (RNN)、3D CNN 和基于 Transformer 的方法

v2-4ec2f54d013bb5ab6996585c53f7755d_1440w

sadasd

骨骼模态 SKELETON MODALITY

骨骼序列编码人体关节的轨迹,这些轨迹表征了信息丰富的人体运动。因此,骨架数据也是 HAR 的合适模式。

骨架数据提供的是身体结构与姿态信息,其具有两个明显的优点:(1)具有比例不变性。(2)对服装纹理和背景是鲁棒的。

但同时也有两个缺点:(1)骨架信息的表示比较稀疏,存在噪声。(2)骨架数据缺少人-物交互时可能存在的形状信息。

v2-f3f49680590c848b02f3e7911c5d7d3c_1440w

深度模态 DEPTH MODALITY

深度图其中像素值表示从给定视点到场景中的点的距离信息。深度模态通常对颜色和纹理的变化具有鲁棒性,提供了可靠的人体三维结构和几何形状信息,因此可用于 HAR。随着技术的发展,现在已经有多种设备可以捕获场景中的深度图。现有的对深度数据学习的方法大多数还是利用CNN提取深度图中的feature。深度数据可以提供几何形状信息,但是对外观数据的提供是缺失的,所以深度数据通常不单独使用,而是与其他模态的数据融合使用。

红外模态 INFRARED MODALITY

通常,红外传感器不需要依赖外部环境光,因此特别适用于夜间 HARat。红外传感技术可分为有源和无源两种。一些红外传感器(如 Kinect)依赖于主动红外技术,该技术发射红外线并利用目标反射光线来感知场景中的物体。在目前基于深度学习的方法中,比较多的做法是把红外图像作为其中一个stream输入双流或多流网络中。红外数据以其不需要依赖外部环境的可见光的特点,特别适合于夜间的HAR,但是,红外图像也有着对比度低和信噪比低的固有缺点。

点云模态 POINT CLOUDMODALITY

点云数据由许多点集合组成,这些点表示空间参考系统下目标的空间分布和表面特征。获取 3D 点云数据有两种主要方法,即 (1) 使用 3D 传感器,例如 LiDAR 和 Kinect,或 (2) 使用基于图像的 3D 重建。点云作为一种 3D 数据模态,具有强大的能力来表示主体的空间轮廓和 3D 几何形状,因此可以用于 HAR。但是点云中通常存在噪声和高度不均匀的点分布。

事件流模态 EVENT STREAM MODALITY

事件照相机(event camera)可以捕捉照明条件的变化并为每个像素独立产生异步事件。传统的摄像机通常会捕捉整个图像阵列,而事件摄像机仅响应视觉场景的变化。事件照相机能够有效地滤除背景信息,而只保留前景运动信息,这样可以避免视觉信息中的大量冗余,但是其捕捉到的信息通常在时间和空间维度上是稀疏的,而且是异步的。因此一些现有的方法主要聚焦于设计事件聚合策略,将事件摄像机的异步输出转换为同步的视觉帧。

音频模态 AUDIO MODALITY

音频信号通常与视频信号一起提供,由于音频和视频是同步的,所以音频数据可以用定位动作。因为音频信号中的信息量是不足的,所以单独使用音频数据执行HAR任务相对比较少见。更常见的情况是音频信号作为HAR的补充信息,与其他模态(如rgb图像)一起使用。

后续

还有加速度模态,雷达模态,wifi模态,我先不了解,后续若有需要再完善知识

多模态 MULTI-MODALITY

在现实生活中,人类经常以多模态认知方式感知环境。同样,多模态机器学习是一种建模方法,旨在处理和关联来自多种模态的感觉信息[358]。通过聚合各种数据模态的优势和功能,多模态机器学习通常可以提供更强大、更准确的 HAR。

多模态学习方法主要有两种,融合(fusion)和协同学习(co-learning)。其中融合指的是对来自两个或更多模态的信息进行集成,并将其用于训练或推理,而协同学习指的则是对不同模态之间的知识进行迁移。图4展示了多模态学习方法的分类

v2-04335982349266acffdb93355ce2686c_1440w

HAR任务中的多模态融合

模态融合的目的是利用不同数据模态的互补优势,以达到更好的识别性能。现有的多模态融合方案主要有两种:(1)评分融合(score fusion),即对不同模态输出的score做融合,例如使用加权平均或学习一个分数融合模型。(2)特征融合,即对来自不同模态的特征进行组合。数据融合(在特征提取之前就融合不同模态的输入数据)可以看成是特征融合,因为某一模态的数据数据可以被视为该模态的原始特征。

依据输入模态的不同,现有的多模态融合方法大概可以分为视觉模态之间的融合,与视觉+非视觉模态之间的融合两种

视觉模态之间的融合

  1. RGB+深度模态:RGB和深度模态分别能够捕捉外观信息和3D形状信息,因此它们具有比较强的互补性。
  2. RGB+骨架模态:骨架模态可以提供身体位置和关节运动信息,同样和RGB模态是互补的。[28]提出了一个双流深度网络,两个stream分别是CNN和RNN,用以分别处理RGB和骨架数据,融合方式同时尝试了特征融合和分数融合,并发现应用特征融合策略可以取得更好的效果。
  3. 深度图+骨架模态:[31]将身体的每个部分与其他部分之间的相对几何关系作为骨架特征,将不同身体部分周围的深度图像块作为外观特征,以编码身体-对象和身体部分-身体部分之间的关系,进而实现可靠的HAR。
  4. RGB+深度图+骨架模态:这类方法大多是前文提到了三类多模态融合方法的扩展。

视觉模态+非视觉模态的融合

  1. 视频与音频的融合:前文中已经提到,音频可以为视频的外观和运动信息提供补充信息。所以目前已经有一些基于深度学习的方法来融合这种模态的数据
  2. 视频与加速度模态的融合
  3. 其他类型的模态融合:[43]的核心思想是将非RGB模态的数据,包括骨架、加速度和wifi数据都转换成彩色图像,然后送入CNN中。

HAR任务中的多模态协同学习

多模态协同学习旨在探索如何利用辅助模态学习到的知识帮助另一个模态的学习,希望通过跨模态的知识传递和迁移可以克服单一模态的缺点,提高性能。多模态协同学习与多模态融合的一个关键区别在于,在多模态协同学习中,辅助模态的数据仅仅在训练阶段需要,测试阶段并不需要。所以多模态协同学习尤其适用于模态缺失的场景。此外对于模态样本数较小的场景,多模态协同学习也可以起到一定的帮助作用。

视觉模态的协同学习

  1. RGB和深度模态的协同学习
  2. RGB和骨架模态的协同学习。如[48]利用CNN+LSTM执行基于RGB视频的分类,并利用在骨架数据上训练的LSTM模型充当调节器,强制两个模型的输出特征相似。

视觉和非视觉模态的协同学习

第一种类型是在不同模态之间进行知识的迁移,如[50]中的teacher network使用非视觉模态训练,而student network使用RGB模态作为输入,通过强制teacher和student的attention map相似以弥补模态间的形态差距,并实现知识的提炼。

第二种类型是利用不同模态之间的相关性进行自监督学习,比如[51]分别利用音频/视频模态中的无监督聚类结果作为视频/音频模态的监督信号。[52]使用视频和音频的时间同步信息作为自监督信号。

论文二:RWF-2000: An Open Large Scale Video Database for Violence Detection

mchengny/RWF2000-Video-Database-for-Violence-Detection:一个用于暴力检测的大型视频数据库,其中包含 2,000 个包含暴力或非暴力行为的视频剪辑。

摘要

近年来,监控摄像头在公共场所广泛部署,由于这些无处不在的设备,总体犯罪率已显著降低。通常,这些摄像头会在犯罪发生后提供线索和证据,而很少用于及时预防或制止犯罪活动。手动监控来自监控摄像头的大量视频数据既费时又费力。因此,从视频信号中自动识别暴力行为变得至关重要。

本文总结了几个现有的用于暴力检测的视频数据集,并提出了 RWF-2000 数据库,其中包含监控摄像头在真实场景中捕获的 2,000 个视频。此外,我们还提出了一种同时利用 3D-CNN 和光流优点的新方法,即流门控网络。所提出的方法在我们提出的数据库的测试集上获得了 87.25% 的准确率。数据库和源代码目前对 Access 1 开放。

概述

通常,基于视频的暴力检测的定义是检测视频数据中的暴力行为。它是人类动作识别的一个子集,旨在识别常见的人类动作。与静止图像相比,视频数据具有额外的时间序列。一组连续的帧表示连续的运动,而相邻的帧由于帧间相关性高而包含冗余信息。

一些早期的方法依赖于检测高度相关物体(例如,枪击、火焰、血腥、爆炸)的存在,而不是直接识别暴力事件

此前数据的劣势:尽管存在一些用于暴力检测的视频数据集,但它们仍然存在规模小、多样性少和图像分辨率低的缺点。此外,一些具有高图像质量的相关数据集来自电影,这些电影与真实场景不够接近。为解决真实暴力活动中高质量数据不足的问题

本文工作:

  1. 为了解决真实暴力活动中高质量数据不足的问题,我们收集了一个新的视频数据集 (RWF-2000) 并将其免费发布给研究界。该数据集规模较大,包含从监控视频中提取的 2,000 个剪辑
  2. 我们提出了一种新的具有自学习池机制的模型,该模型可以很好地兼顾外观特征和时间特征。

先前数据集

根据注释方法,仍然存在两种用于暴力检测的视频数据集:修剪和未修剪。裁剪后的数据集中的视频都是几秒长的短片,每个视频都有一个视频级标注。而视频未修剪的数据集通常具有更长的持续时间。此外,暴力活动的开始时间和结束时间都有帧级注释。

总结这些提议的数据集,每个数据集都至少具有以下一个或多个限制:

  • 图像质量低;缺乏足够的数据量
  • 视频时长但注释粗糙
  • 与现实暴力不够接近的视频混合来源

为了解决上述问题,我们从 YouTube 网站收集了一个新的 RWF 2000(真实世界格斗)数据集,其中包括 2,000 个由监控枪式摄像机从真实场景中拍摄的修剪视频剪辑。

先前方法

传统方法通常会尝试找到一个 powfer 特征提取算法,并实现一个基于机器学习的分类器来完成暴力检测任务。

总之,基于深度学习的方法通常优于传统的基于特征提取的模型。此外,大多数最先进的结果都使用多通道输入(例如,原始 RGB 图像、光流、加速度图)。同时,复杂模型对过拟合不是很鲁棒。

在本文中,我们只采用 RGB 图像和光流来构建神经网络,它可以处理空间和时间信息。此外,我们提出的 Flow-Gated 架构可以通过自学习来减少输入视频的时间通道,而不是传统的池化策略。

RWF-2000 数据库和建议的方法

数据采集

为了使暴力检测在现实应用中更加实用,我们从 YouTube 平台收集了一个新的真实世界格斗 (RWF) 数据集,其中包含监控摄像头在真实场景中拍摄的 2,000 个视频剪辑。

拟议的数据集有 2,000 个视频剪辑,分为两部分:训练集 (80%) 和测试集 (20%)。一半的视频包含暴力行为,而其他视频属于非暴力活动。

Flow Gated Network

以前的大多数方法都探索从单个帧中提取外观特征,然后将它们融合以对时间信息进行建模。由于粗略的池化机制,运动信息可能毫无用处,我们的目标是设计一种通过网络自学习实现的时间池化机制

asdasf

由四个部分组成:RGB 通道、光流通道、合并块和全连接层。RGB 通道和光流通道由级联的 3D CNN 组成,它们具有一致的结构,因此它们的输出可以融合。Merging Block 也由基本的 3D CNN 组成,这些 CNN 在自学时间池化后处理信息。最后,全连接层生成输出。

该模型的亮点是利用光流通道的一个分支来帮助构建池化机制。

后续学习

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的暴力行为检测系统(深度学习模型+UI界面+Python代码+训练数据集)-CSDN博客

YOLO8实战:暴力行为检测系统_yolov8 打架检测-CSDN博客

参考文献

科研分享|视频异常检测_哔哩哔哩_bilibili

[领域综述] TPAMI 2022 | Human Action Recognition from Various Data Modalities: A Review - 知乎

RWF-2000 暴力行为检测视频数据集 - 知乎

另一个暴力行为数据集XD-暴力

实验1 门电路逻辑功能测试

内容一:与非门和异或门逻辑功能的测试

74LS20双4输入与非门逻辑功能测试

74LS20功能:四输入双与非门,其内部结构及真值表如图

1ac35b0a8f06411f05cc80a49ec9c700

电路图如下

1

A B C D Y
1 1 1 1 0
0 1 1 1 1
1 0 1 1 1
1 1 0 1 1
1 1 1 0 1

全1出0,有0出1

74LS86四2输入异或门逻辑功能测试

74LS86功能:二输入端四异或门,其内部结构及真值表如图

a74b68814db1d802db338a7b636a523e

电路图如下

6

1 2 3 4 A B Y
1 1 1 1 0 0 0
0 1 1 1 0 1 1
0 0 1 1 0 0 0
0 0 0 1 1 0 1
0 0 0 0 0 0 0
1 0 0 0 0 1 1
1 1 0 0 0 0 0
1 1 1 0 1 0 1
1 0 1 0 1 1 0
0 1 0 1 1 1 0

内容二:根据电路图写出逻辑关系表达式

用74LS00按图接线,将输入输出逻辑关系分别填入表中。

74LS00功能:二输入端四与非门,其内部结构及真值表如图

4

题目如下

564

电路图如下

44

A B Y
1 1 0
1 0 1
0 1 1
0 0 0

电路图如下

546

A B Y Z
0 0 0 0
1 0 1 0
0 1 1 0
1 1 0 1

写出两个电路逻辑表达式

电路逻辑表达式为$\ \bar{A}B+\bar{B}A$

DSFDSG

电路逻辑表达式为$\ Y=\bar{A}B+\bar{B}A$ $\ Z=AB$

内容三:利用与非门控制输出

用一片74LS00按图接线,S接任一电平开关,用示波器观察S对输出脉冲的控制作用

第一题

4552

电路图如下

456

284

第二题

SAD

电路图如下

VX

GS

内容四:用与非门组成其它门电路并测试验证

第一题:组成或非门

用一片2输入端四与非门组成或非门

电路图如下

dsaf

A B Y
1 1 0
0 1 0
1 0 0
0 0 1

第二题:组成异或门

同内容二

内容五:逻辑门传输延迟时间的测量

用六反相器(非门)按图接线,输入200KHz连续脉冲,用双踪示波器测量输入、输出相位差,计算每个门的平均传输延迟时间的值。

asdfa

74LS04功能:六反相器,其内部结构及真值表如图

sad

电路图如下

sads

afdga

内容六:用基本门电路组装一个译码电路:将BCD8421码转换成格雷码

BCD8421码:二进制编码的十进制数,简称BCD码

t0131751fc49c1edcb4

63d335349be6acd1189581d69870bd56

一位不产生进位的加法电路用异或门就可以实现,下图左边为一个二进制-格雷码转换器器,右边为一个格雷码-二进制码转换器。

353484a62261823731307a1969c8278e

sadsfdf

参考文献

数字电路逻辑与设计实验一 门电路逻辑功能及测试_数电实验-CSDN博客

为何需要专一

以下源自网络

精神层次越高的人对感情越专一,因为善于处理自己内心欲望,因而不会把类似找备胎、和谁玩、玩过谁,这种肤浅的价值观当作得意的谈资。他们更愿意跟某个人担起生活的风雨,因为时间都用来做正经的事情,所以左顾右盼不代表你赢了,花哨是因为你层次太低。欲望是人性,克制是教养,新欢旧爱迎来送往,你以为的魅力难挡实则廉价百搭,得陇望蜀、骑驴找马、悲凉的让人生厌且鄙弃。道德不能杀掉带给我痛苦的人,所以我只能杀死理智和感性的自己。忠诚和专一是最基本的原则和底线,但它也只是三观正且有教养的人对感情中的自我约束

0%