基于YOLOv3目标检测的秧苗列中心线提取方法

2020-08-27 08:22王家辉
农业机械学报 2020年8期
关键词:中心线水田秧苗

张 勤 王家辉 李 彬

(1.华南理工大学机械与汽车工程学院, 广州 510641; 2.华南理工大学自动化科学与工程学院, 广州 510641)

0 引言

在复杂的农田环境中,实时、准确提取机器人的导航线是实现机器人自主导航的重要保证[1-4]。由于作物个体差异、作物生长变化、叶片相互遮挡、光照不确定性等因素,经常导致图像中存在噪声和干扰,降低作物列中心线检测的准确率。在水田环境下,还经常会伴有大风、蓝藻、浮萍、秧苗倒影、水面反射、光照不均等环境因素的干扰,这些进一步增大了图像处理的难度,使水田秧苗列中心线的实时检测更为复杂,从而严重影响水田除草机器人自主导航的精度和效率。

为了解决这些问题,国内外学者做了大量研究工作,并取得了一定的成果。针对农田环境下自然光照变化对作物列中心线提取的影响,文献[5-7]选用不同的彩色模型,通过提取作物的颜色特征,有效地降低了光照变化对农作物图像分割的影响。考虑作物生长过程中形态变化造成的影响,文献[8]通过8邻域结构因子,对二值化后作物图像中的斑块噪声进行标记,剔除了作物由于生长变化形成的叶子尖端大面积噪声;文献[9]利用水稻秧苗的形态特征识别秧苗列的中心线,该方法对不同生长周期的秧苗具有较好的识别效果,解决了秧苗生长过程中叶片交叉遮挡问题;文献[10]提出一种改进遗传算法的作物行识别方式,从图像的顶部和底部随机选择2个点组成的直线编码为染色体,通过多次遗传进化,选择适应度最高的染色体作为作物的中心线,较好地提取到不同生长阶段的作物列中心线;文献[11]提出一种作物特征点提取方法,将作物图像分割成不同高度的12个子带,设置与子带等高度的窗口,对二值化后的白色作物像素进行跟踪,并求窗口内作物像素质心点,即为拟合作物线的特征点,该方法提取的特征点能较好地表征不同生长阶段的作物中心位置。在减小环境噪声的影响方面,文献[12]通过匹配水田中作物的红外图像和R分量图像,对其进行相减和二值化处理,减小了水面反射噪声对作物列中心线检测的干扰;文献[13]通过对农田图像灰度化,再利用小面积法进行图像滤波,去除了农田中土块等引起的颗粒状噪声;文献[14]采用双阈值的Otsu方法进行图像分割,成功剔除了作物田间的杂草噪声。

目前,针对南方复杂恶劣水田环境下的秧苗中心线提取,国内外相关研究文献很少。为了解决这个问题,文献[15-17]提出基于彩色模型和近邻法聚类的水田秧苗列中心线检测方法、基于SUSAN角点的秧苗列中心线提取算法,这些方法在图像中存在浮萍、蓝藻和秧苗倒影的情况下具有较高的鲁棒性,能够满足视觉导航的实时性要求,但对环境变化的适用性还有待进一步研究。

近年来,深度学习在农业领域的应用日益广泛,深度学习方法具有检测精度高、适应性强的特点[18-19]。基于深度学习的方法主要分为两类:一类是通过提取候选区域,并对区域进行以深度学习为主的分类方案,称为two-stage(两阶段)检测算法,典型的如RCNN[20]、Fast RCNN[21]、Faster RCNN[22]等。另一类则是基于回归的方法,直接通过单个卷积深度神经网络遍历图像,回归出目标的类别和位置,称为one-stage(一阶段)检测算法,典型算法如YOLO[23]、YOLOv2[24]、YOLOv3[25]、SSD[26]。相对于two-stage检测算法, one-stage检测算法检测速度更快,YOLOv3深度神经网络还通过借鉴残差网络结构(ResNet)[27]和SSD中的多尺度预测,提升了模型的表现,在保证一定模型精度的同时,提升了检测速度。

本文提出基于YOLOv3目标检测的秧苗列中心线提取方法,采用YOLOv3模型对视频中感兴趣区域(Region of interest,ROI)内的秧苗进行识别定位,输出秧苗的检测框,然后在检测框区域内进行秧苗的特征提取和中心线的拟合。

1 材料与方法

1.1 算法概述

基于YOLOv3检测框区域的水田秧苗列中心线提取算法主要分为目标检测定位和中心线提取两部分,整体流程如图1所示。

(1)YOLOv3目标检测:首先对于采集到的水田秧苗RGB图像,根据摄像头俯仰角与秧苗成像关系分析,构建图像中的ROI,然后对ROI区域内的秧苗进行分段标注后,构建YOLOv3的训练数据集,寻找训练结束后最优的YOLOv3检测模型,利用模型定位秧苗并输出其检测框。

(2)基于同列秧苗检测框区域内的秧苗列中心线提取:对YOLOv3模型检测并输出的同列秧苗检测框进行自适应聚类;再基于归一化的ExG(Excess green index)算子进行图像分割;在同类检测框区域内进行秧苗SUSAN角点的提取,最后利用最小二乘法对秧苗特征点进行中心线拟合。

图1 基于YOLOv3目标检测的秧苗列中心线提取 方法流程图Fig.1 Flow chart of extraction method of seedling row centerline based on YOLOv3 target detection

1.2 数据采集

图2 YOLOv3模型结构图Fig.2 YOLOv3 model architecture

试验所用的图像均拍摄于华南农业大学国家优质稻新品种扩繁基地。图像分辨率为1 280像素×960像素。拍摄过程中摄像头距离地面1 m,摄像头光轴与水平线夹角为45°~60°。若小于45°则图像中拍摄的秧苗列数过多,导致秧苗列在成像时距离过于密集,不利于后续导航线的检测,而如果大于60°,则会使得拍摄到的秧苗列在图像中的长度过短,提取到的导航线与实际秧苗列中心线误差较大。从秧苗的4个生长阶段各采集了500幅图像,共采集到2 000幅图像,其中包括5种复杂场景(大风、蓝藻、浮萍和秧苗倒影、水面强光反射、暗光线)下的图像样本各200幅。从采集到的4个生长阶段的秧苗图像样本中随机选取各400幅图像用于制作训练集(1 200幅)、验证集(200幅)和测试集(200幅),其中验证集只用于评估训练时模型的表现。

2 基于YOLOv3的秧苗目标检测和定位

2.1 YOLOv3模型框架

YOLOv3将目标检测转换为回归问题,基于一个端到端的网络,实现从原始秧苗图像的输入到最后秧苗检测框的输出。YOLOv3模型先把秧苗输入图像统一为416像素×416像素,然后再划分成13像素×13像素的网格,每个网格负责检测B个边界框及其置信度,以及C个类别的概率。所以,每个边界框都包含了5个预测量:x、y、w、h、Confidience,其中(x,y)是秧苗检测框的左上角坐标,w、h是秧苗检测框的宽、高,Confidience是秧苗的置信度。整个步骤通过输入秧苗图像经过一次YOLO网络,可以得到图像中秧苗的位置及其相应的置信概率。

YOLOv3模型结构如图2所示,考虑到水田环境的复杂和多变容易导致秧苗识别困难,本文使用含有53个卷积层的Darknet-53作为特征提取网络来提取水田秧苗的特征。如图2所示,输入网络的图像,经过Darknet-53后输出52像素×52像素(尺度3)、26像素×26像素(尺度2)、13像素×13像素(尺度1)共3种尺度的特征图,每个特征图分配3种不同尺寸的锚点(Anchor)进行边界框预测,最后对3个输出张量进行合并处理,获得秧苗的预测信息。由于在秧苗识别过程中需要检测的目标只有秧苗这一类,所以通过修改YOLOv3的输出类别数目为1,减少了网络的运算量,最终网络预测张量的长度为18(即3(锚点)×(4(边框坐标)+1(边框置信度)+1(对象类别数))),如图2中的输出张量所示。

2.2 基于透视投影计算的秧苗图像ROI提取

在机器人实际导航过程中,机器人的行进列(一般是图像中部的秧苗列),以及距离机器人行进列最近的左右两侧秧苗列直接影响机器人导航的准确度。因此可以在图像中事先筛选出ROI区域,这样可以减少图像数据处理量,同时也减少图像边缘作物列的干扰,使得后续的图像处理步骤更加高效[28-30]。因此需要在训练YOLOv3网络前,构建秧苗图像的ROI。然后通过标注后再对YOLOv3网络进行训练。

为了确定图像中秧苗列的ROI,将图像在透视投影下简化为成像模型如图3所示,NM为图像中部秧苗列中心线,EF、PQ为左、右侧秧苗列中心线,四边形ACDB内为ROI区域。

图3 透视现象下的秧苗列成像模型Fig.3 Image model of rice seedlings rows under perspective

ROI具体确定流程如下:

(1)在透视投影下,秧苗列中心线上下两端的像素距离DNP与DMQ有如下关系[31]

(1)

式中Gp——DNP与DMQ的比值

θ——相机光轴与水平线夹角,45°~60°

α——相机的垂直视场角,(°)

(2)由摄像头成像[32]可得M点与Q点之间的像素距离为

(2)

式中d——秧苗列间的平均距离,mm

f——摄像头焦距,mm

H——摄像头光心离地高度,mm

k——图像中单个像素点的物理尺寸,mm

(3)在相机俯角最大(θ=60°)时,点M与点Q的像素距离DMQ最大,把θ=60°代入式(1)、(2)可求得DMQ、DNP。以此时的DMQ、DNP作为参考值,设置四边形ABDC内的区域为ROI,对图像非ROI的部分进行遮罩填充。其中DMD=DMB=cDMQ,DNC=DNA=cDNP,c为裕度系数(c=1.2)。图4a的ROI提取效果如图4b所示。

图4 ROI内的秧苗列Fig.4 Rice seedlings rows in ROI1、3.摄像头 2、4.除草机器人

2.3 秧苗图像数据集的建立

图5 ROI内的秧苗分段标注Fig.5 Segmental labeling of rice seedlings rows in ROI

在划分了秧苗图像的ROI后,再对ROI内的秧苗进行标注。由于在透视现象下,除了图像中部的秧苗列外,其他秧苗列成像时均呈现较大倾斜程度。此时在进行图像标注时,如果对这些倾斜程度较大的秧苗列进行整列标注,则会使得标注框内背景区域较多,不利于后续针对检测框区域进行秧苗中心线的提取。因此在保证背景区域较小的前提下,采用分段标注秧苗的方式,使得YOLOv3网络能更准确地识别与定位出秧苗列,有利于后续图像处理过程中减少背景噪声的干扰。标注方式如图5所示,即在标注框所含背景区域较少的情况下,标注出秧苗的主干部分即可,由图5b可以看出标注框与秧苗主体较为紧凑。

标注后的图像采用YOLO数据集的格式保存为txt文件用于网络训练。每个txt文件内包含秧苗的类别数量(C)和标注秧苗边界框的左上角坐标信息(x,y)以及框的宽与高(w,h),在本文中只需要检测秧苗这一类目标,所以本文类别总数C取1。

2.4 模型参数的设置与训练

训练时一轮迭代(Iteration)处理64个样本,图像训练前被降采样到640像素×480像素,使用BN(Batch normalization)在每次权值更新时进行正则化,权值衰减(Decay)设置为0.000 5,动量衰减(Momentum)设置为0.9,初始学习率(Learning rate)设置为0.001,并在迭代4 000、6 000次时衰减10倍,为了在初始迭代阶段使得模型迭代较为稳定,设置一个学习率变化点burn_in的值为1 200,在前1 200轮迭代过程中,学习率计算式为

(3)

式中lrate——学习率

iteration——迭代次数

⟸——赋值运算符

在训练前通过K-means聚类算出训练集中锚点的初始值,本文中设置9个锚点分别应用于3个尺度的特征图,9个锚点的尺寸分别为35×104、35×174、49×181、39×244、51×266、62×221、70×290、46×456、67×461。

对于深度神经网络训练所需的数据量而言,1200幅图像远远不足。所以本文在训练的时候采用数据增强方法,通过改变图像的色调(变化范围1~1.5倍)、曝光度 (变化范围1~1.5倍)、色量化(变化范围0.8~1.1倍),设置数据抖动值,即随机改变输入图像尺寸和宽高比值(变化范围为[0.4, 1.6])来扩充训练集。在每一轮迭代过程中,随机使用上述一种方法应用于64幅图像样本。

最终模型共训练9 000次,使用了576 000幅图像,其损失值变化如图6所示。

图6 损失值随迭代次数的变化曲线Fig.6 Changing curve of loss value with iterations

从图6可以看出,在最初的1 200次迭代中拟合速度较快,在达到4 000次迭代时由于此时学习率衰减10倍,模型的训练步长减小,拟合能力上升,损失值进一步下降。在6 000次迭代时学习率再衰减10倍后,由于此时模型逐渐稳定,所以损失值振荡较小,最终损失值稳定在0.42。

2.5 最优模型的选择

在9 000次训练迭代过程中,从burn_in值(1 200)后每隔100次迭代输出一次权值(Weight),最终共得到78个模型,而模型并不是随着迭代次数越多而表现越好,过多的迭代次数可能会导致模型过拟合,为了后续更好地执行检测任务,需要对模型进行评估,寻找出最优的检测模型。模型的评价指标有准确率(Precision)、召回率(Recall)、平均精度均值(Mean average precision,mAP)、交并比(Intersection over union,IOU)、F1值。

(4)

(5)

(6)

(7)

(8)

式中TP——被正确划分为正样本的数量

FP——被错误划分为正样本的数量

FN——被错误划分为负样本的数量

P——准确率F1——F1值

R0——召回率i——识别序号

Soverlap——预测的边界框与真实的边界框之间的交集区域

Sunion——预测的边界框与真实的边界框之间的并集区域

IOU——交并比

mAP——平均精度均值

本文使用mAP来评估模型的整体性能。计算所得的每个模型的mAP值如图7所示。由图7可以看到,当迭代次数达到6 000次时mAP值已经稳定。因此最优模型的选取从迭代区间6 000~9 000当中选择,其中mAP在迭代次数为6 800时达到最大值91.47%,因此选择此模型作为最优模型。

图7 平均精度均值随迭代次数的变化曲线Fig.7 Changing curve of mean average precision with iterations

3 基于检测框区域的秧苗列中心线提取

3.1 自适应同列秧苗检测框聚类

由于采用了分段标注秧苗的方式,在使用训练好的YOLOv3模型进行检测时,定位输出秧苗列的检测框也是分段的,因此需要对同列秧苗的检测框进行聚类,后续再基于同类检测框区域进行秧苗列中心线提取。

自适应检测框聚类算法流程如下:

(1)定义网络输出的检测框结构体box={x,y,w,h}。

(2)创建两个一维向量vector〈rightbox〉,vector〈leftbox〉。如果box.x

(3)根据box的y坐标最小原则,找出所有一维向量中离图像上边界最近的初始聚类检测框box0={x0,y0,w0,h0}。

(4)找到初始聚类检测框后,按照如下准则在图像中从上往下聚类下一层邻近检测框(定义为box1={x1,y1,w1,h1})。如果0≤|x0-x1|

(5)把box1设为新的初始聚类框box0,继续依照步骤(4)中的条件判断往下查找邻近的同列秧苗检测框,直至完成同列秧苗的检测框聚类为止。

同列秧苗的检测框聚类完成后,同颜色的检测框即为同一类(即属于同列秧苗)。

3.2 基于归一化ExG算子的秧苗图像分割

由于水田背景噪声的多变和秧苗的生长形态不同,需要从复杂背景中提取出秧苗特征。利用ExG算子,其能从背景中较好地分割出绿色作物。在进行灰度化前,先对图像中的颜色分量R、G、B进行归一化,以减小光照变化对图像带来的影响,计算公式为

(9)

式中R、G、B——图像的红、绿、蓝3个颜色通道的数值

r、g、b——归一化后的红、绿、蓝数值

(10)

式中I(x,y) ——坐标(x,y)处的灰度

3.3 基于检测框区域内的SUSAN角点特征提取

经过灰度化处理后的图像,除去了大部分图像的背景噪声,但是存在蓝藻或者浮萍的情况下,会产生很强的椒盐噪声。使用中值滤波去除背景的椒盐噪声,对比均值滤波和高斯滤波,中值滤波在很好地保护图像细节的同时,抑制图像中大部分的椒盐噪声,再通过7×7的类圆形USAN模板对灰度化后的图像中的检测框区域提取秧苗SUSAN[35]角点特征,最后使用5×5的正方形模板进行非极大值抑制,以剔除伪角点。

3.4 基于最小二乘法的秧苗列中心线拟合

由于基于YOLOv3的秧苗预测的方法,可以预先定位秧苗列区域的大致位置,所以在基于检测框区域对秧苗的特征提取时,避免了在图像全局区域进行秧苗的特征扫描提取,能较大程度避免背景噪声对特征提取的干扰,而同时图像经过中值滤波后,抑制了大部分水田中的浮萍和蓝藻带来的椒盐噪声,所以本文在中心线的提取上,采用拟合效果较理想的、计算速度较快的最小二乘法。

4 结果与分析

4.1 试验平台

本文训练和测试均在同一台计算机进行,计算机主要配置为AMD Ryzen 5 CPU,主频3.20 GHz、11 GB的GPU GeForce GTX 1080Ti和16 GB的运行内存。开发环境为Windows 10(64位)系统,VS2015,开发语言为C++。

4.2 检测框聚类的距离阈值确定

T1和T2分别为属于同列秧苗的上下相邻检测框之间的横向距离阈值与纵向距离阈值。T1和T2阈值的选择会影响检测框聚类的准确性,而聚类的效果只能依靠聚类处理后的图像进行判断,没有定量的指标来衡量其效果。本文通过从秧苗4个生长阶段图像集中随机均匀选取100幅图像进行试验,得出:当T1的取值在图像宽度W的1/64~1/8之间时,T2的取值在图像高度H的1/24~1/12之间,均能得到较好的聚类效果。

通过试验发现,由于不同秧苗列间的检测框存在一定的横向距离,同列秧苗列的相邻(上下相邻)检测框存在较小的横向距离,T1的取值应不大于图像宽度W的1/8,过大则容易使得属于不同列的秧苗检测框误聚类;T1的取值如果小于图像宽度W的1/64,则容易使得属于同列的相邻(上下相邻)检测框聚类失败。另一方面T2在大于图像高度H的1/12时,在秧苗列较为密集的情况下,不同列间的检测框距离较小,容易产生误聚类;当T2小于图像高度H的1/24时,则容易产生属于同列的且有重叠部分(或者非重叠、有一定纵向距离)的相邻(上下相邻)检测框聚类失败。因此在初定T1∈[W/64,W/8]、T2∈[H/24,H/12]后,本文选取T1取值范围内的4个典型值W/64、W/32、W/16、W/8,T2的3个典型值H/24、H/16、H/12,两者进行组合,对所选的图像进行秧苗检测框聚类,并进行聚类准确性的统计,如表1所示。由表1可以看出,T1与T2取(W/64,H/16)时,各阶段秧苗图像的检测框聚类准确率均达到最大值,平均准确率为95%,在秧苗生长的初期,秧苗列稀疏,间距较大,网络输出的不同秧苗列间的检测框区分度较大,不易产生误聚类的情况,因此聚类的准确率较高。而在秧苗生长的中后期,由于生长形态发生变化,导致不同秧苗列间的检测框间距较小,增加了聚类的难度,导致聚类准确率下降。

表1 T1与T2不同取值下检测框聚类的准确率Tab.1 Accuracy of clustering bounding boxes with different values of T1 and T2 %

4.3 算法性能分析

为了进一步检测本文算法在南方复杂水田环境中的性能,将本文提出的算法与文献[16]中的在相同应用环境下的算法在运行速度和识别误差上进行对比。在4.1节中所述的硬件平台上,检测1幅640像素×480像素的彩色图像,文献[16]中的算法平均耗时为256 ms,本文算法平均耗时82.6 ms。对于2种算法的检测误差比较,本文通过3人手动绘制水田秧苗图像ROI范围内的秧苗列中心线,并取其平均值代表秧苗列的参考中心线,计算实际检测出来的直线与手动绘制直线的夹角,夹角越大,则提取的直线误差越大。经过对测试集中200幅图像进行试验,文献[16]算法提取中心线的平均夹角误差为3.50°,标准差为3.28°,本文算法的平均夹角误差为0.97°,标准差为0.73°。可见,本文提出的算法不仅计算速度得到提高,而且还具有较高的识别精度。

4.4 不同生长阶段秧苗列中心线提取对比试验

从采集到的图像中随机选取秧苗每个生长阶段各50幅图像,使用本文算法和文献[16]算法分别进行秧苗中心线提取,2种算法的对比效果如图8所示。由图8可以看出,在秧苗生长前期(第1、2周内),由于此时水田背景噪声较少,水田环境相对简单,两种方法提取中心线的效果大体相当。当在插秧第3周时,由于秧苗生长导致形态发生变化,开始出现秧苗侧偏、叶片相互遮挡,而在插秧第4周时情况更加明显,此时水田中还伴有蓝藻、浮萍等背景噪声的影响,由于文献[16]中基于滑动窗口聚类的方法受背景噪声、秧苗生长形态的影响较大,所以在提取中心线的过程中均出现了明显偏差。而本文算法基于秧苗检测框区域进行秧苗特征提取,避免对整幅图像进行基于窗口扫描的特征提取,较大程度地避免了背景噪声的干扰。另一方面YOLOv3模型检测定位出的是秧苗的主干部分,减少了秧苗生长过程中由于形态变化所造成秧苗特征提取容易偏离作物中心的影响。

图8 2种算法对于不同生长状态下的秧苗列中心线提取效果Fig.8 Two algorithms for extracting centerlines of rice seedlings under different growth stages

2种算法的试验统计结果如表2所示。对于秧苗的4个生长阶段,本文算法所提取的秧苗列中心线角度误差均小于文献[16]算法,本文算法提取的秧苗中心线平均角度误差为0.93°,文献[16]算法提取的秧苗中心线平均角度误差为2.92°。由此可见本文算法对于不同生长阶段的秧苗适应性更好,精度更高。

4.5 复杂水田环境下秧苗列中心线提取对比试验

对于一些较为复杂的水田环境,如大风、蓝藻、浮萍和秧苗倒影、水面强光反射、暗光线的特殊场景,秧苗列中心线提取效果对比如图9所示。由图9可以看到在这些特殊场景下,由于环境变化使得秧苗角点特征分布更加分散,此时文献[16]算法所提取的中心线误差较大。

表2 2种算法对不同生长阶段下秧苗列中心线提取 角度误差对比Tab.2 Error comparison of extracting centerlines of rice seedlings in different growth stages by two algorithms (°)

而本文基于同列秧苗检测框区域的中心线提取算法,较大减少了环境变化对中心线提取的干扰。基于YOLOv3算法能较好检测到秧苗列的主体部分,基于检测框区域所提取的角点特征能很好地表征秧苗列的中心位置,使得拟合的直线更加接近秧苗列的中心线。

对采集到的图像中随机选取大风、蓝藻、浮萍和秧苗倒影、水面强光反射、暗光线的特殊环境下各50幅图像分别使用本文算法和文献[16]算法进行秧苗中心线提取,误差对比如表3所示。在大风、蓝藻、浮萍和秧苗倒影、水面强光反射、暗光线的复杂水田环境下,本文提取的秧苗列中心线角度误差均小于文献[16]算法,本文算法提取的秧苗中心线平均角度误差为0.92°,文献[16] 算法提取的秧苗中心线平均角度误差为3.11°,由此可见本文算法面对复杂的水田环境时的鲁棒性更强,精度更高。

5 结论

(1)针对我国南方复杂的水田环境,提出了基于YOLOv3目标检测的水田秧苗列中心线提取算法。构建图像的ROI区域,以减小图像边缘作物列对后续图像处理的干扰;构建秧苗识别深度神经网络,提高了复杂场景下提取秧苗列中心线的精度;基于同列秧苗检测框聚类和检测框内的秧苗特征进行提取,避免针对图像全局的特征提取,减小了图像处理的数据量和环境噪声的干扰。研究和试验表明,所提出的方法适用于秧苗的不同生长阶段和复杂的水田环境,如大风、蓝藻、浮萍与秧苗倒影、水面强光反射、暗光线等。

(2)采用本文算法提取的秧苗列中心线平均角度误差为0.97°,YOLOv3模型的平均精度为91.47%,单幅图像(分辨率640像素×480像素)在GPU下的平均处理时间为82.6 ms。与相同应用背景下的文献[16]算法相比,本文算法在复杂的水田环境下鲁棒性更好、检测速度更快、精度更高,提高了机器人视觉导航的实时性。

猜你喜欢
中心线水田秧苗
浅析某船重要设备底座与基准平台偏差的纠正措施
先锋厦地水田书店
《红楼梦》中的“水田衣”是啥
树叶竞技场
《红楼梦》中的“水田衣”是啥
农民
停机后汽缸温差大原因分析及处理
凤头猪肚豹尾说“白传”——读《白水田传》
由X线中心线的特征来定标X线机中心线指示的方法
插秧