人工智能

人工智能 · 圈子

674 位酷友已加入

本圈子收集关于人工智能的各种技术资料,加入圈子可以上传、下载资料,也可以使用提问来寻求资料或分享你认为有价值的站外链接~

关注推荐最新

热门标签

资源

基于CIFAR10图像的深度卷积生成对抗网络实现

背景 作者曾尝试使用cifar10建立GAN模型,这与MNIST图像集有所不同。因此结果不够好于预期。也许颜色尺寸是更复杂的生成因素。根据许多其他实现,网站和博客的介绍,cifar10的深度卷积模型是由自己的例程创建的。并添加一些重要提示。 编码条件 python 3.5.2 tensorflow 1.3.0 cifa10 python image set (https://www.cs.toronto.edu/~kriz/cifar.html) 构建模型 判别器 D: (100, 32, 32, 3) // input image shape with batch size 100 D: (100, 16, 16, 64) // after conv2d 5x5 stride 2 D: (100, 8, 8, 128) // after conv2d 5x5 stride 2 D: (100, 4, 4, 256) // after conv2d 5x5 stride 2 D: (100, 2, 2, 512) // after conv2d 5x5 stride 2 D: (100, 2048) // flatten D: (100, 1) // sigmoid out 生成器 G: (100, 100) // noise vector with batch size 100 G: (100, 2048) // after linear G: (100, 2, 2, 512) // reshape G: (100, 4, 4, 256) // after deconv2d 5x5 stride 2 G: (100, 8, 8, 128) // after deconv2d 5x5 stride 2 G: (100, 16, 16, 64) // after deconv2d 5x5 stride 2 G: (100, 32, 32, 3) // after deconv2d 5x5 stride 2 and tanh out 注意 除最后一层外的所有层。在描述符中使用relu, 对判别器(1e-3)和生成器(1e-4)使用不同的学习率 使用axis =“ channel index”的批处理归一化 在生成器中使用tanh输出 在第一层和最后一层不使用批处理规范化 一次训练鉴别器,两次生成器 结果样本 视频结果参考:https://www.youtube.com/watch?v=_REVVMWa9aE CIFAR10图像数据集可参考: https://www.ligongku.com/resource/737 转载自:https://github.com/4thgen/DCGAN-CIFAR10

资源

【Demo】 基于tensorflow的图像分割算法deeplab_v3+

tensorflow-deeplab_v3_plus 参考rishizek的代码进行中文注释,并按照自己风格重新编写代码,对ASPP加入里BN层,支持摄像头。 deeplab_v3_plus简介 图像分割是主要功能是将输入图片的每个像素都分好类别,也相当于分类过程。举例来说就是将大小为[h,w,c]的图像输出成[h,w,1],每个像素值代表一个类别。 deeplab_v3+可以参考论文Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation。它的结构图如下: 下面对模型进行简要分析 该模型属于encoder-decoder模型,encoder-decoder常用于自然语言处理中,在图像分割中U-net也是十分典型的encoder-decoder模型,大体结构如下: 就是将图片通过卷积尺寸变小再通过上采样将尺寸还原。 deeplab_v3+是将encoder-decoder和ASPP相结合,encoder-decoder会获取更多边界信息,ASPP可获取更多特征信息。encoder网络使用resnet101或 Xception,本代码中使用的是resnet101。 采用预训练的resnet的某一节点A来获取图像信息,再加入到ASPP中。ASPP就是不同膨胀率的空洞卷积和全局池化上采样后的输出concat在一起,作为encoder输出部分。 空洞卷积可以理解为一个大卷积中间权重值都为0,举例说明,一个3x3的卷积,如果膨胀率是1就是正常卷积,如果膨胀率是2,就是空洞卷积,相当于把3x3的卷积每个值的右方和下方加一行或列都置0。变换之后的空洞矩阵大小变为6x6。空洞矩阵论文中说可以提取更密集的特征,捕获多尺度信息,相比于卷积和池化会减少信息丢失。全局池化就是将输入[h,w,c]池化成[1,1,c]。 decoder部分选取resnet中A节点之前的B节点,再将encoder的输出上采样成B的大小然后concat,做一些卷积和上采样就得到最终输出。 由于可以看成分类问题,该模型的损失函数也是交叉熵函数。模型具体实现可以参考代码 模型训练 环境要求 ubuntu=16.04 tensorflow=1.4.1 opencv=3.4.1 windows下可以进行测试 下载数据集 将VOC解压到data目录下,下载DrSleep提供的SegmentationClassAug文件解压,如果访问不了可以尝试这个网址里面有_MACOSX和SegmentationClassAug两个文件夹,将里面的SegmentationClassAug放置到./data//VOCdevkit/VOC2012/下,里面的图片是shape为[h,w,1]每一个像素值都对应类别的label。 将restnet预训练数据解压放置在该模型的根目录下。 如果需要模型预训练数据可以将我训练的权重数据解压,如果下载过慢可以尝试这个网址,将里面的ckpt等文件放置到./model下。 代码介绍 data放置VOC数据和数据处理生成的record文件和分化数据的txt文件 model放置训练生成的模型和graph output放置测试图片生成的分割图像 picture放置测试用例,我的来源于百度图片 utils包含配置文件config.py,数据处理文件dataset_util.py,preprocessing.py和模型文件deeplab_model.py test.py是测试文件支持摄像头 tfrecord.py是将处理完的数据生成record文件 train.py是训练文件 运行 手动配置config.py的信息或选择默认 若要训练: 运行python tfrecord.py生成record文件 运行python train.py训练。 对于计算机gpu选择需修改这里代码 若要测试: 运行python test.py 一些疑问 我的电脑配置是1080Ti但总是运行运行就溢出,我尝试用tf.contrib.distribute.mirroredstrategy多gpu并行,但tensorflow版本要1.8,当我更新完,发现input_fn要是data格式,我失败了。 如果有并行gpu的建议或者代码的指正请给我留言 结果展示 来源https://github.com/LeslieZhoa/tensorflow-deeplab_v3_plus

计算机

计算机·圈子   首发

阿托 更新了
资源

基于PaddlePaddle的端到端图像分割套件

基于PaddlePaddle的端到端图像分割套件 PaddleSeg PaddleSeg是基于飞桨PaddlePaddle开发的端到端图像分割开发套件,涵盖了高精度和轻量级等不同方向的大量高质量分割模型。通过模块化的设计,提供了配置化驱动和API调用两种应用方式,帮助开发者更便捷地完成从训练到部署的全流程图像分割应用。 特性 高精度模型:基于百度自研的半监督标签知识蒸馏方案(SSLD)训练得到高精度骨干网络,结合前沿的分割技术,提供了50+的高质量预训练模型,效果优于其他开源实现。 模块化设计:支持15+主流 分割网络 ,结合模块化设计的 数据增强策略 、骨干网络、损失函数 等不同组件,开发者可以基于实际应用场景出发,组装多样化的训练配置,满足不同性能和精度的要求。 高性能:支持多进程异步I/O、多卡并行训练、评估等加速策略,结合飞桨核心框架的显存优化功能,可大幅度减少分割模型的训练开销,让开发者更低成本、更高效地完成图像分割训练。 模型库 模型\骨干网络 ResNet50 ResNet101 HRNetw18 HRNetw48 ANN ✔ ✔ BiSeNetv2 - - - - DANet ✔ ✔ Deeplabv3 ✔ ✔ Deeplabv3P ✔ ✔ Fast-SCNN - - - - FCN ✔ ✔ GCNet ✔ ✔ GSCNN ✔ ✔ HarDNet - - - - OCRNet ✔ ✔ PSPNet ✔ ✔ U-Net - - - - U2-Net - - - - Att U-Net - - - - U-Net++ - - - - DecoupledSegNet ✔ ✔ EMANet ✔ ✔ - - ISANet ✔ ✔ - - DNLNet ✔ ✔ - - 数据集 Cityscapes Pascal VOC ADE20K Pascal Context COCO stuff 安装 1.安装PaddlePaddle 版本要求 PaddlePaddle >= 2.0.0 Python >= 3.6+ 由于图像分割模型计算开销大,推荐在GPU版本的PaddlePaddle下使用PaddleSeg。推荐安装10.0以上的CUDA环境。安装教程请见PaddlePaddle官网。 2.安装PaddleSeg 支持用API调用的方式构建定制化的分割框架,灵活开发。 3. 下载PaddleSeg仓库 支持用配置化驱动的方式完成全流程分割应用,简单快捷。 4. 验证安装 运行以下命令,如果可以正常进行训练,说明您已经安装成功。 使用教程 快速入门 API使用教程 数据集准备 配置项 Loss使用 API参考 添加新组件 模型压缩 模型导出 实践案例 Cityscapes SOTA 来源https://github.com/PaddlePaddle/PaddleSeg

资源

【Demo】基于NLP方法的keyinfo提取的文本内容图示器

基于NLP方法的keyinfo提取的文本内容图示器,Text Content Grapher based on keyinfo extraction by NLP method。 输入一篇文档,将文档进行关键信息提取,进行结构化,并最终组织成图谱组织形式,形成对文章语义信息的图谱化展示。 项目介绍 如何用图谱和结构化的方式,即以简洁的方式对输入的文本内容进行最佳的语义表示是个难题。 本项目将对这一问题进行尝试,采用的方法为:输入一篇文档,将文档进行关键信息提取,并进行结构化,并最终组织成图谱组织形式,形成对文章语义信息的图谱化展示。 使用方式 结果保存在graph.html文件当中。 事件举例 1)中兴事件 2)魏则西事件 3)雷洋事件 4)同学杀人事件 总结 1)如何用图谱和结构化的方式,即以简洁的方式对输入的文本内容进行最佳的语义表示是个难题。 2)本项目采用了高频词,关键词,命名实体识别,主谓宾短语识别等抽取方式,并尝试将三类信息进行图谱组织表示,这种表示方式是一种尝试。 3)命名实体识别以及关键信息抽取受限于NLP的性能,在算法和方式上还存在多处不足。 来源https://github.com/liuhuanyong/TextGrapher

资源

【Demo】基于语义分割的矿区无人机影像地物提取实验

基于语义分割的矿区无人机影像地物提取实验 1. 实验数据介绍 无人机拍摄的高分辨率矿区影像图 实验室进行标注的对应label v0219版本:进行裁剪后的640 x 640的图像与label数据 v0225&v0301版本及之后:进行裁剪后的320 x 320的图像与label数据,并更换测试集 v0607及所有详细数据调整情况:实验数据版本调整 2. 实验环境介绍 GPU等服务器资源不加介绍 Python3.6、Pytorch、OpenCV、torchvision、numpy等必备环境 图像切割工具包GDAL:仅在win系统下可运行 3. 实验流程介绍 原图数据和标注好的label数据,label是灰度的图像,且每个像素属于该类(0-3)共四类 切割原图和相应的label数据为640 x 640的图像,后期改为320大小进行实验 将切割好的原图和label对应好,使用代码进行可视化(因为标注的label是灰度,直观上看是黑色一片) 对数据进行数据增强,切割完成才有对应的几百张数据,增强至几千张 增强后的数据也要一对一对应好,建议一开始就取两者相同的图像名,使用可视化进行测试 数据划分,分为训练集、验证集、测试集;按照6:2:2的比例 搭建网络代码,使用Pytorch搭建网络,后期加入多种trick进行测试 编写train.py训练代码,写好训练流程、保存模型、保存loss等信息 训练完成之后,使用保存的模型进行预测,对预测出的图片进行涂色,使之可视化 根据预测结果进行kappa系数、mIoU指标的计算 4. 实验部分代码简介 数据简介:以一张大图和对应的label为例,可视化label以便查看原始数据 数据切割:介绍有关tif文件的切割,以及转换tif格式为png格式 灰度label可视化:由于label是1通道的图像,直观上是黑色图像,写代码使得同类别像素一个颜色进行可视化 数据增强_Data_Augmentation.py:离线数据增强,对图像进行随机旋转、颜色抖动、高斯噪声处理; 数据载入及数据划分:v0304版本之前的数据载入方式,使用简单留出法划分训练集、验证集 基于k折交叉验证方式的数据载入及数据划分:基于k折交叉验证,避免了因偶然因素引起的验证集的不同(验证集随机划分,每次实验结果都会有影响) deeplabv3.py:基于pytorch的deeplab_v3网络搭建代码 deeplabv3论文笔记:论文Rethinking Atrous Convolution for Semantic Image Segmentation的阅读笔记 train.py:v0304版本之前训练程序的代码,基于简单留出验证 train_kfold.py:基于交叉验证方式的训练程序的代码 predictv0217.py:使用生成的训练模型来预测,并给预测图片进行涂色显示 MIoU指标计算:使用PyTorch基于混淆矩阵计算MIoU、Acc、类别Acc等指标 Kappa系数计算:使用PyTorch基于混淆矩阵计算Kappa系数评价指标 5. 实验版本数据记录 本实验有多个版本,具体实验详情如下: 使用图像增强进行训练集的生成,640大小的图像:训练集1944张、验证集648张、测试集162张 v0225版本&v0301版本,320大小的图像:训练集9072张、验证集2268张、测试集378张 v0607版本之后:第三次调整数据;使用dataset3 v0923版本之后:加入dsm高程数据;使用dataset4 v1012版本之后:加入了新数据;使用dataset5 图像的预处理:无标准化、只进行了归一化 损失函数:CrossEntropyLoss 优化器:SGD、lr=1e-3、动量=0.9; v0219版本测试Adam优化器、lr=1e-3 v0225版本&v0301版本:Adam优化器、lr=1e-3 v0225版本:deeplabv3-resnet152 V3p-152: deeplabv3+-resnet152 + 5折交叉验证 DANet_res:danet-resnet152 + 5折交叉验证 Deeplabv3_dan:deeplabv3-dan-resnet152 + 5折交叉验证 CCNet0403:ccnet-resnet152 + 5折交叉验证 CCNet0509:deeplabv3-ccnet-resnet152 + 5折交叉验证 ResNeSt0518:deeplabv3-resnest152 + 5折交叉验证(此代码修改自resnest分类网络代码) ResNeSt0525:deeplabv3-resnest101 + 5折交叉验证(此代码修改自resnest用于分割的代码) CCNet0607: deeplabv3-ccnet-resnet152 + 5折交叉验证 + 第三次调整数据 + 使用weight减轻样本不均衡 ACNet0923: ACNet-resnet50 + 5折交叉验证 + 加入dsm高程信息 + 使用weight减轻样本不均衡 + 40 ACNet0925: ACNet-resnet101 + 5折交叉验证 + 加入dsm高程信息 + 使用weight减轻样本不均衡 + 40 ACNet0927: ACNet-resnet50 + CCNet替换decode的agant层 + 5折交叉验证 + 加入dsm高程信息 + 使用weight减轻样本不均衡 + 45 ACNet0928: ACNet-resnet50 + CCNet替换原通道注意力模块 + 5折交叉验证 + 加入dsm高程信息 + 使用weight减轻样本不均衡 + 45 ACNet0930: ACNet-resnet50 + CBAM替换原通道注意力模块 + 5折交叉验证 + 加入dsm高程信息 + 使用weight减轻样本不均衡 + 45 ACNet1002: ACNet-resnet50 + 5折交叉验证 + 加入dsm高程信息 + 使用weight减轻样本不均衡 + 40 + ACNet0923对照实验测试Focalloss效果 ACNet1004: ACNet_del_M_model-resnet50 + 5折交叉验证 + 加入dsm高程信息 + 使用weight减轻样本不均衡 + 40 ACNet1005: ACNet1004对照实验 + torch.cat代替+融合方式;比较两者融合的效果好坏 ACNet1006: ACNet1004对照实验 + CC_Moudle代替上采样过程中的4个agant层 ACNet1008: ACNet1004对照实验 + CC_Moudle代替上采样过程中的第1个agant层 ACNet1009: ACNet1004对照实验 + m0-m4融合的特征加入到RGB分支 ACNet1010: ACNet1004对照实验 + sk-resnet50网络替换se-resnet50 ACNet1012: ACNet0923网络结构 + 新的dataset5数据集 ACNet1014: ACNet1004网络结构 + 新的dataset5数据集 ACNet1016: ACNet1014对照实验 + 编码器的最后融合前添加ASPP模块 ACNet1021: ACNet1014对照实验 + 将高程数据的分支的通道注意力改为空间注意力 ACNet1023: ACNet1014对照实验 + 将RGB数据的分支的通道注意力改为通道与空间注意力串行 ACNet1025: ACNet1014对照实验 + 替换注意力机制中的一个卷积为两个卷积层 ACNet1029: ACNet1014对照实验 + 将RGB数据的分支的通道注意力改为通道与空间注意力并行 ACNet1101: ACNet1014对照实验 + 删除了第一个卷积层之后的注意力机制与融合 + 删除对下采样的指导 ACNet1103: ACNet1014对照实验 + 将之前的agant层替换为金字塔池化模块ppm + sizes==(1,2,5,10) ACNet1106: ACNet1014对照实验 + 将之前的agant层替换为金字塔池化模块ppm + sizes==(1,2,5) ACNet1110: ACNet1014对照实验 + 将RGB分支和高程分支的通道注意力改为通道与空间注意力并行 ACNet1113: ACNet1014对照实验 + 将RGB分支的通道注意力改为通道与空间注意力并行,高程分支为串行 5.1 实验版本记录 & 一些想法 数据增强加入随机裁剪操作,并双线性插值pad至320大小(不能pad,标签pad就不是真实值),投入训练 随机裁剪数据至192大小,没有pad,和320大小的数据一起当做训练集,出现错误提示:一个batch的数据,[B,C,H,W]必须一致,由于320和192大小的数据掺杂,所以报错。因为实验使用离线的数据增强 因数据集中样本数量不平衡,测试weighted Cross Entropy-Loss以及Focal-Loss 使用CCNet单独训练 v0403版本:只使用了ccnet注意力模块的输出上采样,结果为不收敛,但是使用epoch-8.pth测试有点效果 后期测试:将x与x_dsn特征融合,进行测试,测试结果如下,可以看出较danet单独训练结果稍好,车辆acc例外 CCNet与deeplabv3共同使用,将注意力模块加入deeplabv3 v0509版本:将ccnet模块与aspp模块并行,cat两个结果,最后进行分割。整体Acc、MIoU、Kappa都达到了最高 v0509版本:只有道路和车辆的准确率低于以往的实验 v0607版本:测试Cross Entropy-Loss加入权重[0.1, 0.8, 1.0, 1.0] 测试到epoch12,由于服务器原因程序中断,查看log,在训练集、验证集上的loss都较之前增大 修改权重,根据训练数据集,算出真正的像素比例值,调整权重,重新训练 此次效果很好,其中明显在预测图中【道路】的识别率增大,且指标上涨明显 DAN网络单独训练 danet_drn_v0408版本:output包括feat_sum、pam_out、cam_out,采用辅助loss训练,结果一塌糊涂 danet_v0408版本:更换backbone网络为resnet-152,替换deeplabv3的aspp模块,不使用辅助loss,使用feat_sum进行结果的分割,结果详见下表Danet0408 DAN模块并行加入deeplabv3网络中,实验数据如下所示 将deeplabv3的backbone网络Resnet换为ResNeSt,目前测试版本:resnest-v0518 此版本:根据代码修改,去除aspp后的层,模仿deeplabv3-resnet进行修改,效果一般,仅仅提升了道路的识别 根据@张航作者的代码进行更改得出,deeplabv3-resnest101,已测试 目前的实验目标:提高车辙的识别率(道路的标注中,有一部分是车轮轧过的车辙),最怀疑是数据量不够 思路1:加大数据量,如下进行的新的数据增强; 思路2:调整损失函数,加入weight权重,减轻样本数目不平衡问题; 实验结果有较大的提升,见下结果 关于数据的调整:重新审视了代码,测试了增强的结果;其中,颜色抖动、随机旋转有效;高斯噪声处理像素值改变小; 在原训练数据上新添加如下:左右翻转图像;上下翻转图像;其中各1890张,共3780张; 更新:删除了反转的图像中全黑的label,即全是背景的label;(减轻一下样本不均衡) 有关第三次数据调整,详见issue-数据调整汇总 5.2 基于RGB与高程数据的语义分割实验 数据处理部分 Depth原始数据(高程数据)是32位的tiff格式图像,需转换为8位的tiff格式图,使用python的代码直接转换会线性压缩图像的对比性,所以要先找到图像像素的极值,将其像素之间的差做出来,再使用代码转换为uint8文件。转换代码地址:32to8.py png切割代码:png_crop.py 在dataset3中有筛选出的特征较均衡的图像,使用代码筛选切割好的dsm高程数据;代码:file_find.py 基于dataset3加入dsm高程数据:dataset4的调整记录 代码详见上方链接 5.3 test测试数据集-各版本结果对比 版本&指标 Acc MIoU Kappa 背景 房屋 道路 车辆 V0225 0.9562 0.7864 0.8477 0.9847 0.8531 0.8898 0.7269 V0301 0.9545 0.7740 0.8429 0.9815 0.8849 0.9037 0.6313 V0304 0.9555 0.7777 0.8470 0.9816 0.8529 0.9086 0.7151 V3p-101 0.9544 0.7706 0.8427 0.9785 0.8704 0.9165 0.5758 V3p-152 0.9525 0.7582 0.8317 0.9860 0.8235 0.9111 0.6009 Danet0408 0.9294 0.6762 0.7347 0.9818 0.5991 0.8409 0.4458 Danet0420 0.9497 0.7611 0.8276 0.9732 0.8232 0.9101 0.6559 CCnet0403 0.9412 0.6846 0.7845 0.9876 0.7803 0.9252 0.4353 CCnet0509 0.9593 0.7947 0.8593 0.9863 0.8818 0.8856 0.6740 ResNeSt0518 0.9437 0.7143 0.8057 0.9765 0.8315 0.9184 0.4154 ResNeSt0525 0.9525 0.7601 0.8363 0.9763 0.8725 0.8192 0.5519 CCNet0607 0.9603 0.8057 0.8684 0.9722 0.8907 0.9216 0.7745 ACNet0923 0.9635 0.8220 0.8802 0.9710 0.9191 0.9588 0.8167 ACNet0925 0.9583 0.8016 0.8625 0.9716 0.9060 0.9002 0.7994 ACNet0927 0.9573 0.7935 0.8618 0.9677 0.9415 0.9521 0.8032 ACNet0928 0.9352 0.7172 0.7878 0.9491 0.8509 0.9534 0.6594 ACNet0930 0.9616 0.8192 0.8733 0.9744 0.9113 0.9472 0.8420 ACNet1002 0.9492 0.7681 0.8355 0.9634 0.8688 0.9394 0.7913 ACNet1004 0.9638 0.8204 0.8807 0.9713 0.9229 0.9643 0.8317 ACNet1005 0.9619 0.8065 0.8740 0.9715 0.9288 0.9425 0.7376 ACNet1006 0.9537 0.7853 0.8518 0.9585 0.9420 0.9505 0.7951 ACNet1008 0.9642 0.8175 0.8806 0.9771 0.9317 0.9386 0.7271 ACNet1009 0.9627 0.8099 0.8758 0.9760 0.8999 0.9133 0.7584 ACNet1010 0.9587 0.7969 0.8655 0.9710 0.9331 0.9376 0.7433 ACNet1012 0.9528 0.7844 0.8477 0.9720 0.9036 0.8208 0.8036 ACNet1014 0.9580 0.7948 0.8622 0.9753 0.9214 0.8318 0.7961 ACNet1016 0.9534 0.7837 0.8434 0.9750 0.8340 0.9580 0.7566 ACNet1021 0.9481 0.7560 0.8329 0.9588 0.9319 0.9375 0.6947 ACNet1023 0.9513 0.7653 0.8405 0.9673 0.9179 0.9373 0.7573 ACNet1025 0.9483 0.7635 0.8231 0.9764 0.7607 0.8985 0.7280 ACNet1029 0.9553 0.7863 0.8539 0.9738 0.9123 0.8204 0.7964 ACNet1101 0.9494 0.7685 0.8379 0.9603 0.9339 0.9377 0.7849 ACNet1103 0.9561 0.7816 0.8545 0.9722 0.8957 0.9162 0.7634 ACNet1106 0.9571 0.7802 0.8543 0.9800 0.8832 0.9148 0.6309 ACNet1110 0.9544 0.7848 0.8479 0.9733 0.8983 0.8243 0.8057 ACNet1113 0.9530 0.7833 0.8435 0.9676 0.8729 0.9304 0.7828 ACNet1117 0.9613 0.8102 0.8724 0.9774 0.9154 0.8719 0.8009 6. 实验分割结果展示 ACNet-0923版本实验预测图: 7. 实验优化问题记录 7.1 实验优化问题解决记录-MIoU-v0217 MIoU数据:MIoUData.py:读取label和predict图像,以tensor形式,batch_size=4传入----v0210 MIoU的计算:testMIoU.py:将传入的tensor转为np的array,再执行flatten()进行一维化,每4个图像进行计算miou,最后求平均的miou 问题:计算得到的MIoU都为1.0,怀疑原因,中间的float强转int,最后得到的数值都为1 解决v0217:修改读入方式,使用CV2直接读入,不变为tensor,详见MIoUCalv0217.py,MIoUDatav0217.py 7.3 预测问题-已解决v0217 v0217版本:修改预测方法,以一张一张读入进行预测,解决之前的大部分涂色失败问题。效果如下: 来源https://github.com/yearing1017/UAVI_Seg_Pytorch

计算机

计算机·圈子   首发

阿托 更新了
资源

【Demo】CCKS2019中文命名实体识别任务

CCKS2019中文命名实体识别任务 从医疗文本中识别疾病和诊断、解剖部位、影像检查、实验室检验、手术和药物6种命名实体。 现已实现基于jieba和AC自动机的baseline构建、基于BiLSTM和CRF的序列标注模型构建。 bert的部分代码源于https://github.com/charles9n/bert-sklearn.git 感谢作者。此部分代码也可从本站下载参考。 模型最终测试集得分0.81,还有较大改进空间。可以当做一个baseline。 来源https://github.com/MenglinLu/Chinese-clinical-NER

资源

【Demo】利用Python实现酒店评论的中文情感分析

利用Python实现酒店评论的情感分析 情感极性分析,即情感分类,对带有主观情感色彩的文本进行分析、归纳。情感极性分析主要有两种分类方法:基于情感知识的方法和基于机器学习的方法。基于情感知识的方法通过一些已有的情感词典计算文本的情感极性(正向或负向),其方法是统计文本中出现的正、负向情感词数目或情感词的情感值来判断文本情感类别;基于机器学习的方法利用机器学习算法训练已标注情感类别的训练数据集训练分类模型,再通过分类模型预测文本所属情感分类。本文采用机器学习方法实现对酒店评论数据的情感分类,利用Python语言实现情感分类模型的构建和预测,不包含理论部分,旨在通过实践一步步了解、实现中文情感极性分析。 开发环境准备 1.Python环境 在python官网https://www.python.org/downloads/ 下载计算机对应的python版本,本人使用的是Python2.7.13的版本。 2.第三方模块 本实例代码的实现使用到了多个著名的第三方模块,主要模块如下所示: 1)Jieba 目前使用最为广泛的中文分词组件。下载地址:https://pypi.python.org/pypi/jieba/ 2)Gensim 用于主题模型、文档索引和大型语料相似度索引的python库,主要用于自然语言处理(NLP)和信息检索(IR)。下载地址:https://pypi.python.org/pypi/gensim 本实例中的维基中文语料处理和中文词向量模型构建需要用到该模块。 3)Pandas 用于高效处理大型数据集、执行数据分析任务的python库,是基于Numpy的工具包。下载地址:https://pypi.python.org/pypi/pandas/0.20.1 4)Numpy 用于存储和处理大型矩阵的工具包。下载地址:https://pypi.python.org/pypi/numpy 5)Scikit-learn 用于机器学习的python工具包,python模块引用名字为sklearn,安装前还需要Numpy和Scipy两个Python库。官网地址:http://scikit-learn.org/stable/ 6)Matplotlib Matplotlib是一个python的图形框架,用于绘制二维图形。下载地址:https://pypi.python.org/pypi/matplotlib 7)Tensorflow Tensorflow是一个采用数据流图用于数值计算的开源软件库,用于人工智能领域。 官网地址:http://www.tensorfly.cn/ 下载地址:https://pypi.python.org/pypi/tensorflow/1.1.0 数据获取 1.停用词词典 本文使用中科院计算所中文自然语言处理开放平台发布的中文停用词表,包含了1208个停用词。下载地址:http://www.hicode.cc/download/view-software-13784.html 2.正负向语料库 文本从http://www.datatang.com/data/11936 下载“有关中文情感挖掘的酒店评论语料”作为训练集与测试集,该语料包含了4种语料子集,本文选用正负各1000的平衡语料(ChnSentiCorp_htl_ba_2000)作为数据集进行分析。 数据预处理 1.正负向语料预处理 下载并解压ChnSentiCorp_htl_ba_2000.rar文件,得到的文件夹中包含neg(负向语料)和pos(正向语料)两个文件夹,而文件夹中的每一篇评论为一个txt文档,为了方便之后的操作,需要把正向和负向评论分别规整到对应的一个txt文件中,即正向语料的集合文档(命名为2000_pos.txt)和负向语料的集合文档(命名为2000_neg.txt)。 具体Python实现代码如下所示: 运行完成后得到2000_pos.txt和2000_neg.txt两个文本文件,分别存放正向评论和负向评论,每篇评论为一行。文档部分截图如下所示: 2.中文文本分词 本文采用结巴分词分别对正向语料和负向语料进行分词处理。特别注意,在执行代码前需要把txt源文件手动转化成UTF-8格式,否则会报中文编码的错误。在进行分词前,需要对文本进行去除数字、字母和特殊符号的处理,使用python自带的string和re模块可以实现,其中string模块用于处理字符串操作,re模块用于正则表达式处理。 具体实现代码如下所示: 处理完成后,得到2000_pos_cut.txt和2000_neg_cut.txt两个txt文件,分别存放正负向语料分词后的结果。分词结果部分截图如下所示: 3.去停用词 分词完成后,即可读取停用词表中的停用词,对分词后的正负向语料进行匹配并去除停用词。去除停用词的步骤非常简单,主要有两个: 1)读取停用词表; 2)遍历分词后的句子,将每个词丢到此表中进行匹配,若停用词表存在则替换为空。 具体实现代码如下所示: 根据代码所示,停用词表的获取使用到了python特有的广播形式,一句代码即可搞定: 读取出的每一个停用词必须要经过去符号处理即w.strip(),因为读取出的停用词还包含有换行符和制表符,如果不处理则匹配不上。代码执行完成后,得到2000_neg_cut_stopword.txt和2000_pos_cut_stopword.txt两个txt文件。 由于去停用词的步骤是在句子分词后执行的,因此通常与分词操作在同一个代码段中进行,即在句子分词操作完成后直接调用去停用词的函数,并得到去停用词后的结果,再写入结果文件中。本文是为了便于步骤的理解将两者分开为两个代码文件执行,各位可根据自己的需求进行调整。 4.获取特征词向量 根据以上步骤得到了正负向语料的特征词文本,而模型的输入必须是数值型数据,因此需要将每条由词语组合而成的语句转化为一个数值型向量。常见的转化算法有Bag of Words(BOW)、TF-IDF、Word2Vec。本文采用Word2Vec词向量模型将语料转换为词向量。 由于特征词向量的抽取是基于已经训练好的词向量模型,而wiki中文语料是公认的大型中文语料,本文拟从wiki中文语料生成的词向量中抽取本文语料的特征词向量。Wiki中文语料的Word2vec模型训练在之前写过的一篇文章“利用Python实现wiki中文语料的word2vec模型构建” 中做了详尽的描述,在此不赘述。即本文从文章最后得到的wiki.zh.text.vector中抽取特征词向量作为模型的输入。 获取特征词向量的主要步骤如下: 1)读取模型词向量矩阵; 2)遍历语句中的每个词,从模型词向量矩阵中抽取当前词的数值向量,一条语句即可得到一个二维矩阵,行数为词的个数,列数为模型设定的维度; 3)根据得到的矩阵计算矩阵均值作为当前语句的特征词向量; 4)全部语句计算完成后,拼接语句类别代表的值,写入csv文件中。 主要代码如下图所示: 代码执行完成后,得到一个名为2000_data.csv的文件,第一列为类别对应的数值(1-pos, 0-neg),第二列开始为数值向量,每一行代表一条评论。结果的部分截图如下所示: 5.降维 Word2vec模型设定了400的维度进行训练,得到的词向量为400维,本文采用PCA算法对结果进行降维。具体实现代码如下所示: 运行代码,根据结果图发现前100维就能够较好的包含原始数据的绝大部分内容,因此选定前100维作为模型的输入。 分类模型构建 本文采用支持向量机(SVM)作为本次实验的中文文本分类模型,其他分类模型采用相同的分析流程,在此不赘述。 支持向量机(SVM)是一种有监督的机器学习模型。本文首先采用经典的机器学习算法SVM作为分类器算法,通过计算测试集的预测精度和ROC曲线来验证分类器的有效性,一般来说ROC曲线的面积(AUC)越大模型的表现越好。 首先使用SVM作为分类器算法,随后利用matplotlib和metric库来构建ROC曲线。具体python代码如下所示: 运行代码,得到Test Accuracy: 0.88,即本次实验测试集的预测准确率为88%,ROC曲线如下图所示。 来源https://github.com/AimeeLee77/senti_analysis

资源

基于PySpark与MySQL的复杂网络链路预测

link-prediction 基于PySpark和MySQL实现复杂网络的(错误)链路预测。结合PySpark的RDD操作实现图的出入度、某两个节点的共同邻居等的计算。 Spark配置: scala-2.11.5 spark-1.2.0 jdk1.8.0_31 虽然现在Spark版本迭代更新很快,但对于初学PySpark的同学,本项目仍有一定参考价值。 参考论文: 吕琳媛. 复杂网络链路预测[J]. 电子科技大学学报, 2010, 39(5):651-661. 相比NetworkX,结合Spark的图计算能更快一些,由于PySpark里没有GraphX模块,所以基于RDD的基本操作算子,实现一些图的基本计算。 Data 6个CSV文件,对应6个复杂网络(三种网络:Internet网络、生物信息网络、社交媒体网络,每种网络有两个。即总共3个有向图网络,3个无向图网络),数据存储的形式是边集数组。 对于有向图来说,每行数据有两个元素表示一条有向边arc。第一个元素是该边的起始节点,第二个元素是该边的终点; 对于无向图来说,每行数据也是两个元素,代表组成该无向边edge的两个节点。 代码有一段是将数据从CSV文件中读取并保存在MySQL中。 转载自:https://github.com/ysh329/link-prediction

资源

【Demo】使用Dlib从相机进行人脸识别

使用Dlib从相机进行人脸识别 介绍 调用摄像头进行人脸识别,支持多张人脸同时识别; 摄像头人脸录入 / Face register 请不要离摄像头过近,人脸超出摄像头范围时会有 "OUT OF RANGE" 提醒; 提取特征建立人脸数据库 利用摄像头进行人脸识别 单张人脸 利用 OT 对于单张人脸追踪 多张人脸 利用 OT 来实现 定制显示名字, 可以写中文 关于精度: 当使用0.6的距离阈值时,dlib模型在标准LFW人脸识别基准上可获得99.38%的精度。 关于算法: 基于 Residual Neural Network / 残差网络的 CNN 模型; 该模型是一个具有29个转换层的ResNet网络。 它本质上是He,Zhang,Ren和Sun的论文《深度残差学习进行图像识别》中ResNet-34网络的一个版本,删除了几层,每层的过滤器数量减少了一半。 概述 此项目中人脸识别的实现流程 (no OT, 每一帧都进行检测+识别) 实现流程(with OT, 初始帧进行检测+识别,后续帧检测+质心跟踪) 如果利用 OT 来跟踪,可以大大提高 FPS, 因为做识别时候需要提取特征描述子的耗时很多; 流程 安装依赖库 下载源码 进行人脸信息采集录入 提取所有录入人脸数据存入 "features_all.csv" 调用摄像头进行实时人脸识别 或者利用 OT 算法,调用摄像头进行实时人脸识别 关于源码 Repo 的 tree / 树状图: 用到的 Dlib 相关模型函数: Dlib 正向人脸检测器 (based on HOG), output: <class 'dlib.dlib.rectangles'> Dlib 人脸 landmark 特征点检测器, output: <class 'dlib.dlib.full_object_detection'>, will use shape_predictor_68_face_landmarks.dat Dlib 特征描述子 Face recognition model, the object maps human faces into 128D vectors Python 源码介绍如下: get_face_from_camera.py: 进行 Face register / 人脸信息采集录入 请注意存储人脸图片时,矩形框不要超出摄像头范围,要不然无法保存到本地; 超出会有 "out of range" 的提醒; features_extraction_to_csv.py: 从上一步存下来的图像文件中,提取人脸数据存入CSV; 会生成一个存储所有特征人脸数据的 "features_all.csv"; size: n*128 , n means n people you registered and 128 means 128D features of the face face_reco_from_camera.py: 这一步将调用摄像头进行实时人脸识别; / This part will implement real-time face recognition; Compare the faces captured from camera with the faces you have registered which are saved in "features_all.csv" 将捕获到的人脸数据和之前存的人脸数据进行对比计算欧式距离, 由此判断是否是同一个人; face_reco_from_camera_ot_single_person/multi_people.py: 区别于 face_reco_from_camera.py (对每一帧都进行检测+识别),只会对初始帧做检测+识别,对后续帧做检测+质心跟踪; (optional) face_descriptor_from_camera.py 调用摄像头进行实时特征描述子计算; / Real-time face descriptor computation; Tips: 如果希望详细了解 dlib 的用法,请参考 Dlib 官方 Python api 的网站 / You can refer to this link for more information of how to use dlib: http://dlib.net/python/index.html Windows下建议不要把代码放到 C:\, 可能会出现权限读取问题 / In windows, we will not recommend that running this repo in dir C:\ 代码最好不要有中文路径 人脸录入的时候先建文件夹再保存图片, 先 N 再 S 关于人脸识别卡顿 FPS 低问题, 原因是特征描述子提取很费时间, 光跑 face_descriptor_from_camera.py 中 face_reco_model.compute_face_descriptor 在 CPU: i7-8700K 得到的最终 FPS: 5~6 (检测在 0.03s, 特征描述子提取在 0.158s, 和已知人脸进行遍历对比在 0.003s 左右), 所以主要提取特征时候耗资源, 可以用 OT 去做追踪,而不是对每一帧都做检测+识别 来源https://github.com/coneypo/Dlib_face_recognition_from_camera

资源

【Demo】基于 TensorFlow Lite 的 Android 端中文语音识别

基于 TensorFlow Lite 的 Android 端中文语音识别 声学模型来源于:ASRT_SpeechRecognition 使用的模型版本:ASRT version 0.4.2 released 系统结构/类的说明 MainActivity 为 Android 程序入口,初始化 UI 控件与其监听函数所在,肩负生成 TensorFlowInferenceInterface 对象与读取标签文件列表的任务、避免重复读取文件。 DreamCarcher 调用网络开源 api、其中通过 Android 官方提供的 AudioCapturer 提供录音功能与文件流,默认地将语音数据保存至手机指定目录下 farewell.wav 处。 Chain 调用 InitialDream 类的对象以获取处理好的语音数据,输入模型以得到返还的概率矩阵,通过 Argmax 函数识别出拼音序列下标后,传入标签文件列表得到最终结果,返还给 MainActivity 的 TextView 控件以显示于应用界面。 InitialDream 为数据读取与处理功能提供支持,在 Chian 的预测函数启动时会自动地初始化并运行,内部实现对 Wave 文件的读取、对其数据进行加窗处理,最终生成模型所需识别输入的操作。 AnnaUtil 包含 4 种静态变量与 4 种静态函数,前者用于提供录音标准帧速率与文件路径,后者包含对复数求模、对数组求 log(n+1),整型数据转浮点数和一维数组内求 Max 数值下标,协助上述各类进行工作。 APP 使用说明 通过下拉控件可选择测试已存在的 thchs30 train/test 数据集文件,用于数据集测试的 wave 文件需要手动放置于手机指定目录(也可使用其它语音文件,请依照 AnnaUtil 内变量修改语音文件名/修改功能对应变量)。 测试语句将显示范例句、识别结果并提供错误率检测;实时录音仅显示识别结果。 按 START 按钮开始测试,按 STOP 按钮结束录音、查看语音识别结果,按 PLAY 按钮播放对应语音文件。 注意 该项目存在许多功能性与代码书写规范问题 不支持识别时长过长(>1600)的语音数据。 暂无拼音译为汉字功能,需要语言模型模块。 生成 TensorFlowInferenceInterface 对象与读取标签文件列表的任务,应当交由单独的类来处理。 来源https://github.com/AnnaClancy/AndroidSpeechRecognition

资源

基于深度强化学习的未知环境自主探索方法

决策模块 目录 功能介绍 效果展示 配置及环境要求 编译及安装方式 软硬件系统框图 原理介绍与理论支持分析 软件架构与层级图 开源协议 设计模式 鸣谢 功能介绍 决策模块是完成RoboMaster AI Challenge任务的重要智能控制单元。其主要负责从感知层获取的原始场上信息,经过预处理后,得到敌我双方机器人状态、血量、位置等信息,并通过处理后的信息作出合适的决策行为。 在感知系统完成的基础上,决策组的工作重点集中在决策层系统部署以及仿真训练环境搭建。针对RoboMaster AI Challenge中典型的2v2自主机器人对战方式,本项目将2v2对战视为零和博弈问题,并使用多智能体深度强化学习和行为决策树两种方式设计决策器。同时,为了结合规则型决策和学习型决策两种方式的优劣,并将大量的环境交互数据网络优化的结果运用于实车决策,本项目构造了三种仿真环境实现对算法的验证开发。分别是用于模型验证的Gazebo环境,策略训练的星际环境以及端到端控制训练的PyGame环境。 效果展示 真平台场景 实车场景 配置及环境要求 操作系统配置 所有步兵机器人均配备NVIDIA JETSON XAVIER嵌入式高性能计算单元作为车载电脑。 CPU框架:ARMv8 GPU计算能力:32TFLOPS 操作系统:JETPACK 4.2.2 (ARM框架下Ubuntu18.04以及GPU所需的软件包) 软件环境要求 Ubuntu 18.04 / 16.04 CUDA 10.0 + cuDNN 7.3.1 TensorRT 5.0.3 OpenCV 3.3.1 Pytorch c++ 1.1.0 + Torchvision 0.3.0 ROS Kinetic(Ubuntu 16.04)及其依赖包 编译/安装/运行方式 配置及安装Pytorch C++ 为了提升决策模块在实体步兵机器人上的实时性能,学习型策略得到的模型需要在pytorch c++环境中部署,因此需要在车载计算单元上手动编译安装pytorch。 编译决策模块 运行编译完成模块指令 多车仿真运行效果 文件目录说明 roborts_decision ├── behavior_tree #决策行为树 │ ├── behavior_node.h #行为树节点类定义 │ ├── behavior_state.h #行为树状态定义 │ └── behavior_tree.h #行为树运行类定义 ├── blackboard │ ├── blackboard.h #黑板定义(决策框架的输入) │ └── communication.h #通信定义(用于友军间通讯) ├── blue_master.cpp ├── blue_wing.cpp ├── cmake-build-debug ├── CMakeLists.txt ├── cmake_module ├── config #四辆车单独配置文件 │ ├── blue_master.prototxt │ ├── blue_wing.prototxt │ ├── decision.prototxt │ ├── red_master.prototxt │ └── red_wing.prototxt ├── decision_node.cpp ├── example_behavior #行为模板 │ ├── ambush_behavior.h #埋伏,站桩输出 │ ├── attack_behavior.h #支援,前往攻击 │ ├── back_boot_area_behavior.h #返回基地 │ ├── chase_behavior.h #追击 │ ├── escape_behavior.h #撤退 │ ├── goal_behavior.h #指定目标导航 │ ├── nn_behavior.h #神经网络决策 │ ├── line_iterator.h #直线路径判断迭代器 │ ├── patrol_behavior.h #内环巡逻 │ ├── reload_behavior.h #外环巡逻 │ ├── search_behavior.h #在敌方消失区域进行搜索 │ ├── shield_behavior.h #前往装甲buff区 │ └── test_behavior.h #测试,用于新功能开发 ├── executor │ ├── chassis_executor.cpp │ ├── chassis_executor.h #底盘任务调度类定义 │ ├── gimbal_executor.cpp │ └── gimbal_executor.h #任务调度类定义 ├── package.xml ├── proto │ ├── decision.pb.cc │ ├── decision.pb.h │ └── decision.proto #策略层参数配置 ├── red_master.cpp ├── red_wing.cpp └── sel_behavior_node.cpp 系统框图 硬件部分   步兵机器人的硬件系统除了自带的底盘和云盘系统以外,为了实现机器人的定位,检测和自主移动等功能,需要在机器人主题上加装各种外围传感器。在传感器选型时需要注意传感器的尺寸,重量,合适的安装位置,开发难度等。在当前版本的机器人系统中,我们配备了工业相机,激光雷达,后置USB相机,为步兵机器人提供合理有效的视野范围。传感器选型及硬件部署如下 传感器型号 传感器部署图 软件部分   整车的软件架构如下图所示,决策模块接受底层驱动/感知/规划/控制层信息,通过规则型(决策树)和学习型(多智能体深度强化学习)两种策略方式决定步兵机器人下一步动作。除决策系统部署外,决策组还承担仿真训练环境的搭建任务。 软件系统框图 仿真平台部分   对于学习型决策算法,通常需要大量的数据资源作为训练基础,同时需要反复迭代优化神经网络性能,因此需要构建仿真模拟器实现复杂的对抗场景,并基于复现场景优化决策模块。同时,在实车测试之前,决策系统的输出结果需要在仿真系统中进行测试并验证。我们构造了三种仿真环境以满足不同的实验需求,分别是用于模型验证的Gazebo环境,策略训练的星际环境以及端到端控制训练的PyGame环境。仿真平台及关系如下图所示。 原理介绍与理论支持分析 多智能体深度强化学习   学习型策略采用多智能体深度强化学习方法。采取与系统内置AI作战的对抗训练方式,经过混合迭代中心反事实评估网络和中心评估混合Q网络方法,对全局态势进行估计,根据胜负奖赏与血量差等奖赏信号,优化多智能体网络,优化策略决策,使策略系统自适应RoboMaster对抗环境。 行为决策树   行为树作为典型的规则型决策算法,已在游戏领域得到广泛应用。这里我们通过定义选择节点、序列节点、并行节点和行为节点来实现追踪、射击、补弹、占领buff等作战决策行为。决策逻辑如下: 软件架构与层级图 决策任务   总体而言,规则型决策具有系统可解释性且表现性能较为稳定,但无法作自学习持续优化完善;学习型决策具有自主进化的能力,可自适应系统环境,但一般需要较长的训练优化时间和较多的计算资源,缺乏可解释性且稳定性较弱。为了将规则型和学习型算法有机结合,我们通过学习型算法使机器人在RoboMaster对抗环境下作探索,并与系统内置脚本AI作对抗,找到有效攻击策略。然后通过规则组合的方式,使机器人作出近似决策行为,完善决策系统功能。这样既增强系统的可解释性和稳定性,并强化了多机器人协作表现性能。 开源协议 本项目签署了MIT 授权许可,详情请参阅 LICENSE.txt 转载自:https://github.com/DRL-CASIA/RMAI2020-Decision

  • 1
  • 22
  • 23
  • 24
  • 46
前往