1 introduction
生物、社会意义,联系技术
问题提出
然而,这种系统的部署受到一些挑战的阻碍。
详细描述问题
首先,边缘相机的资源限制要求低功耗和精确的老虎检测来触发图像捕获[23,29,31],从而避免大量无关图像捕获消耗存储卡空间和电池寿命。
其次,最近的重新识别方法[14,33]通常使用行人和汽车作为目标对象,在相对受限的环境中,这些目标对象通常具有有限的姿态变化。相比之下,由于不受限制的四肢运动、复杂的自然背景和不受约束的光照条件,野生动物数据具有广泛的姿势变化。
第三,对这些公开挑战的研究进展缓慢,因为除了行人和汽车[7,43,45]等具有上述弱点的对象类型之外,缺乏数据集和基准。重要的是,大多数现有数据集缺乏一个系统的基准协议来评估端到端重标识性能。这就需要建立一个新的数据集和基准来系统地研究野生动物的再识别。

过渡
为了应对上述挑战,我们提出了一个新的大规模数据集,名为野生东北虎重新鉴定(ATRW)。

解决方法总结
个体东北虎的识别大多基于身体条纹图案[15],由于老虎的姿势和运动,这些条纹图案很容易变形。[15]中的人工校正是劳动密集型的,不适合野外环境。自动的校正需要识别姿态关键点,以及潜在的额外高级建模方法,以解决由于老虎运动导致的非刚体变形。为解决这些问题而开发的新方法可以扩展到对其他野生动物物种或物体的监测,这些物种或物体依赖于可变形的身体模式进行再识别。
总之,我们的主要贡献是:我们建立了一个新的大规模野生动物数据集ATRW,其中包含来自多个野生动物园的92个东北虎身份,来自多个摄像机的8,076个高分辨率视频片段,其中老虎在采样帧上用边界框位置、姿势关键点和身份进行了注释。我们在ATRW为整个老虎识别管道创建了一个系统的基准和全面的基线,包括:东北虎检测、姿态估计和重新识别。我们提出了一种新的老虎重新识别解决方案,该方案基于使用深度神经网络的精确姿势部分建模来处理老虎的大姿势变化,这表明与传统的重新识别方法相比,性能有了显著提高。
(该研究方法可解决的问题,精炼地阐述具体的方案,以及简述结果比较。)
2 related work
Re-ID datasets.
以下展开对重新标识数据集的简介、适用范围(从人到车辆再到动物)
近年来已经发布了几个大规模的人重新身份数据集[22,30,43],以支持提高算法性能和鲁棒性的研究。由于车辆在视频监控中的广泛应用,车辆也是重新识别的重要对象[7]。大多数重标识数据集只包含裁剪图像,PRW [45]除外,它提供了原始帧和带注释的边界框,用于评估完整的重标识管道。除了过多的人或车辆重新标识数据集之外,还有一些关于动物重新标识的数据集,这些数据集在综述[32]中得到了很好的总结,包括灵长类动物[6,11],老虎[19,20],大象[21]和鲸鱼[28]。
问题提出
然而,这些动物重新标识数据集有各种缺点,例如数据大小小、注释有限以及在非野生环境中捕获。
对重新标识、姿态估计的了解
由于这些限制,这些数据集在再识别研究中没有得到广泛应用。我们的贡献数据集ATRW填补了这一空白,提供了一个大规模、注释良好、完整的管道重新标识数据集,以挑战现有方法。有关与现有动物重新标识数据集的比较,请参见表1。人们可能会担心我们ATRW的身份证号码相对较少(92)。但是,我们要强调的是,野生东北虎的总数不到600只,这样我们收集到的同一性数就已经反映了实际的使用要求。这对于所有濒危物种的重新鉴定是很常见的。
重新识别一词最早于2005年提出[39],以支持基于外观特征的显式“重新识别”的多摄像机人物跟踪。随着大规模数据集,深度学习方法成为这一领域的主流。许多方法学习与身份相关的表示,用于重新标识的目的[12,25]。
另一些人将重新识别表述为排序问题,并将一对图像输入卷积神经网络以学习排序函数[1,22,38]。另一类方法将重识别表述为一个度量学习问题,并将神经网络与新的损失函数相结合来学习相似性度量[5,33]。融合全局和局部表示的局部建模也被用于增强re-ID [36,41,42]。在野外成功部署re-ID还需要对象检测和姿态估计方法,以对图像进行归一化,从而实现精确匹配。边缘客户端的高效目标检测是一个活跃的研究领域。典型的方法包括MobileNet-SSD [17,31],squeedet[37]和TinyDSOD [23]。
姿态估计对于精确的目标建模非常有用,尤其是在姿态变化很大的数据集上。人体姿态估计在COCO [24]和MPII[2]等数据集上研究得相对较好。据我们所知,没有包括用于姿态估计的带注释的地面事实的重新识别数据集,也没有允许研究姿态估计如何影响重新识别性能的数据集。我们的ATRW数据集将为老虎姿势提供地面真实注释,以及研究通用姿势估计方法(如开放姿势[4]、阿尔法姿势[9]和HRNet [34])的影响。
3 THE ATRW DATASET
3.1 Annotation Description
东北虎(又称东北虎、东北虎)是远东地区(特别是俄罗斯远东和东北地区)的老虎种群,目前全球野生个体不足600只。为自由漫游的东北虎获取足够的图像数据是不可行的,因为这些老虎的活动范围超过数百公里。
数据集来源
相反,我们捕捉东北虎在世界野生动物基金会的帮助下,来自多个大型野生动物园。图像是在不受约束的设置下用时间同步的监控摄像机和三脚架固定单反摄像机采集的。总共,我们用至少一只东北虎捕获了8,076个高分辨率(1920×1080)视频片段,这些视频片段被进一步均匀采样(十分之一)成帧。一些帧由于运动伪影、缺少老虎或其他噪声而被丢弃。
注释详情
注释包含三个步骤。
首先,我们为每只老虎注释一个边界框,以及老虎在图像中的视图方向(正面、左侧、右侧、背面)。
其次,专业人士根据时间和外观线索来确定老虎的身份。来自不同动物园的老虎在注释时是物理隔离的,因此id注释相当准确。如果老虎不能被清楚地识别,一个未知的id将被分配给老虎,这将不会被用于重新识别程序。
第三,由于老虎的运动会导致较大的姿势变化,我们进一步为每只老虎标注骨骼关键点,用于下游姿势标准化或精确姿势建模。关键点定义的细节将在下一节讨论。
我们数据集的特点
与许多其他重新标识数据集类似,我们还提供了一个与野生环境分离的裁剪数据集,用于重新标识算法的独立测试。带注释的图像根据边界框进行裁剪,并使用摄像机id、镜头id、帧数和实体id进行重命名。在这里,我们使用实体来指代老虎身份及其辅助信息的组合。根据专业咨询[15],老虎条纹图案是老虎身份信息最丰富的标志。由于东北虎的左右两侧条纹图案不同,在野外环境下很少能捕捉到老虎的两面,所以我们把同一只老虎的不同侧面作为不同的实体来对待。tiger重新识别的完整管道包含三个模块,如图1所示。我们在下面详细描述每个模块的数据信息。
检测数据。对象检测模块允许系统仅选择包含东北虎的帧,从而减少存储、功耗和网络消耗。我们的老虎检测数据集包括4,434幅图像和9,496个边界框。如上所述,一些边界框可能具有“未知”的老虎身份,但是注释仍然可以用于训练和测试对象检测器模型。我们以与PASCAL VOC相同的格式提供注释[8]。参见图5中的一些示例边界框。边界框宽度和纵横比的分布如图2所示。
姿态关键点数据。该模块执行姿势估计以定位老虎骨架关键点,由于老虎的显著非刚性运动,这些关键点对于重新识别任务很重要。提取的姿态信息可用于对准和归一化老虎,或提供老虎的精确建模,以提高重新识别算法的准确性。我们定义了一组老虎骨架关键点(表2),如图3和图6所示。如果每只老虎有两个以上的注释,则当注释相距不太远时,关键点位置被平均。如果存在显著差异,我们会手动验证关键点。注释以COCO格式给出。
重新标识数据。根据专业人士的建议,条纹信息用于老虎的重新识别,这样我们就可以专注于老虎身体左右两侧的图像。如上所述,每一方都被视为老虎的不同实体。
具体实施以及在数据采集设备中的体现
我们定义了两种设置来评估重新标识算法。
首先,在“普通重新标识”设置中,查询老虎和数据库老虎都被裁剪,并使用手动注释的边界框和姿势进行规范化。
第二,“野生重新识别”需要自动老虎检测和姿势估计,为后续重新识别过程提供老虎归一化。re-ID数据集包含92只老虎的182个实体,总共有3649个边界框。大多数实体在子集中至少出现10次,如图4中出现次数的直方图所示。与流行的人重新识别数据集Market-1501 [44]不同,由于一些野生动物园的捕捉限制,并非所有实体都出现在交叉摄像头上。在这种情况下,我们确保来自同一摄像机的明显不同的帧被选择到我们的数据集中。表3列出了跨摄像机和单摄像机之间的详细数据分布,显示每个实体平均有28.3个bboxes。如前所述,实体是重标识的基本单位,是老虎的单面。
3.2Evaluation Protocol
检测任务
数据集解说
为了符合下面的野生重新标识任务并避免可能的地面真实边界框注释泄漏,我们将1,651幅图像(约37%)分割为检测任务的测试集,该测试集包含来自野生重新标识任务测试集中所有老虎实体的图像,同时保留其他图像作为训练集,其中一部分训练子集(10%)用于验证目的。
评估检测
与COCO对象检测挑战[24]类似,我们使用不同交叉合并(IoU)阈值下的平均精度(AP)来评估性能。由于检测器将部署在资源受限的边缘设备上,我们将mAP和FLOPs结合在一起,提出了每FLOPs性能(PPF),以与0.43 mAP和10亿FLOPs的基线相比,评估检测器,如下所示:

姿态估计任务
姿态估计任务还将数据集随机分成训练和测试子集,分别包含80%和20%带有关键点注释的bbox。评估指标由对象关键点相似度(OKS)来衡量,如COCO [24]中所定义。表4列出了由于来自不同注释器的不均匀注释而导致的每个关键点的注释统计,其中휎2denotes是由对象比例归一化的关键点位置的方差。形式上,휎2 푖= 퐸[푑2 푖/푠2],푑푖represents代表不同注释者之间푖-th关键点的偏差,푠代表对象的尺度。那么OKS被计算为

重新标识任务
如前所述,我们根据图像是手动裁剪还是自动裁剪定义了两条轨迹(普通重标识和野生重标识)。与Market-1501 [43]类似,我们选择平均精度(mAP)作为评估性能的主要指标,top-푘精度作为次要指标。对于每个查询,重新标识算法都会生成一个预测列表,我们可以根据该列表来测量接入点。所有查询的AP得分的平均值是mAP,它基于来自Market-1501 [43]的评估代码,但有以下差异。在Market-1501中,如果算法返回的结果图像与查询图像来自相同的摄像机,则计算假阳性。在我们的数据集中,我们有时会有老虎的身份,这些身份只能从单个相机中捕获。因此,我们对从同一台相机返回图像的处理进行了略微不同的修改。我们从用于计算AP分数的查询结果中排除查询图像1秒内(向前和向后)的时间相邻图像。更准确地说,我们将每个查询图像分为两类:“单摄像机”,其中身份只出现在一个摄像机中,或者“跨摄像机”,其中目标出现在多个摄像机中。我们报告这两种情况的性能。
然后,我们按照以下步骤构建训练和测试集
首先,我们随机选择60%的实体,单相机类别和40%的实体来自跨相机类别。总的来说,这形成了训练集。其余图像组成测试集。对于整个测试集,测试集中的每个图像将被查询一次。测试集中的单摄像机和跨摄像机部分的度量是分开计算的。表5和表6给出了数据集分割的详细统计信息。
小结
如前所述,重新标识任务由“普通reID”案例和“野生重新标识”案例组成。普通情况下使用手动老虎边界框和姿势注释来重新标识,而野生情况下旨在基于自动老虎检测和姿势估计结果来评估全流水线性能。更严格地说,图库和查询的边界框都是由检测模块生成的。对于那些没有被检测器发现的查询老虎,对应的查询AP被计为0。

4 BASELINE METHODS
重点突出
在这里,我们描述了我们用于重新标识的基线方法,特别是包括我们创新的基于姿势部分的CNN建模框架。我们使用共同的基线进行目标检测和姿态估计,我们将在结果中介绍。

4.1 Classification based Baseline
大规模训练的分类网络被认为产生了丰富的表示,可以推广到新的任务,特别是在相同的数据集下。因此,我们使用[12]中提出的基于分类的re-id方法作为基线。该模型使用ImageNet预先训练的ResNet-50 [13]主干,然后是两个全连接(FC)层,分别有1024和107个神经元(图7)。输入图像分辨率为256×128,以适应老虎的水平纵横比。网络的输出特征长度(푛 = 107)被设置为训练集中的实体数量。为了避免过拟合,ResNet-50主干参数被冻结,我们只训练添加的分类图层。由于分类任务通常使用交叉熵损失,我们将该基线称为交叉熵损失。

4.2 Triplet Loss Baseline
度量学习也广泛用于重标识,包括三重损失[33]、四重损失[5]或三重损失[14]等方法。三元组丢失旨在将数据流形上语义相似的点拉近嵌入空间,并将不同的点推得更远。在这项研究中,我们选择三重损失变量TriHard作为我们的基线方法之一。三重损失在小批量中检查正对和负对之间最难的对。形式上,三重态损失是
为了简单和公平比较,我们使用了与分类基线中使用的相同的网络架构。

4.3 Aligned re-ID Baseline(对齐的重新标识基线)
上述方法使用全局表示,这对于姿态变化较大的目标可能无效。在对齐的重标识方法[41]中,作者提出了局部距离概念来增强特征表示。他们使用动态规划来计算两幅图像之间的最短映射路径,并将局部距离定义为最短路径的长度。两幅图像之间的最终距离是全局距离和该局部距离的总和。在我们的实现中,我们只引入了度量损失来组合局部距离和全局距离,而没有使用原始对齐重标识工作中的其他技巧[41]。
由于增加了本地距离,网络架构发生了变化,如图8所示。对于最后一个池层,我们沿着每个列进行池化,以获得本地要素

4.4 Pose Part based Model(基于姿态零件的模型)
虽然Aligned-ReID对行人的重识别表现出了很强的性能,但是该方法的性能比基于三重损失的老虎重识别基线差。详细对比请见实验部分。因为老虎由于非刚性运动而具有大得多的姿态变化,所以通过汇集创建的局部特征表示不提供老虎身体的不变表示或精确建模。基于零件的模型在由可变形零件组成的对象上取得了巨大的成功,例如在对象检测[10]或细粒度对象识别[40]等任务中。这种方法用矩形面片表示局部零件,采用结构化SVM学习零件结构。最近,像OpenPose [4]或AlphaPose [9]这样的姿势关键点估计技术甚至提供了精确的身体部位和骨骼建模,这为基于部位的建模提供了新的机会。
提出了基于姿态部分的老虎识别模型,该模型将姿态关键点估计结果无缝集成到深度神经网络中。图10展示了网络架构。我们用7部分星形模型来描述老虎的特征,包括躯干、前腿的左右两侧、后腿和后腿。对于每个部分,我们根据姿势骨架计算轴对齐边界框(AABB),如图9所示。事实上,非AABB区域表示更准确,但在训练阶段在要素图上计算效率较低,因此我们不得不求助于AABB近似。对于每个AABB地区,我们应用ResNet-50主干,并在res3d要素地图上使用区域平均池(RAP)提取局部要素表示。我们使用中间层res3d代替最终残余层,因为相对较高的特征图分辨率(32× 16 vs 8×4)可以为每个部分提供更精确的RAP。尽管如此,大多数主干网络层在全局要素和本地基于部分的要素之间共享。假设{x푖}7 푖=1are是7部分的RAP表示,局部模型也用如下定义的三重损失进行训练

全局表示和基于姿态部分的表示都可以用交叉熵损失或三元组损失来训练。在我们的实现中,我们定义了一个组合的三重损失来训练整个网络。

5 EXPERIMENTS
进行试验以及相应的结果
5.1 Training Settings
对于三个模块(对象检测、姿态估计和tiger re-ID)中的每一个,我们选择最广泛使用的方法,要么使用可用的开源代码,要么通过重新实现。除非明确说明,否则这些方法的超级参数将保留为默认参数或推荐参数。我们根据数据集大小修改了训练时期的数量。具体来说,我们继续训练,直到验证集的精度收敛。然后,我们使用相同数量的时期,在整个训练集(包括验证集)上重新训练模型。由于老虎的包围盒通常是水平主框,不同于行人重标识这样的垂直主框,所以我们交换了所有相应的宽度和高度的超参数。

5.2 Benchmark Results
老虎检测。由于物体探测器将部署在电池供电的边缘相机上,我们只测试了轻量级物体探测器来进行基准测试。特别是,MobileNetv1 [17]和MobileNetv2 [31]是广泛使用的图像分类模型,也是单镜头检测(SSD)等对象检测器模型的主干[26]。本文在检测数据集上对固态硬盘-移动网络-v1和固态硬盘-移动网络-v2模型的性能进行了基准测试我们将ImageNet预先培训的主干用于MobileNet-SSD型号。我们还对其他高效的物体检测器TinyDSOD [23]和YOLOv3 [29]进行了基准测试,其中TinyDSOD在训练集上从头开始训练,而YOLOv3则在ImageNet上对其主干DarkNet进行预训练,然后严格遵循官方的训练流程
图11显示了不同借据阈值下的精度-召回曲线。注意300 × 300是默认分辨率,我们希望更高的分辨率可以提供更好的结果。基于这些结果,蒂尼-DSOD在所有指标中表现最佳。这可能是因为从头开始训练有助于模型避免学习偏差或领域差异,从而更好地拟合我们的ATRW数据集。

老虎姿势估计。对于姿态估计,我们采用开放姿态[4],阿尔法姿态[9]和HRNet [34],因为它们是开源的,具有最先进的结果。老虎的骨骼定义与人类非常不同,因此我们必须修改原始代码人类的姿势相应地符合老虎的骨骼定义。OpenPose代码的修改失败,产生了一个不收敛的训练过程。幸运的是,我们连续修改了AlphaPose和HRNet的代码,并根据提供的检查点对这些姿势估计器进行了微调,以适应老虎的姿势配置。表8列出了阿尔法姿势和人力资源网的定量结果,图13显示了不同OKS阈值下的平均精度和平均召回率曲线。该基准表明,HRNet提供的最先进的姿势估计器可以提供相当准确的(老虎姿势为86.9%,人类姿势为77.0%[34])姿势结果,用于野外重新识别目的。通过更多的训练数据可以进一步提高结果。

普通和野生重新识别。我们根据第4节中描述的基线方法评估了野生老虎和普通老虎的重新鉴定。在这项研究中,我们使用在ImageNet上预先训练的ResNet-50 [13]作为主干网络。对于普通情况,使用手动标注的边界框将老虎归一化为256 × 128,而对于野生情况,从自动边界框和姿态关键点将老虎归一化。请注意,由于最终检测结果不够高,我们采用了[45]中提出的技巧,即在分析中利用top-퐾 (퐾最多= 10)评分的锚盒。
表9列出了所有比较基线方法的mAP和top-푘 (푘 = 1,5)结果。对于野生情况,我们使用SSD-MobileNet-v2提供的边界框和HRNet提供的姿势来评估PPbM。图12通过累积匹配曲线进一步说明了识别率与等级的关系。图12通过累积匹配曲线进一步说明了识别率与等级的关系。

从结果中我们有几个观察结果
首先,每种方法在普通情况下的表现明显比在野生情况下好得多,尤其是在跨摄像机场景下。这表明检测和姿态估计模块仍有很大的改进空间
其次,PPbM模型在普通情况和野生情况下都明显优于其他基线模型。这表明精确的姿态建模对于像老虎这样姿态变化很大的目标很重要。
第三,PPbM-a在mAP指标上比PPbM-b表现更好,但在top-1指标上表现更差。更有趣的是,在交叉摄像头的情况下,PPbM-b在CMC曲线when푟푎푛푘> 5上的表现优于PPbM-a(图12)。我们认为PPbM-b仍然强大,可能有潜在的改进空间
第四,从普通病例到野生病例,PPbM-a在mAP中下降1.4%,而三联体丢失基线下降超过2.0%。这在一定程度上验证了PPbM的泛化能力(模型的泛化能力)
第五,跨摄像机设置有很大的改进空间,这保证了我们的ATRW数据集对于重新身份识别研究的巨大价值。(数据集采集设备的改进)

6 CONCLUSION
**我们提出了一个新的大规模野生动物重标识数据集ATRW,**该数据集包含多个野生动物园东北虎的边界框、姿态关键点和标识标注。与人或车辆重新识别数据集相比,野生动物重新识别面临许多新的挑战,例如不同的姿势、照明和背景环境。特别是,由于非刚性运动导致的大姿态变化需要精确的目标建模,这在当前的重标识数据集和研究中研究较少。通过系统的基准测试,我们证明了与行人或车辆数据集上的性能相比,该数据集对最先进的算法提出了挑战,并引入了一种新的基于姿态部分的模型(PPbM),该模型具有显著的精度增益。数据集还将计算机视觉技术的应用领域和研究挑战扩展到野生动物保护的重要应用领域。(呼应introduction的最后一段

ACKNOWLEDGMENTS
我们要感谢MakerCollider捕获原始数据并将其捐赠给我们用于学术用途,并感谢世界自然基金会东北虎和豹子保护项目团队在整个项目期间的大力支持。感谢保罗·卢、卡奇·张、·宋的鼎力相助。

ATRW A Benchmark for Amur Tiger Re-identification in the相关推荐

  1. 中国上海人工智能CIMCAI世界第一完成两百万次AI验箱上亿次箱识别,成熟AI产品运行超7百万小时智慧港航智能化中国上海人工智能

    中国上海人工智能CIMCAI世界第一完成两百万次AI验箱上亿次箱识别, 成熟AI产品运行超7百万小时智慧港航智能化,全球港航人工智能独角兽企业CIMCAI成熟港航AI产品, 应用码头港区海关仓库口岸铁 ...

  2. Joint Detection and Identification Feature Learning for Person Search

    Joint Detection and Identification Feature Learning for Person Search 2018-06-02 本文的贡献主要体现在: 提出一种联合的 ...

  3. Machine Learning for Technical Debt Identification

    目录 Abstract: 1 INTRODUCTION 2 RELATED WORK 3 METHODOLOGY 3.1 Data Collection 3.1.1 Project Selection ...

  4. 人脸识别引擎SeetaFaceEngine中Identification模块使用的测试代码

    人脸识别引擎SeetaFaceEngine中Identification模块用于比较两幅人脸图像的相似度,以下是测试代码: int test_recognize() {const std::strin ...

  5. 基于深度学习的点云配准Benchmark

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨千百度@知乎 来源丨https://zhuanlan.zhihu.com/p/289620126 ...

  6. apache bench linux,linux – 如何在CentOS上安装Apache Benchmark?

    我尝试在我的centos上使用 Is there a way to install Apache Bench (ab) without installing apache解决方案安装Apache Be ...

  7. Sebastian Ruder 发文:Benchmark 的挑战与机遇!

    过去数年,在迁移学习的推动下,NLP的模型变得越来越强大.性能快速提升的AI算法,使得现在面向AI性能的基准测试变得有些落后.例如,近来不断涌现的AI模型,在SuperGLUE.SQuAD等标准基准上 ...

  8. 华为开源CTR Benchmark,学术界SOTAs的照妖镜?

    来源 | 夕小瑶的卖萌屋作者 | 卖萌酱 众所周知,与CV.NLP不同,搜索.广告.推荐领域的学术界paper在很多问题上喜欢各玩各的,缺乏一个统一可比的benchmark. 就推荐/广告中核心的CT ...

  9. ICLR 2020| 最新NAS benchmark:0.1秒完成NAS算法搜索

    2020-01-19 16:37 专题:ICLR 2019 导语:ICLR论文解读~ 雷锋网AI科技评论按:本文对悉尼科技大学博士生董宣毅发表于 ICLR 2020 的录用Spotlight论文< ...

最新文章

  1. 量子计算机区别于冯诺依曼机的一个显著特点,大学计算机基础习题答案西安交大.doc...
  2. python读中文-python读写中文
  3. Javascript s08
  4. 同样是消息队列,Kafka凭什么速度那么快?
  5. 好用的平板电脑_小熊分享|这五款平板电脑的性价比绝了!
  6. Mr.J--C语言头函数的建立(附严薇敏《数据结构》线性表代码)
  7. iOS6、7、8、9新特性汇总和适配说明
  8. 流畅的python和cookbook学习笔记(五)
  9. 如何获取微信应用appid
  10. 国庆促销海报模板素材
  11. CDN是什么意思 CDN加速服务有什么功能和作用?
  12. c语言信封比大小,从C打印信封#
  13. 身边已经消失或走在消失路上的可爱小动物
  14. python中 and 和 or 操作的返回值。
  15. php 图片印章_PHP制作中文圆形印章示例
  16. 计算机硕士研究生论文格式,计算机硕士论文格式
  17. java正则表达式初探——java.util.regex.Pattern类
  18. 【数分书单】分析思维《一本小小的蓝色逻辑书》第五章小结
  19. Arrays.stream和Stream.of
  20. 工作中实用的 Linux 命令

热门文章

  1. 「APIO 2019」奇怪装置
  2. java通过stream方式将字符串list转成整数list
  3. Anaconda创建、删除虚拟环境以及一些conda常用指令
  4. 算法与数据结构——算法基础——二叉树(java)(b站左程云课程笔记整理)
  5. 数据资源 | 八大板块!数据公开下载渠道(下)
  6. ERROR 1552 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : 问题的解决
  7. linux 组软raid0,配置Linux软RAID0
  8. NanoPi NEO开发板使用方法
  9. Intel官网资料下载链接
  10. java源代码位置_Java源代码放置位置?