简介
SegNet是一个由剑桥大学团队开发的图像分割的开源项目,该项目可以对图像中的物体所在区域进行分割,例如车,马路,行人等,并且精确到像素级别。图像分割的实现由一个卷积神经网络构成,该网络主要有两部分组成:encoder与decoder。encoder是一个沿用VGG16的网络模型,主要对物体信息进行解析。decoder将解析后的信息对应成最终的图像形式,即每个像素都用对应其物体信息的颜色(或者是label)来表示。后面章节会对SegNet的模型进行详解。但是由于SegNet是一个主要由卷基层组成像素处理级的网络,对于像FPGA这类移动设备来说,计算量还是有些大。在选取处理速度和计算量的平衡当中,我们在选择使用另一个轻量级的SegNet实现,使用此实现加上我们的AI芯片DV700,可以在FPGA上运行。
网络模型概要SegNet 网络结构
如上图所示,SegNet是一个由encoder(左)和decoder(右)组成的对称网络。输入一张RGB图像后,网络根据图像中物体的语义信息,把图像中的物体进行分类(例如,“马路”,“汽车”, “楼房”等),最后生成一张分割图像。与SSD图像检测(详见SSD文章)生成的bounding box相比,图像分割可以对物体生成更加精准的二维区域信息,比如道路的free space和路标等信息,这些会给汽车自动驾驶提供极大帮助。
Encoder
虽然有着一个高大上的名字,但是encoder本身其实就是一连串的卷积网络。该网络主要由卷基层,池化层和BatchNormalization层组成。卷基层负责获取图像局域特征,池化层对图像进行下采