| by YoungTimes | No comments

YOLOv2 on Pascal VOC2012 – 网络模型(Model)

YOLOv2模型结构

YOLO的输入输出很复杂,Loss函数更加复杂,但是它的网络结构比较简单,只是Convolusion + Batch Normalization + Leaky Relu的重复叠加。

下面是experiencor/keras-yolo2定义的网络模型。

参考链接

https://fairyonice.github.io/Part_3_Object_Detection_with_Yolo_using_VOC_2012_data_model.html

[……]

继续阅读

Read More
| by YoungTimes | No comments

挖一口自己的井

两个和尚的故事

两个和尚分别住在相邻的两座山上的庙里。两座山之间有一条小溪,这两个和尚每天都会在同一时间下山去小溪挑水。久而久之,他们便成为了好朋友。

就这样,时间不知不觉已经过了五年。突然有一天,左边这座山的和尚没有下山挑水,右边那座山的和尚心想:他大概睡过头了吧。

第二天左边这座山的和尚还是没有下山挑水,第三天也一样。过了一个星期还是一样,直到过了一个月,右边那座山的和尚终于忍不住了,他心想:我的朋友可能生病了,我要过去拜访他,看看能帮上什么忙。

于是他便爬上了左边这座山,去探望他的老朋友。

他到了左边这座山的庙里发现他的老友正在悠闲的打太极拳。他很好奇地问:[……]

继续阅读

Read More
| by YoungTimes | No comments

深入理解ROI Align和ROI Warp

ROI Pooling的缺陷

如前面文章<深入理解ROI Pooling>中所述,ROI Pooling的主要问题在于它在处理过程中两次量化(Quantization)丢失了一些信息(下图深蓝色区域和浅蓝色区域)。

由于信息丢失,执行ROI Pooling之后,此时的候选框已经和最开始回归出来的位置有一定的偏差,从而会影响检测或者分割的准确度。

SetUp

在开始ROI Align之前,先看看引入ROI Align的Mask R-CNN。

Mask R-CNN中的对比测试结果可以明显看到ROI Align相对于ROI Pooling的优势。

[……]

继续阅读

Read More
| by YoungTimes | No comments

深入理解ROI Pooling

本文主要讨论Fast R-CNN论文中使用的ROI Pooling(上图中蓝色矩形框部分)。

什么是ROI

ROI是Region of Interest的缩写,是原始图像上的一个Proposed Region。提取ROI的方法有很多,本文不详细讨论。

Fast R-CNN是如何工作的

Feature extraction

Fast R-CNN通过卷积神经网络进行Feature提取,生成Feature Map。

上述例子中,输入图像的大小为512 x 512 x 3(Width x Height x Channels),输出的Feature Map大小为1[……]

继续阅读

Read More
| by YoungTimes | No comments

解决问题的能力比技术本身更重要

很多程序员都有一个技术理想,幻想着通过不断学习,不断提升自己在某个领域的技术能力,从而获得持续的竞争力。这个现象在刚毕业或者工作时间不长的程序员中尤为常见,直至上升通道受阻,或者出现中年危机,大部分人才会意识到这条路在当下的中国难以走通。

技术只是解决问题的手段

上周一个同学离职,问及原因,说是不想涉及业务,要去追求纯粹的技术。这种思路我非常理解,毕竟曾经也有过类似的想法。但是现在我的想法已经发生了很大的变化。

举个例子,某个明星创业公司,上线某个业务之后非常火爆,一时间访问量暴增,服务器访问压力太大,频频出现服务无响应甚至宕机的事情。怎么解决这个问题呢? 重新开发性能更高,[……]

继续阅读

Read More
| by YoungTimes | No comments

YOLOv2 Loss函数详细分析

Batch Generator

[插入Input和Output] 中讨论了Pascal VOC2012数据集上YOLOv2的Training输入数据和Ground Truth是如何生成的,并且实现了一个SimpleBatchGenerator。

YOLOv2 Loss Function

YOLOv2的Paper中并没有讲述它的Loss函数是如何定义的。本文尝试理解【参考材料2】中实现的YOLOv2的Loss函数。

回顾下YOLOv1的Loss函数

YOLOv1中定义的Loss函数如下:

YOLOv2论文中描述了与YOLOv1网络结构的差异:

W[……]

继续阅读

Read More
| by YoungTimes | No comments

Tensorflow中的乘法运算

1.tf.multiply()-两个矩阵中对应元素各自相乘

tf.math.multiply()实现将矩阵x和矩阵y逐个元素(element-wise)相乘,返回一个新的矩阵。注意它实现的是元素级别的相乘,也就是两个相乘的数元素各自相乘。

若w为m*1或者1*1的矩阵,x为m*n的矩阵,通过元素级相乘得到一个 m*n 的矩阵。

2*1的矩阵与2*4的矩阵相乘:

1*1的矩阵与2*4的矩阵相乘:

若w为m*n的矩阵,x为m*n的矩阵,通过元素级相乘得到一个 m*n 的矩阵。

w的行数和列数均为1或者w的列数只能为1或与x的列数相[……]

继续阅读

Read More
| by YoungTimes | No comments

理解tf.transpose

本文介绍Tensorflow中的transpose()函数。函数的原型如下:

tf.transpose函数中文意思是转置,主要用于交换Input Tensor的不同维度。

tf.transpose的第一个参数a是Input Tensor。

tf.transpose的第二个参数perm指定Tensor的维度。tf.transpose(x, perm=[1,0,2])表示将三维Input Tensor的第一维和第二维进行交换。如果没有显式指定perm,默认perm = [n – 1, n -2, …, 0],其中n = rank(a)。

如果Input Tensor[……]

继续阅读

Read More
| by YoungTimes | No comments

CNN模型-ResNet、MobileNet、DenseNet、ShuffleNet、EfficientNet

文章来源:
https://medium.com/@CinnamonAITaiwan/cnn%E6%A8%A1%E5%9E%8B-resnet-mobilenet-densenet-shufflenet-efficientnet-5eba5c8df7e4

CNN演进

下图为我们了展示了2018前常用CNN模型大小与Accuracy的比较,网络上不乏介绍CNN演进的文章[LeNet/AlexNet/Vgg/ Inception/ResNet],写的也都很好,今天我们为各位读者介绍几个最新的CNN模型,如何搭建以及他们的优势在哪里。

CNN经典架构

要了解最新模型的[……]

继续阅读

Read More
| by YoungTimes | No comments

2D多边形切分(2D Polygon Partition)

CGAL提供了一系列多边形切分算法,支持将单个多边形切分成若干个小的多边形,每个多边形之间互不交叉,总和等于原多边形大小。

1.Monotone Partitioning

1.1 什么是单调多边形(monotone polygon)

在几何形状中,如果与L垂直的每条线最多与多边形P相交两次,则称平面中的多边形P相对于直线L为单调的。类似地,如果与L垂直的每条线最多一次与C相交,则折线C相对于直线L称为单调。

1.2 Y Monotone Partition

对一个多边形进行Y单调切分就是要求切分后的子多边形都是Y单调多边形。CGAL提供了CGAL::y_mon[……]

继续阅读

Read More