Skip to main content

· 4 min read

贝叶斯决策理论

简单来说就是逆概率。通过有限的信息推断全局信息。

image

先验概率

​ 我们把P(A)称为"先验概率"(Prior probability),也就是在不知道B事件的前提下,我们对A事件概率的一个主观判断。

可能性函数

P(B|A)/P(B)称为"可能性函数"(Likelyhood),这是一个调整因子,也就是新信息B带来的调整,作用是将先验概率(之前的主观判断)调整到更接近真实概率。

可能性函数你可以理解为新信息过来后,对先验概率的一个调整。比如我们刚开始看到“人工智能”这个信息,你有自己的理解(先验概率-主观判断),但是当你学习了一些数据分析,或者看了些这方面的书后(新的信息),然后你根据掌握的最新信息优化了自己之前的理解(可能性函数-调整因子),最后重新理解了“人工智能”这个信息(后验概率)

如果"可能性函数"P(B|A)/P(B)>1,意味着"先验概率"被增强,事件A的发生的可能性变大;

如果"可能性函数"=1,意味着B事件无助于判断事件A的可能性;

如果"可能性函数"<1,意味着"先验概率"被削弱,事件A的可能性变小。

后验概率

P(A|B)称为"后验概率"(Posterior probability),即在B事件发生之后,我们对A事件概率的重新评估。

全概率公式

这个公式的作用是计算贝叶斯定理中的P(B)

假定样本空间S,由两个事件A与A'组成的和。例如下图中,红色部分是事件A,绿色部分是事件A',它们共同构成了样本空间S。、

image

这时候来了个事件B,如下图:

image

全概率公式:

image

它的含义是,如果A和A'构成一个问题的全部(全部的样本空间),那么事件B的概率,就等于A和A'的概率分别乘以B对这两个事件的条件概率之和。

朴素贝叶斯分类器

其实就是在贝叶斯公式的基础上加了一个条件独立性让他们可以拆开来单独计算。

然后一个细节就是贝叶斯平滑,当概率为0是使用拉普拉斯修正,要不然如果有一项概率为零的话,剩下的即使概率再大也白搭,这显然不合理。

半朴素贝叶斯分类器

快逃!!!!

· One min read

BML Codelab调试

image

惊不惊喜,意不意外,就这么简单

· 9 min read

[TOC]

这东西老实说是一个大坑,坑在哪呢,学的东西要写很久。姑且先鸽一会。

VIT

第一次将transformer引入cv中,因为transformer在NLP中的表现很好。

image

Transformer的优势

1.并行计算

image2.全局视野 3.灵活的堆叠能力

VIT结构

image

只使用了transformer的encoder

但是transformer有全局视野

self attention

对相似度的计算

image

image

Query:查询,询问

Key:键值,关键词

Value:价值,数值

q1,k1向量点积计算相似度,从点积求投影就可以看成,越相似,投影越长。

image

norm只是为了让值小一点,multiply我理解为重要程度,而sum就是上下文。

矩阵计算本身就是并行

MultiHead Attention 有多个Wq,Wk,Wv,上述操作重复多次结果concat一起

可以给注意力提供多种可能性,比如稀疏,密集之类

transformer encoder

image

输入端适配

因为transformer本身并非用于cv的,而是NLP,所以需要做出一些调整,将图片进行切分然后按编号输入网络。用来模拟句子,当然输入线性层直接打平。

image

Patch 0的作用

需要一个整合信息的向量 如果只有原始输出的9个向量 用哪个向量来分类都不好全用计算量又很大 所以加一个可学习的vector也就是patch 0来整合信息。

同时图像切片损失了位置信息,而且transformer本身也不关注这个。所以需要补位置信息。ViT使用了一个可学习的vector来编码 vector和patch vector直接相加组成输入。(相加是concat的特例)

PVT

挺拉的,就别浪费时间管他了,主要就想控制显存,transformer真不是一般人能用的,控制k,v的数量,但是它怎么控制的我真不想评价,只能说给我干沉默了。

Swin transformer

很好的baseline!它和之前的PVT其实关注的都是一个问题,transformer占显存,通过控制token大小与数量来实现。

VIT的缺点

  • 显存占用- Token数量

  • 表示方法-Token应该多大?

  • 难以用在下游任务

    • Token指的是模型运行中最小的处理单元。
    • NLP中的Token一般指的是一个单词,Token的数量就是一段文字中单词的数量,一般不会特别多。
    • ViT中的Token指的是一个Patch,Token的数量就是Patch的数量,这一点和图像分辨率以及Patch大小有关

dilemma

Patch小-> Token数量多->MHA复杂度高->资源不足

Patch大->Token数量少->Feature Map分辨率低

structure

image

W-MSA

Swin Transformer使用window multiscale self attention,将attention的计算限制在同一个窗口内,使得复杂度降到了o(n)

缺点

显然这样硬性的限制会丢失全局信息,限制模型能力,因此需要一个跨Window的操作,增强window间的交互,所以还要一个SW-MSA

SW-MSA

image

缺点

移动切分后,window的数量变多了,而且window的尺寸不一样了。

所以他们设计了一种更高效的办法cyclic shift

image

image

相对位置编码

这里的相对位置编码是对每个window内的patch写死的,是不可学习的,是人为设计好的

inductive bias

比较有趣的一个东西,它就是我们所说的归纳偏置 归纳->总结,也就是从现存的例子中找到一些比较通用的规则偏置->选择偏好。 整理在一起可以理解为:在面对一些特定问题的时候,我们认为模型应该会有哪些特点会比较容易work,因此而做出的一系列对模型的人为限制。 比如图像处理中,每个位置的信息与周围的信息相关,因此设计出conv

conv中的两个归纳偏置

  • 局部相关性:邻近的像素是相关的。会导致feature map十分平滑,在一定程度上影响目标检测的效果。
  • 权重共享:图像的不同部分应该以相同的方式处理,无论它们的绝对位置如何。

比如NLP中,认为输出的结果与单词的先后顺序相关,因此设计出RNN。

为什么卷积核是奇数的

因为奇数的卷积核拥有中心,可以很好确定位置

为什么深层feature map让人san值狂掉

因为浅层特征还关注的是颜色边缘,深层以后其实已经是多个特征组成的语义了。能理解就怪了()

DETR

structure

image

image

nms缺点

  1. 如果两个框离的很近,那么两个框很有可能属于同一instance(两个instance本来就很近)
  2. 在属于同一instance的框中,分类得分越高的,定位质量越高(并不一定)

Dense prediction

  1. 利用Anchor进行预定位
  2. 判断Anchor是前景还是背景给出proposal
  3. 之后预测给出的proposal的类别
  4. 最后NMS输出结果

Set prediction

将预测集与GT集进行匹配。

match loss

image

image

匈牙利算法之前deepsort说过,这里就不说了,就是找最大匹配。

位置编码(position embedding)

这里的位置编码是写死的,不可学习的 具体写法是根据左边公式,其中pos代表token在序列中的位置,而d代表一个token用多少维来表示。由于图像是2d的,因此DETR将这种方法推广到了2d,见右边公式。

imageimage

这里的位置编码会应用到每一个encoder上,而不只是开头的第一个而且只会加到QK上,不影响V 原因: Patch间的信息交互才需要位置信息,也就是需要加到Q@KT这一步上。而下一次生成QK,是根据V生成的,所以每一个encoder都要重新加一遍这个信息。

encoder&decoder

image

左侧为编码器,右侧为解码器 多出来的MSA,K和V来自于encoder而Q是来自于Obj queries 这种来QK来自于不同地方的attention也叫cross attention

Object quiries

这个东西的作用和cls token类似,也是在整合信息。 Object queries是一个可学习的向量(num, b, dim)

  • Num是人为给的值,远大于图片内物体数量,默认100b是batch size
  • dim是attention运行过程中用的维度数

最终学出来的东西类似于Anchor

· 34 min read
windows 10常用快捷键。win10正式版是微软续已发布的Windows系统的最新版操作系统。windows10(win10正式版)让人感到最意外的就是直接跳过了win9。那么今天我为大家讲解他推出的常用快捷键。希望能够帮到大家。



复制、粘贴和其他常规键盘快捷方式



按此键 执行此操作

Ctrl + X 剪切选定项

Ctrl + C(或 Ctrl + Insert) 复制选定项

Ctrl + V(或 Shift + Insert) 粘贴选定项

Ctrl + Z 撤消操作

Alt + Tab 在打开的应用之间切换

Alt + F4 关闭活动项,或者退出活动应用

Windows 徽标键 + L 锁定电脑

Windows 徽标键 + D 显示和隐藏桌面

F2 重命名选定项

F3 在文件资源管理器中搜索文件或文件夹

F4 在文件资源管理器中显示地址栏列表

F5 刷新活动窗口

F6 在窗口中或桌面上循环浏览屏幕元素

F10 激活活动应用中的菜单栏

Alt + F8 在登录屏幕上显示密码

Alt + Esc 以项目打开的顺序循环切换项目

Alt + 带下划线的字母 执行该字母对应的命令

Alt + Enter 显示选定项的属性

Alt + 空格键 为活动窗口打开快捷菜单

Alt + 向左键 后退

Alt + 向右键 前进

Alt + Page Up 向上移动一个屏幕

Alt + Page Down 向下移动一个屏幕

Ctrl + F4 关闭活动文档(在全屏模式和允许你同时打开多个文档的应用中)

Ctrl + A 选择文档或窗口中的所有项目

Ctrl + D(或 Delete) 删除选定项并将其移动到“回收站”

Ctrl + R(或 F5) 刷新活动窗口

Ctrl + Y 重做操作

Ctrl + 向右键 将光标移动到下一个字词的起始处

Ctrl + 向左键 将光标移动到上一个字词的起始处

Ctrl + 向下键 将光标移动到下一个段落的起始处

Ctrl + 向上键 将光标移动到上一个段落的起始处

Ctrl + Alt + Tab 使用箭头键在所有打开的应用之间切换

Ctrl + Alt + Shift + 箭头键 当分组或磁贴在“开始”菜单中获得焦点时,请将其按指定方向移动

Ctrl + 箭头键(用来移动到某个项目)+ 空格键 在窗口中或桌面上选择多个单独的项目

Ctrl + Shift 加某个箭头键 选择文本块

Ctrl + Esc 打开“开始”屏幕

Ctrl + Shift + Esc 打开任务管理器

Ctrl + Shift 在提供了多个键盘布局时切换键盘布局

Ctrl + 空格键 打开或关闭中文输入法编辑器 (IME)

Shift + F10 显示选定项的快捷菜单

Shift 加任意箭头键 在窗口中或桌面上选择多个项目,或者在文档中选择文本

Shift + Delete 无需先将选定项移动到“回收站”,直接将其删除

向右键 打开右侧的下一个菜单,或者打开子菜单

向左键 打开左侧的下一个菜单,或者关闭子菜单

Esc 停止或退出当前任务

Windows 徽标键键盘快捷方式



按此键 执行此操作

Windows 徽标键 打开或关闭“开始”菜单

Windows 徽标键 + A 打开“操作中心”

Windows 徽标键 + B 将焦点设置到通知区域

Windows 徽标键 + Shift + C 在侦听模式下打开 Cortana





注意: Cortana 仅在某些国家/地区提供,并且某些 Cortana 功能可能无法随时随地使用。如果 Cortana 不可用或已关闭,你仍然可以使用搜索。

Windows 徽标键 + D 显示和隐藏桌面

Windows 徽标键 + Alt + D 显示和隐藏桌面上的日期和时间

Windows 徽标键 + E 打开“文件资源管理器”

Windows 徽标键 + F 打开“反馈中心”

Windows 徽标键 + G 打开游戏栏(当游戏处于打开状态时)

Windows 徽标键 + H 打开“共享”超级按钮

Windows 徽标键 + I 打开“设置”

Windows 徽标键 + J 将焦点设置到 Windows 提示(如果可用)。





出现 Windows 提示时,将焦点移到该提示。 再次按这些键盘快捷方式,将焦点移到定位 Windows 提示的屏幕上的元素。

Windows 徽标键 + K 打开“连接”快速操作

Windows 徽标键 + L 锁定电脑或切换帐户

Windows 徽标键 + M 最小化所有窗口

Windows 徽标键 + O 锁定设备方向

Windows 徽标键 + P 选择演示显示模式

Windows 徽标键 + R 打开“运行”对话框

Windows 徽标键 + S 打开搜素

Windows 徽标键 + T 在任务栏上循环切换应用

Windows 徽标键 + U 打开“轻松使用设置中心”

Windows 徽标键 + V 循环切换通知

Windows 徽标键 + Shift + V 以相反的顺序循环切换通知

Windows 徽标键 + X 打开“快速链接”菜单

Windows 徽标键 + Z 显示在以全屏模式呈现的应用中可用的命令

Windows 徽标键 + 逗号 (,) 临时快速查看桌面

Windows 徽标键 + Pause 显示“系统属性”对话框

Windows 徽标键 + Ctrl + F 搜索电脑(如果你位于网络中)

Windows 徽标键 + Shift + M 将最小化的窗口还原到桌面

Windows 徽标键 + 数字 打开桌面,并启动固定到任务栏的位于该数字所表示位置的应用。如果该应用已在运行,则切换到该应用。

Windows 徽标键 + Shift + 数字 打开桌面,并启动固定到任务栏的位于该数字所表示位置的应用的新实例

Windows 徽标键 + Ctrl + 数字 打开桌面,并切换到固定到任务栏的位于该数字所表示位置的应用的最后一个活动窗口

Windows 徽标键 + Alt + 数字 打开桌面,并打开固定到任务栏的位于该数字所表示位置的应用的跳转列表

Windows 徽标键 + Ctrl + Shift + 数字 打开桌面,并以管理员身份打开位于任务栏上给定位置的应用的新实例

Windows 徽标键 + Tab 打开“任务视图”

Windows 徽标键 + 向上键 最大化窗口

Windows 徽标键 + 向下键 从屏幕中删除当前应用或最小化桌面窗口

Windows 徽标键 + 向左键 将应用或桌面窗口最大化到屏幕左侧

Windows 徽标键 + 向右键 将应用或桌面窗口最大化到屏幕右侧

Windows 徽标键 + Home 最小化除活动桌面窗口以外的所有窗口(在第二道笔划时还原所有窗口)

Windows 徽标键 + Shift + 向上键 将桌面窗口拉伸到屏幕的顶部和底部

Windows 徽标键 + Shift + 向下键 在垂直方向上还原/最小化活动桌面窗口,同时保持宽度不变

Windows 徽标键 + Shift + 向左键或向右键 将桌面中的应用或窗口从一个监视器移动到另一个监视器

Windows 徽标键 + 空格键 切换输入语言和键盘布局

Windows 徽标键 + Ctrl + 空格键 更改为以前选择的输入

Windows 徽标键 + Enter 打开“讲述人”

Windows 徽标键 + 正斜杠 (/) 启动 IME 重新转换

Windows 徽标键 + 加号 (+) 或减号 (-) 使用“放大镜”放大或缩小

Windows 徽标键 + Esc 退出“放大镜”

命令提示符键盘快捷方式



按此键 执行此操作

Ctrl + C(或 Ctrl + Insert) 复制选定文本

Ctrl + V(或 Shift + Insert) 粘贴选定文本

Ctrl + M 进入标记模式

Alt + 选择键 在阻止模式中开始选择

箭头键 按指定方向移动光标

Page Up 将光标向上移动一页

Page Down 将光标向下移动一页

Ctrl + Home(标记模式) 将光标移动到缓冲区的起始处

Ctrl + End(标记模式) 将光标移动到缓冲区的末尾

Ctrl + 向上键 在输出历史记录中向上移动一行

Ctrl + 向下键 在输出历史记录中向下移动一行

Ctrl + Home(历史记录导航) 如果命令行为空,则将视口移动到缓冲区顶部。否则,删除命令行中光标左侧的所有字符。

Ctrl + End(历史记录导航) 如果命令行为空,则将视口移动到命令行。否则,删除命令行中光标右侧的所有字符。

对话框键盘快捷方式



按此键 执行此操作

F4 显示活动列表中的项目

Ctrl + Tab 在选项卡上向前移动

Ctrl + Shift + Tab 在选项卡上向后移动

Ctrl + 数字(数字 1 到 9) 移动到第 n 个选项卡

Tab 在选项上向前移动

Shift + Tab 在选项上向后移动

Alt + 带下划线的字母 执行与该字母一起使用的命令(或选择相应的选项)

空格键 如果活动选项是复选框,则选中或清除该复选框

Backspace 如果在“另存为”或“打开”对话框中选中某个文件夹,则打开上一级文件夹

箭头键 如果活动选项是一组选项按钮,则选择某个按钮

文件资源管理器键盘快捷方式



按此键 执行此操作

Alt + D 选择地址栏

Ctrl + E 选择搜索框

Ctrl + F 选择搜索框

Ctrl + N 打开新窗口

Ctrl + W 关闭活动窗口

Ctrl + 鼠标滚轮 更改文件和文件夹图标的大小及外观

Ctrl + Shift + E 显示选定文件夹上的所有文件夹

Ctrl + Shift + N 创建一个新文件夹

Num Lock + 星号 (*) 显示选定文件夹下的所有子文件夹

Num Lock + 加号 (+) 显示选定文件夹的内容

Num Lock + 减号 (-) 折叠选定文件夹

Alt + P 显示预览面板

Alt + Enter 打开选定项的“属性”对话框

Alt + 向右键 查看下一个文件夹

Alt + 向上键 查看上一级文件夹

Alt + 向左键 查看上一个文件夹

Backspace 查看上一个文件夹

向右键 显示当前选项(如果它处于折叠状态),或者选择第一个子文件夹

向左键 折叠当前选项(如果它处于展开状态),或者选择其父文件夹

End 显示活动窗口的底端

Home 显示活动窗口的顶端

F11 最大化或最小化活动窗口

虚拟桌面键盘快捷方式



按此键 执行此操作

Windows 徽标键 + Tab 打开任务视图

Windows 徽标键 + Ctrl + D 添加虚拟桌面

Windows 徽标键 + Ctrl + 向右键 在你于右侧创建的虚拟桌面之间进行切换

Windows 徽标键 + Ctrl + 向左键 在你于左侧创建的虚拟桌面之间进行切换

Windows 徽标键 + Ctrl + F4 关闭你正在使用的虚拟桌面

任务栏键盘快捷方式



按此键 执行此操作

Shift + 单击某个任务栏按钮 打开某个应用,或快速打开应用的另一个实例

Ctrl + Shift + 单击某个任务栏按钮 以管理员身份打开应用

Shift + 右键单击某个任务栏按钮 显示该应用的窗口菜单

Shift + 右键单击某个已分组的任务栏按钮 显示该组的窗口菜单

Ctrl + 单击某个已分组的任务栏按钮 循环切换该组的窗口

设置键盘快捷方式



按此键 执行此操作

Windows 徽标键 + I 打开设置

Backspace 回退到“设置”主页

在带有搜索框的任何页面上键入 搜索设置

Windows 10 应用中的键盘快捷方式



在许多应用(如照片、Groove 和地图)中,当你将鼠标指针悬停在某个按钮上时,工具提示中就会显示快捷方式。在其他应用(如画图、写字板和 Office)中,按 Alt 键或 F10 即可显示标记了键盘快捷方式的命令。如果菜单中某个字母有下划线,请同时按下 Alt 键和带有下划线的键,而不是选择该菜单项。例如,按 Ctrl + N 可在“画图”中创建新图片。



温馨提示:



借助触摸键盘,按下 Ctrl 键即可看到一些快捷方式。



以下是 Windows 10 中内置的某些 Microsoft 应用中常见的键盘快捷方式。这包括 Microsoft Edge、计算器、游戏栏、Groove、地图、画图、照片、音乐和电视以及写字板。



Microsoft Edge 键盘快捷方式



按此键 执行此操作

Ctrl + D 将当前站点添加到收藏夹或阅读列表

Ctrl + I 打开“收藏夹”窗格

Ctrl + J 打开“下载”窗格

Ctrl + H 打开“历史记录”窗格

Ctrl + P 打印当前页面

Ctrl + F 在页面上查找

Alt + C 打开 Cortana





注意

Cortana 仅在特定的国家/地区中提供,并且某些 Cortana 功能可能不支持随时随地使用。如果 Cortana 不可用或已关闭,你仍然可以使用搜索。

Ctrl + Shift + R 进入阅读视图

Ctrl + T 打开一个新选项卡

Ctrl + Shift + T 重新打开最近关闭的选项卡

Ctrl + W 或 Ctrl + F4 关闭活动选项卡

Ctrl + K 复制选项卡

Ctrl + N 打开新窗口

Ctrl + Shift + P 打开新的 InPrivate 浏览窗口

Ctrl + Tab 切换到下一个选项卡

Ctrl + Shift + Tab 切换到上一个选项卡

Ctrl + 1、2、3,依此类推 切换到特定选项卡号

Ctrl + 9 切换到最后一个选项卡

Ctrl + 加号 (+) 放大 (25%)

Ctrl + 减号 (-) 缩小 (25%)

Ctrl + 0 重置缩放级别

Backspace 或 Alt + 向左键 返回

Alt + 向右键 前进

F5 或 Ctrl + R 刷新页面

Esc 停止加载页面

Ctrl + L 或 F4 或 Alt + D 选中地址栏

Ctrl + Shift + L 在新选项卡中打开地址栏查询

Ctrl + E 在地址栏中打开搜索查询

Ctrl + Enter 在地址栏中将“www.”添加到所键入文本的开头,将“.com”添加到所键入文本的末尾

Ctrl + 单击 在新选项卡中打开链接

Ctrl + Shift + 单击 在新选项卡中打开链接并切换到该选项卡

Alt + Shift + 单击 在新窗口中打开链接

Ctrl + Shift + M 开始创建 Web 笔记

Ctrl + Alt + M 将所选内容复制到 Web 笔记中

F12 打开 F12 开发人员工具

Ctrl + U 查看源

F6 在网页内容和地址栏之间切换焦点

F7 为活动选项卡打开“插入光标浏览”

Ctrl + Shift + Delete 显示用于清除浏览数据的控件

“计算器”键盘快捷方式



按此键 执行此操作

Alt + 1 切换到“标准型”模式

Alt + 2 切换到“科学型”模式

Alt + 3 切换到“程序员”模式

Ctrl + M 存储在内存中

Ctrl + P 添加到内存

Ctrl + Q 从内存中减去

Ctrl + R 从内存中重新调用

Ctrl + L 清除内存

F9 选择 ±

R 选择 1/x

@ 求平方根

Delete 选择 CE

Ctrl + H 打开或关闭计算历史记录

向上键 在“历史记录”列表中上移

向下键 在“历史记录”列表中下移

Ctrl + Shift + D 清除历史记录

F3 在“科学型”模式下选择 DEG

F4 在“科学型”模式下选择 RAD

F5 在“科学型”模式下选择 GRAD

Ctrl + G 在“科学型”模式下选择 10x

Ctrl + O 在“科学型”模式下选择 cosh

Ctrl + S 在“科学型”模式下选择 sinh

Ctrl + T 在“科学型”模式下选择 tanh

Shift + S 在“科学型”模式下选择 sin-1

Shift + O 在“科学型”模式下选择 cos-1

Shift + T 在“科学型”模式下选择“tan-1”

Ctrl + Y 在“科学型”模式下选择 y√x

D 在“科学型”模式下选择 Mod

L 在“科学型”模式下选择 log

M 在“科学型”模式下选择 dms

N 在“科学型”模式下选择 ln

Ctrl + N 在“科学型”模式下选择 ex

O 在“科学型”模式下选择 cos

P 在“科学型”模式下选择 Pi

Q 在“科学型”模式下选择 x2

S 在“科学型”模式下选择 sin

T 在“科学型”模式下选择 tan

V 在“科学型”模式下选择 F-E

X 在“科学型”模式下选择 Exp

Y, ^ 在“科学型”模式下选择 xy

# 在“科学型”模式下选择 x3

; 在“科学型”模式下选择 Int

! 在“科学型”模式下选择 n!

F2 在“程序员”模式下选择 DWORD

F3 在“程序员”模式下选择 WORD

F4 在“程序员”模式下选择 BYTE

F5 在“程序员”模式下选择 HEX

F6 在“程序员”模式下选择 DEC

F7 在“程序员”模式下选择 OCT

F8 在“程序员”模式下选择 BIN

F12 在“程序员”模式下选择 QWORD

A-F 在“程序员”模式下选择 A-F

J 在“程序员”模式下选择 RoL

K 在“程序员”模式下选择 RoR

< 在“程序员”模式下选择 Lsh

> 在“程序员”模式下选择 Rsh

% 在“程序员”模式下选择 Mod

| 在“程序员”模式下选择 Or

^ 在“程序员”模式下选择 Xor

~ 在“程序员”模式下选择 Not

& 在“程序员”模式下选择 And

空格键 在“程序员”模式下切换位值

游戏栏键盘快捷方式



按此键 执行此操作

Windows 徽标键 + G 打开游戏栏(当游戏处于打开状态时)

Windows 徽标键 + Alt + G 录制最后 30 秒

Windows 徽标键 + Alt + R 开始或停止录制

Windows 徽标键 + Alt + Print Screen 获取你的游戏的屏幕截图

Windows 徽标键 + Alt + T 显示/隐藏录制计时器

Groove 键盘快捷方式



按此键 执行此操作

Ctrl + P 播放或暂停

Ctrl + F 跳到下一曲

Ctrl + B 重新播放当前歌曲/跳到上一曲

F9 调高音量

F8 调低音量

F7 静音

Ctrl + Enter 选择项目并进入选择模式

Ctrl + A 全选

Delete 删除选定项

Ctrl + Shift + P 播放选定项

Ctrl + T 打开或关闭“重复播放”

Ctrl + H 打开或关闭“无序播放”

Ctrl + Q 搜索

“地图”键盘快捷方式



按此键 执行此操作

箭头键 按任意方向平移地图

Ctrl + 加号或减号键(+ 或 -) 放大或缩小

Ctrl + 向左键或向右键 旋转

Ctrl + 向上键或向下键 倾斜

+ 或 – 键 在 3D 城市视图中放大或缩小

Page Up 或 Page Down 在 3D 城市视图中推远或拉近

Ctrl + Y 在鸟瞰图和道路视图之间切换地图视图

Ctrl + Home 在你的当前位置上居中放置地图

Ctrl + D 获取路线

Ctrl + F 搜索

Ctrl + M 最小化活动选项卡

Ctrl + P 打印

Ctrl + T 显示或隐藏路况

Backspace 返回

Ctrl + H 共享

Ctrl + L 将焦点移动到地图

Ctrl + W 关闭活动选项卡

Ctrl + Tab 转到下一个选项卡

Ctrl + Shift + Tab 转到上一个选项卡

Ctrl + S 显示或隐藏街道

Ctrl + C 复制到剪贴板

“电影和电视”键盘快捷方式



按此键 执行此操作

Alt + Enter 全屏播放

Esc 退出全屏

Enter 选择焦点中的内容

空格键



Ctrl + P 播放或暂停(当视频处于焦点中时)

Alt + 向左键



Windows 徽标键 + Backspace 返回

Ctrl + T 打开或关闭“重复播放”

F7 静音

F8 调低音量

F9 调高音量

“画图”键盘快捷方式



按此键 执行此操作

F11 以全屏模式查看图片

F12 将此图片另存为新文件

Ctrl + A 选择整个图片

Ctrl + B 将所选文本改为粗体

Ctrl + C 将选择内容复制到剪贴板

Ctrl + E 打开“属性”对话框

Ctrl + G 显示或隐藏网格线

Ctrl + I 将所选文本改为斜体

Ctrl + N 创建新图片

Ctrl + O 打开现有图片

Ctrl + P 打印图片

Ctrl + R 显示或隐藏标尺

Ctrl + S 将更改保存到图片

Ctrl + U 为所选文本添加下划线

Ctrl + V 从剪贴板粘贴选择内容

Ctrl + W 打开“调整大小和扭曲”对话框

Ctrl + X 剪切选择内容

Ctrl + Y 恢复更改

Ctrl + Z 撤销更改

Ctrl + 加号 (+) 将画笔、直线或形状轮廓的宽度增加一个像素

Ctrl + 减号 (-) 将画笔、直线或形状轮廓的宽度减少一个像素

Ctrl + Page Up 放大

Ctrl + Page Down 缩小

Alt + F4 关闭图片及其“画图”窗口

向右键 将选择内容或活动形状向右移动一个像素

向左键 将选择内容或活动形状向左移动一个像素

向下键 将选择内容或活动形状向下移动一个像素

向上键 将选择内容或活动形状向上移动一个像素

Shift + F10 显示上下文菜单

“照片”键盘快捷方式



按此键 执行此操作

空格键(在“集锦”中) 选择项目并进入选择模式

Enter(从选择模式) 在处于选择模式下时选择项目

空格键(查看照片) 显示或隐藏命令

空格键(查看视频) 播放或暂停视频

箭头键(在集锦中) 向上、向下、向左或向右滚动

左箭头或右箭头键(位于单个项目或幻灯片放映上) 显示下一个或上一个项目

箭头键(位于缩放的照片上) 在照片内移动

Ctrl + 加号或减号(+ 或 -) 放大或缩小(查看照片时)

Ctrl + 0 重置照片的缩放

Esc 返回到上一个屏幕

Ctrl + S 保存

Ctrl + P 打印

Ctrl + C 复制

Ctrl + R(查看或编辑) 旋转照片

E(查看照片) 增强照片效果

Ctrl + Z(编辑) 撤销更改

Ctrl + Y(编辑) 恢复更改

Ctrl + /(编辑) 查看原件

Shift + 箭头键 调整裁剪或选择性对焦区域的大小

Ctrl + 箭头键 移动裁剪或选择性对焦区域

F5(查看项目) 开始幻灯片放映

Alt + Enter 查看文件信息

Ctrl + L 设置为锁屏界面

Ctrl + N(在“相册”视图中) 创建新相册

Ctrl + R(在“相册”视图中) 删除相册

Ctrl + D 将选定项添加到相册

Ctrl + U 从相册中删除选定项

“写字板”键盘快捷方式



按此键 执行此操作

F3 在“查找”对话框中搜索文本的下一个实例

F12 将此文档另存为新文件

Ctrl + 1 设置单倍行距

Ctrl + 2 设置双倍行距

Ctrl + 5 将行距设置为 1.5

Ctrl + A 全选

Ctrl + B 将所选文本改为粗体

Ctrl + C 将选择内容复制到剪贴板

Ctrl + D 插入 Microsoft 绘图

Ctrl + E 向中心对齐文本

Ctrl + F 在文档中搜索文本

Ctrl + H 在文档中替换文本

Ctrl + I 将所选文本改为斜体

Ctrl + J 两端对齐文本

Ctrl + L 向左对齐文本

Ctrl + N 创建新文档

Ctrl + O 打开现有文档

Ctrl + P 打印文档

Ctrl + R 向右对齐文本

Ctrl + S 将更改保存到文档

Ctrl + U 为所选文本添加下划线

Ctrl + V 从剪贴板粘贴选择内容

Ctrl + X 剪切选择内容

Ctrl + Y 恢复更改

Ctrl + Z 撤销更改

Ctrl + 等于号 (=) 使所选文本成为下标

Ctrl + Shift + 等于号 (=) 使所选文本成为上标

Ctrl + Shift + 大于号 (>) 增加字体大小

Ctrl + Shift + 小于号 (<) 减小字体大小

Ctrl + Shift + A 将字符更改为全部使用大写字母

Ctrl + Shift + L 更改项目符号样式

Ctrl + 向左键 将光标向左移动一个字

Ctrl + 向右键 将光标向右移动一个字

Ctrl + 向上键 将光标移动到上一行

Ctrl + 向下键 将光标移动到下一行

Ctrl + Home 移动到文档的开头

Ctrl + End 移动到文档的末尾

Ctrl + Page Up 向上移动一个页面

Ctrl + Page Down 向下移动一个页面

Ctrl + Delete 删除下一个字

Alt + F4 关闭“写字板”

Shift + F10 显示上下文菜单

Windows 10 用于辅助功能的 Windows 键盘快捷方式



辅助功能快捷方式可帮助你将电脑与键盘或辅助设备结合使用。下面是 Windows 10 中辅助技术的键盘快捷方式列表,包括“放大镜”、“高对比度”等。



“放大镜”键盘快捷方式



按此键 执行此操作

Windows 徽标键 + 加号 (+) 或减号 (-) 放大或缩小

Ctrl + Alt + 空格键 以全屏模式预览桌面

Ctrl + ALT + D 切换到停靠模式

Ctrl + ALT + F 切换到全屏模式

Ctrl + ALT + I 反色

Ctrl + ALT + L 切换到镜头模式

Ctrl + ALT + R 调整镜头大小

Ctrl + Alt + 箭头键 按箭头键的方向平移

Windows 徽标键 + Esc 退出“放大镜”

其他辅助功能键盘快捷方式



按此键 执行此操作

按右 Shift 八秒钟 打开和关闭筛选键

左 Alt + 左 Shift + Print Screen 打开或关闭高对比度

左 Alt + 左 Shift + Num Lock 打开或关闭鼠标键

按 Shift 五次 打开或关闭粘滞键

按 Num Lock 五秒钟 打开或关闭切换键

Windows 徽标键 + U 打开“轻松使用设置中心”

· 4 min read

傻瓜式树莓派配置ncnn教程

clone

git clone https://github.com/Tencent/ncnn.git
cd ncnn
git submodule update --init

build

cd ncnn
mkdir -p build
cd build

sudo apt install build-essential git cmake libprotobuf-dev protobuf-compiler libvulkan-dev vulkan-utils libopencv-dev
cmake -DCMAKE_EXE_LINKER_FLAGS=-ldl ..

make -j4

报错

CMake Warning at CMakeLists.txt:163 (message):
GLSLANG_TARGET_DIR must be defined! NCNN_SYSTEM_GLSLANG will be turned off.


CMake Error at CMakeLists.txt:188 (message):
The submodules were not downloaded! Please update submodules with "git
submodule update --init" and try again.


-- Configuring incomplete, errors occurred!
See also "/home/pi/ncnn/ncnn_master/ncnn/build/CMakeFiles/CMakeOutput.log".

当你看见这个,请不要惊慌,这是因为部分依赖包不存在,再次运行git submodule update --init即可

如果依然不行,建议手动下载.deb文件直接安装依赖包,当时我是手动clone了glslang,不知道到你那个时候还用不用。

test

Test1

build $ cd ../examples/
examples $ ../build/examples/squeezenet ../images/256-ncnn.png
1
2
Result

vkCreateInstance failed -9
vkCreateInstance failed -9
532 = 0.165951
920 = 0.094098
716 = 0.062193

Test2

examples $ cd ../benchmark/
benchmark $ ../build/benchmark/benchncnn 10 $(nproc) 0 -1

Result

loop_count = 10
num_threads = 4
powersave = 0
gpu_device = -1
cooling_down = 1
squeezenet min = 59.54 max = 78.24 avg = 61.93
squeezenet_int8 min = 68.22 max = 136.60 avg = 75.22
mobilenet min = 82.28 max = 103.96 avg = 86.50
mobilenet_int8 min = 102.12 max = 127.61 avg = 105.56
mobilenet_v2 min = 72.07 max = 78.58 avg = 73.41
mobilenet_v3 min = 58.79 max = 62.76 avg = 59.56
shufflenet min = 39.38 max = 39.76 avg = 39.56
shufflenet_v2 min = 30.91 max = 62.75 avg = 34.47
mnasnet min = 62.02 max = 63.65 avg = 63.10
proxylessnasnet min = 63.72 max = 78.89 avg = 65.54
efficientnet_b0 min = 97.13 max = 134.88 avg = 101.45
regnety_400m min = 78.38 max = 112.27 avg = 82.46
blazeface min = 11.84 max = 12.11 avg = 11.98
googlenet min = 175.91 max = 226.33 avg = 187.03
googlenet_int8 min = 160.86 max = 174.87 avg = 163.83
resnet18 min = 226.30 max = 256.77 avg = 231.41
resnet18_int8 min = 137.44 max = 172.20 avg = 144.58
alexnet min = 175.46 max = 187.97 avg = 178.70
vgg16 min = 966.03 max = 1200.06 avg = 1021.94
vgg16_int8 min = 1198.49 max = 1241.05 avg = 1216.26
resnet50 min = 466.87 max = 511.23 avg = 483.53
resnet50_int8 min = 332.21 max = 380.04 avg = 344.77
squeezenet_ssd min = 178.27 max = 232.75 avg = 187.56
squeezenet_ssd_int8 min = 195.93 max = 227.62 avg = 202.93
mobilenet_ssd min = 175.19 max = 197.45 avg = 182.97
mobilenet_ssd_int8 min = 172.96 max = 207.40 avg = 181.28
mobilenet_yolo min = 426.78 max = 526.93 avg = 463.47
mobilenetv2_yolov3 min = 248.95 max = 274.25 avg = 255.45
yolov4-tiny min = 329.52 max = 369.67 avg = 342.12


那么问题来了,如何判断编译成功,当你看见build/example下有一大堆shared library文件,图标是绿色棱形时,恭喜你配完了。

是不是看起来很简单,其实可以配死人。

顺便一提,shared library为动态分享库,可以直接运行。

你以为这就完了,笑死,你的ncnn和opencv怎么用都还是个问题,等我学完cmake在连载。

· 19 min read

一份学习报告

变量,字符串,数字

没什么感觉,可能就是注意一下数字需要用str()才能和字符串一起输出。

列表

挺方便的,啥都能往里丢,相当于加强版的c语言数组

使用sort()对列表进行永久性排序,默认正序,想逆序sort(reverse=True)

使用sorted()对列表进行临时性排序,接下来同上

使用reverse()使列表倒着,想恢复再来一回reverse(),毕竟负负得正(笑)

len()确定长度

索引依旧从零开始

利用range创建数字列表,range(1,5)不打印5,有min,max,sum这种解放双手的函数

切片就是创造一个列表的副本,想咋整咋整

元组

我的理解是这玩意是个常数数组

元组可以迭代

循环(末尾打冒号)

注意缩进(o(╥﹏╥)o)

for循环

区别不大,不过好像没有可以花式整活的(;;)有点怀念

if语句(同上)

Python对大小写敏感

and

or

检查特点值是否不包含在列表中,使用关键字not in

示例:if user not in users:

if else语句

if -elif-else

同c的else if

字典

啥都能丢,键值对是它最大的特点

items

key()

value()

input()

while循环

break之流不多赘述

函数

模块

as取别名

这个算是Python的特点了,但是我现在还没悟出来有啥用

继承

Python标准库

文件和异常

文件就丢个名字上去,异常为了处理traceback使其更加安全

try-except

避免崩溃,处理异常

对神经网络有简单了解并能搭建一个简单的bp,虽然是改的。

pycharm

ctrl+shift+alt+点击鼠标左键.可以在任意位置增加光标.

softmax

输入向量{\displaystyle [1,2,3,4,1,2,3]}{\displaystyle [1,2,3,4,1,2,3]}对应的Softmax函数的值为{\displaystyle [0.024,0.064,0.175,0.475,0.024,0.064,0.175]}{\displaystyle [0.024,0.064,0.175,0.475,0.024,0.064,0.175]}。输出向量中拥有最大权重的项对应着输入向量中的最大值“4”。这也显示了这个函数通常的意义:对向量进行归一化,凸显其中最大的值并抑制远低于最大值的其他分量。

bn

(2)批规范化BN,标准化Standardization,正则化Regularization 批规范化(Batch Normalization,BN):在minibatch维度上在每次训练iteration时对隐藏层进行归一化 标准化(Standardization):对输入数据进行归一化处理 正则化(Regularization):通常是指对参数在量级和尺度上做约束,缓和过拟合情况,L1 L2正则化

如果把 [公式] 类比为一摞书,这摞书总共有 N 本,每本有 C 页,每页有 H 行,每行 W 个字符。BN 求均值时,相当于把这些书按页码一一对应地加起来(例如第1本书第36页,第2本书第36页......),再除以每个页码下的字符总数:N×H×W,因此可以把 BN 看成求“平均书”的操作(注意这个“平均书”每页只有一个字),求标准差时也是同理。

目的是为了得到所有图片在同一个通道的均值和方差,进而归一化

从公式看它们都差不多:无非是减去均值,除以标准差,再施以线性映射。

image-20220109194840057

yolo

锚点,全局,中心框偏移

deepsort

卡尔曼滤波

借助模型和测量推断

(7 封私信 / 80 条消息) 如何通俗并尽可能详细地解释卡尔曼滤波? - 知乎 (zhihu.com)

匈牙利算法

简单理解增广路与匈牙利算法 - 知乎 (zhihu.com)最大匹配

马氏距离

马氏距离(Mahalanobis Distance) - 知乎 (zhihu.com)

余弦距离

余弦距离介绍 - 知乎 (zhihu.com)

ReID

小白入门系列——ReID(一):什么是ReID?如何做ReID?ReID数据集?ReID评测指标? - 知乎 (zhihu.com)

关于点线距离的计算方法

之前一直以为计算点线距离需要写很复杂的表达式,利用点线距离公式去计算,直到我看到了一种精妙的方法。将点线距离转化为求以中心点,起点,终点所构成的三角形的高度,基于numpy库进行数学运算,得到点线距离。

在这里插入图片描述

image-20220409184643417

利用三角形面积相等原则,可以转换为

image-20220409184723418

代码

`

import numpy as np`

`def point_distance_line(point,line_point1,line_point2):`
`#计算向量`
`vec1 = line_point1 - point`
`vec2 = line_point2 - point`
`distance = np.abs(np.cross(vec1,vec2)) / np.linalg.norm(line_point1-line_point2)`
`return distance`

`point = np.array([5,2])`
`line_point1 = np.array([2,2])`
`line_point2 = np.array([3,3])`
`print(get_distance_from_point_to_line(point,line_point1,line_point2))`
`print(point_distance_line(point,line_point1,line_point2))

`

cv2

高斯滤波

cv2.GaussianBlur

高斯滤波器的目的是减少图像中的噪声。

  • 语法:GaussianBlur(src,ksize,sigmaX [,dst [,sigmaY [,borderType]]])-> dst ——src输入图像;图像可以具有任意数量的通道,这些通道可以独立处理,但深度应为CV_8U,CV_16U,CV_16S,CV_32F或CV_64F。

  • 这个函数使用一个称为高斯核的核函数,用于对图像进行归一化。

    ——dst输出图像的大小和类型与src相同。 ——ksize高斯内核大小。 ksize.width和ksize.height可以不同,但它们都必须为正数和奇数,也可以为零,然后根据sigma计算得出。 ——sigmaX X方向上的高斯核标准偏差。 ——sigmaY Y方向上的高斯核标准差;如果sigmaY为零,则将其设置为等于sigmaX;如果两个sigmas为零,则分别从ksize.width和ksize.height计算得出;为了完全控制结果,而不管将来可能对所有这些语义进行的修改,建议指定所有ksize,sigmaX和sigmaY

canny边缘检测

这是我们检测图像边缘的地方,它所做的是计算像素强度的变化(亮度的变化)在一个图像的特定部分。幸运的是,OpenCV使它变得非常简单。

cv2.Canny函数有3个参数,(img, threshold-1, threshold-2)。

  • img参数定义了我们要检测边缘的图像。
  • threshold-1参数过滤所有低于这个数字的梯度(它们不被认为是边缘)。
  • threshold-2参数决定了边缘的有效值。
  • 如果两个阈值之间的任何梯度连接到另一个高于阈值2的梯度,则将考虑该梯度。
lines = cv2.HoughLinesP(isolated, rho=2, theta=np.pi/180, threshold=100, np.array([]), minLineLength=40, maxLineGap=5)

这一行代码是整个算法的核心,它被称为霍夫变换(Hough Transform),将孤立区域的白色像素簇转换为实际的线条。

  • 参数1:孤立梯度

  • 参数5:占位符数组

  • 参数6:最小行长

  • 参数7:最大行间距

  • 霍夫线变换会返回一个lines,分别为拟合出直线的起点和终点。配合上cv2.line

  • cv2.line(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) → img

    img,背景图 pt1,直线起点坐标 pt2,直线终点坐标 color,当前绘画的颜色。如在BGR模式下,传递(255,0,0)表示蓝色画笔。灰度图下,只需要传递亮度值即可。 thickness,画笔的粗细,线宽。若是-1表示画封闭图像,如填充的圆。默认值是1. lineType,线条的类型, 可以将拟合出来的直线可视化,这就是车道线检测。

gray=cv2.cvtColor(frame,cv2.COLOR_RGB2GRAY)

cvtcolor-颜色空间转换函数

这里是为了配合canny边缘检测对原图进行灰度化。

由于边缘检测的概念挺复杂,在此不过多赘述。

mask=np.zeros_like(frame)
cv2.fillPoly(mask,polygons,(255,255,255))
masked_image=cv2.bitwise_and(frame,mask)

这三行代码可以用于提取掩码范围内的图片,bitwise_and,位与运算,取较小的那个值,因为白色全为255,所以位运算后必然全取原值,白色区域范围外的黑色范围始终为黑色。(0,0,0)在此不多解释,fillpoly(填充多边形)第三个参数color请务必用元组,不用元组你会后悔的。

mask:掩码

polygons:多边形坐标

cap = cv2.VideoCapture(r'D:\Vehicle-Detection-And-Speed-Tracking\Car_Opencv\闯红灯.mp4')

视频流获取

ret, frame = cap.read()

读取视频流,并返回结果。

frame=cv2.addWeighted(lane_image,0.8,line_image,1,1)

图像加权融合。

图像切片

import cv2

img = cv2.imread("./data/cut/thor.jpg")
print(img.shape)
cropped = img[0:128, 0:512] # 裁剪坐标为[y0:y1, x0:x1]
cv2.imwrite("./data/cut/cv_cut_thor.jpg", cropped)

cv2读取出的图像是ndarray,先y再x。

图像处理

 cv2.rectangle(image, start_point, end_point, color, thickness)

参数:

image:它是要在其上绘制矩形的图像。

start_point:它是矩形的起始坐标。坐标表示为两个值的元组,即(X坐标值,Y坐标值)。

end_point:它是矩形的结束坐标。坐标表示为两个值的元组,即(X坐标值ÿ坐标值)。

color:它是要绘制的矩形的边界线的颜色。对于BGR,我们通过一个元组。例如:(255,0,0)为蓝色。

thickness:它是矩形边框线的粗细像素。厚度-1像素将以指定的颜色填充矩形形状。

cv2.putText(image, '{} ID-{}-{}km/hr-{}-{}'.format(cls_id, pos_id,speed,deng,sudu), (c1[0], c1[1] - 2), 0, tl / 3,
[225, 255, 255], thickness=tf, lineType=cv2.LINE_AA)

你想写入的文本数据 你想要放置的位置坐标(例如 数据开始于左下角) Font类型(参见cv2.putText()文档获取支持的Font ) 字体规模(特指字体大小) 常规内容,像颜色,粗细度,线类型等等。为了更好的视觉,推荐线条类型为 cv.LINE_AA 。

font = cv.FONT_HERSHEY_SIMPLEX
cv.putText(img,"OpenCV",(10,500),font,4,(255,255,255),2,cv_LINE_AA)

实例

cv2.putText(图片img,“文本内容”,(左下角坐标),字体,字体大小,(颜色),线条粗细,线条类型)

cv2.putText(img,"paradise",(200,100),self.font,3,(100,255,0),1,cv2.LINE_AA)

flip

format方法

它的基本使用格式如下: template.format(p0, p1, ..., k0=v0, k1=v1, ...) template是一个字符串,其中包括需要格式化输出的部分,这些部分各用大括号括起来{}。format后面的参数p表示第几个位置的需要格式化输出的变量。 举个例子:

"First argument: {0}, second one: {1}".format(47,11) 'First argument: 47, second one: 11' "Second argument: {1}, first one: {0}".format(47,11) 'Second argument: 11, first one: 47'

树莓派拥有用户名,密码,和su

密码一般用来干各种事确认身份

su用于获得root权限

sudo也是,只不过是单次

1.查看当前文件夹下的文件 dir

2.返回上一/两个目录 cd … cd …/…

3.Tab 直接按Tab,可以查看当前文件下的所有东西

4.移动文件 mv 文件名 移动目的地文件名

5.重命名文件 mv 文件名 修改后的文件名

6.传文件

本地传树莓派

scp -r C:\Users\a\Desktop\shumeipai pi@192.168.3.172:/home/pi

-r是文件夹

树莓派传本地地址反一下就行

当然,要输密码

而且scp命令不需要链接ssh,直接在本地进行。

有的时候github库会有问题,如ncnn的glslang无法进行get submodule --init,我的解决方法是去glslang手动clone一个,同时遇到了vulkan-tools不在源内的情况。树莓派是arm64架构,可下载arm64版本的deb安装包,类似于安卓的apk。

树莓派运行c++

7.装vim编译器

sudo apt-get install vim

8.运行文件

gcc 文件名 -o 日志

9.编译

vim 文件名

10.电脑可以通过ssh远程操控树莓派

电脑应与树莓派连接在同一个网络下

首先通过ifconfig命令,在wlan得到树莓派的ip,类似192.138.264.339这种

然后在电脑cmd上利用ssh pi@192.138.264.339便可连接

img

第一次你会看到一个警告,输入 yes 并按下回车。

请一定关闭电脑防火墙,不然你会发现一直超时连不上!

成功通过 SSH 登入

然后输入树莓派的密码并按回车

成功登入你将会看到树莓派的终端。现在你可以通过这个终端无需物理上访问你的树莓派就可以远程(在当前网络内)在它上面运行指令。

在这里插入图片描述

类似这样。这样的好处是什么呢,直接把树莓派当电脑用巨难受。所以为啥不用电脑

-mfloat-abi=hard -mfpu=neon"

当你看见类似这种玩意报错,无法识别这种命令时,请使用以下技巧

1.根据文件名查找文件所在目录、

目录 参数 文件名

find /home -name arch_select.ccarch_select.cc

此外,find还可以用来查找过去x时间内被修改/读取过的文件:

find . -ctime -20 #将目前目录及其子目录下所有最近 20 天内更新过的文件列出

#-amin n : 在过去 n 分钟内被读取过 #-atime n : 在过去n天内被读取过的文件 #-cmin n : 在过去 n 分钟内被修改过 #-ctime n : 在过去n天内被修改过的文件 #-anewer file : 比文件 file 更晚被读取过的文件 #-cnewer file :比文件 file 更新的文件

2.查找包含某段内容的文件

参数 内容 目录或文件

grep -r -l "cortex" /home/Downloads/srsLTE/

-r:表示在当前文件夹及其子目录中查找; -l:只输出对应文件的包含路径的文件名,不加此参数还会输出包含该内容的整段信息。 还有一些常用参数: -n:显示搜索文本在文件中的行数; -i:忽略大小写问题; -w :只显示全字符合的列;

然后就去把识别不出来的命令删了吧,也许有用。

报错

出现grep: invalid max count错误,原因是某些字符需要添加转义字符\才能被正常识别。 img

部分图片炸了,之后会处理

LaTex

(67条消息) Latex各种命令、符号、公式、数学符号、排版等_CopperDong的博客-CSDN博客_latex中数学公式

· One min read
Sébastien Lorber
Yangshun Tay

Docusaurus blogging features are powered by the blog plugin.

Simply add Markdown files (or folders) to the blog directory.

Regular blog authors can be added to authors.yml.

The blog post date can be extracted from filenames, such as:

  • 2019-05-30-welcome.md
  • 2019-05-30-welcome/index.md

A blog post folder can be convenient to co-locate blog post images:

Docusaurus Plushie

The blog supports tags as well!

And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.

· 2 min read

在此感谢帮助我的老单(dan)学长

本来是有yarn办法的,但因为本人水平有限总是出奇奇怪怪的问题,结果没用成,于是还是选择了github action。

本地构建

这玩意跟着文档做有手就行,不多赘述,在此只详细介绍部署在github上的过程。

  • 首先创一个库,以"用户名.github.io"命名,这是博客特有的命名格式。

  • 随后编辑docusaurus.config.js文件

    js

  • title:标题

  • tagline:你想在主页显示的话

  • url:你博客的网址

  • baseurl:通常为项目名,但如果url中已经有了就直接“/”

  • organizationName:github用户名

  • projectName:项目名

设置personal access token

YD11{QXABM9GFVPJJ}))UT1

QQ截图20220430185901

image

image

note随意,Expiration建议设成无期限,select scopes全点,一步到位。然后点generate token

image

复制保存好你的密钥,就ghp那一行

返回你想发布博客的项目,点settings

image

设置secret变量,选择action

image

image

image

value是之前让你复制的密钥,名字的话建议GITHUBTOKEN当然之后的workflow会用到。

github action

Deployment | Docusaurus

点击上一行的官网

image

这里有两个写好的官方配置文件

image

你依然选之前的博客项目,这里我是随便找了一个

image

image

复制之前的两个官方配置文件

image

将此处修改为自己secret的名字。

然后将本地的my—website文件夹push上去,action就会开始运行,以后想要的blog就放进blog文件夹,然后git push。