【Java】Java多线程
Java多线程1. 创建线程1.1 创建线程类Java使用java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段程序流即一段顺序执行的代码。Java使用线程执行体来代表这段程序流。
创建新执行线程有两种方法。一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。接下来可以分配并启动该子类的实例。创建线程的另一种方法是声明实现 Runnable 接口的类。该类然后实现 run 方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动。
Java中通过继承Thread类来创建并启动多线程的步骤如下:
定义Thread类的子类,并重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务,因此把run()方法称为线程执行体。
创建Thread子类的实例,即创建了线程对象
调用线程对象的start()方法来启动该线程
代码如下:
测试类:123456789101112public class Demo01 { ...
【PID控制算法】 python模拟PID控制算法
PID控制Python模拟1. PID控制器123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112import timeclass PID: """PID Controller """ def __init__(self, P=0.2, I=0.0, D=0.0, current_time=None): self.Kp = P self.Ki = I self.Kd = D self.sample_interval = 0 self.curren ...
【注意力机制】 通道注意力机制以及3D卷积
通道注意力机制以及3D卷积1. SEnet
SENet的Block单元,图中的Ftr是传统的卷积结构,X和U是Ftr的输入(C’xH’xW’)和输出(CxHxW)。
SENet增加的部分是U后的结构:对U先做一个Global Average Pooling(图中的Fsq(.),作者称为Squeeze过程),输出的1x1xC数据再经过两级全连接(图中的Fex(.),作者称为Excitation过程),最后用sigmoid(论文中的self-gating mechanism)限制到[0,1]的范围,把这个值作为scale乘到U的C个通道上, 作为下一级的输入数据。这种结构的原理是想通过控制scale的大小,把重要的特征增强,不重要的特征减弱,从而让提取的特征指向性更强。
Excitation部分是用2个全连接来实现 ,第一个全连接把C个通道压缩成了C/r个通道来降低计算量(后面跟了RELU),第二个全连接再恢复回C个通道(后面跟了Sigmoid),r是指压缩的比例。作者尝试了r在各种取值下的性能 ,最后得出结论r=16时整体性能和计算量最平衡。为什么要加全连接层呢?这是为了利用通道间的相关 ...
【标签分配】OTA阅读笔记
OTA阅读笔记OTA: Optimal Transport Assignment for Object Detection
1. 什么是标签分配为了训练目标检测器,需要为每个anchor 分配 cls 和 reg 目标,这个过程称为标签分配或者正采样。
cls指分类置信度,reg指检测框的偏移量。
通常基于Anchor的目标检测器会生成大量的预先定义好的Anchor,这些Anchor的数量是要远多于ground truth box的数量的。
以YOLOv3为例,每一个gt box最终都会有一个对应的Anchor,找到自己对应的gt box的Anchor算作正样本,没有找到的,比如Anchor坐标处在背景当中的算作负样本,另外有一部分会被直接忽略。
标签分配:三个特征图一共 8 × 8 × 3 + 16 × 16 × 3 + 32 × 32 × 3 = 4032 个anchor。
正例:任取一个ground truth,与4032个anchor全部计算IOU,IOU最大的anchor,即为正例。并且一个anchor,只能分配给一个ground truth。例如第一个ground trut ...
【最优传输】Optimal Transport最优传输笔记
1. 什么是最优传输
2. 基本概念3.1 离散测度 (Discrete measures)首先,说一下概率向量(或者称为直方图,英文:Histograms, probability vector)的定义:
上述公式的含义:一个长度为n的数组,每个元素的值在[0, 1]之间,并且该数组的和为1,即表示的是一个概率分布向量。
比如[0.1,0.2,0.3,0.4]就是一个概率向量。
离散测度:所谓测度就是一个函数,把一个集合中的一些子集(符合上述概率分布向量)对应给一个数[4]。具体公式定义如下:
上述公式含义:以$a_i$为概率和对应位置$x_i$的狄拉克δ函数值乘积的累加和。下图很好地阐述了一组不同元素点的概率向量分布:
上图中红色点是均匀的概率分布,蓝色点是任意的概率分布。点状分布对应是一维数据的概率向量分布,而点云状分布对应的是二维数据的概率向量分布。
3.2 蒙日(Monge)问题蒙日(Monge)问题的定义:找出从一个 measure(测度)到另一个measure的映射,使得所有$c ( x_i , y_j )$的和最小,其中$c$表示映射路线的运输代价,需要根据 ...
【内网穿透】使用Frp + VNC配置远程桌面杂记
一. VNC部分参考链接Jetson nano(Ubuntu18.04) 网线连接电脑,实现VNC远程桌面_PiQiuNi的博客-CSDN博客_jetson nano连接电脑
本文通过网线连接jetson nano(Ubuntu18.04) 与windows电脑,实现了网络共享及VNC远程桌面访问配置Jetson nano (此过程需要连接屏幕及外设)以下内容来自系统自带文档 “README-vnc.txt”
安装VNC
12sudo apt updatesudo apt install vino
开启VNC服务实现开机自动启动
12mkdir -p ~/.config/autostartcp /usr/share/applications/vino-server.desktop ~/.config/autostart
配置VNC服务
12gsettings set org.gnome.Vino prompt-enabled falsegsettings set org.gnome.Vino require-encryption false
设置连接密码
12gsettings set ...
【目标检测】FCOS学习笔记
FCOS 学习笔记FCOS: Fully Convolutional One-Stage Object Detection
1. 前言目前大多数先进的目标检测模型,例如RetinaNet、SSD、YOLOv3、Faster R-CNN都依赖于预先定义的锚框。相比之下,本文提出的FCOS是anchor box free,而且也是proposal free,就是不依赖预先定义的锚框或者提议区域。通过去除预先定义的锚框,FCOS完全的避免了关于锚框的复杂运算,例如训练过程中计算重叠度,而且节省了训练过程中的内存占用。更重要的是,本文避免了和锚框有关且对最终检测结果非常敏感的所有超参数。由于后处理只采用非极大值抑制(NMS),所以本文提出的FCOS比以往基于锚框的一阶检测器具有更加简单的优点。
1.1 锚框的缺点
检测表现效果对于锚框的尺寸、长宽比、数目非常敏感,因此锚框相关的超参数需要仔细的调节。
锚框的尺寸和长宽比是固定的,因此,检测器在处理形变较大的候选对象时比较困难,尤其是对于小目标。预先定义的锚框还限制了检测器的泛化能力,因为,它们需要针对不同对象大小或长宽比进行设计。
为了提高召 ...
【目标检测】Retinanet学习笔记
1.Retinanet阅读笔记1.1 网络结构
用Resnet作为特征提取层,之后经过FPN网络进行多尺度的特征融合。
每一个尺度分配9个对应大小的anchor,每个尺度下有3x3个anchor(即3种scale的anchor和3种ratio构成9种anchor)。
其中A=9,4A代表每个锚点对应的九个不同锚框对应的x,y,w,h,KA代表每个锚框对应的K个种类
主干特征提取网络如下
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657import torch.nn as nnimport torchimport mathimport torch.utils.model_zoo as model_zoofrom torchvision.ops import nmsfrom retinanet.utils import BasicBlock, Bottleneck, BBoxTransform, ClipBoxesfrom re ...
【目标检测】YOLOv1-v3学习笔记
YOLOv1-v3学习笔记1.YOLOv11.1 论文思想将一幅图像分成SxS个网格(grid cell), 如果某个object的中心 落在这个网格 中,则这个网格就负责预测这个object
每个网格要预测B个bounding box,每个bounding box 除了要预测位置之外,还要附带预测一个confidence值。每个网格还要预测C个类别的分数。
这个 confidence scores反映了模型对于这个栅格的预测:该栅格是否含有物体,以及这个box的坐标预测的有多准。公式定义如下:
如果这个栅格中不存在一个object,则confidence score应该为0。否则的话,confidence score则为predicted bounding box与 ground truth box之间的 IOU。
YOLO对每个bounding box有5个predictions:x, y, w, h和 confidence。坐标x,y代表了预测的bounding box的中心与栅格边界的相对值。坐标w,h代表了预测的bounding box的width、height相对于整幅 ...
【爬虫】使用baiduspider实现一个异步爬虫
代码仓库:https://github.com/Kakaluoto/asnyc_spider
爬虫数据收集1. 各文件说明
img:存放爬取的图片
async_spider:异步爬虫类
data_collector:爬虫执行脚本,从这里启动
ip_pool:代理IP池,管理可用的代理IP
image_selector:图片筛选器,将爬取的不符合要求的图片删除
2. 涉及到的一些工具和项目
爬虫工具: BaiduSpider: https://github.com/BaiduSpider/BaiduSpider
代理IP池: ProxyPool 代理IP池: https://github.com/jhao104/proxy_pool
随机生成useragent: pip install fake-useragent
异步http请求,异步文件读写: aiohttp, aiofiles, asyncio
3. 相关环境依赖3.1 安装baiduspider1pip install baiduspider
在路径site-packages/baiduspider下找到_init_ ...