MultiThreading programming #3
Asynchronous programming #3ThreadUse Thread in Applications
在带界面的WPF、UWP、WinForm等程序种,若主线程执行耗时的操作,就会导致整个程序无响应。因为主线程同时还要处理消息循环,而渲染和鼠标键盘事件处理等工作都是在消息循环中执行的
针对这种耗时的操作,一种流行的做法使启用一个worker线程,执行完操作后再更新到UI
富客户端应用 的线程模型通常是:
UI控件只能从创建他们的线程来进行访问(通常是主线程)
当想从worker线程更新UI时,应该把请求交给UI线程
Synchronization Contexts
在System.ComponentModel下有一个抽象类:SynchronizationContext,它使得Thread Marshaling得到泛化
Thread Marshaling:把一些数据的所有权从一个线程交给了另一个线程
Thread Pool
当开始一个线程时,将花费数百微秒来组织一些内容(如一个新的局部变量栈),产生了开销
线程池可以节省这些开销:
预先创建一个可循环使用 ...
You Only Look Once #2
YOLO9000: Better, Faster, StrongerImprovement
Yolov1还存在着诸多缺陷:
相比于其他两阶段目标检测算法,Yolov1虽然速度更快,但准确率更低
将图片中全部目标检出的能力较差,尤其是密集且小的物体
Yolov1对目标定位的能力更差
Yolov2对上一版本进行了许多改进,并取得了不错的效果
改进效果主要体现在:Better(更准确)、Faster(更快)、Stronger(能检测更多种类的目标)
改进方法主要有:Batch Normalization、High Resolution classifier、Anchor、Dimension、Direct Location、Fine-grained Features、Multi-scale Training
Prime Algorithm
Batch Normalization
You Only Look Once #1
You Only Look Once: Unified, Real-Time Object DetectionPrime Algorithm
概述
YOLO将输入图片划分为SxS个网格。每个网格预测B个边缘框,表示为(x,y,h,w,c),分别代表中心点坐标、边缘框高宽和边缘框置信度(图片中越粗的线c越大);同时,每个网格还要预测一组类别概率(softmax分类概率)来确定目标的类别
上述过程训练阶段和测试阶段具体方法有所不同,下文将两个阶段分别讨论
预测阶段
在预测阶段,网络直接接受3x448x448的图片作为输入。图片经24层卷积提取特征,再经两个全连接层回归得到7x7x30(S=7,B=2,类别数=30-Bx5=20)的张量作为输出,即输出49个网格生成的98个边缘框的信息及每个网格所属20个类别分别的概率(全部的信息都是由神经网络预测得出的)。这也表明了YOLOv1最多只能检测SxS个目标,且难以检测小而密集的目标
在获取YOLO提供的预测信息后,需要进行一系列的后处理(置信度过滤和非极大值抑制)得到目标检测结果。下图为SxS个网格生成的BxSxS个边缘框,颜 ...
Vison in Transformer
An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale从2012年AlexNet提出以来,卷积神经网络在计算机视觉领域一直占据统治地位。而本篇论文的研究表明,拥有足够多数据进行预训练的情况下,Transformer网络架构也可以把计算机视觉问题解决的很好。更进一步来说,这篇论文的提出打破了cv和nlp之间的壁垒,在多模态领域也产生了很大影响
Intro
将每一张图片视作由许多16x16的patch组成,每个patch当作nlp领域中的单词,一张图片便可视作一个sequence
CV领域不需要局限于CNNs的结构,纯Transformer在预训练集足够大时在图像分类任务达到了目前CNNs的SOTA,并且需要更少的计算资源
使用Transformer架构,到目前为止还未出现增加数据和模型复杂度导致性能饱和的现象
CNNs具有人为规定的两个先验信息(局部性、平移不变性),而Transformer是缺少这样的信息的,所以在数据集不够的时候时VIT比CNNs的SOTA要差一点(因为VIT需要自己去学习两 ...
Transformer
Attention Is All Your Need以往主流的序列转录(seq2seq)模型中常常基于包含Encoder与Decoder的复杂RNN或CNN,这些模型也会在Encoder与Decoder中使用Attention机制。Transformer仅仅使用了Attention机制,完全没用到循环和卷积,将循环层换为了Multi-headed Attetion。Transformer训练速度更快,预测能力更好。
Advantages
RNN难以并行计算计算效率低,Transformer可并行。
RNN带有时序信息,但在序列较长时,早期的信息可能在后期丢失。Attention可通过在输入序列中加入index增加时序,并且不会存在信息丢失问题。
用CNN可以替换掉RNN实现并行计算,但由于感受野的限制其依然存在难以对长序列进行建模的问题。Transformer中的Attention机制一次性看到所有的序列,消除了这一问题。
CNN可利用多个输出通道识别不一样的模式,在Transformer中使用Multi-headed Attetion,也实现了这样的特性。
Model Ar ...