• [资产园地] 文字识别-Aster
    描述Aster(文字识别/PyTorch)1. 概述此模型是基于ASTER: Attentional Scene Text Recognizer with Flexible Rectification的Pytorch实现版本,该算法需要使用SynthText和MJSynth数据集进行训练,IIIT5k的test数据进行验证。我们提供了训练代码和打包好的合成训练数据集和验证数据,如果有需要用户也可以加入真实数据集进行微调,具体参见ModelArts AI Gallery算法Aster使用指南。训练后生成的模型可直接在ModelArts平台部署成在线服务。对于英文识别任务,一般采用Accuracy作为评价指标:对于网络预测的字符串以及对应的gt,需要先进行归一化(去掉除字母和数字以外的字符,并统一大小写)。如果二者一致,则判定预测正确。Accuracy = 正确的数量 / 总数本算法的其他信息如下表所示:项目说明参考论文ASTER: Attentional Scene Text Recognizer with Flexible Rectification使用框架Pytorch-1.4.0训练集SynthText,MJSynth训练总epoch数7训练batch_size使用1卡训练,每张卡batch_size = 1024训练硬件及耗时1*v100,29小时左右测试集IIIT5K中的测试集推理硬件及速度CPU: 120~130ms/pic GPU: 20~30ms/pic (1*V100, batch_size=1024)输入图像尺寸64*256*3原论文准确率Accuracy (without Lexicon) = 93.4%本算法准确率Accuracy (without Lexicon) = 93.7%2、训练2.1. 算法基本信息任务类型文字识别支持的框架引擎PyTorch-1.4.0-python3.6算法输入存储在OBS上的数据集,必须将训练打包成lmdb格式进行存储,详情请查看下文第4节案例指导算法输出用于Pytorch推理的pth模型代码结构|-- lib| |-- datasets| |-- evaluation_metrics| |-- loss| |-- models| |-- tools| |-- utils| |-- evaluators.py| |-- trainers.py| |-- init.py|-- lib_infer_only| |-- datasets| |-- evaluation_metrics| |-- models| |-- utils|-- trained_model| |-- model| | |-- best_model.pth|-- train.py|-- evaluation.py|-- config.py|-- customize_service.py|-- config.json`-- pip-requirements.txt~~~2.2. 参数说明名称默认值类型是否必填是否可修改描述batch_size1024int是是batch size的大小workers8int是是workers的数量height64int是是网络输入图片的高度width256int是是网络输入图片的宽度voc_typeALLCASES_SYMBOLSString是否表示识别的类别包括大小写字母数字以及标点符号archResNet_ASTERString是否网络backbonecudaTrueString否是是否使用GPU训练evalFalseString是是是否进行模型评估,默认为False,如果设为True,则必须设定load_weight参数,加载指定的pth模型,在创建训练作业时指定的数据存储位置验证集上进行预测,所有预测结果results及模型评估结果eval_result.txt将保存到创建训练作业时指定的训练输出位置train_url上epoch7int是是总训练轮数,建议设置为7。load_weight./trained_model/model/best_model.pthString否是pth模型文件路径,支持加载OBS上保存的模型进行断点续训;不设置时直接进行训练. 默认使用已经预训练的模型,当删除该参数时则train from scratch.training_dataset/home/work/modelarts/inputs/Synth/String是否训练数据集在modelarts上的本地路径training_dataset_subfoldCVPR2016:NIPS2014String是否使用的训练数据集文件夹名。支持多个数据集同时训练,用:分隔多个数据集。testing_dataset/home/work/modelarts/inputs/Synth/benchmark_lmdbs_new/IIIT5K_3000/String是是验证集IIIT5K在modelarts上的本地路径,当eval=False时(训练过程),使用默认参数(对应imdb格式数据集)。当eval=True时,需要将其设置为/home/work/modelarts/inputs/Synth/IIIT5K/test/(对应png格式数据集)或者其他png格式的数据集。gt_path/home/work/modelarts/inputs/Synth/IIIT5K/testdata.matString否是如果eval时未设置gt_path参数,则不会输出统计指标,只保存推理结果。test_freq1000int是是训练过程中,每test_freq次迭代进行一次测试,并保存最优模型。print_freq100int是是训练过程中,每print_freq次迭代,输出一次loss。注1: 当eval设置成True时,只进行模型推理过程。如需对IIIT5K数据集进行推理,需要调整对应的testing_dataset = home/work/modelarts/inputs/Synth/IIIT5K/test/(对应png格式数据集);如需对自己提供的图片进行推理,请将数据集在obs中放置路径与该路径对应。注2: 当eval=True时,推理的结果results文件夹将会保存到train_url指定的obs路径。如果同时设置了gt_path的路径,还会将eval_result.txt保存到train_url路径。注3: 当使用自己提供的数据集进行训练时,需要根据数据集的大小来调整epoch以及test_freq,注意数据集需要放置在Synth目录下,并且将数据集的文件夹名称添加到training_dataset_subfold中,例如CVPR2016:NIPS2014。2.3. 模型输出训练输出的文件结构如下:|-- model | |-- lib_infer_only | | |-- datasets | | |-- evaluation_metrics | | |-- models | | |-- utils | |-- config.json | |-- config.py | |-- customize_service.py | |-- aster_Final.pth `-- logs |-- checkpoint.pth (last model) |-- model_best.pth |-- log.txt `-- cfg.txt设置eval = True,并对IIIT5K数据集进行推理,输出的文件结构如下:|-- results | |-- 1043_1_result.txt | |-- *** `-- eval_result.txt(当设置了gt_path之后输出评价结果)3. GPU/CPU推理利用本算法部署服务进行推理的详细步骤请查看ModelArts AI Gallery算法Aster使用指南4. 案例指导本算法的详细使用方法,请查看ModelArts AI Gallery算法Aster使用指南交付交付方式华为云ModelArts交付区域华北-北京一、华北-北京四、华东-上海一、华南-广州、亚太-**
  • [资产园地] 命名实体识别-FLAT-NER
    描述1.概述此模型基于FLAT: Chinese NER Using Flat-Lattice Transformer中提出的模型结构实现,训练后生成的模型可直接在ModelArts平台部署成在线服务。2.训练2.1.算法基本信息任务类型:命名实体识别支持的框架引擎:Pytorch-1.4.0-python3.6NER任务的精确评估指标:Precision、Recall与F1值算法输入:CoNLL格式的训练集、开发集与测试集算法输出:用于pytorch推理的pth模型与模型参数model_config代码结构:src |- pre-trained-weights |- Flat-ner无预训练模型,此文件夹为空 |- trained_model |- model |- model.pth |- model_config |- config.json |- customize_service.py |- ... |- train.py 启动文件,根据超参选择train or eval |- config.json |- customize_service.py |- data_utils 数据相关代码 |- ... |- modules 模型相关代码 |- ...2.2.训练参数说明名称描述类型可调整默认值必需eval是否进行eval测试集Stringtruefalsefalseload_weight断点续训或eval时的模型加载路径Stringtruefalseload_configeval时的模型配置路径StringtruefalsedeviceGPU使用编号,-1表示使用CPUIntegertrue0falsedelimiterconll格式数据集的分隔符Stringtruetabfalseepoch_num训练总轮数Integertrue100falsebatch_sizebatch_sizeIntegertrue10falsedim_bicharbichar向量的维度Integertruetruedim_latticelattice向量的维度Integertruetruedim_modelattention模型的维度Integertrue160falsedim_pos位置编码的维度Integertrue80falseffn_dropout1ffn dropout1Stringtrue0.15falseffn_dropout2ffn dropout2Stringtrue0.15falseoutput_dropoutoutput dropoutStringtrue0.3falsepatience训练多少轮次不提升后停止训练Integertrue10falseseedseedIntegertrue42false2.3.训练输出文件训练完成后的输出文件如下:训练输出目录 |- model |- model.pth |- model_config 模型配置文件 |- config.json |- customize_service.py |- mix_char_word_emb lattice embedding文件 |- bichar embedding文件 |- lexicon.vec word mebedding文件 |- data_utils 数据相关代码 |- ... |- modules 模型相关代码 |- ...如果设置eval为True,输出文件如下:训练输出目录 |- model |- result.txt 测试集的推理结果与F1值 |- model.pth |- model_config 模型配置文件 |- config.json |- customize_service.py |- mix_char_word_emb lattice embedding文件 |- bichar embedding文件 |- lexicon.vec word mebedding文件 |- data_utils 数据相关代码 |- ... |- modules 模型相关代码 |- ...3.CPU推理元模型来源 选择 从训练中选择,选择训练作业及版本。4.案例指导本算法的详细使用方法,请查看《ModelArts AI Gallery算法Flat-ner使用指导》。交付交付方式华为云ModelArts交付区域华北-北京一、华北-北京四、华东-上海一、华南-广州、亚太-**
  • [资产园地] 行人姿态估计-HRNet
    描述HRNet(姿态估计/Pytorch)##1. 概述此模型基于High-resolution Representation Learning for Person Pose Estimation,该算法会载入ImageNet上预训练的hrnet模型,在用户数据集上做训练。我们提供了训练代码,训练后生成的模型可直接在ModelArts平台部署成在线服务。图像生成的评估手段一般使用AR AP等指标,详细说明请参考:https://cocodataset.org/#keypoints-eval本算法的其他信息如下表所示:项目说明参考论文High-resolution Representation Learning for Person Pose Estimation使用框架Pytorch-1.0.0训练集COCO 2017 train set训练epoch数210训练batch_size4卡训练,batch_size 128训练硬件及耗时4*v100,90小时推理硬件及速度GPU,4s/pic输入图像尺寸256*192*3原论文准确率AP 74.4本算法准确率AP 74.52、训练###2.1. 算法基本信息任务类型:姿态估计支持的框架引擎:PyTorch-1.0.0-python3.6算法输入:存储在OBS上的数据集,必须按照COCO数据集的格式进行存储,如下所示:|-- data `-- |-- coco `-- |-- annotations | |-- person_keypoints_train2017.json | `-- person_keypoints_val2017.json |-- person_detection_results | |-- COCO_val2017_detections_AP_H_56_person.json | |-- COCO_test-dev2017_detections_AP_H_609_person.json `-- images |-- train2017 | |-- 000000000009.jpg | |-- 000000000025.jpg | |-- 000000000030.jpg | |-- ... `-- val2017 |-- 000000000139.jpg |-- 000000000285.jpg |-- 000000000632.jpg |-- ... 其中标注文件可以在coco 官网了解详情,detection results可以从此下载:https://drive.google.com/drive/folders/1fRUDNUDxe9fjqcRZ2bnF_TKMlO0nB_dk?usp=sharing算法输出:用于Pytorch推理的pth模型,GPU推理由于需要先做行人检测,速度较慢,约4s/pic。如果不做检测,速度在1s/pic以内。代码结构src |- pre-trained_weights |- HRNet在imagenet上的预训练模型 |- trained_model |- model |- config.json |- customize_service.py |- epoch_210_AP_74.5.pth |- lib #必要的支持库 |- experiments #训练和测试的配置文件样例 |- tools # 训练和测试脚本 |- train.py # 启动文件, 可以用eval参数控制训练或者测试 2.2. 训练参数说明名称默认值类型是否必填是否可修改描述load_weighttrained_model/model/epoch_210_AP_74.5.pthstr是是pth模型文件路径,支持加载OBS上的pth模型进行训练或者测试evalFalsestr是是是否进行模型评估,默认为FalsecfgNonestr是否obs中的配置文件路径,选填gpu_num1int是是使用的gpu数量epochs1int是是训练轮次load_weight默认加载在COCO上训练好的模型,可以在此基础上继续微调,也支持从obs路径加载用户自己的模型。eval为True时,进行测试;为False时,进行训练。此外程序支持任意配置参数,覆盖默认配置文件,例如WOKRERS=10,控制线程数。当然,也可以在配置文件中进行设置。算法创建时输入的参数优先级大于配置文件中的参数。已自动加载的默认配置文件如下:AUTO_RESUME: true CUDNN: BENCHMARK: true DETERMINISTIC: false ENABLED: true DATA_DIR: '' GPUS: (0,1,2,3) OUTPUT_DIR: 'output' LOG_DIR: 'log' WORKERS: 24 PRINT_FREQ: 100 DATASET: COLOR_RGB: true DATASET: 'coco' DATA_FORMAT: jpg FLIP: true NUM_JOINTS_HALF_BODY: 8 PROB_HALF_BODY: 0.3 ROOT: 'data/coco/' ROT_FACTOR: 45 SCALE_FACTOR: 0.35 TEST_SET: 'val2017' TRAIN_SET: 'train2017' MODEL: INIT_WEIGHTS: true NAME: pose_hrnet NUM_JOINTS: 17 PRETRAINED: 'models/pytorch/imagenet/hrnet_w32-36af842e.pth' TARGET_TYPE: gaussian IMAGE_SIZE: - 192 - 256 HEATMAP_SIZE: - 48 - 64 SIGMA: 2 EXTRA: PRETRAINED_LAYERS: - 'conv1' - 'bn1' - 'conv2' - 'bn2' - 'layer1' - 'transition1' - 'stage2' - 'transition2' - 'stage3' - 'transition3' - 'stage4' FINAL_CONV_KERNEL: 1 STAGE2: NUM_MODULES: 1 NUM_BRANCHES: 2 BLOCK: BASIC NUM_BLOCKS: - 4 - 4 NUM_CHANNELS: - 32 - 64 FUSE_METHOD: SUM STAGE3: NUM_MODULES: 4 NUM_BRANCHES: 3 BLOCK: BASIC NUM_BLOCKS: - 4 - 4 - 4 NUM_CHANNELS: - 32 - 64 - 128 FUSE_METHOD: SUM STAGE4: NUM_MODULES: 3 NUM_BRANCHES: 4 BLOCK: BASIC NUM_BLOCKS: - 4 - 4 - 4 - 4 NUM_CHANNELS: - 32 - 64 - 128 - 256 FUSE_METHOD: SUM LOSS: USE_TARGET_WEIGHT: true TRAIN: BATCH_SIZE_PER_GPU: 32 SHUFFLE: true BEGIN_EPOCH: 0 END_EPOCH: 210 OPTIMIZER: adam LR: 0.001 LR_FACTOR: 0.1 LR_STEP: - 170 - 200 WD: 0.0001 GAMMA1: 0.99 GAMMA2: 0.0 MOMENTUM: 0.9 NESTEROV: false TEST: BATCH_SIZE_PER_GPU: 32 COCO_BBOX_FILE: 'data/coco/person_detection_results/COCO_val2017_detections_AP_H_56_person.json' BBOX_THRE: 1.0 IMAGE_THRE: 0.0 IN_VIS_THRE: 0.2 MODEL_FILE: '' NMS_THRE: 1.0 OKS_THRE: 0.9 USE_GT_BBOX: true FLIP_TEST: true POST_PROCESS: true SHIFT_HEATMAP: true DEBUG: DEBUG: true SAVE_BATCH_IMAGES_GT: true SAVE_BATCH_IMAGES_PRED: true SAVE_HEATMAPS_GT: true SAVE_HEATMAPS_PRED: true常用的配置有GPUS(控制使用的GPU数量)、IMAGE_SIZE(控制输入图像大小,更大的尺寸可能有更高的精度)、HEATMAP_SIZE(可根据需要,配置为IMAGE_SIZE的1/4)、TRAIN.BATCH_SIZE_PER_GPU(控制batchsize的大小)、TRAIN.END_EPOCH(调节总的训练轮次)。训练完成后保存的模型为model_best.pth2.3 训练输出文件训练完成后在save_folder参数指定位置生成coco/pose_hrnet文件夹,包含了最佳模型model_best.pth,中间生成图像的样例以及训练日志文件。同时生成model文件夹,用于部署在线服务、批量服务。3. GPU/CPU推理元模型来源 选择 从训练中选择,选择训练作业及版本。4. 案例指导本算法的详细使用方法,请查看ModelArts AI Gallery算法HRNet使用指导交付交付方式华为云ModelArts交付区域华北-北京一、华北-北京四、华东-上海一、华南-广州、亚太-**
  • [资产园地] 指定姿态行人图像生成-XingGAN
    描述XingGAN(图像生成/Pytorch)##1. 概述此模型基于XingGAN for Person Image Generation中提出的模型结构实现,该算法会载入ImageNet上预训练的vgg19模型,在用户数据集上做训练。我们提供了训练代码,训练后生成的模型可直接在ModelArts平台部署成在线服务。图像生成的评估手段一般使用SSIM等指标,详细说明请参考:https://github.com/Ha0Tang/XingGAN#Evaluation本算法的其他信息如下表所示:项目说明参考论文XingGAN for Person Image Generation使用框架Pytorch-1.0.0训练集Market-1501 train set训练epoch数700训练batch_size单卡训练,batch_size 32训练硬件及耗时1*v100,23小时推理硬件及速度GPU,1s/pic输入图像尺寸128643原论文准确率SSIM 0.313本算法准确率SSIM 0.3042、训练###2.1. 算法基本信息任务类型:图像生成支持的框架引擎:PyTorch-1.0.0-python3.6算法输入:存储在OBS上的数据集,必须按照market_data的格式进行存储,详情请查看下文第4节案例指导.算法输出:用于Pytorch推理的pth模型,GPU推理速度:1s/pic代码结构src |- pre-trained_weights |- Vgg19预训练模型 |- trained_model |- model |- config.json |- customize_service.py |- epoch_700.pth |- options # 配置文件 |- models # 模型定义 |- losses # 损失函数 |- tool # 测试工具 |- train.py # 启动文件 |- evaluate.py # 测试脚本2.2. 训练参数说明名称默认值类型是否必填是否可修改描述load_weighttrained_model/model/epoch_700.pthstr否是pth模型文件路径,也支持加载OBS上的pth模型进行训练evalFalsestr是是是否进行模型评估,默认为False,如果设为True,则必须设定load_weight参数,加载指定的pth模型,在创建训练作业时指定的数据存储位置验证集上进行预测epochs50int是是以初始学习率训练的轮次数epochs_decay20int是是训练了epochs数之后,进行学习率下降直到0的轮次数。总训练轮次为epochs+epochs_decayload_weight默认加载在Market数据集上训练好的模型,可以在此基础上继续微调,也支持从obs路径加载用户自己的模型。eval为True时,进行测试;为False时,进行训练。训练完成后保存的模型为latest_net_netG.pth。2.3 训练输出文件训练完成后在save_folder参数指定位置生成market_XingGAN文件夹,包含了中间各个epoch的模型,中间生成图像的样例以及训练日志文件。3. GPU/CPU推理元模型来源 选择 从训练中选择,选择训练作业及版本。4. 案例指导本算法的详细使用方法,请查看《ModelArts AI Gallery算法XingGAN使用指导》交付交付方式华为云ModelArts交付区域华北-北京一、华北-北京四、华东-上海一、华南-广州、亚太-**限制谁可以看 ?公开付费方式免费时长限制无时长限制版本版本号发布时间状态版本说明使用约束8.0.02021-01-06 18:36正常--查看使用约束7.0.02021-01-06 14:36下线--查看使用约束6.0.02021-01-05 16:27下线--查看使用约束5.0.02020-12-22 15:36下线--查看使用约束4.0.02020-12-17 15:59下线--查看使用约束3.0.02020-12-17 14:52下线添加可调参数 训练轮次查看使用约束2.0.02020-12-16 14:51下线添加可编辑的参数查看使用约束1.0.02020-12-09 20:49下线Initial release.查看使用约束论文标题 XingGAN for Person Image Generation链接 https://arxiv.org/abs/2007.09278代码复制下载链接 下载代码是否开放开放许可证类型 ?Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)
  • [资产园地] CrowdDet (目标检测/Pytorch)
    描述CrowdDet (目标检测/Pytorch)1. 概述此模型基于Detection in Crowded Scenes: One Proposal, Multiple Predictions中提出的模型结构实现,该算法会载入在CrowdHuman上的预训练模型,在用户数据集上做迁移学习。我们提供了训练代码和可用于训练的模型,用于实际场景的微调训练。训练后生成的模型可直接在ModelArts平台部署成在线服务。以识别**为目标的检测的评估手段一般用AP​, MR-2和JI(Jaccard Index)指标,详细描述可参考原论文或下表。指标描述AP​Averaged precision of detection.MR-2Log-average miss rate on false positive per image.JI​Jaccard Index.本算法其他信息如下表所示:项目说明参考论文Detection in Crowded Scenes: One Proposal, Multiple Predictions使用框架Pytorch-1.4.0 (在ModelArts上使用Pytorch-1.4.0创建训练作业,然后在训练开始之前将Pytorch升级为1.5.0)训练集CrowdHuman annotation_train.odgt + images训练总epoch数25 (from scratch)训练batch_size8卡训练,每张卡batch_size = 2训练硬件及耗时8*v100,约11小时测试集CrowdHuman annotation_val.odgt + images输入图像尺寸CrowdHuman: [3236, 4856, 3]原论文指标AP = 90.7%, MR-2 = 41.4%, JI = 82.3%​本算法指标AP = 90.6%, MR-2 = 41.3%, JI = 83.4%2. 训练2.1. 算法基本信息任务类型:(**)目标检测支持的框架引擎:PyTorch-1.4.0-python3.6(在ModelArts上使用Pytorch-1.4.0创建训练作业,然后在训练开始之前将Pytorch升级为1.5.0)算法输入:存储在OBS上的数据集,必须按照CrowdHuman数据集的格式进行储存,详情请查看下文第4节。CrowdHuman预训练模型,在CrowdHuman验证集上的AP​是90.96%。算法输出:用于Pytorch推理的pth模型,在验证集上的推理结果代码结构src |-- download/ # 算法运行时将OBS中储存的数据将加载到此目录 | |-- annotation_train.odgt | |-- annotation_val.odgt | |-- images/ | | |-- 1066405,100a000985ef070.jpg |-- pre-trained_weights/ | |-- resnet50_fbaug.pth # 训练模型所需要的backbone起点 |-- trained_model/ | |-- model/ | | |-- model_config.py # 模型和训练默认参数配置 | | |-- network.py # 模型结构 | | |-- config.json # 模型部署文件 | | |-- customize_service.py # 模型部署文件 | | |-- model_final.pth # 训练得到的模型,用于模型部署 | | |-- model_lib/ # 开源包、模型构建、数据集加载等文件 | | | |--... |-- tools/ | |-- run_infer.py # 推理 | |-- run_train.py # 训练模型 | |-- run_test.py # 在验证集上推理并输出评价指标 |-- config_env.sh # 运行前环境配置(升级Pytorch-1.5.0) |-- train.py # 算法执行文件 |-- evaluation.py # 输出业界评价标准2.2. 训练参数说明名称默认值类型是否必填是否可修改描述load_weight…/trained_model/model/model_final.pthstring否是训练起始模型,eval模式下则为测试模型,可以为obs路径total_epoch1int否是训练总轮数nr_images_epoch40000int否是每一轮训练用的图片数mini_batch_size2int否是每张卡的batch_sizewamr_iter1000int否是warmup循环数momentum0.9float否是SGD优化参数base_lr1.25e-3float否是具体learning rate根据实际GPU数计算log_dump_interval1int否是log打印频率weight_decay1e-4float否是SGD优化参数random_seed7int否是随机数种子evalfalsestring否是若设为1,则只从确定的模型pth在验证集上推理并计算评价指标2.3. 训练输出文件eval参数决定是否进行训练或跳过训练直接用现有模型在CrowdHuman验证集上推理评价。eval = 0训练模型,打印日志将模型储存在本地和train_url指定的路径(创建训练作业时指定的训练出入路径)所有输出在工作目录如下所示src |-- trained_model/ | |-- model/ |-- ...所有输出在obs上的目录如下所示|-- train_url/ | |-- model/eval = 1用指定的模型进行推理验证,若用户指定模型,必须保证load_weight是obs中模型.pth文件的绝对路径。用户指定的data_url(创建训练作业时指定的训练输入路径)中可以只包含.jpg格式的图片,也可以包含annotation_val.odgt文件,若为后者,则输出的文件中包含eval_results.txt为业界评价标准,否则只输出pred_results.json和pred_results目录。支持用户自定义OBS上的数据集路径,若需要输出评价指标,则需要包含符合格式要求的annotation_val.odgt文件,若不需要输出评价指标,可以直接将data_url指向只包含图片的OBS文件夹。所有输出在OBS的目录如下所示|-- train_url/ # 创建训练作业时指定的训练出入路径 | |-- eval_dump/ | | |-- pred_results.json # 模型推理结果 | | |-- eval_results.txt # 相应的评价指标结果 | | |-- pred_results/ # 对每个图片的推理结果 | | | |-- 1066405,100a000985ef070.json | | | |-- ...3. GPU/CPU本算法仅支持GPU运行。4. 数据准备从CrowdHuman下载CrowdHuman_train01.zip, CrowdHuman_train02.zip CrowdHuman_train03.zip, CrowdHuman_val.zip, annotation_train.odgt, annotation_val.odgt文件,将所有图片解压到同一个文件夹,最终保证在data_url(创建训练作业时指定的训练输入路径)中的目录如下所示|-- data_url/ # 创建训练作业时指定的训练出入路径 | |-- images/ # 所有解压得到的图片 | | |-- 1066405,100a000985ef070.jpg | | |-- ... | |-- annotation_train.odgt # 训练集标注文件 | |-- annotation_val.odgt # 验证集标注文件5. 案例指导本算法的详细使用方法,请查看ModelArts AI Gallery CrowdDet算法指导。交付交付方式华为云ModelArts交付区域华北-北京一、华北-北京四、华东-上海一、华南-广州、亚太-**
  • [资产园地] PointRend(图像分割/Pytorch)
    描述PointRend(图像分割/Pytorch)1.概述此模型基于PointRend: Image Segmentation as Rendering中提出的模型结构实现,该算法会载入在Cityscape上的预训练模型,在用户数据集上做迁移学习。我们提供了训练代码和可用于训练的模型,用于实际场景的微调训练。训练后生成的模型可直接在ModelArts平台部署成在线服务。图像分割的评估手段一般使用AP,详细说明请参考:https://github.com/mcordts/cityscapesScripts#evaluation本算法的其他信息如下表所示:项目说明参考论文PointRend: Image Segmentation as Rendering使用框架Pytorch1.4.0训练集Cityscapes leftImg8bit_trainvaltest.zip中的trainepoch65(通过控制maxiter*batchsize/nums of picturesbatchsize8,对应config文件夹下的yaml中IMS_PER_BATCH训练硬件及耗时1*v100,12小时测试集Cityscapes leftImg8bit_trainvaltest.zip中的test推理硬件及速度CPU,1.85s/pic输入图像尺寸1024*2048,3通道原论文APAP=35.8本算法APAP=36.2722.训练2.1算法基本信息任务类型:图像分割支持的框架引擎:PyTorch-1.4.0-python3.6算法输入:存储在OBS上的数据集,必须按照Cityscape数据集的格式进行存储,详情请查看下文第4节案例指导Cityscape预训练模型,在Cityscape上的AP是36.2728算法输出用于Pytorch推理的pth模型,CPU推理速度:1.85s/pic代码结构PointRend|-configs#配置文件,包括其他数据集|-InstanceSegmentation|-…|-SemanticSegmentation|-…|-Base-RCNN-FPN.yaml|-datasets#此文件夹为空,上传数据集时会自动同步至云端本目录|-detectron2#开源包|-…|-inputimage#空文件夹,用于运行demo.py时自动同步待预测的影像|-model#用于部署在线服务、批量服务|-customize_service.py#用于部署在线服务、批量服务|-iteration_24000_mAP_36.3.pth#最优模型参数|-config.json#配置文件|-…|-output#空文件夹,训练和评估时暂存模型结果,最后会同步至obs|-outputimage#空文件夹,运行demo.py时暂存输出影像,同步obs|-point_rend#模型其他包|-…|-pre-trained_weights#预训练参数|R-50.pkl|-config.json|-demo.py#预测整个文件夹的影像|-matches.json#预测整个文件夹影像的json结果文件|-pip-requirements.txt|-train_net.py#包括train和eval|-detectron2-0.3+cu102-cp36-cp36m-linux_x86_64.whl#detectron2包###2.2参数说明名称默认值类型是否必填是否可修改描述说明config-fileconfigs/InstanceSegmentation/pointrend_rcnn_R_50_FPN_1x_cityscapes.yamlstring是是配置文件路径,不配置时,默认路径为本算法代码内的路径eval-only0int否是训练时设置值为0,评估时设置值为1MODELWEIGHTSmodelweight/model_final.pthstring否是仅仅评估时才需要这个参数并设置值为默认值maxiter2400int否是最大迭代次数,可以控制epoch=maxiter*batchsize/影像总数batchsize8int否是批大小num-gpus1int否是gpu的数目注意:eval参数有以下两种取值:(1)0,本算法执行模型训练过程;(2)1,本算法加载load_weight参数指定的模型,然后执行模型评估过程。模型评估需要支持以下三种输入情况:2a) 创建训练作业时指定的数据存储位置data_url目录下,如果同时有图片和ground_truth,则模型评估过程输出pred_results目录和eval_result.txt文件,前者存放所有图片的预测结果,后者存放模型评估的精度指标;2b) 创建训练作业时指定的数据存储位置data_url目录下,如果只有图片,则模型评估过程输出pred_results目录,存放所有图片的预测结果;2c) 创建训练作业时指定的数据存储位置data_url目录下,如果没有图片,则模型评估过程报错;MODELWEIGHTS参数有以下两种取值:(1)固定的默认路径,默认加载本算法源码目录中的modelweight/model_final.pth继续训练,加载成功会打印日志;(2)可变的OBS路径,用户可指定OBS上的一个模型文件路径,然后本算法会加载该模型继续训练,加载成功会打印日志。##2.3. 训练输出文件当仅添加config-file并设置为configs/InstanceSegmentation/pointrend_rcnn_R_50_FPN_1x_cityscapes.yaml时为训练(此路径也支持用户的obs路径),训练完成后会输出可部署的model文件夹以及config.yaml、log.txt,文件结构如下: |-config.yaml配置文件 |-log.txt日志文件 |-model |-customize_service.py#用于部署在线服务、批量服务 |-model_final.pth#用户训练得到的模型参数 |-config.json#配置文件 |-...除config-file之外,如果添加超参数eval-only并设置为True,且添加超参数MODELWEIGHTS并设置为model/iteration_24000_mAP_36.3.pth(此路径也支持用户的obs路径)输出文件如下(pred_results和eval_result.txt都保存在指定的训练输出OBS目录下):|-eval_result.txt#评估结果,只有用户上传的数据集包括groundtruth才会有这个文件 |-pred_results;预测影像文件夹 |-frankfurt_000000_000294_leftImg8bit.png |-frankfurt_000000_000576_leftImg8bit.png |-...#3. GPU/CPU推理元模型来源 选择 从训练中选择,选择训练作业及版本。注意:推理配置文件config.json中的runtime字段为pytorch1.4-python3.7,表示该模型可同时在CPU或GPU运行。#4. 案例指导本算法的详细使用方法,请查看《ModelArts AI Gallery算法PointRend使用指导》。交付交付方式华为云ModelArts交付区域华北-北京一、华北-北京四、华东-上海一、华南-广州、亚太-**
  • [资产园地] 物体检测-CenterNet-Hourglass
    描述CenterNet-Hourglass (物体检测/Pytorch)1. 概述此模型是对Objects as Points 中提出的CenterNet进行结果复现(原论文Table 2 最后一行)。本模型是以Hourglass网络架构作为backbone,以ExtremNet 作为预训练模型,在COCO数据集上进行50epochs的训练后得到的。本项目是基于原论文的官方代码进行针对ModelArts平台的修改来实现ModelArts上的训练与部署。目标检测的主要benchmark 为COCO数据集,相关指标为mAP,详细说明请参考:https://cocodataset.org本模型的其他信息如下表所示:项目说明参考论文Objects as Points使用框架Pytorch-1.4.0训练模型BackboneHourglass训练集COCO train2017训练总epoch数50训练batch_size160 (20*8, 每卡20 batch size)训练硬件及耗时8 * v100,24小时测试集COCO val2017 & test2017推理硬件及速度CPU,20s/pic训练输入图像尺寸训练输入 3x512x512推理输入推理输入图像尺寸支持任意尺寸,推荐大于512x512的图片输入原论文准确率mAP=42.1, 使用flip test本算法准确率mAP=42.7, 使用flip test2. 训练2.1. 算法基本信息任务类型:目标检测支持的框架引擎:PyTorch-1.4.0-python3.6算法输入:存储在OBS上的数据集,必须按照COCO数据集的格式进行存储|-- data `-- |-- coco `-- |-- annotations | |-- instances_train2017.json | |-- instances_val2017.json | |-- person_keypoints_train2017.json | |-- person_keypoints_val2017.json | |-- image_info_test-dev2017.json |---|-- train2017 |---|-- val2017 `---|-- test2017将数据打包tar -cvf coco.tar ./coco将 coco.tar 上传至OBS。预训练模型ExtremeNet算法输出:用于Pytorch推理的pth模型,CPU推理速度:20s/pic代码结构src/ ├── pre-trained_weights │ └── ExtremeNet_500000.pth ├── trained_model # for deployment │ ├── coco_classes.py │ ├── config.json │ ├── customize_service.py │ ├── epoch_50_mAP_42.7.pth │ ├── _init_paths.py │ └── lib ├── train.py # training script ├── evaluation.py # evaluation script ├── _init_paths.py ├── coco_eval.py ├── lib # related codebase │ ├── datasets ... │ ├── detectors ... │ ├── external ... │ ├── logger.py │ ├── models ... │ ├── opts.py │ ├── trains ... │ └── utils ... ├── coco # coco dir ├── infer_results # inference results COCO test-dev submit format │ ├── detections_test-dev2017_ctdet-flip-test_results.zip │ └── detections_test-dev2017_ctdet-multi-scale_results.zip └── training_logs # training logs ├── jobf9a05f30-job-trainjob-ctdet.0-0-0-det-0_default-stdout.log ├── logs_2020-11-12-22-19 ... └── opt.txt2.2. 训练参数说明名称默认值类型是否必填是否可修改描述batch_size12int否是模型训练时总的batch_size,当多卡训练时,batch_size要能整除#GPUmaster_batch12int否是模型训练时负责维护模型master copy的GPU上的batch_size,如无特殊需求可设置master_batch = batch_size / #GPUload_weightsrc/trained_model/epoch_50_mAP_42.7.pthstring是是预训练的CenterNet模型的pth文件路径gpus0string否是GPU 编号,如果选择多卡,则需要按照“0,1,2,3”的格式填写num_epoch50int否是训练所需的epoch数量lr2.5e-4float否是训练时的learning ratelr_step40string否是learning rate 在指定epoch时变为原来的0.1evalFalsestring否是是否启动Evaluation模式,具体使用见2.4节推荐运行参数:--exp_id=coco_hg --arch=hourglass --batch_size=160 --master_batch=20 --lr=2.5e-4 --load_model=[path]/ExtremeNet_500000.pth --gpus=0,1,2,3,4,5,6,7 --num_epoch=50 --lr_step=40特别说明:load_weight参数有以下两种取值:固定的默认路径,默认加载本算法源码目录中的trained_model/epoch_50_mAP_42.7.pth继续训练,加载成功会打印日志;可变的OBS路径,用户可指定OBS上的一个模型文件路径,然后本算法会加载该模型继续训练,加载成功会打印日志。注意,OBS路径的模型在输入时load_weight应为s3://bucket_name/xxx/xxx.ptheval参数有以下两种取值:(1)False,本算法执行模型训练过程;(2)True,本算法加载load_weight参数指定的模型,然后执行模型评估过程。具体评估见2.4节。2.3. 训练输出文件CenterNet_output/V0008/ ├── logs_2020-11-12-22-19 │ ├── events.out.tfevents.1605190788.job3b595134-job-trainjob-centernet-0 │ ├── log.txt │ └── opt.txt ├── checkpoints | ├── model_40.pth | ├── model_best.pth | └── epoch_50_mAP_42.7.pth ├── model | ├── customize_service.py | ├── config.json | ├── model_last.pth | └── ... └── opt.txttfevents 文件可由tensorboard打开查看训练曲线。2.4. 模型评估可利用train.py 或 evaluation.py 参数对模型进行指标验证,此时需将原始默认参数删除,并配置以下相关参数:名称默认值类型描述load_weightsrc/trained_model/epoch_50_mAP_42.7.pthstring需要指定训练得到的pth 文件的路径gpus0stringGPU 编号,如果选择多卡,则需要按照“0,1,2,3”的格式填写keep_resFalsestringflag 参数,用来判断是否要保留原始分辨率进行推理flip_testFalsestringdetection中是否使用反转测试,以提高精度test_scales‘’string多尺度模型推断,可以有更高的精度,但也相对更加耗时。多尺度参数输入示例:0.5,0.75,1,1.25,1.5trainvalFalsestring用于选择所用的推理数据集,默认为val集,若设True则为test集。evalTruestring若使用train.py 脚本,需将其设置为True才可进行模型评估,否者进行模型训练推荐运行参数:--exp_id coco_hg --arch hourglass --keep_res True --resume True --gpus 0 --load_model [path to ckpt]/model_last.pth --flip_test True # optional --test_scales 0.5,0.75,1,1.25,1.5 # optional --trainval True # optional输出文件:CenterNet_output_val/V0008/ ├── logs_2020-11-12-22-19 ├── results.json ├── map.txt # 如果以coco形式存储数据 └── opt.txtresults.json为COCO的评价格式的推理输出。Evaluation 数据data_url格式目前支持三种形式:coco.tar 文件所在dir。此时推理数据文件结构与2.1一致coco 文件夹。将测试数据以coco2017的格式存放在obs里,格式必须严格如下:|-- data `-- |-- coco `-- |-- annotations | |-- instances_val2017.json `---|-- val2017当数据为coco原始数据时,无需做任何改变,在任务配置时,将data_url指向此处的data文件夹即可。当数据为自定义数据时,用户需要手动按照coco数据的格式将图片放在data/coco/val2017的路径里,并将groundtruth的信息在data/coco/annotations/instances_val2017.json文件中进行改写(不能修改json文件名),之后将data_url指向此处的data文件夹即可。图片文件夹。此时data路径下直接存放待推理的图片。将data_url指向此处的data文件夹即可,此时不会生成评估指标。图片推理结果的格式: 以coco推理结果的形式保存在results.json文件中。3. GPU/CPU推理完成训练后,在创建模型的选项中选择,“从训练中选择”的方式实现实现模型导入即可。之后选择立即创建即可得到可部署模型。可部署模型也已经发布在ModelHub注意:推理配置文件model/config.json中的runtime字段为pytorch1.4-python3.7,表示该模型可同时在CPU或GPU运行。4. 案例指导本算法的详细使用方法,请查看《ModelArts AI Gallery算法CenterNet使用指导》。交付交付方式华为云ModelArts交付区域华北-北京一、华北-北京四、华东-上海一、华南-广州、亚太-**
  • [资产园地] Speaker change point detection-Maxout DNN-d-vector
    描述Maxout-DNN(生成d-vector 用于Speaker change point detection/Tensorflow)1.概述此模型基于论文:SPEAKER SEGMENTATION USING DEEP SPEAKER VECTORS FOR FAST SPEAKER CHANGE SCENARIOS中使用的生成能代表音频文件d-vector特征的Maxout-DNN模型结构实现,我们提供了训练代码以及训练好的可直接用于部署的modelarts模型(在trained_model文件夹内)。用户可自己训练后将生成的.ckpt文件替换trained_model文件夹内的.ckpt文件用于部署。项目说明参考论文SPEAKER SEGMENTATION USING DEEP SPEAKER VECTORS FOR FAST SPEAKER CHANGE SCENARIOS·使用框架·tensorflow-1.13.1···训练集···Voxceleb1中随机选取的100个speaker··epoch数··500batch_size512Table1测试集Voxceleb1 test datasetTable2测试集AMI test dataset音频文件Fbank维数402.训练2.1算法基本信息任务类型:Speaker change point detection支持的框架引擎:Tensorflow1.13.1-python3.6算法输入:首先按照preprocess.py文件进行预处理提取音频文件的logfbank特征并保存为feature.npy文件,其对应的speaker作为label转换为独热编码保存为label.npy文件。将上述生成的npy文件保存在OBS中作为train.py文件的输入。算法输出:用于Tensorflow推导生成d-vector的.ckpt文件。代码结构:src|-trained_model(可直接用于部署预测的模型)|-checkpoint|-model.ckpt|-config.json|-customizer_service.py|-preprocess.py|-trian.py|-preprocess.py|-evaluation.py|-changepoint_detect.py|-在线服务实例数据|-批量服务实例数据###2.2训练参数说明parser.add_argument(“–input_shape”, default=40, type=int,help=“DNN input dimensions”) # Maxout-DNN输入维度,音频文件预处理logfbank特征维数(即滤波器个数)parser.add_argument(“–units”, default=200, type=int, help=“hidden layer units”) # 隐藏层神经元个数parser.add_argument(“–label_nums”, default=100, type=int, help=“classification labels”) # 多分类任务label个数parser.add_argument(“–batch_size”, default=512, type=int, help=“batch_size”) # batch_size一批次输入个数parser.add_argument(“–epoch”, default=2, type=int, help=“epochs”) # epoch训练轮次,可更改建议改为500parser.add_argument(“–print_step”, default=20000, type=int, help=“print every print_step”) # 每20000个batch在验证集上验证效果parser.add_argument(“–prob”, default=0.5, type=float, help=“dropout rate”) # dropout随机失活的概率parser.add_argument(“–lr”, default=1e-4, type=float, help=“learning rate”) # Adam优化算法初始学习率parser.add_argument(“–decay_rate”, default=0.1, type=float, help=“lr decay rate”) # 学习率指数衰减parser.add_argument(“–decay_steps”, default=140000, type=int, help=“lr decay steps”) # 每140000个batch降低学习率parser.add_argument(“–epsilon”, default=0.1, type=float, help=“label smoothing”) # 标签滑动相关参数3.案例指导本算法的详细使用方法,请查看《AI Gallery MaxoutDNN生成d-vector算法使用介绍》。帖子链接:https://marketplace.huaweicloud.com/markets/aihub/article/detail/?content_id=a009bd5f-bb07-4511-88cc-f56e93beb2d5交付交付方式华为云ModelArts交付区域华北-北京一、华北-北京四、华东-上海一、华南-广州、亚太-**
  • [资产园地] 目标检测-TSD
    描述TSD(目标检测/Pytorch)1. 概述此模型基于Revisiting the Sibling Head in Object Detector中提出的模型结构实现,该算法会载入在COCO上的预训练模型,在用户数据集上做迁移学习。我们提供了训练代码和可用于训练的模型,用于实际场景的微调训练。训练后生成的模型可直接在ModelArts平台部署成在线服务。目标检测的评估手段一般使用AP指标,详细说明请参考原论文。本算法的其他信息如下表所示:项目说明参考论文Revisiting the Sibling Head in Object Detector使用框架Pytorch-1.4.0训练集COCO2017中的训练集训练总epoch数35训练batch_size使用8张V100训练,每张卡TRAIN_BATCH_SIZE = 2,相当于总batch_size为16训练硬件及耗时8*V100,约100小时测试集COCO2017中的test_dev推理硬件及速度V100,1.9s/pic原论文准确率AP=49.4本算法准确率AP=49.42. 训练2.1. 算法基本信息任务类型:目标检测支持的框架引擎:PyTorch-1.4.0-python3.6算法输入:存储在OBS上的数据集,必须按照COCO数据集的格式进行存储,详情请查看下文第4节案例指导COCO预训练模型,在COCO test_dev上的AP是49.4算法输出:用于Pytorch推理的pth模型代码结构|-src # 算法源码根目录 |-pre-trained_weights # ImageNet上的预训练参数文件 |-trained_model # 已训练好的、可复现论文精度的模型 |-model |-config.json |-customize_service.py |-epoch_35_mAP_49.4_tsd1.pth # 训练好的模型 |-... |-train.py # 算法启动文件 |-evaluation.py # 模型评估脚本 |-...2.2. 训练参数说明名称默认值类型是否必填是否可修改描述gpu_num1int否是使用GPU的数目,默认是1块GPUimgs_per_gpu2int否是每块GPU能同时处理的图像数目lr0.02float否是训练的学习率epoch1int否是训练多少代lr_step24,33str否是在训练至多少代时进行进行学习率衰减deterministic1int否是算法是否是确定性的,即是否设定种子validate1int否是训练时是否进行在验证集上检验multi_train1int否是在训练时是否采用多尺度图像增强multi_test0int否是在验证和测试时是否采用多尺度图像增强test_ann_fileannotations/image_info_test-dev2017.jsonstr否是测试时采用的图像标注json文件。支持输入本算法源码目录的相对路径;也支持输入可变的OBS路径,用户可指定OBS上的一个模型文件路径。test_img_prefixtest2017str否是测试时图像所在的文件夹目录format_only0int否是是否只输出预测结果文件,不输出准确率等指标。当测试没有ground truth时,必须把format_only设为1load_weight—str否是是否加载已训练好的模型权重eval0int否是是否进行测试。1表示测试;0表示训练具体介绍一下load_weight参数:默认情况:默认加载已训练好的模型,即源码目录中的trained_model/model/ epoch_35_mAP_49.4_tsd1.pth,加载成功会打印日志。格式规范:支持输入本算法源码目录的相对路径;也支持输入可变的OBS路径,用户可指定OBS上的一个模型文件路径。使用方法:在训练阶段,可以加载ImageNet预训练Resnet101权重来train from scratch(需要把load_weight参数删除掉),也可以指定加载的模型路径,在此基础上继续训练;若为eval阶段,参数为空时默认加载本算法训练好的weight,不为空时加载用户指定weight进行测试。其他说明:算法加载模型成功后会打印日志。2.3. 训练输出文件训练完成后的输出文件如下:|- model |- model.pth # 训练好的模型文件 |- config.json |- customize_service.py |- ... # 部署所需的其他文件 |- xxxx.log |- xxxx.log.json如果设置eval为True,输出文件如下:|- test_res |- test_result.pkl # 预测结果的.pkl文件 |- tsd_test_results.bbox.json # 预测结果的.json文件3. GPU/CPU推理元模型来源 选择 从训练中选择,选择训练作业及版本。注意:推理配置文件model/config.json中的runtime字段为pytorch1.4-python3.6,表示该模型可同时在CPU或GPU运行。4. 案例指导本算法的详细使用方法,请查看《ModelArts AI Gallery算法TSD使用指导》。交付交付方式华为云ModelArts交付区域华北-北京一、华北-北京四、华东-上海一、华南-广州、亚太-**
  • [技术干货] 不用卷积,也能生成清晰图像,华人博士生首次尝试用两个Transformer构建一个GAN
    最近,CV 研究者对 transformer 产生了极大的兴趣并取得了不少突破。这表明,transformer 有可能成为计算机视觉任务(如分类、检测和分割)的强大通用模型。我们都很好奇:在计算机视觉领域,transformer 还能走多远?对于更加困难的视觉任务,比如生成对抗网络 (GAN),transformer 表现又如何?在这种好奇心的驱使下,德州大学奥斯汀分校的 Yifan Jiang、Zhangyang Wang,IBM Research 的 Shiyu Chang 等研究者进行了第一次试验性研究,构建了一个只使用纯 transformer 架构、完全没有卷积的 GAN,并将其命名为 TransGAN。与其它基于 transformer 的视觉模型相比,仅使用 transformer 构建 GAN 似乎更具挑战性,这是因为与分类等任务相比,真实图像生成的门槛更高,而且 GAN 训练本身具有较高的不稳定性。论文链接:https://arxiv.org/pdf/2102.07074.pdf代码链接:https://github.com/VITA-Group/TransGAN从结构上来看,TransGAN 包括两个部分:一个是内存友好的基于 transformer 的生成器,该生成器可以逐步提高特征分辨率,同时降低嵌入维数;另一个是基于 transformer 的 patch 级判别器。研究者还发现,TransGAN 显著受益于数据增强(超过标准的 GAN)、生成器的多任务协同训练策略和强调自然图像邻域平滑的局部初始化自注意力。这些发现表明,TransGAN 可以有效地扩展至更大的模型和具有更高分辨率的图像数据集。 实验结果表明,与当前基于卷积骨干的 SOTA GAN 相比,表现最佳的 TransGAN 实现了极具竞争力的性能。具体来说,TransGAN 在 STL-10 上的 IS 评分为 10.10,FID 为 25.32,实现了新的 SOTA。 该研究表明,对于卷积骨干以及许多专用模块的依赖可能不是 GAN 所必需的,纯 transformer 有足够的能力生成图像。 在该论文的相关讨论中,有读者调侃道,「attention is really becoming『all you need』.」不过,也有部分研究者表达了自己的担忧:在 transformer 席卷整个社区的大背景下,势单力薄的小实验室要怎么活下去?如果 transformer 真的成为社区「刚需」,如何提升这类架构的计算效率将成为一个棘手的研究问题。基于纯 Transformer 的 GAN作为基础块的 Transformer 编码器 研究者选择将 Transformer 编码器(Vaswani 等人,2017)作为基础块,并尽量进行最小程度的改变。编码器由两个部件组成,第一个部件由一个多头自注意力模块构造而成,第二个部件是具有 GELU 非线性的前馈 MLP(multiple-layer perceptron,多层感知器)。此外,研究者在两个部件之前均应用了层归一化(Ba 等人,2016)。两个部件也都使用了残差连接。内存友好的生成器NLP 中的 Transformer 将每个词作为输入(Devlin 等人,2018)。但是,如果以类似的方法通过堆叠 Transformer 编码器来逐像素地生成图像,则低分辨率图像(如 32×32)也可能导致长序列(1024)以及更高昂的自注意力开销。 所以,为了避免过高的开销,研究者受到了基于 CNN 的 GAN 中常见设计理念的启发,在多个阶段迭代地提升分辨率(Denton 等人,2015;Karras 等人,2017)。他们的策略是逐步增加输入序列,并降低嵌入维数。 如下图 1 左所示,研究者提出了包含多个阶段的内存友好、基于 Transformer 的生成器: 每个阶段堆叠了数个编码器块(默认为 5、2 和 2)。通过分段式设计,研究者逐步增加特征图分辨率,直到其达到目标分辨率 H_T×W_T。具体来说,该生成器以随机噪声作为其输入,并通过一个 MLP 将随机噪声传递给长度为 H×W×C 的向量。该向量又变形为分辨率为 H×W 的特征图(默认 H=W=8),每个点都是 C 维嵌入。然后,该特征图被视为长度为 64 的 C 维 token 序列,并与可学得的位置编码相结合。 与 BERT(Devlin 等人,2018)类似,该研究提出的 Transformer 编码器以嵌入 token 作为输入,并递归地计算每个 token 之间的匹配。为了合成分辨率更高的图像,研究者在每个阶段之后插入了一个由 reshaping 和 pixelshuffle 模块组成的上采样模块。 具体操作上,上采样模块首先将 1D 序列的 token 嵌入变形为 2D 特征图,然后采用 pixelshuffle 模块对 2D 特征图的分辨率进行上采样处理,并下采样嵌入维数,最终得到输出。然后,2D 特征图 X’_0 再次变形为嵌入 token 的 1D 序列,其中 token 数为 4HW,嵌入维数为 C/4。所以,在每个阶段,分辨率(H, W)提升到两倍,同时嵌入维数 C 减少至输入的四分之一。这一权衡(trade-off)策略缓和了内存和计算量需求的激增。研究者在多个阶段重复上述流程,直到分辨率达到(H_T , W_T )。然后,他们将嵌入维数投影到 3,并得到 RGB 图像。用于判别器的 tokenized 输入与那些需要准确合成每个像素的生成器不同,该研究提出的判别器只需要分辨真假图像即可。这使得研究者可以在语义上将输入图像 tokenize 为更粗糙的 patch level(Dosovitskiy 等人,2020)。 如上图 1 右所示,判别器以图像的 patch 作为输入。研究者将输入图像分解为 8 × 8 个 patch,其中每个 patch 可被视为一个「词」。然后,8 × 8 个 patch 通过一个线性 flatten 层转化为 token 嵌入的 1D 序列,其中 token 数 N = 8 × 8 = 64,嵌入维数为 C。再之后,研究者在 1D 序列的开头添加了可学得位置编码和一个 [cls] token。在通过 Transformer 编码器后,分类 head 只使用 [cls] token 来输出真假预测。 实验 CIFAR-10 上的结果 研究者在 CIFAR-10 数据集上对比了 TransGAN 和近来基于卷积的 GAN 的研究,结果如下表 5 所示: 如上表 5 所示,TransGAN 优于 AutoGAN (Gong 等人,2019) ,在 IS 评分方面也优于许多竞争者,如 SN-GAN (Miyato 等人, 2018)、improving MMDGAN (Wang 等人,2018a)、MGAN (Hoang 等人,2018)。TransGAN 仅次于 Progressive GAN 和 StyleGAN v2。对比 FID 结果,研究发现,TransGAN 甚至优于 Progressive GAN,而略低于 StyleGANv2 (Karras 等人,2020b)。在 CIFAR-10 上生成的可视化示例如下图 4 所示:STL-10 上的结果研究者将 TransGAN 应用于另一个流行的 48×48 分辨率的基准 STL-10。为了适应目标分辨率,该研究将第一阶段的输入特征图从(8×8)=64 增加到(12×12)=144,然后将提出的 TransGAN-XL 与自动搜索的 ConvNets 和手工制作的 ConvNets 进行了比较,结果下表 6 所示:与 CIFAR-10 上的结果不同,该研究发现,TransGAN 优于所有当前的模型,并在 IS 和 FID 得分方面达到新的 SOTA 性能。高分辨率生成由于 TransGAN 在标准基准 CIFAR-10 和 STL-10 上取得不错的性能,研究者将 TransGAN 用于更具挑战性的数据集 CelebA 64 × 64。 TransGAN-XL 的 FID 评分为 12.23,这表明 TransGAN-XL 可适用于高分辨率任务。可视化结果如图 4 所示。局限性虽然 TransGAN 已经取得了不错的成绩,但与最好的手工设计的 GAN 相比,它还有很大的改进空间。在论文的最后,作者指出了以下几个具体的改进方向:对 G 和 D 进行更加复杂的 tokenize 操作,如利用一些语义分组 (Wu et al., 2020)。使用代理任务(pretext task)预训练 Transformer,这样可能会改进该研究中现有的 MT-CT。更加强大的注意力形式,如 (Zhu 等人,2020)。更有效的自注意力形式 (Wang 等人,2020;Choromanski 等人,2020),这不仅有助于提升模型效率,还能节省内存开销,从而有助于生成分辨率更高的图像。作者简介本文一作 Yifan Jiang 是德州大学奥斯汀分校电子与计算机工程系的一年级博士生(此前在德克萨斯 A&M 大学学习过一年),本科毕业于华中科技大学,研究兴趣集中在计算机视觉、深度学习等方向。目前,Yifan Jiang 主要从事神经架构搜索、视频理解和高级表征学习领域的研究,师从德州大学奥斯汀分校电子与计算机工程系助理教授 Zhangyang Wang。 在本科期间,Yifan Jiang 曾在字节跳动 AI Lab 实习。今年夏天,他将进入 Google Research 实习。 一作主页:https://yifanjiang.net/ 参考链接:https://www.reddit.com/r/MachineLearning/comments/ll30kf/r_transgan_two_transformers_can_make_one_strong/ 本文转自: https://www.jiqizhixin.com/articles/2021-02-17
  • [技术干货] 密恐警告:超2000万张,全球最大的人眼图像数据集开源了
    涵盖 2D 和 3D 特征点、语义分割、3D 眼球注释以及注视向量和眼动类型等因素,德国图宾根大学的研究者创建了全球最大的人眼图像公开数据集——TEyeD。在当今世界,基于图像的眼动追踪(eye tracking)变得越来越重要,这是因为人眼运动有可能变革我们与周围计算机系统交互的方式。此外,眼动的方式可以识别甚至在某种程度上预测我们的行动和意图,所以眼动分析可以赋能新的应用,特别是与 VR 或 AR 等现代显示技术结合时。例如,人眼注视(gaze)信号连同人机交互的可能性,使得残疾人能够借助专门为其疾症设计的特殊设备来与环境进行交互。在手术显微镜的应用场景中,外科医生必须进行多种控制行为,这时视觉信号可以用于自动对焦。人眼注视行为还可用于诊断精神分裂症、自闭症、阿尔茨海默症、青光眼等多种疾病。在 VR 或 AR 游戏中,人眼注视信号可用于减少渲染资源的计算。除了人眼注视信息以外,对人眼的观察还可以带来更多信息源。例如人眼闭合的频率可用于衡量人的疲劳程度,这是汽车驾驶和航空飞行场景中的一种有效安全特征。另一个重要的信息源是瞳孔大小,它可以作为估计指定任务中人们认知负荷的基础,然后调整内容(如基于媒介的学习)以更好地适应人的精神状态。最后,借助虹膜特征以及个人的人眼注视行为,人眼相关的信息可以在生物识别过程中得到应用。近日,来自德国图宾根大学的研究者创建了世界上最大的、统一人眼图像公开数据集 TEyeD,这些图像均通过头戴式设备拍摄获取。具体而言,TEyeD 的创建过程中使用了七种不同的头戴式眼动追踪器,其中两个还结合了 VR 或 AR 设备。TEyeD 中的图像在不同的任务场景中获得,包括乘车、模拟飞行、户外体育运动以及日常室内活动。此外,数据集中的人眼图像包括 2D 和 3D 特征点、语义分割、3D 眼球注释以及注视向量(gaze vector, GV)和眼动类型。对瞳孔、虹膜和眼睑均提供了特征点和语义分割,视频长度从几分钟到几小时不等。TEyeD 数据集拥有 2000 多万张精心注释的人眼图像,为推动现代 VR 和 AR 应用中计算机视觉、眼动追踪和注视估计领域的研究提供了独特且一致的资源和良好的基础。论文地址:https://arxiv.org/pdf/2102.02115.pdf与现有数据集的对比下表 1 列出了包含人眼特写图像的现有数据集。每个数据集处理特定的问题,例如 Casia 和 Ubiris 数据集借助虹膜识别个人。在 NNVEC 中,对光学向量和眼球位置的直接估计可以补偿头戴式眼动追踪器的位移。TEyeD 通过使用 7 种分辨率不同的眼动追踪器结合并扩展了以前发布的数据集,合并了现有数据集提供的所有可用注释,并通过 3D 分割和特征点扩展了这些数据集。更具体地说,TEyeD 集成的数据集包括 NNGaze、LPW、GIW、ElSe、ExCuSe 和 PNET。此外,来自研究 [69] 的完整数据也得到了精心注释。TEyeD 一共包含 2000 多万张图像,是全球最大、利用头戴式眼动追踪器拍摄的图像数据集。数据集详情下图 1 展示了 TEyeD 数据集中的示例图像。具体而言,第 1 和第 5 列包含输入图像;第 2 和第 6 列的人眼图像展示了巩膜、虹膜和瞳孔的叠加分割(overlaid segmentation);第 3 和第 7 列展示了输入图像的特征点,其中红色表示眼睑、绿色表示虹膜、白色表示瞳孔;第 4 和第 8 列展示了计算出的眼球以及眼球中心和注视向量。下图 2 展示了瞳孔(左)、虹膜(中)和眼睑(右)特征点的对数分布:下图 3 展示了瞳孔、虹膜和巩膜的区域分布箱形图(左),以及注视向量的对数分布(右):下图 4 展示了眼球位置 (x,y) 的分布,以及映射到固定分辨率 192×144 的眼球半径(以像素为单位)箱形图:注释过程对于 TEyeD 数据集中的特征点注释和语义分割,研究者同时使用了半监督方法和多注释 maturation (MAM) 算法。与原始算法不同,他们没有用 SVM,而是将卷积神经网络(CNN)与 HOG 特征相结合。此外,研究者还将迭代次数限制在了 5 次,并使用两个竞争模型。其中一个模型包含 ResNet50,并使用 [36] 中的验证损失函数进行特征点回归训练;对于另一个模型,他们将语义分割与 U-Net 和残差块一起训练。最初,研究者对 2 万张具有特征点的图像进行了注释,并将它们转化成语义分割。然后,他们训练 CNN 并利用 MAM 算法不断进行改进。在 5 次迭代后,ResNet50 特征点转化成了语义分割并与 U-Net 结果进行对比。具体而言,研究者基于 [30] 中的方法对 3D 眼球和光学向量进行了注释。但是,他们没有使用椭圆形瞳孔,而是使用了椭圆形虹膜,这是因为后者仅受角膜曲率(corneal refraction)的部分影响。通过结合 2D 特征点、分割和 3D 眼球模型,研究者对 3D 特征点和分割进行了几何计算。由于瞳孔总是位于虹膜的中心,他们考虑了两种不同的 3D 分割和 3D 特征点。眼动注释则分为了注视(眼球静止不动)、扫视(两次注视之间的快速眼动)、平滑跟随(缓慢眼动)和眨眼。基准评估在实验中,研究者将数据分成训练集和验证集。为了避免训练和验证集中出现相同的实验对象,他们将整个记录分配给训练集和验证集的其中一个。对于评估环境,研究者将基于 C ++ 的 CuDNN 框架用于神经网络模型。测试环境硬件包括一个 4 核心、16GB DDR4 内存的 Intel i5-4570 CPU 和一个 4 GB 内存的 NVIDIA 1050ti。下表 3 显示了特征点回归的结果。结果表明,如预期一样,较大模型在回归任务上更加有效。下表 4 得出了同样的结论,其中显示了眼球参数估计的结果:如上表 3 和 4 所示,与现有规模较小的数据集相比,我们可以看到 TEyeD 数据集具有明显优势。这些结果还表明,如预期的那样,对现实世界场景中拍摄的图像进行跨眼球追踪(cross-eye-tracker)泛化是一项具有挑战性的任务,但通过结合使用 TEyeD 与更复杂的架构可以处理这项任务。因此,无论何时使用一种新的眼动追踪设备都可以轻松解决跨眼球追踪泛化任务,并且无需创建和注释新数据。下图 5 显示了语义分割的结果:下表 6 显示了眼动识别的结果。可以看到,注视向量在眼动分类中更加有效,因为它对眼动追踪器的位移做出了补偿。
  • [技术干货] 中山大学发布无偏视觉问答数据集KRVQA,论文登上顶刊TNNLS
    中山大学人机物智能融合实验室发布了基于常识的无偏视觉问答数据集 (Knowledge-Routed Visual Question Reasoning,KRVQA)。由于自然语言与标注者中自然存在的偏差,现有的算法能够通过拟合数据集内的这些偏差达到很好的效果,而不需要理解对应的文字和图像信息。相关论文发表在国际知名顶级期刊 TNNLS 上。在自然语言处理和计算机视觉领域,已经有工作开始探索基于常识的阅读理解和视觉问答问题。这类问题要求算法需要额外的常识才能给出答案。但现有的常识视觉问答数据集大多是人工标注的,并没有基于合适的知识或情感表达进行构建。这不仅导致常识的分布相当稀疏,容易产生解释的二义性,同时还容易引入标注者偏差,使得相关算法仍在关注于增加神经网络的表达能力以拟合问题和答案之间的表面联系。 针对此问题,研究者提出了新的基于知识路由的视觉推理数据集 (Knowledge-Routed Visual Question Reasoning,KRVQA),该数据集基于现有的多个公开知识 / 常识图谱中与现有图像场景图 (scene graph) 相关的部分,通过预先定义的规则搜索图谱中的推理路径,并生成大规模无偏差的问答和推理标注。如图 1 所示,该数据集避免现有数据驱动的深度模型通过过拟合得到高准确率,推动视觉问答模型正确感知图像中的视觉对象,理解问题并整合对象之间的关系和相应常识回答问题。文章链接:https://arxiv.org/abs/2012.07192数据集链接:http://www.sysu-hcp.net/resources/图 1:KRVQA 测试基准的样例示意。 具体而言,基于通过生成推理路径,从图像场景图或知识库中选择一个或两个三元组进行多步推理,并通过约束使用的三元组,将知识从其他偏差中分离出来,并平衡答案的分布,避免答案歧义。两个主要的约束为: 1. 一个问题必须与知识库中的多个三元组相关,但仅有一个三元组与图像相关。2. 所有的问题都基于不同的知识库三元组,但训练集和测试集拥有相同的候选答案集合。约束 1 能强制视觉问答模型正确地感知图像,而不能仅仅根据给定的问题猜测知识。约束 2 则能避免现有方法通过训练集中的样本来拟合知识库,强制模型通过外部知识来处理未见过的问题,促进模型在泛化性上的研究。 研究者对各种知识库编码方法和最新视觉问答模型进行了大量实验,结果表明,在给定知识库的情况下,是否给定问题相关的三元组的两张情况间仍然会存在较大的差距。这说明提出的 KRVQA 数据集能很好体现现有深度模型在知识推理问题上的不足。 KRVQA 数据集 该数据集基于从自然图像场景图和外部知识库中提取的一个或两个三元组,组成推理结构,并以该结构为基础通过模板构建问题答案对。 给定一个图像,研究者首先合并其场景图和外部知识库以形成和图像相关的知识图。该数据集利用现有的公开标注数据构建数据集,包括使用 Visual Genome 数据集中图像场景图标注以获得图像中的所有对象 / 关系三元组, 使用 WebChild、ConceptNet、DBpedia 等一般常识知识库获取图像信息以外的常识三元组。场景图和知识库中的三元组都包含一个主语、一个关系和一个宾语共三个项。如果图像场景图中的物体和知识库某个三元组中一项的名称相同,这两项就将合并。在合并所有名称相同的项之后,可以得到一个与图像相关的知识图。研究者利用其中包含的三元组来生成复杂的问题——答案对。 然后从图中提取一条路径并根据路径提出一阶或二阶问题。推理路径的提取由一组层级化的基本查询的构建。一个基本查询将告知模型在已知主语 A,宾语 B 和关系 R 中的其中两个时,需要去哪个信息源取出第三个信息。例如,表示需要模型从知识库中找到包括主语 A 和宾语 B 的三元组,并将三元组的关系 R 取出作为输出。有如下 6 个基本查询:  :给定主语 A 和宾语 B,从图像中获得它们的关系 R。 :给定主语 A 和关系 R,从图像中获得宾语 B。 :给定宾语 B 和关系 R,从图像中获得主语 A。 :给定主语 A 和宾语 B,从知识库中获得它们的关系 R。 :给定主语 A 和关系 R,从知识库中获得宾语 B。 :给定宾语 B 和关系 R,从知识库中获得主语 A。 通过将每个基本查询的输出作为下个基本查询的输入,便可以组成问题的层次化推理结构,并作为标注信息。例如,“What is the object that is on the desk used for?”的需要从图像中查询得知是什么在桌子上,并在给定前一步查询得到的物体 A 和关系 “UsedFor” 的情况下,从知识库中得到桌子上的物体的用处。 最终,根据提取的三元组和模板,例如 “(man, holds, umbrella)” 和模板 “what is <A> <R>? <B>” 生成问题答案对“what is the man holding?Umbrella”。 表 2 不同问题类型及对应模板实例 数据集的统计特性 数据集总共包括 32910 个图像,193449 个知识三元组和 157201 个问题答案对。其中包括 68448 个一步推理问题和 88753 个二步推理问题,以及 87193 个外部知识相关问题和 70008 个外部知识无关问题。 知识库无关的问题中,候选答案的数量为 2378。候选答案出现的频次在数据集中表现出了长尾分布。这使得模型必须准确解析图像,找出物体和它们的关系以正确处理图像中显著性不高的物体。知识库相关的问题中,候选答案的数量为 6536,研究者通过限制每个答案的最大出现次数,使得知识库相关的问题的答案分布均匀,避免模型拟合知识库。验证和测试集中 97% 的答案存在于训练集中,使得之前基于分类的视觉问答方法也能应用在该数据集上。 图 2 知识相关问题的答案分布 图 3 知识无关问题的答案分布 实验 研究者通过评估多个最新视觉问答模型的性能以及包括知识图嵌入和问题编码器预训练等各种知识嵌入方法,以检验提出的 KRVQA 数据集的性质。其中视觉问答模型包括: Q-type。对于每个问题,使用其问题类型中最频繁的训练答案作为输出答案。LSTM。使用双向 LSTM 对问题进行编码。并仅用问题编码预测最终答案。推理路径预测。使用双向 LSTM 对问题进行编码,并以全监督方式训练和预测推理路径和问题类型,以此从场景图和知识库中检索正确答案。Bottom-up attention。该方法取得了 2017 年视觉问答挑战赛的第一名方法。具有视觉问答模型的经典架构。MCAN。模块化共同注意网络(MCAN)为目前在 VQAv2 数据集上不使用额外数据得到最高的性能的方法,同时具有与在各种视觉语言任务上预训练的最新模型相似的网络架构结构。表 2 不同视觉问答方法在 KRVQA 上的准确率 如表 2 所示,基线方法 「Q-type」和「LSTM」仅根据问题预测答案,准确率大幅低于其他方。所有的方法在两步问题上的表现都与一步问题有较大差距,在知识相关问题上的准确率也更低。这些结果表明,KRVQA 数据集中的问题需要结合图像上下文和知识进行推理回答,多跳推理对现有方法仍具有挑战性。 知识编码与预训练 通过在整个知识库上训练,RotatE 可以对知识库中所有的实体和关系进行编码,使得针对三元组有。研究者使用 RotatE 对知识库三元组编码,并与 VQAv2 数据集上的效果最好之一的 MCAN 基线模型融合,如图 4 所示。 图 4 嵌入知识库编码的 MCAN 模型 最近的研究表明,通过对大量文本的训练,语言模型可以在一定程度上对知识进行编码。受此启发,研究者同样在知识文本上预训练问题编码器,对知识进行隐式编码。具体地说,MCAN 的自注意问题编码器将知识三元组的对应文本作为输入,然后如图 5 所示预测被掩盖的文本字符或相应的知识三元组。         图 5 用以隐式编码知识库的预训练任务示意 在表三上所示的 KRVQA 结果显示,在给定标定的三元组或查询实体时,模型能大幅提高在知识相关问题上的结果。而在给定除查询实体外的标定三元组 “+knowledge inference” 时,由于一副图像可能对应多个知识三元组,模型在推理图像答案时仅仅取得了少量提高。两个预训练任务则仅仅相对基线方法有稍微的提高。这显示了 KRVQA 中知识库的重要性,同时说明当前模型在正确感知图像内容以及编码知识库上的不足。 表 3 不同知识库编码方法与 MCAN 基线方法的准确率
  • [技术干货] DALL-E官方论文代码终于放出,OpenAI是如何实现图像版GPT-3的?
    OpenAI 图像版 GPT-3、120 亿参数的 DALL-E 刷屏社区,这个大型模型可以将以自然语言形式表达的大量概念转换为合适的图像,效果十分惊艳。如输入「牛油果形状的椅子」,就可以获得绿油油、形态各异的牛油果椅子图像。如果 GPT-3 一样,大家都在期待 OpenAI 放出 DALL-E 的官方论文与实现代码。 经过近两个月的等待,DALL-E 的论文和代码终于新鲜出炉!不过此项目正在更新,截止发稿时 DALL-E 只开放了使用图像重建部分 d-VAE 训练的 CNN 编码器和解码器部分,而 Transformer 代码部分还没有公开。除此以外数据集也不能使用。而论文也是公布了 d-VAE 的论文。项目地址:https://github.com/openai/DALL-E论文地址:https://arxiv.org/abs/2102.12092只能期待后续 OpenAI 公开更多的技术细节。 DALL-E 部分代码已开源这是为 DALL·E 所使用的 d-VAE 的官方 PyTorch 包。在运行 DALL-E/notebooks/usage.ipynb 程序之前,需要先安装软件包,代码如下:pip install git+https://github.com/openai/DALL-E.git解码器、编码器代码 d-VAE 论文 年初在论文还没有公开的情况下,就有人开始复现,他们复现的依据来自某博主制作的油管视频,在视频中,对 DALL·E 的原理结构进行了猜测。那么,现在论文已公开,是否颠覆了他的预想。传统上,文本到图像的生成主要集中在在固定的训练数据集上找到更好的建模假设。这些假设可能涉及复杂的体系架构、辅助损失或辅助信息,例如在训练期间提供的对象部件标签或分割掩码。该研究提出了一种基于 transformer 的简单方法,将文本和图像 token 作为单个数据流进行自回归建模。在足够的数据和扩展的情况下,当以 zero-shot 方式评估时, 该研究提出的方法与以前的领域特定模型具有相当的竞争力。
  • [技术干货] 让GBDT和GNN结合起来:Criteo AI Lab提出全新架构BGNN
    作者:Sergei Ivanov等机器之心编译GBDT 和 GNN 方法各有各的优势,现在,来自法国、俄罗斯两家机构的研究者将二者的优势结合起来,探索使用 GBDT 模型处理图结构数据。论文地址:https://openreview.net/pdf?id=ebS5NUfoMKL图神经网络(GNN)已经在学习图结构方面取得了巨大成功,应用于分子设计、计算机视觉、组合优化、推荐系统等多个方面。该领域的进展依靠于规范的 GNN 架构的存在,该架构将原始输入数据有效地编码为表达型表征,从而在新的数据集和任务上获得高质量的结果。最近的一些研究主要集中于具有稀疏数据的 GNN 上,这些数据代表同质节点嵌入(例如 one-hot 编码的图统计)或者词袋表征。但是在许多情况下,具有详细信息和丰富语义的表格数据更为自然,现实世界的人工智能也更丰富。例如在社交网络中,每个人都有社会人口统计学特征(例如年龄、性别、毕业日期),这些特征在数据类型、规模和缺失值上有很大差异。带有表格数据图形的 GNN 的研究是缺少的,梯度提升决策树(GBDT)在具有此类异构数据的应用程序中占主导地位。 GBDT 非常适用于表格数据,因为它们具有以下特性: 能够有效地学习表格数据中常见的具有超平面边界的决策空间;非常适合处理基数高、值缺失且比例不同的变量;它们为决策树或通过事后分析阶段的集合提供定性解释;在实际应用中,对于大量数据,它们收敛速度更快。相反,GNN 的关键特征使它们同时考虑节点的邻域信息和节点特征来进行预测,这与 GBDT 不同,GBDT 需要额外的预处理分析才能为算法提供图摘要(例如通过无监督图嵌入)。此外,理论上已经证明,通过消息传递的 GNN 可以在其图输入上计算任何可由图灵机器计算的函数,即 GNN 是唯一在图上具有通用性的学习架构(近似化和可计算性)。此外,与基于树的方法相比,基于梯度的神经网络学习具有多种优势: GNN 中含有的关系归纳偏差减轻了手动设计捕获网络拓扑特征的需求;训练神经网络的端到端属性允许在依赖于应用程序的解决方案中将 GNN 进行多阶段或多组件集成;采用图网络的预训练表征丰富了迁移学习中的许多重要任务,例如无监督领域自适应、自监督学习和主动学习机制。显然,GBDT 和 GNN 方法都有着明显的优势,可以将二者的优势结合起来吗?此前所有尝试将梯度提升和神经网络结合起来的方法在计算上都很繁琐,没有考虑图结构化数据,并且缺乏 GNN 架构中包含的关系偏向。 本研究是第一个探索使用 GBDT 模型处理图结构数据的研究。在这篇论文中,研究者提出了一种针对含表格数据的图的新型学习架构 BGNN,该架构将 GBDT 对表格节点特征的学习与 GNN 相结合,从而利用图的拓扑优化预测。这使 BGNN 可以继承梯度提升方法(异构学习和可解释性)和图网络(表征学习和端到端训练)的优势。 总体而言,该研究的贡献有: 设计了一种新的通用体系架构,将 GBDT 和 GNN 组合为一个 pipeline;通过迭代添加适合 GNN 梯度更新的新树,该研究克服了 GBDT 的端到端训练的挑战,使得错误信号可从网络拓扑反向传播到 GBDT;研究者针对节点预测任务中的强基准对方法进行了广泛的评估,实验结果表明,在各种现实表格数据中,异构节点回归和节点分类任务的性能显著提高;由于训练过程中的损失收敛速度更快,该方法比其他 GNN SOTA 模型更有效。此外,学习到的表征在潜在空间中展现出可辨别的结构,这进一步证明了该方法的表达能力。方法介绍GBDT 和 GNN 的优化遵循不同的方法:GNN 的参数通过梯度下降进行优化,而 GBDT 则是迭代构建的,并且决策树在构建之后仍然保持固定(决策树基于特征空间的硬拆分,因此不可微分)。 一种简单的方法是仅在节点特征上训练 GBDT 模型,然后将得到的 GBDT 预测与原始输入一起用作 GNN 的新节点特征。在这种情况下,将通过图神经网络进一步完善 GBDT 对图不敏感的预测。这种方法(被称为 Res-GNN)已经可以提高某些任务的 GNN 性能,但 GBDT 模型将完全忽略图的结构,并可能会丢失图的描述性特征,从而向 GNN 提供不准确的输入数据。 相反,该研究提出对 GBDT 和 GNN 进行端到端的训练,称为 BGNN(Boost-GNN)。该研究首先应用 GBDT,然后再应用 GNN。但考虑到最终预测的质量,该研究对它们进行了优化,BGNN 的训练如图 1 所示。已经构建好的决策树由于其离散的结构而无法正确调整,因此该研究通过添加新的树来迭代地更新 GBDT 模型,使其近似于 GNN 损失函数。图 1:BGNN 的训练过程,计算每一个 epoch 的步数。下图算法 1 展示了 BGNN 模型的训练算法,它可用于半监督节点回归与分类这样的任意节点级别的预热问题。更多实验结果读者可以查看原论文。本文来源:https://mp.weixin.qq.com/s/wIUVN9L5nnBgR_JSXY9OfA
  • [技术干货] 【学习赛2021-硬盘异常检测】【总结分享】过拟合
    华为网络AI学习赛2021-硬盘异常检测华为网络AI学习赛2021-硬盘异常检测 过程经过几天的数据处理,训练集的特征维度从 109 -> 53 -> 77 -> 57 -> 219,然而比赛分数一直没有超过样例代码,看到这个情况,很是意外。VegaAutoML中的参数 max_trial_number 从 2 -> 5 -> 200 -> 1,这样调节也不行。训练任务的运行日志输出准确率接近于1(如下所示)。到测试集一提交就是 0.1: model_id ... trial_result 0 stacking_all_20210228_000333 ... {'accuracy': 1.0, 'precision': 1.0, 'f1': 1.0,... 1 stacking_heterogeneous_20210228_000334 ... {'accuracy': 1.0, 'precision': 1.0, 'f1': 1.0,... 2 lightgbm_20210228_000325 ... {'accuracy': 0.9998, 'precision': 1.0, 'f1': 0... 3 lightgbm_20210228_000331 ... {'accuracy': 0.9998, 'precision': 1.0, 'f1': 0... [4 rows x 4 columns]存在 过拟合!!!  学习在比赛资料中,比较有帮助的是前辈的方案帖。在 slaine 的方案帖中,提到了过拟合的问题(此处只展示了小部分内容,建议阅读全文):"尝试一:为了解决过拟合问题,首先想到的是剔除在训练集中表现强劲的特征,也就是我在上面讲到的与硬盘工作时间强相关的特征(9,241,242等等),但是删除这些特征后线上成绩依然没有得到明显提升。" 在 bullet 的方案帖中,用了较长的篇幅去描述过拟合问题(此处只展示了小部分内容,建议阅读全文):"由于训练集中仅有每块样本前30天的记录,而样本变为坏样本后便不再有记录,因此,数据中好样本都集中在2018年12月而坏样本大多在2018年11月之前,如果把时间作为入模变量进行建模,就能在训练集完美区分好坏样本——12月没了记录的就是坏样本,但这显然是过拟合。由于没有2018年11月前的好样本数据,因此这个比赛存在超级难点,即如何判断模型是在识别好坏样本而不是在识别时间的远近。" 反思与探索先阅读前辈的方案,再动手实践,是少走弯路的好方法。在训练模型之前,多做数据分析和数据可视化,了解数据集是否存在某种误导性。比如 不公平对比、正负样本不平衡等 学习资源和参考资料#网络约AI,有你更精彩#网络人工智能黑客松大赛二等奖方案分享一等奖方案分享【2021学习赛---硬盘异常检测】2月23号直播ppt【学习赛2021--硬盘异常检测】样例代码【学习赛2021--KPI异常检测】优秀选手usstroot直播baseline代码及ppt网络AI学习赛2021.硬盘异常检测,赛题解读 其他学习赛推荐华为网络AI学习赛2021-KPI异常检测华为网络AI学习赛2021-日志异常检测 备注感谢老师的教学与课件欢迎各位同学一起来交流比赛心得^_^比赛配备了较为丰富的学习资料,有助于新手平稳入门,推荐参赛