Read on Omnivore
Read Original

Highlights&&Note

Faster RCNN使用CNN提取图像特征,然后使用region proposal network(RPN)去提取出ROI,然后使用ROI pooling将这些ROI全部变成固定尺寸,再喂给全连接层进行Bounding box回归和分类预测。

多尺度检测在目标检测中变得越来越重要,对小目标的检测尤其如此。现在主流的目标检测方法很多都用到了多尺度的方法,包括最新的yolo v3。Feature Pyramid Network (FPN)则是一种精心设计的多尺度检测方法
特征金字塔是为了多尺度检测

FPN结构中包括自下而上,自上而下和横向连接三个部分,如下图所示。这种结构可以将各个层级的特征进行融合,使其同时具有强语义信息和强空间信息,在特征学习中算是一把利器了。

Mask RCNN定义多任务损失:
L=L_{cls}+L_{box}+L_{mask}

Content

不断更新目标检测和语义分割的文章,感兴趣的请关注我。

最近在做一个目标检测项目,用到了Mask RCNN。我仅仅用了50张训练照片,训练了1000步之后进行测试,发现效果好得令人称奇。就这个任务,很久之前用yolo v1训练则很难收敛。不过把它们拿来比当然不公平,但我更想说的是,mask RCNN效果真的很好。

所以这篇文章来详细地总结一下Mask RCNN。

阅读更多

Read on Omnivore
Read Original

Highlights&&Note

feature在CNN中也被成为卷积核(filter),一般是3X3,或者5X5的大小
^3ecb3c65

卷积神经网络在本质和原理上还是和卷积运算有一定的联系的
^e3448be7

好了,经过一系列卷积对应相乘,求均值运算后,我们终于把一张完整的feature map填满了。

^3775cc34

非线性激活层

卷积层对原图运算多个卷积产生一组线性激活响应,而非线性激活层是对之前的结果进行一个非线性的激活响应。
指的是对卷积得到的结果再次处理.
非线性激活使用的就是非线性激活函数
^a7676697

卷积操作后,我们得到了一张张有着不同值的feature map,尽管数据量比原图少了很多,但还是过于庞大(比较深度学习动不动就几十万张训练图片),因此接下来的池化操作就可以发挥作用了,它最大的目标就是减少数据量。

池化分为两种,Max Pooling 最大池化、Average Pooling平均池化。顾名思义,最大池化就是取最大值,平均池化就是取平均值。
^251b2749

拿最大池化举例:选择池化尺寸为2x2,因为选定一个2x2的窗口,在其内选出最大值更新进新的feature map。

同样向右依据步长滑动窗口。

阅读更多

Read on Omnivore
Read Original

Highlights&&Note

Tensors are similar to NumPy’s ndarrays, except that tensors can run on GPUs or other hardware accelerators. In fact, tensors and NumPy arrays can often share the same underlying memory, eliminating the need to copy data (see Bridge with NumPy).
Tensor与np.ndarray非常相似 ^baaea2f8

Tensors can be created from NumPy arrays (and vice versa
^60681efc

Bridge with NumPy

Tensors on the CPU and NumPy arrays can share their underlying memory locations, and changing one will change the other.

Tensor to NumPy array

t = torch.ones(5)
print(f”t: {t}”)
n = t.numpy()
print(f”n: {n}”)

t: tensor([1., 1., 1., 1., 1.])
n: [1. 1. 1. 1. 1.]

A change in the tensor reflects in the NumPy array.

t.add_(1)
print(f”t: {t}”)
print(f”n: {n}”)

阅读更多

Read on Omnivore
Read Original

Highlights&&Note

torch.utils.data.DataLoader and torch.utils.data.Dataset.Dataset stores the samples and their corresponding labels, and DataLoader wraps an iterable around the Dataset.
Dataset 用于定义和存储数据及标签,而 DataLoader 则将 Dataset 包装成一个可迭代对象,方便进行批量数据处理和多线程数据加载。 ^40d33fcf

PyTorch offers domain-specific libraries such as TorchText,TorchVision, and TorchAudio
^03b16e1a

To define a neural network in PyTorch, we create a class that inherits from nn.Module. We define the layers of the network in the __init__ function and specify how data will pass through the network in the forward function. To accelerate operations in the neural network, we move it to the GPU or MPS if available.

Using cuda device
NeuralNetwork(
(flatten): Flatten(startdim=1, end_dim=-1)
(linear_relu_stack): Sequential(
(0): Linear(in_features=784, out_features=512, bias=True)
(1): ReLU()
(2): Linear(in_features=512, out_features=512, bias=True)
(3): ReLU()
(4): Linear(in_features=512, out_features=10, bias=True)
)
)
继承自nn.Module的类来定义一个新的神经网络_ ^60509680

Content

Note

Click hereto download the full example code

Learn the Basics ||Quickstart ||Tensors ||Datasets & DataLoaders ||Transforms ||Build Model ||Autograd ||Optimization ||Save & Load Model

Quickstart

阅读更多

Read on Omnivore
Read Original

Highlights&&Note

斯拉夫人,在宗教进入他们文明史之前,他们记录的东西很少,俄罗斯人的历史是以《往年纪事》为开端的,这本书诞生于1377年,记录的事情的起点是在859年,而859年都是唐宣宗时代了,属于唐末民变的时代的开端。
^abefa6cf

类似的故事不光是在俄罗斯,波兰也有,过去波兰不是搞过一个动画片么?
下面这个。

所以为什么西方人注重宗教,中国人看都不看、
简单:宗教对于西方人来说,是其历史,文明史的开端,无比的重要。
对于中国来说,那尽想到什么鸦片战争,八国联军……
^5e22f16a

Content

为什么要辩经?因为咱们这是过渡期,必须知道经文,解构经文。
当然最大的原因还是:好玩。

对于欧洲来说,很多国家的文明史就是宗教史,举个例子。

==斯拉夫人,在宗教进入他们文明史之前,他们记录的东西很少,俄罗斯人的历史是以《往年纪事》为开端的,这本书诞生于1377年,记录的事情的起点是在859年,而859年都是唐宣宗时代了,属于唐末民变的时代的开端。==

而这本书里面有一大坨的宗教概念,什么诺亚的故事,诺亚儿子的故事等等。

阅读更多

Read on Omnivore
Read Original

Highlights&&Note

速度: 经典的目标检测算法使用滑动窗法依次判断所有可能的区域。本文则(采用Selective Search方法)预先提取一系列较可能是物体的候选区域,之后仅在这些候选区域上(采用CNN)提取特征,进行判断。
相较于传统算法,通过滑动窗口寻找,rcnn使用了selective search,再在可能的区域上进行CNN提取特征

RCNN算法分为4个步骤

  1. 候选区域生成: 一张图像生成1K~2K个候选区域 (采用Selective Search 方法)
  2. 特征提取: 对每个候选区域,使用深度卷积网络提取特征 (CNN)
  3. 类别判断: 特征送入每一类的SVM 分类器,判别是否属于该类
  4. 位置精修: 使用回归器精细修正候选框位置

Selective Search 主要思想:

  1. 使用一种过分割手段,将图像分割成小区域 (1k~2k 个)
  2. 查看现有小区域,按照合并规则合并可能性最高的相邻两个区域。重复直到整张图像合并成一个区域位置
  3. 输出所有曾经存在过的区域,所谓候选区域

其中合并规则如下: 优先合并以下四种区域:

  • 颜色(颜色直方图)相近的
  • 纹理(梯度直方图)相近的
  • 合并后总面积小的: 保证合并操作的尺度较为均匀,避免一个大区域陆续“吃掉”其他小区域 (例:设有区域a-b-c-d-e-f-g-h。较好的合并方式是:ab-cd-ef-gh -> abcd-efgh -> abcdefgh。 不好的合并方法是:ab-c-d-e-f-g-h ->abcd-e-f-g-h ->abcdef-gh -> abcdefgh)
  • 合并后,总面积在其BBOX中所占比例大的: 保证合并后形状规则。

阅读更多

Read on Omnivore
Read Original

Highlights&&Note

每年咱们国庆的时候,他们街道都会挂上中国的国旗,当年我们的《战狼2》、《红海行动》、《流浪地球》、《我和我的祖国》电影上映时,塞尔维亚街头都会出现大幅电影海报。

同为遭受过苦难、压迫的第三世界国家,我们和塞尔维亚人民之间,是有共同感情的。
^a09c631d

塞尔维亚、克罗地亚、黑山、斯洛文尼亚、波黑、马其顿……他们曾经都有一个祖国,叫做“南斯拉夫”——南斯拉夫社会主义联邦共和国。

曾经,他们是社会主义兄弟,他们还是欧洲唯一一个不靠苏联红军、不靠欧美盟军、而是靠自己的革命力量战胜纳粹,赢得民族解放的伟大国家。
^f6563399

他们甚至也有着自己的“长征”。

在前两次“围剿”铁托和游击队失败之后,德意法西斯与伪军又发起第三次“围剿”。来势十分凶猛,法西斯军队不仅占领革命根据地,而且大肆屠杀无辜百姓,制造广泛的“无人区”,隔绝游击队与人民的联系。南反法西斯斗争进入最困难的时期。南共中央决定突破敌人封锁线进行战略转移,这样就开始了堪称欧洲的“长征”。
^b1c8e8e7

南斯拉夫长征甚至也有自己的“遵义会议”,在战斗最惨烈的苏杰斯卡战役后(苏捷斯卡战役很像“湘江血战”),游击队司令部在一个小磨坊召开会议,这就是南斯拉夫的遵义会议,会议上铁托决定向敌人力量薄弱的波斯尼亚地区转移,在那里建立新的根据地。
^3092b473

南斯拉夫人民曾经也有一个统一、富强、独立的大国梦啊,只可惜,在内外敌人的联手破坏、绞杀下破灭了,国家被拆散,四分五裂,人民被轰炸被屠杀,民选的领导人被抓捕,被国际法庭审判,死得不明不白。
^612fd013

分裂的背后,往往都是国际强权的阴谋和阳谋。那些顶级的掠食者,不愿意另一个统一的、强大的挑战者出现,不愿意他们成长起来,所以,他们花钱策反,动用媒体和舆论、文化入侵,鼓动分裂和内斗,鼓吹独立和自由,甚至直接武装干涉,最终把潜在的对手一一肢解,然后掠夺他们的人才和资源。

阅读更多

Read on Omnivore
Read Original

Highlights&&Note

工业化本身就是极大偶然,资本主义是后世追加的,如果没有工业化也不存在资本主义一说,只有封建主义,工业化不是人类发展的必然方向,只是一个偶发事件。
^a0732981

这个世界不可能全部进入工业化,只有部分国家可以工业化,因为工业化需要市场,资源供给和技术,而资本的利润需要收割,工业化国家的矛盾需要外部化,这个不是制度、意识形态或者道德问题,这个是工业化的本质问题,扩大生产必然带来市场扩张需求,压低资源价格需求和技术升级需求,最后只能走入帝国争霸,大多数人口和国家只能是其它工业化片区的外围。
残酷的世界真相 ^21631b40

新自由主义后形成的后发国家港口型工业区,那不是这些后发国家的,这个道理这么难懂吗?搞工业和搞工业化不是一个概念,工业化是社会革命为前提,工业谁都能搞,两码事,这些外资控制的工业他的脐带在工业化国家,不在这些后发国家
^1cafc216

当然先发展的工业化国家倒是有掉沟里的风险的,一旦几项要素不匹配了,或者缺了,那就没办法继续玩了,工业化没有真正的完成时,只有进行时,一旦滚不起来,停了就死。
只有死亡才会落地的鸟 ^e52e2cf8

Content

简单说吧,还是有朋友纠结后发国家的工业化问题或者叫追赶问题
第一,==工业化本身就是极大偶然,资本主义是后世追加的,如果没有工业化也不存在资本主义一说,只有封建主义,工业化不是人类发展的必然方向,只是一个偶发事件。==
第二,==这个世界不可能全部进入工业化,只有部分国家可以工业化,因为工业化需要市场,资源供给和技术,而资本的利润需要收割,工业化国家的矛盾需要外部化,这个不是制度、意识形态或者道德问题,这个是工业化的本质问题,扩大生产必然带来市场扩张需求,压低资源价格需求和技术升级需求,最后只能走入帝国争霸,大多数人口和国家只能是其它工业化片区的外围。==
第三,==新自由主义后形成的后发国家港口型工业区,那不是这些后发国家的,这个道理这么难懂吗?搞工业和搞工业化不是一个概念,工业化是社会革命为前提,工业谁都能搞,两码事,这些外资控制的工业他的脐带在工业化国家,不在这些后发国家==,严格意义上说,只有中国透过地缘博弈和高维组织度完成了自主工业化,韩国算半个,即使如此我们在过去某两段时间内也有很强的外资控制属性,当然因为本身工业体系和主权的完整有惊无险的走过去了。
第四,==当然先发展的工业化国家倒是有掉沟里的风险的,一旦几项要素不匹配了,或者缺了,那就没办法继续玩了,工业化没有真正的完成时,只有进行时,一旦滚不起来,停了就死。==

阅读更多

Read on Omnivore
Read Original

Highlights&&Note

  • Understand the difference between one-, two- and n-dimensional arrays in NumPy;
  • Understand how to apply some linear algebra operations to n-dimensional arrays without using for-loops;
  • Understand axis and shape properties for n-dimensional arrays.
    理解不同维度的数组
    不适用for循环计算数组
    n-数组的axis与shape值
    ^39b79e0f

For example, the array for the coordinates of a point in 3D space,[1, 2, 1], has one axis. That axis has 3 elements in it, so we say it has a length of 3. In the example pictured below, the array has 2 axes. The first axis has a length of 2, the second axis has a length of 3.

[[1., 0., 0.],
[0., 1., 2.]]
^b040311e

ndarray.shape

the dimensions of the array. This is a tuple of integers indicating the size of the array in each dimension. For a matrix with n rows and m columns, shape will be (n,m). The length of theshape tuple is therefore the number of axes, ndim.
对于矩阵[n,m]
shape是矩阵的形状,(n,m)
shape的length是矩阵的维度ndim,2
^6158dbf4

ndarray.size

the total number of elements of the array. This is equal to the product of the elements of shape.
^5372022b

ndarray.dtype

阅读更多

Read on Omnivore
Read Original

Highlights&&Note

Python is simpler to use, available on Windows, macOS, and Unix operating systems, and will help you get the job done more quickly.
更加轻量级的脚本语言 ^bafd84be

Python is simple to use, but it is a real programming language, offering much more structure and support for large programs than shell scripts or batch files can offer.
相较于shell与batch files,能够提供更多接近编程语言的特性 ^51317e08

Python is an interpreted language
_- 编译性语言

  • 解释性语言
    • 脚本语言
      脚本语言是解释性语言的一种.
      Python is scripting language. But it is more than just a scripting language._ ^b49ea4e9

Content

If you do much work on computers, eventually you find that there’s some task you’d like to automate. For example, you may wish to perform a search-and-replace over a large number of text files, or rename and rearrange a bunch of photo files in a complicated way. Perhaps you’d like to write a small custom database, or a specialized GUI application, or a simple game.

If you’re a professional software developer, you may have to work with several C/C++/Java libraries but find the usual write/compile/test/re-compile cycle is too slow. Perhaps you’re writing a test suite for such a library and find writing the testing code a tedious task. Or maybe you’ve written a program that could use an extension language, and you don’t want to design and implement a whole new language for your application.

Python is just the language for you.

You could write a Unix shell script or Windows batch files for some of these tasks, but shell scripts are best at moving around files and changing text data, not well-suited for GUI applications or games. You could write a C/C++/Java program, but it can take a lot of development time to get even a first-draft program. ==Python is simpler to use, available on Windows, macOS, and Unix
operating systems, and will help you get the job done more quickly.==

Python is simple to use, but it is a real programming language, offering much more structure and support for large programs than shell scripts or batch files can offer. On the other hand, Python also offers much more error checking than C, and, being a very-high-level language, it has high-level data types built in, such as flexible arrays and dictionaries. Because of its more general data types Python is applicable to a much larger problem domain than Awk or even Perl, yet many things are at least as easy in Python as in those languages.

阅读更多