计算机系统应用  2020, Vol. 29 Issue (10): 192-198   PDF    
基于单视图3D重建的快递纸箱体积测量算法
冯相如, 朱明     
中国科学技术大学 信息科学与技术学院, 合肥 230027
摘要:如何简单、精确地对快递纸箱进行体积测量是智慧物流中的一个难点, 本文以物流行业中的快递纸箱作为研究对象, 提出了基于3D重建网络精确测量快递纸箱体积的算法. 首先通过图像预处理分割快递纸箱与背景图像并计算纸箱实际长度, 接着使用3D重建网络得到快递纸箱的体素模型, 最终后处理模块剔除噪点后计算出快递纸箱的体积. 实验证明, 我们的算法对快递纸箱的3D重建性能有一定的提升, 并能简单精确地获得快递纸箱的体积.
关键词: 快递纸箱    3D重建    体积测量    
Volume Measurement Algorithm of Express Carton Based on Single-View 3D Reconstruction
FENG Xiang-Ru, ZHU Ming     
School of Information Science and Technology, University of Science and Technology of China, Hefei 230027, China
Abstract: How to measure the volume of express cartons simply and accurately is a difficult point in smart logistics. This study takes the express cartons in the logistics industry as the research object and proposes an algorithm for accurately measuring the volume of express cartons based on a 3D reconstruction network. To calculate the actual length of the carton, the image preprocess part segments the picture into express carton and background. Then the algorithm uses the 3D reconstruction network to obtain the voxel model of the express carton. Finally, removing the noise by the post-processing module, the algorithm gets the volume of the express carton. As the experiments show, the proposed algorithm improves the 3D reconstruction performance and obtains the volume of the express carton simply and accurately.
Key words: express carton     3D reconstruction     volume measurement    

在物流行业中的快递纸箱的体积测量非常重要, 但相对于重量等其他基础数据, 它更难获得. 自动获取快递纸箱体积的意义主要体现在智慧物流的仓储、运输和派送3个环节. 当我们自动获取快递纸箱的体积后, 可以根据其体积大小更好的分配运输工具; 在配送环节, 精确的尺寸信息可以让快递员有规划地将商品投递到不同尺寸的临时存放的快递箱柜内, 帮助节约存储空间和效率. 目前对物流中的快递纸箱等规则物体的体积测量方法主要有: 人工测量法、仪器测量法、3D重建技术.

在2015年及其以前, 国内的所有快递的测量几乎都是由快递员人工测量完成的[1], 耗费了大量的人力和时间, 频繁的手动操作对快递员是一种极大的负担, 测量精度也很难得到保证, 因此导致物流行业的效率非常低. 为了提高物流效率, 测量光幕和激光雷达等仪器设备被应用于快递物流行业中, 刘士兴等人[2]利用测量光幕提出了基于线性回归分析的边缘拟合底面建模体积测量系统, 毛丹辉等人[3]详细介绍了激光技术在体积测量中的应用现状. 但是该方法也存在着一定的不足, 测量光幕除了对物品摆放有一定的要求, 还对工作环境有所限制, 而激光雷达等设备也比较昂贵, 增加了物流行业的成本.

第一代基于图像的3D重建技术主要是基于几何视角来理解重建3D到2D的投影关系, 并建立有效地数学模型来解决这一问题. 王玉伟等人[4]利用训练好的RCF网络模型得到图像中箱体的边缘二值图, 并通过预处理获取目标箱体的边缘与顶点, 最后通过双目立体视觉获得其体积, 宓逸舟[5]同样用了双目立体视觉的算法对快递包裹进行了体积测量. 但是这类方法过程比较复杂, 需要进行精准的相机标定和多张不同视角的图像, 这会大大限制多种环境下的应用. 由于最近几年深度学习的快速发展, 基于图像的深度学习构架出了第二代3D重建技术, 在大量数据的支撑下实现单视图直接重建出物体的三维信息, 而不需要复杂的标定和数学过程.

本文提出的基于第二代3D重建的快递纸箱体积测量算法, 是让快递员用普通手机正对着快递纸箱拍照并上传到服务器, 通过部署在服务器上体积测量算法计算出快递纸箱的体积, 最终将结果在手机上显示. 相对于前面几种方法, 该方法仅需要拍摄一张照片便可获得其体积信息, 并对工作环境没有特殊的要求, 成本低, 适用性强.

本文第1节阐述基于单视图3D重建的相关研究, 并简单介绍所设计的体积测量算法; 第2节详细介绍整个体积测量算法的各个模块; 第3节是实验结果对比与分析, 验证该算法对快递纸箱体积测量的有效性; 第4节对全文总结, 并展望下一步工作.

1 概述 1.1 单视图的3D重建

3D重建问题可以归结为通过n张RGB图像预测出单个或多个目标X, 并尽可能地缩小预测形状与真实形状之间的差异. 在过去的数十年中, 计算机视觉和计算机图形学的专家对3D重建进行了很多的研究. 自2015年首次将卷积神经网络用于基于图像的3D重建[6], 并有着十分不错的表现后, 越来越多人专注于使用深度学习技术从单张或多张RGB图像来估计通用对象的3D形状. 本文考虑到实际操作的简单实用性, 所以采用单视图的3D重建算法来进行快递纸箱的体积测量.

3D-VAE-GAN[7]利用变分自编码器和生成对抗网络从概率空间生成三维对象, 但是由于3D-VAE-GAN需要使用类别标签进行重建. MarrNet[8]将3D重建分解为两个步骤, 使用一个编码器-解码器网络架构恢复2.5D草图(深度图和法线贴图), 并借鉴3D-VAE-GAN网络结构, 以一张普通图像和一张深度图作为输入来恢复3D形状. Choy等[9]提出了3D-R2N2网络, 采用标准的卷积神经网络结构对原始的2D图像进行编码, 再利用一个反卷积网络对其进行解码, 编码器与解码器中间用长短期记忆网络(LSTM)进行连接, 通过Encoder+3D LSTM+Decoder的网络结构来建立2D图像到3D体素的映射, 该网络不需要任何的图像注释和类别标签即可训练测试, 但是3D-R2N2由于循环神经网络的长期记忆损失, 无法精确恢复物体3D形状, 并且比较耗时.

本文采用基于体素的Pix2Vox3D重建网络[10], Pix2Vox对3D-R2N2网络存在的不足进行了改进, 在速度和性能上都获得了一定的提升. 它同样采用编码器-解码器的架构, 输入图像经过VGG16[11]的编码器生成特征图, 解码器中将特征图作为输入, 经过多次反卷积操作生成一个粗糙的3D模型, 通过上下文感知模块来为物体的每个部分自适应的选择高质量重建结果, 最终经过具有跳跃结构的精炼化模块生成最终的重建结果. 但是对于体积测量来说精确度仍不满足实际的需求, 所以本文通过注意力机制进行信息的融合, 并将网络输出分辨率提高, 提升快递纸箱重建的精度.

1.2 本文工作

本文提出的快递纸箱的体积测量算法主要包含3部分, 如图1所示: 图像预处理, 3D重建和后处理. 图像预处理是通过YOLOv3[12]级联GrabCut[13]去除图像中的背景, 提取纸箱与快递单标签图像, 并获得纸箱的实际长度, 用于后续的计算. 3D重建部分是如何在不增加网络参数的同时提高重建的精度, 从而达到体积测量的需求, 本文将网络的输出分辨率提高至643, 并通过结合注意力机制PSA模块[14]降低网络参数. 后处理是为了将网络重建后模型中的一些重建错误的点进行剔除, 精细化的重建结果, 并集成在3D重建网络中.

图 1 算法流程图

2 算法设计与实现 2.1 图像预处理模块

考虑到快递员的工作环境, 手机摄像头获取的图像往往不能直接使用, 如图2(a). 需要通过对图像进行预处理, 将纸箱和快递单与背景图像分割, 该处理有助于提高三维重建算法的性能.

GrabCut算法可以将图像中的纸箱和快递单标签与背景分割, 该算法利用了图像的纹理颜色信息和边界反差信息, 通过输入包含目标物体的矩形框, 便可以得到良好的分割结果. 由于快递单标签较小, 考虑检测的速度与小目标检测的精确度, 本文采用了YOLOv3目标检测网络获取包含纸箱和快递单标签的矩形框.YOLOv3采用了类似FPN的上采样和融合做法, 相对于YOLOv2/v1提升了小目标检测的精确度, 同时采用了DarkNet-53网络结构, 相对于ResNet101/VGG16, 速度更快. 通过级联YOLOv3与GrabCut可以快速精准的分割出快递纸箱与快递单标签, 快递纸箱分割结果如图2(b)所示.

将拍摄图简化如图2(c), 将纸箱和快递单标签与背景分割后, 接着使用图像处理可以在分割图像中找到P3、P4、P7、P8四点的像素坐标. 假定P7与P8点的像素长度为l1, P3与P4点像素长度为l2, 因为快递单标签的实际尺寸是不变并且是可知的, 我们设为P7与P8的实际长度为l, 那么P3与P4点的实际长度L便为:

$ L = \frac{{l2}}{{l1}}\times l $ (1)

经过预处理操作后, 从原始图像可以得到快递纸箱P3、P4点之间的实际长度以及去除背景干净的快递纸箱的图像.

图 2 图像处理样例

2.2 三维重建算法模块

Pix2Vox网络虽然针对3D R2N2网络存在的问题做了改进, 但是网络最终输出的空间分辨率是323, 对于精确地恢复快递纸箱的长宽高的尺寸是不够的. 本文在Pix2Vox的基础上, 做了如下两点改进, 网络结构图见图3.

(1) 重新设计解码器, 提高重建的分辨率.

(2) 用PSA模块替换网络中的两个全连接层, 降低网络的参数.

每一次的3D反卷积可以将网络的输出分辨率提升8倍, 本文通过设计一个具有6层3D反卷积的解码器来将网络的输出分辨率从323提升到643, 如表1解码器列所示, 输出分辨率的提升可以更好的恢复重建物体的细节, 提升重建性能. 由于网络中存在全连接层, 提升分辨率会导致网络中参数增加了8倍, 在实际应用中是不可行的. 根据分析可以知道网络中的全连接层主要作用是融合全局信息, 以纠正3D模型中错误恢复的部分, 本文使用PSA模块替换全连接层, PSA模块具有局部和全局信息融合的效果, 并且参数量会大大降低, 参数量对比见后文分析.

图 3 3D重建网络结构图

表 1 编码器-解码器网络结构

PSA包括上下并行的两个分支, 如图3中虚线部分, 在实现上两个分支是完全一样的. 在每个分支中, 首先应用具有1×1的卷积层减少输入特征图X的通道数以降低计算开销, 得到C的特征图Xr. 然后再应用一个1×1的卷积层得到[(2H–1)×(2W–1)]的Xc, 最后经过收集和分散操作获得两个具有全局融合信息的特征图. 收集或分散操作如图4所示, 图4对应图3中的CollectAttention和DistributeAttention具体操作. 特征图Xr上每个位置i, 对应特征图Xci位置1×1×[(2H–1)×(2W–1)]的特征图, 将其转换成(2H–1)×(2W–1)×1的特征图Xi, 最后以i作为特征图Xi中心点, 如图4中以虚线突出显示的区域是用于特征的收集和分散, 将该区域与Hr进行矩阵相乘得到具有全局融合信息的特征图. 上下两层各得到这样的一个分支特征图, 我们将该两个分支特征图进行通道数叠加并进行1×1的卷积操作得到具有融合全局信息的特征图, 最后与具有局部信息的特征图X进行通道数叠加, 完成全局信息的融合.

图 4 Collect / Distribute Attention

网络采用的损失函数是体素交叉熵的平均值, 公式如下:

$ {{L}} = {\rm{}}\frac{1}{N}\mathop \sum \limits_{i = 1}^N \left[ {{y_i}\log\left( {{p_i}} \right) + \left( {1 - {y_i}} \right)\log\left( {1 - {p_i}} \right)} \right] $ (2)

其中, N为标签的数量, yi为真实概率, pi为预测概率, pi越接近yi, L值越小.

2.3 后处理模块

3D重建网络输出的3D模型是一个三维矩阵, 每个位置的值代表了是该点的置信度. Trimesh是一个专门用来加载和使用三角网格的Python库, 可以直接得到包围该重建模型的最小外接立方体的归一化的长宽高, 但是因为在重建结果中会在边界生成一些错误的点, 如图5中红色圈标注所示, 如果用Trimesh库来计算会有较大的误差, 所以本文设计了算法1来剔除这些噪点.

算法1. 噪点剔除算法

1) 将生成的3D模型中小于阈值T1的点去除.

2) 如图5中坐标系所示, 假定符合y=0, z=0所有点的集合为S1, S1中所有点中x坐标最大值即为快递纸箱归一化后的长l.

3) 在z=0xy这个面上, 统计ymax到0每行点的个数, 假定S1中点的个数为N1, 若某行中的点的个数大于 $\scriptstyle N1×\left( {1 - T1 + T2} \right)$ 时, 则此时y值为快递纸箱归一化后的h.

4) 假定符合x=0, z=0所有点的集合为S2, 假定S2中点的个数为N2, 在x=0yz这个面上, 统计zmax到0每列点的个数, 若某列中点的个数大于 $\scriptstyle N2×\left( {1 - T1 + T2} \right)$ 时, 则此时z值为快递纸箱归一化后的w.

图 5 三维重建结果图

通过噪点剔除算法可以得到快递纸箱精确地归一化后的长宽高值, 由2.1节图像预处理操作可以得到快递纸箱实际的长度L, 假定快递纸箱实际的宽度为W, 实际的高度为H, 存在如下的比例关系:

$ \frac{l}{L} = \frac{w}{W} = \frac{h}{H} $ (3)

通过式(3)我们可以求出快递纸箱实际的长宽高, 即能算出快递纸箱的实际体积.

3 实验分析 3.1 数据集

按照文献[9]实验的数据集设置, 我们也使用了ShapeNet[15]的子集, 包含13个类别, 共43 783个3D模型组成. 由于目前的相关的3D重建的开源数据集中没有快递纸箱的模型, 所以为了验证本文算法的有效性, 我们使用Cinema 4D软件制作了与ShapeNet相同格式的快递纸箱数据集, 总共150个快递纸箱的3D模型, 3600张2维图片, 这里简称该数据集为box-150.

3.2 评价指标

首先为了评估改进后的3D重建网络的性能, 使用3D体素重建与真实体素标签之间的体素IoU作为相似性度量, 其公式如下:

$ IoU = \frac{{\displaystyle \sum \nolimits_{i,j,k} I\left( {{p_{i,j,k}} > t} \right)I\left( {{y_{i,j,k}}} \right)}}{{\displaystyle \sum \nolimits_{i,j,k} I\left[ {I\left( {{p_{i,j,k}} > t} \right) + I\left( {{y_{i,j,k}}} \right)} \right]}} $ (4)

其中, p(i, j, k)y(i, j, k)分别表示预测概率和真实标签. I(·)是指示函数, t表示体素化阈值. IoU越高, 重建越好.

我们用体积的相对误差衡量一个快递纸箱体积测量结果的好坏, 具体公式如下:

$ \delta = \frac{{\left| {{V_y} - {V_p}} \right|}}{{{V_y}}} $ (5)

其中, VpVy分别代表预测体积和真实体积, δ越小表示体积测量的越准确.

3.3 实验结果

在实际训练中, 由于快递纸箱数据集的限制, 本文采用迁移学习的思想, 网络先用ShapeNet子集进行预训练150个周期, 接着在box-150数据集上训练150个周期. 网络采用224×224 RGB图像作为输入, 使用Adam优化器, β1为0.9, β2为0.999, 预训练时, 批处理大小为64, 初始学习率都设置为0.001, 在box-150训练时, 批处理大小为10, 初始学习率都设置为0.0005.

本文选择3种3D重建算法作为对比, 第1种是原始的Pix2Vox, 第2种是Pix2Vox去除网络中的全连接层, 简称为Pix2Vox-NF32, 第3种是Pix2Vox去除网络中全连接层并将网络输出分辨率提高至643, 这里简称为Pix2Vox-NF64. 表2为4个网络在不同阈值下重建性能的对比, 以IoU作为评价标准, 实验数据表明, 直接去除全连接层会降低网络的性能, 但去除全连接层后提高网络的输出分辨率能够提升网络的模型, 当同时采用提高分辨率与PSA, 模型更优. 图6为4种模型的参数量比较, 通过比较可以发现我们的网络比Pix2Vox参数量更低.

表 2 不同阈值下模型性能对比

体积测量的误差主要来自两个部分, 第1个是在图像预处理阶段, 获取快递纸箱的长度时会存在误差; 第2个误差是3D重建得到的归一化长宽高的值, 这一误差可以归结为后处理阶段. 我们对box-150中25组数据进行了第一个误差的统计分析, 具体如图7所示, 根据预处理获取快递纸箱的长度的误差平均仅为0.6%, 80%的数据的相对误差都小于1%, 证明了图像预处理模块对于计算快递纸箱长度的有效性. 第2个误差可以通过统计快递纸箱的体积相对误差来分析, 并与用trimesh库来计算体积进行对比, 通过图8可以看出由后处理得出的平均体积相对误差比用trimesh库的低了很多, 证明了后处理模块的有效性.

图 6 不同模型的参数量对比

图 7 25组快递纸箱长度相对误差分析

图 8 基于trimesh库与后处理程序的体积误差对比图

考虑算法的实用性, 本文还测试了6组真实数据, 具体的误差分析见表3, 可以看出相对误差基本在5%以内, 满足实际的需求. 但相较于box-150数据集效果差了一点, 这是因为真实数据与模型训练使用的数据还是存在着一些差异.

表 3 手机拍照快递纸箱体积测量误差分析

4 总结展望

本文基于3D重建网络, 设计了一个通过手机对快递纸箱拍照就能获得其体积的算法, 通过实验证明了图像预处理模块计算快递纸箱长度的有效性以及提高网络的重建分辨率并结合PSA模块有助于提高快递纸箱的重建性能, 此外后处理模块能更精确的计算快递纸箱的体积. 最后考虑算法的实用性, 本文还对真实数据做了测试.

下一步的研究工作在于如何让该算法对拍摄快递纸箱的角度更加鲁棒性, 保证在实际操作中更方便快捷地得到快递纸箱的体积数据.

参考文献
[1]
异方科技. 智能体积测量仪 快递物流行业的“加速器”. https://baijiahao.baidu.com/s?id=1622629186506567650&wfr=spider&for=pc. [2019-01-14].
[2]
刘士兴, 宓逸舟, 张阳阳, 等. 改进型测量光幕体积计量系统. 电子测量与仪器学报, 2016, 30(9): 1313-1319.
[3]
毛丹辉, 单彬, 王勇, 等. 激光技术在智慧物流中的应用. 物流科技, 2017, 40(2): 84-86, 95. DOI:10.3969/j.issn.1002-3100.2017.02.026
[4]
王玉伟, 尹颜朋. 基于RCF边缘检测和双目视觉的箱体体积测量算法. 现代计算机, 2017(35): 71-74. DOI:10.3969/j.issn.1007-1423.2017.35.015
[5]
宓逸舟. 基于双目视觉的快递包裹体积计量系统[硕士学位论文]. 合肥: 合肥工业大学, 2017.
[6]
Han XF, Laga H, Bennamoun M. Image-based 3D object reconstruction: State-of-the-art and trends in the deep learning era. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2019.
[7]
Wu JJ, Zhang CK, Xue TF, et al. Learning a probabilistic latent space of object shapes via 3D generative-adversarial modeling. Proceedings of the 30th International Conference on Neural Information Processing Systems. Barcelona, Spain. 2016. 82–90.
[8]
Wu JJ, Wang YF, Xue TF, et al. Marrnet: 3D shape reconstruction via 2.5D sketches. Proceedings of the 31st International Conference on Neural Information Processing Systems. Long Beach, CA, USA. 2017. 540–550.
[9]
Choy CB, Xu DF, Gwak JY, et al. 3D-R2N2: A unified approach for single and multi-view 3D object reconstruction. Proceedings of the 14th European Conference on Computer Vision. Amsterdam, the Netherlands. 2016. 628–644.
[10]
Xie HZ, Yao HX, Sun XS, et al. Pix2Vox: Context-aware 3D reconstruction from single and multi-view images. Proceedings of 2019 IEEE/CVF International Conference on Computer Vision. Seoul, Republic of Korea. 2019. 2690–2698.
[11]
Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition. arXiv: 1409.1556, 2014.
[12]
Redmon J, Farhadi A. Yolov3: An incremental improvement. arXiv: 1804.02767, 2018.
[13]
Rother C, Kolmogorov V, Blake A. “GrabCut”: Interactive foreground extraction using iterated graph cuts. ACM Transactions on Graphics, 2004, 23(3): 309-314. DOI:10.1145/1015706.1015720
[14]
Zhao HS, Zhang Y, Liu S, et al. PSANet: Point-wise spatial attention network for scene parsing. Proceedings of the 15th European Conference on Computer Vision (ECCV). Munich, Germany. 2018. 267–283.
[15]
Chang AX, Funkhouser T, Guibas L, et al. ShapeNet: An information-rich 3D model repository. arXiv: 1512.03012, 2015.