锁定高解析串流分析,清大开源CNN架构HarDNet,图片分类速度比常见ResNet-50架构快30%

自动驾驶汽车上路的关键是,得先快速、准确分辨出路上人、车和物体,能够更快更准确地进行视频的图像语义分割(Semantic Segmentation),决定了操控AI安全驾驶的反应能力,如何单靠车上AI主机提供到毫秒级识别推论,是自动驾驶汽车AI的一大挑战。清大一个研究团队,最近开源了自己改良的新CNN架构,找到了能加快推论速度的关键做法。

最近清大信息工程系教授林永隆带领的研究团队,以DenseNet为基础,开发了一个低内存数据流(Low Memory Traffic)的CNN架构,称为HarDNet。研究团队指出,运用该架构训练的模型进行图片分类任务,推论时间比常用的ResNet-50架构缩短了30%,若是进行对象侦测与识别的任务,则比SSD-VGG缩短了45%。而这个架构在今年10月底的ICCV会议发布,且已在GitHub开源。

清大研究团队成员阮郁善表示,Memory Traffic是指数据进出内存的次数。以DenseNet来说,会造成大量数据进出内存,是因为该架构中每一层都有捷径(Shortcut)的连接,这也意味着,每一层截取的特征值(Feature),都会保留到最后一层来运算,而且,保留下来的特征值也会到下一层截取更细节的特征值,如此一来,造成数据搬运次数多,就会耗费许多运算时间。

因此,研究团队减少了DenseNet架构中,层数(layer)之间的捷径,来降低数据搬运次数、加快运算时间,不过,捷径减少后,由于截取的特征值变少,模型准确率也会下降。于是,研究团队也改变了DenseNet每一层的权重数,也就是针对捷径连接更多的layer,来增加运算量、截取更多的特征值,借此维持模型准确率。而这个改良版的DenseNet模型,也被重命名为HarDNet。

如图所示,由于DenseNet的捷径连接多,造成数据搬运次数多,所以需要较长的运算时间,但改良后的HarDNet,减少了捷径的同时,也调整了每一层的权重数,能在维持识别准确率的同时加快运算速度。

研究团队也将U-HarDNet70模型运用在高分辨率(1024*2048)的即时图片分割工作上,来验证该架构的高推论速度。比如在Nvidia GTX 1080ti的环境下,能达到53 fps(Frame per second,每秒帧数)的推论速度,且达到76%的准确率。阮郁善表示,尽管还有可以达到更高准确率的架构,但如果将运算速度也纳入考量,“U-HarDNet70的综合表现更好。”

与其他架构相比,U-HarDNet70能在53 fps的推论速度下,达到76%的准确率。

研究团队也将HarDNet与一般常见CNN架构相比较,HarDNet可以在低错误率、高运算量的情况下,仍然保持快速的推论速度。阮郁善表示,“其他研究者可能想追求,运算量不要太大,模型推论可以跑更快,但我们是点出来说,一直追求较低的运算量不一定跑比较快,就像HarDNet的运算量高,但是因为数据搬运次数较少,所以推论速度比DenseNet快了三成以上。”

如图所示,左侧Top-1 Error是指识别错误率,数值越低越好;Inference Time是指推论时间,数值越低越快;而图中圆圈的数值,是指运算量(单位:Giga MACs)。而HarDNet的表现,可以在低错误率、高运算量的情况下,保持快速的推论速度。

因此,HarDNet适合如高分辨率、即时图片分析等运算量大的应用,如自动驾驶、医疗诊断、安全识别、人机交互等。而该架构也已经在GitHub上开源。