PaddleDetection目标检测任务简介和概述

PaddleDetection是飞桨提供的目标检测开发套件,包含丰富模型如YOLOv3、Faster R-CNN等,支持端到端训练、优化和部署。它具有模型丰富、高灵活性、易部署和高性能等优点,能应对数据有限、多尺度等挑战。通过配置文件,开发者可快速训练、推理和部署模型,适用于服务器和移动端。本教程介绍了PaddleDetection的使用,包括环境准备、数据准备、模型训练、推理和部署,以及实践应用案例。
摘要由CSDN通过智能技术生成

本篇博客不计入作业

目标检测任务简介
目标检测的主要目的是让计算机可以自动识别图片或者视频帧中所有目标的类别,并在该目标周围绘制边界框,标示出每个目标的位置,如下图所示。

图(a)是图像分类任务,只需识别出这是一张斑马的图片。 图(b)是目标检测任务,不仅要识别出这是一张斑马的图片,还要标出图中斑马的位置。

目标检测是计算机视觉的主要方向之一,同时也是实例分割,人脸检测,关键点检测等视觉任务的基础,目标检测应用场景广泛,下面列举了一些常见的应用场景。

目标检测任务的挑战
对于目标检测任务,主要存在以下挑战:

  • 数据有限(Limited data)
    目标检测的样本标注比图像分类要难很多,所以很难有像ImageNet这样的超大数据集用于训练,而数据量对模型非常重要,因此在目标检测中数据增强是十分重要的。
  • 定位/识别任务双优先级(Dual priority)
    目标检测涉及定位和识别两个子任务,高效地在两个子任务中都取得很好的效果,不同算法有不同的效果,不同场景需要不同的侧重。
  • 多尺度(Multiple spatial scales and aspect ratios)
    目标检测中存在多尺度的情况,比如狗和小黄鸭,尺度相差很大,框的长宽比也有差异。
  • 类别不均衡(Class imbalance)
    不同类别样本数差异大的问题,两条腿的人到处都是,四条腿的熊猫只能去动物园找到,类别的不均衡也会加大目标检测任务的难度。
  • 实时检测需求(Speed for real-time detection)
    不少应用场景对目标检测的实时性要求很高。

PaddleDetection简介

PaddleDetection是飞桨推出的端到端目标检测开发套件,旨在帮助开发者更快更好地完成检测模型的训练、精度速度优化到部署全流程。PaddleDetection以模块化的设计实现了多种主流目标检测算法,并且提供了丰富的数据增强、网络组件、损失函数等模块,集成了模型压缩和跨平台高性能部署能力。目前基于PaddleDetection已经完成落地的项目涉及工业质检、遥感图像检测、无人巡检等多个领域。

PaddleDetection具备以下四大优势:

  • 模型丰富:PaddleDetection提供了丰富的模型,包含目标检测、实例分割、人脸检测等100+个预训练模型,10+算法,持续推出针对服务器端和移动端、嵌入式等的增强模型,涵盖多种数据集竞赛冠军方案,并提供适合云端/边缘端设备部署的检测方案。
  • 高灵活度:PaddleDetection通过模块化设计来解耦各个组件,模型网络结构和数据处理均可定制,基于配置文件可以轻松地搭建各种检测模型。
  • 易部署:PaddleDetection的模型中使用的核心算子均通过C++或CUDA实现,提供跨平台推理引擎,实现了模型训练到部署的无缝衔接,同时内置集成了一键式压缩和部署能力。
  • 高性能:基于飞桨框架的高性能内核,实现了模型的高效训练和推理。例如,YOLOv3的训练速度快于其他框架,在Tesla V100 16GB环境下,Mask-RCNN(ResNet50)可以单卡Batch Size可以达到4 (甚至到5)。

PaddleDetection模型库概览
PaddleDetection模块式地提供YOLOv3,EfficientDet等10余种目标检测算法、ResNet-vd,MobileNetV3等10余种backbone,以及sync batch norm, IoU Loss、可变性卷积等多个扩展模块,这些模块可以定制化地自由组合,灵活配置;同时预置提供100余种训练好的检测模型。

服务器端增强模型
PaddleDetection不仅复现了常见的目标检测模型,还对模型的进行了图像增强、骨干网络优化、DropBlock,IoU Loss IoUAware等一系列深度优化。同时,内置集成模型压缩能力,提供了一键式剪裁,蒸馏,量化的脚本,大大提高模型精度和速度,并减小模型体积。

  • 单阶段目标检测模型YOLOv3
    精度方面,原论文作者开源的YOLOv3模型在COCO数据集上精度是33.0,PaddleDetectio将其提高到43.6(提高10.6个绝对百分点);推理速度方面,领先于同类产品40%左右。

  • 两阶段目标检测模型FasterRCNN-ResNet50vd-FPN
    精度方面,通过减小NMS的proposal,和减小FPN的通道数,虽然精度略有降低,但是推理速度大幅提升;通过PaddleClas里的SSLD蒸馏的预训练、CIoU Loss、自动图像增强等优化方法,将精度优化到41.6(提升5.2个绝对百分点)。推理速度方面,提升了38%,在Tesla V100上的预测速度达到60FPS。

  • 模型压缩
    在YOLOv3系列模型上,通过一键式剪裁+蒸馏的方案,YOLOv3_MobileNetV1剪裁了近70%的计算量,在精度基本无损或略有提升的情况,模型在高通855芯片上加速2.3倍,GPU上也有60%的加速;YOLOv3-ResNet50vd-DCN剪裁模型,精度提升了0.6,GPU上加速20%。同时,对应压缩后的模型、压缩脚本和操作方法均可以在Github上获取。

端侧轻量化增强模型
对于移动端,嵌入式这些端侧的设备,一般算力比较低,内存较小,所以对运算量和模型大小要求比较高,同时端侧的设备种类也比较多,有早起的低端CPU,也有近年来推出的骁龙855,麒零980等性能较好的CPU,还有更优一些嵌入式的GPU,NPU等。PaddleDetection针对这种情况,推出了三组模型:

  • 对于低算力的设备,推出SSDLite及其量化模型,通过模型增强,SSDLite在骁龙845芯片上推理时延达到41ms。
  • 对于需要兼顾速度和精度的应用场景,推出YOLOv3剪裁+蒸馏的压缩模型,在100ms左右推理时延上能在COCO数据集上达到25左右的精度。
  • 对于算力比较高的设备,推出Cascade Faster RCNN模型,最高能在COCO数据集上达到30.2的精度。

通过这三组增强模型,可以根据自己的设备算力来选择合适的端上模型,下图是三组模型的增强效果。

  • 低端算力:SSDLite模型 + 量化

  • 中端算力:兼顾速度和精度的YOLOv3压缩模型

  • 高端算力:高精度的Cascade Faster RCNN模型

PaddleDetection配置文件

如前文所述,PaddleDetection是飞桨推出的端到端目标检测开发套件,旨在帮助开发者更快更好地完成检测模型的训练、精度速度优化到部署全流程。支持现有的RCNN、SSD、YOLO等系列模型、支持 ResNet、ResNet-VD、ResNeXt、ResNeXt-VD、SENet、MobileNet、DarkNet等主干网络。而快速完成不同模型的训练体验,就是通过配置文件的切换。

亮点:一键式训练/推理/部署
PaddleDetection提供所有模型、算法、扩展模块的配置脚本,同时提供一键式训练、评估、推理、模型导出等脚本,从而帮助开发者完成不同模型的快速体验。

亮点:一键式模型增强
PaddleDetection以组件式形式提供模型的所有优化方法,只需要修改对应配置文件的参数配置,就能一键式模型增强。

PaddleDetection配置文件目录

PaddleDetection
  ├── configs # 提供所有模型、算法、扩展模块的配置脚本
  ├──  contrib
  ├── dataset
  ├── demo
  ├── deploy  # 提供C++端和python端使用飞桨预测库进行推理部署的详细指导
  ├── docs
  ├── ppdet
  ├── slim
  ├── tools  # 一键式训练、评估、推理、模型导出`train.py` `eval.py` `infer.py` `export_model.py`
  ├── .gitignore
  ├── .pre-commit-config.yaml
  ├── .style.yapf
  ├── .travis.yml
  ├── LICENSE
  ├── README.md
  ├── README_en.md
  ├── requirements.txt  # 列出了PaddleDetection的所有依赖库

常用命令

在命令提示符下输入命令时,一定避免输入多余的空格。比如,weights=后面出现了一个多的空格,导致模型文件读不到。

-c: 指定配置文件进行一键式训练
--eval:训练中使用评估
-o use_gpu=False:使用CPU训练。不建议在CPU下训练模型,若只能使用CPU运行PaddleDetection,需指定。

这里以faster_rcnn_r50_1x.yml举例,展示配置文件的使用方法。

# 设置PYTHONPATH路径
export PYTHONPATH=$PYTHONPATH:.
# GPU训练 支持单卡,多卡训练,通过CUDA_VISIBLE_DEVICES指定卡号
export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
python tools/train.py -c configs/faster_rcnn_r50_1x.yml
# GPU评估
export CUDA_VISIBLE_DEVICES=0
python tools/eval.py -c configs/faster_rcnn_r50_1x.yml
# 预测
python tools/infer.py -c configs/faster_rcnn_r50_1x.yml --infer_img=demo/000000570688.jpg

常用参数设置
训练配置文件需要着重关注的参数如下:(需要根据自己的不同数据集进行训练)

  • 最大迭代步数:max_iters
  • 预训练模型的来源:pretrain_weights
  • 数据路径:dataset_dir
  • Batch_size的大小:batch_size
  • 数据集类别:num_classes
  • 学习率:LearningRate.base_lr

下文“十分钟入门,玩转视频的目标检测”,使用PaddleDetection提供的一键式脚本,带你快速完成视频流的目标检测任务。

十分钟入门,玩转视频的目标检测

以YOLOv3_darknet模型为例,介绍如何使用PaddleDetection进行目标检测模型的训练和部署,以及对视频流进行目标检测。

注意事项

请使用AI Studio的“高级版”运行本节相关程序,如下图所示。
模型训练期间,需要确保此网页不关闭、电脑屏幕未锁定,否则训练将中断。
除“数据集”和“文件夹 > Work”目录外,其他输出文件在重启环境时将被清空。如果希望本次实验任务用到的文件在下次进入环境时仍然存在,可以选择保存到这两个地方。

环境准备

PaddleDetection下载

可以通过如下git clone命令下载PaddleDetection目标检测库,由于在AIStudio上通过git clone下载比较慢,本项目在work目录下提供下载好的PaddleDetection压缩包,也可直接解压使用。

%cd data
# !git clone https://github.com/PaddlePaddle/PaddleDetection # 下载PaddleDetection目标检测库
#! tar xf ../work/PaddleDetection.tar -C . # 解压work目录下已下载好的PaddleDetection压缩包
!unzip -o /home/aistudio/work/PaddleDetection.zip

安装PaddleDetection依赖库

通过如下方式安装PaddleDetection依赖,并设置环境变量。

%cd PaddleDetection
!pip install -r requirements.txt # requirements.txt列出了PaddleDetection的所有依赖库
!pip install Cython pycocotools
%env PYTHONPATH=.:$PYTHONPATH
%env CUDA_VISIBLE_DEVICES=0

数据准备

PaddleDetection提供了COCO、VOC等数据集下载脚本如dataset/coco/download.py,通过此脚本可自动下载对应数据集。但由于COCO数据集下载比较耗时,本项目已上传COCO2017数据集,可直接解压获取。

COCO的train数据集较大,解压比较耗时,本项目仅使用val数据集。

# ! python dataset/coco/download_coco.py  # coco数据集下载脚本
! unzip -q /home/aistudio/data/data7122/annotations_trainval2017.zip -d dataset/coco # 解压数据集
! unzip -q /home/aistudio/data/data7122/val2017.zip -d dataset/coco
# ! unzip /home/aistudio/data/data7122/train2017.zip -d dataset/coco
 

一键式模型训练

本项目选取yolov3_darknet.yml作为本项目的训练配置文件。该配置文件选取的是YOLOv3_darknet模型,骨干网络为DarkNet,yolo_head为YOLOv3Head
本项目演示使用COCO的val数据集训练,对配置文件做如下修改(使用train数据集不需要做以下修改,可以直接一键式启动训练),work目录下提供了一个修改好的配置文件,也可在configs目录(即data/PaddleDetection/configs目录)下按照如下方式自行修改yolov3_darknet.ymlyolov3_reader.yml

1.本次项目将训练轮数max_iters减小到50000, 减少PiecewiseDecaymilestones[40000, 45000]
2.修改TrainReader.datasetanno_pathimage_dirval数据集路径, mixup_epoch修改为0
3.由于使用单卡训练,将LearningRate.base_lr减少8倍到0.000125

yolov3_darknet.yml文件配置好之后,就可以进行一键式模型训练。
常见的训练命令:
-c configs/yolov3_darknet.yml:用来指定模型配置文件 –use_tb:是否使用tb-paddle记录数据,进而在TensorBoard中显示,默认值是False –tb_log_dir:指定 tb-paddle 记录数据的存储路径 –eval:是否边训练边测试,在训练中交替执行评估, 评估在每个snapshot_iter时开始。每次评估后还会评出最佳mAP模型保存到best_model文件夹下,建议训练时候使用该参数,可以使得完成训练后快速找到最好的模型。

此处仅展示一键式训练,训练完成比较耗时(4小时左右)。如果想压缩训练时间,可以在 yolov3_darknet.yml中将训练轮数max_iters调小,后续使用PaddleDetection发布的权重(yolov3_darknet模型的训练权重默认存储于output/yolov3_darknet目录)进行推理。

! python tools/train.py -c ../../work/yolov3_darknet.yml --use_vdl=True --vdl_log_dir=/home/aistudio/log --eval # 启动模型训练
2020-07-31 15:37:31,475-INFO: If regularizer of a Parameter has been set by 'fluid.ParamAttr' or 'fluid.WeightNormParamAttr' already. The Regularization[L2Decay, regularization_coeff=0.000500] in Optimizer will not take effect, and it will only be applied to other Parameters!
2020-07-31 15:37:32,678-INFO: font search path ['/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf', '/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/afm', '/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/pdfcorefonts']
2020-07-31 15:37:34,002-INFO: generated new fontManager
loading annotations into memory...
Done (t=0.64s)
creating index...
index created!
2020-07-31 15:37:35,710-INFO: places would be ommited when DataLoader is not iterable
W0731 15:37:35.749830   206 device_context.cc:252] Please NOTE: device: 0, CUDA Capability: 70, Driver API Version: 10.1, Runtime API Version: 9.0
W0731 15:37:35.753389   206 device_context.cc:260] device: 0, cuDNN Version: 7.3.
2020-07-31 15:37:38,410-INFO: Downloading DarkNet53_pretrained.tar from https://paddle-imagenet-models-name.bj.bcebos.com/DarkNet53_pretrained.tar
100%|████████████████████████████████| 158940/158940 [00:08<00:00, 18874.15KB/s]
2020-07-31 15:37:46,919-INFO: Decompressing /home/aistudio/.cache/paddle/weights/DarkNet53_pretrained.tar...
2020-07-31 15:37:47,148-WARNING: /home/aistudio/.cache/paddle/weights/DarkNet53_pretrained.pdparams not found, try to load model file saved with [ save_params, save_persistables, save_vars ]
loading annotations into memory...
Done (t=0.72s)
creating index...
index created!
2020-07-31 15:37:54,357-INFO: places would be ommited when DataLoader is not iterable
2020-07-31 15:37:57,222-INFO: iter: 0, lr: 0.000000, 'loss': '4349.791016', time: 0.006, eta: 0:04:50
2020-07-31 15:38:07,677-INFO: iter: 20, lr: 0.000001, 'loss': '7997.978516', time: 0.654, eta: 9:04:49
2020-07-31 15:38:13,518-INFO: iter: 40, lr: 0.000001, 'loss': '1091.667236', time: 0.292, eta: 4:03:11
2020-07-31 15:38:19,337-INFO: iter: 60, lr: 0.000002, 'loss': '585.337524', time: 0.292, eta: 4:03:01
2020-07-31 15:38:25,974-INFO: iter: 80, lr: 0.000003, 'loss': '506.772156', time: 0.325, eta: 4:30:45
2020-07-31 15:38:33,924-INFO: iter: 100, lr: 0.000003, 'loss': '478.433105', time: 0.391, eta: 5:24:47
2020-07-31 15:38:39,475-INFO: iter: 120, lr: 0.000004, 'loss': '409.666504', time: 0.290, eta: 4:01:14
2020-07-31 15:38:45,500-INFO: iter: 140, lr: 0.000004, 'loss': '385.746246', time: 0.304, eta: 4:12:49
2020-07-31 15:38:51,134-INFO: iter: 160, lr: 0.000005, 'loss': '446.195587', time: 0.265, eta: 3:40:03
2020-07-31 15:38:57,548-INFO: iter: 180, lr: 0.000006, 'loss': '378.182983', time: 0.334, eta: 4:37:18
2020-07-31 15:39:02,861-INFO: iter: 200, lr: 0.000006, 'loss': '425.748291', time: 0.267, eta: 3:41:57
2020-07-31 15:39:09,404-INFO: iter: 220, lr: 0.000007, 'loss': '370.520874', time: 0.314, eta: 4:20:39
2020-07-31 15:39:15,689-INFO: iter: 240, lr: 0.000008, 'loss': '355.822144', time: 0.321, eta: 4:26:29
2020-07-31 15:39:21,506-INFO: iter: 260, lr: 0.000008, 'loss': '354.289124', time: 0.294, eta: 4:03:18
2020-07-31 15:39:27,545-INFO: iter: 280, lr: 0.000009, 'loss': '320.562805', time: 0.293, eta: 4:02:37
2020-07-31 15:39:33,780-INFO: iter: 300, lr: 0.000009, 'loss': '311.270996', time: 0.320, eta: 4:25:05
2020-07-31 15:39:39,910-INFO: iter: 320, lr: 0.000010, 'loss': '267.223694', time: 0.311, eta: 4:17:37
2020-07-31 15:39:46,555-INFO: iter: 340, lr: 0.000011, 'loss': '249.246765', time: 0.332, eta: 4:34:33
2020-07-31 15:39:52,995-INFO: iter: 360, lr: 0.000011, 'loss': '243.238327', time: 0.307, eta: 4:13:37
2020-07-31 15:39:59,105-INFO: iter: 380, lr: 0.000012, 'loss': '210.381363', time: 0.317, eta: 4:22:29
2020-07-31 15:40:04,653-INFO: iter: 400, lr: 0.000013, 'loss': '203.033066', time: 0.284, eta: 3:54:28
2020-07-31 15:40:11,069-INFO: iter: 420, lr: 0.000013, 'loss': '185.442490', time: 0.306, eta: 4:12:39
2020-07-31 15:40:17,031-INFO: iter: 440, lr: 0.000014, 'loss': '216.101425', time: 0.308, eta: 4:14:13
2020-07-31 15:40:23,471-INFO: iter: 460, lr: 0.000014, 'loss': '157.271713', time: 0.326, eta: 4:29:32
2020-07-31 15:40:30,143-INFO: iter: 480, lr: 0.000015, 'loss': '165.912811', time: 0.326, eta: 4:29:18
2020-07-31 15:40:37,252-INFO: iter: 500, lr: 0.000016, 'loss': '200.069427', time: 0.345, eta: 4:44:36
2020-07-31 15:40:43,732-INFO: iter: 520, lr: 0.000016, 'loss': '163.968475', time: 0.328, eta: 4:30:44
2020-07-31 15:40:49,928-INFO: iter: 540, lr: 0.000017, 'loss': '158.648056', time: 0.322, eta: 4:25:06
2020-07-31 15:40:56,070-INFO: iter: 560, lr: 0.000018, 'loss': '155.449524', time: 0.300, eta: 4:07:02
2020-07-31 15:41:02,123-INFO: iter: 580, lr: 0.000018, 'loss': '149.289307', time: 0.300, eta: 4:06:54
2020-07-31 15:41:07,229-INFO: iter: 600, lr: 0.000019, 'loss': '153.428802', time: 0.259, eta: 3:33:21
2020-07-31 15:41:15,485-INFO: iter: 620, lr: 0.000019, 'loss': '141.784515', time: 0.422, eta: 5:47:05
2020-07-31 15:41:21,090-INFO: iter: 640, lr: 0.000020, 'loss': '114.264877', time: 0.280, eta: 3:50:34
2020-07-31 15:41:27,319-INFO: iter: 660, lr: 0.000021, 'loss': '145.880859', time: 0.309, eta: 4:14:12
2020-07-31 15:41:34,049-INFO: iter: 680, lr: 0.000021, 'loss': '144.587112', time: 0.321, eta: 4:24:06
2020-07-31 15:41:40,005-INFO: iter: 700, lr: 0.000022, 'loss': '114.052292', time: 0.314, eta: 4:17:52
2020-07-31 15:41:46,828-INFO: iter: 720, lr: 0.000023, 'loss': '112.328705', time: 0.326, eta: 4:27:55
2020-07-31 15:41:53,791-INFO: iter: 740, lr: 0.000023, 'loss': '129.093109', time: 0.359, eta: 4:54:41
2020-07-31 15:41:58,980-INFO: iter: 760, lr: 0.000024, 'loss': '116.874458', time: 0.252, eta: 3:26:39
2020-07-31 15:42:05,323-INFO: iter: 780, lr: 0.000024, 'loss': '123.895432', time: 0.314, eta: 4:17:19
2020-07-31 15:42:10,919-INFO: iter: 800, lr: 0.000025, 'loss': '120.467987', time: 0.292, eta: 3:59:39
2020-07-31 15:42:17,120-INFO: iter: 820, lr: 0.000026, 'loss': '125.974319', time: 0.301, eta: 4:06:49
2020-07-31 15:42:22,653-INFO: iter: 840, lr: 0.000026, 'loss': '112.528641', time: 0.288, eta: 3:56:21
2020-07-31 15:42:28,742-INFO: iter: 860, lr: 0.000027, 'loss': '118.941055', time: 0.303, eta: 4:08:01
2020-07-31 15:42:35,879-INFO: iter: 880, lr: 0.000028, 'loss': '109.778778', time: 0.342, eta: 4:40:05
2020-07-31 15:42:42,483-INFO: iter: 900, lr: 0.000028, 'loss': '92.892197', time: 0.342, eta: 4:39:33
2020-07-31 15:42:48,342-INFO: iter: 920, lr: 0.000029, 'loss': '128.099503', time: 0.294, eta: 4:00:07
2020-07-31 15:42:54,298-INFO: iter: 940, lr: 0.000029, 'loss': '127.058044', time: 0.301, eta: 4:06:17
2020-07-31 15:43:00,445-INFO: iter: 960, lr: 0.000030, 'loss': '117.944519', time: 0.302, eta: 4:07:02
2020-07-31 15:43:06,757-INFO: iter: 980, lr: 0.000031, 'loss': '118.212769', time: 0.309, eta: 4:12:11
2020-07-31 15:43:12,646-INFO: iter: 1000, lr: 0.000031, 'loss': '124.516418', time: 0.303, eta: 4:07:47
2020-07-31 15:43:18,317-INFO: iter: 1020, lr: 0.000032, 'loss': '94.399078', time: 0.284, eta: 3:51:30
2020-07-31 15:43:24,336-INFO: iter: 1040, lr: 0.000033, 'loss': '113.629181', time: 0.304, eta: 4:07:47
2020-07-31 15:43:30,204-INFO: iter: 1060, lr: 0.000033, 'loss': '110.786438', time: 0.289, eta: 3:55:39
2020-07-31 15:43:35,741-INFO: iter: 1080, lr: 0.000034, 'loss': '85.554443', time: 0.283, eta: 3:50:31
2020-07-31 15:43:41,941-INFO: iter: 1100, lr: 0.000034, 'loss': '111.587654', time: 0.306, eta: 4:09:14
2020-07-31 15:43:47,569-INFO: iter: 1120, lr: 0.000035, 'loss': '96.128357', time: 0.287, eta: 3:53:29
2020-07-31 15:43:53,378-INFO: iter: 1140, lr: 0.000036, 'loss': '104.191391', time: 0.285, eta: 3:51:52
2020-07-31 15:43:59,129-INFO: iter: 1160, lr: 0.000036, 'loss': '115.461334', time: 0.279, eta: 3:46:53
2020-07-31 15:44:04,937-INFO: iter: 1180, lr: 0.000037, 'loss': '100.543701', time: 0.300, eta: 4:04:02
2020-07-31 15:44:11,719-INFO: iter: 1200, lr: 0.000038, 'loss': '125.268829', time: 0.335, eta: 4:32:50
2020-07-31 15:44:18,316-INFO: iter: 1220, lr: 0.000038, 'loss': '113.588531', time: 0.322, eta: 4:21:37
2020-07-31 15:44:27,096-INFO: iter: 1240, lr: 0.000039, 'loss': '102.357216', 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值