当然黑了,这是煤!
#解压数据集
!unzip -oq data/data129645/RockData.zip -d data/
#查看数据集目录树
!tree data/RockData/
# 引入依赖库
import cv2
import os
import numpy as np
import matplotlib.pyplot as plt
#图片抽样
#读取数据集中一个文件夹的路径
file_dir = '/home/aistudio/data/RockData/Coal/'
#设立列表存储图片名
filesum = []
#读取图片名
for root, dirs, files in os.walk(file_dir):
filesum.append(files)
filesum = filesum[0]
#打印图片名看看效果符不符合预期
#print(filesum)
#定义画布大小
plt.figure(figsize=(8, 8))
#循环读取图片并显示
for i in range(1,5):
plt.subplot(2,2,i)
plt.title(filesum[i])
image = file_dir+filesum[i]
#print(f">>>{image}")
plt.imshow(cv2.imread(image,1))
plt.tight_layout()
plt.show()
#使用pip安装方式安装2.1.0版本:
pip install paddlex==2.1.0 -i https://mirror.baidu.com/pypi/simple
#在模型进行训练时,我们需要划分训练集,验证集和测试集
#因此需要对如上数据进行划分,直接使用paddlex命令即可将数据集随机划分成70%训练集,20%验证集和10%测试集
#划分好的数据集会额外生成labels.txt, train_list.txt, val_list.txt, test_list.txt四个文件,之后可直接进行训练。
paddlex --split_dataset --format ImageNet --dataset_dir /home/aistudio/data/RockData --val_value 0.2 --test_value 0.1
上面两张图是MobileNetV2和MobileNetV3的网络块结构。
MobileNetV3综合了以下三种模型的思想:
MobileNetV1的深度可分离卷积(depthwise separable convolutions)
MobileNetV2的具有线性瓶颈的逆残差结构(the inverted residual with linear bottleneck)
MnasNet的基于squeeze and excitation结构的轻量级注意力模型
详细的论文请参考:《Searching for MobileNetV3》
这里就不多赘述
#在训练和验证过程中,数据的处理
from paddlex import transforms as T
train_transforms = T.Compose([
#图片自由裁剪
T.RandomCrop(crop_size=224),
T.Normalize()])
eval_transforms = T.Compose([
#图片大小自定义
T.ResizeByShort(short_size=256),
T.CenterCrop(crop_size=224),
T.Normalize()
])
import paddlex as pdx
#定义数据集,pdx.datasets.ImageNet表示读取ImageNet格式的分类数据集:
train_dataset = pdx.datasets.ImageNet(
data_dir='/home/aistudio/data/RockData',
file_list='/home/aistudio/data/RockData/train_list.txt',
label_list='/home/aistudio/data/RockData/labels.txt',
transforms=train_transforms,
shuffle=True)
eval_dataset = pdx.datasets.ImageNet(
data_dir='/home/aistudio/data/RockData',
file_list='/home/aistudio/data/RockData/val_list.txt',
label_list='/home/aistudio/data/RockData/labels.txt',
transforms=eval_transforms)
2022-02-27 19:49:23 [INFO] Starting to read file list from dataset...
2022-02-27 19:49:23 [INFO] 1442 samples in file /home/aistudio/data/RockData/train_list.txt
2022-02-27 19:49:23 [INFO] Starting to read file list from dataset...
2022-02-27 19:49:23 [INFO] 408 samples in file /home/aistudio/data/RockData/val_list.txt
| 字段 | 示例 | 含义 |
|---|---|---|
| Epoch | Epoch=4/20 | [迭代轮数]所有训练数据会被训练20轮,当前处于第4轮 |
| Step | Step=62/66 | [迭代步数]所有训练数据被训练一轮所需要的迭代步数为66,当前处于第62步 |
| loss | loss=0.007226 | [损失函数值]参与当前迭代步数的训练样本的平均损失函数值loss,loss值越低,表明模型在训练集上拟合的效果越好(如上日志中第1行表示第4个epoch的第62个Batch的loss值为0.007226) |
| lr | lr=0.008215 | [学习率]当前模型迭代过程中的学习率 |
| time_each_step | time_each_step=0.41s | [每步迭代时间]训练过程计算得到的每步迭代平均用时 |
| eta | eta=0:9:44 | [剩余时间]模型训练完成所需剩余时间预估为0小时9分钟44秒 |
[TRAIN] Epoch=1/10, Step=20/22, loss=1.064334, acc1=0.671875, acc5=0.968750, lr=0.025000, time_each_step=0.15s, eta=0:0:31
代表:
Epoch=1/10[迭代轮数]所有训练数据会被训练10轮,当前处于第1轮;
Step=20/22[迭代步数]所有训练数据被训练一轮所需要的迭代步数为22,当前处于第20步;
loss=1.064334[损失函数值]loss值为1.064334;
acc1=0.671875 acc1表示整个验证集的平均top1准确率为0.671875;
acc5=0.968750 acc5表示整个验证集的平均top5准确率为0.968750;
lr=0.025000[学习率]当前模型迭代过程中的学习率;
time_each_step=0.15s[每步迭代时间]训练过程计算得到的每步迭代平均用时;
eta=0:0:31[剩余时间]模型训练完成所需剩余时间预估为0小时9分钟44秒;
#使用百度基于蒸馏方法得到的MobileNetV3预训练模型,模型结构与MobileNetV3一致,但精度更高。
num_classes = len(train_dataset.labels)
model = pdx.cls.MobileNetV3_small(num_classes=num_classes)
model.train(num_epochs=10,
train_dataset=train_dataset,
train_batch_size=64,
eval_dataset=eval_dataset,
lr_decay_epochs=[4, 6, 8],
save_dir='output/mobilenetv3_small',
#训练的输出保存在output/mobilenetv3_small
use_vdl=True)
#use_vdl=True表示可以启动visualdl并查看可视化的指标变化情况。
2022-02-27 20:04:02 [INFO] Loading pretrained model from output/mobilenetv3_small/pretrain/MobileNetV3_small_x1_0_pretrained.pdparams
2022-02-27 20:04:03 [WARNING] [SKIP] Shape of pretrained params fc.weight doesn't match.(Pretrained: (1280, 1000), Actual: [1280, 7])
2022-02-27 20:04:03 [WARNING] [SKIP] Shape of pretrained params fc.bias doesn't match.(Pretrained: (1000,), Actual: [7])
......
poch=7, acc1=0.740327, acc5=0.979911 .
2022-02-27 20:04:42 [INFO] Current evaluated best model on eval_dataset is epoch_6, acc1=0.7425594925880432
2022-02-27 20:04:42 [INFO] Model saved in output/mobilenetv3_small/epoch_7.
2022-02-27 20:04:44 [INFO] [TRAIN] Epoch=8/10, Step=6/22, loss=0.568543, acc1=0.781250, acc5=0.984375, lr=0.000250, time_each_step=0.19s, eta=0:0:14
2022-02-27 20:04:45 [INFO] [TRAIN] Epoch=8/10, Step=16/22, loss=0.609234, acc1=0.796875, acc5=1.000000, lr=0.000250, time_each_step=0.15s, eta=0:0:10
2022-02-27 20:04:46 [INFO] [TRAIN] Epoch 8 finished, loss=0.5681447, acc1=0.79545456, acc5=0.99502844 .
2022-02-27 20:04:46 [INFO] Start to evaluate(total_samples=408, total_steps=7)...
2022-02-27 20:04:48 [INFO] [EVAL] Finished, Epoch=8, acc1=0.732143, acc5=0.982143 .
2022-02-27 20:04:48 [INFO] Current evaluated best model on eval_dataset is epoch_6, acc1=0.7425594925880432
2022-02-27 20:04:48 [INFO] Model saved in output/mobilenetv3_small/epoch_8.
2022-02-27 20:04:49 [INFO] [TRAIN] Epoch=9/10, Step=4/22, loss=0.511275, acc1=0.812500, acc5=1.000000, lr=0.000025, time_each_step=0.19s, eta=0:0:9
2022-02-27 20:04:50 [INFO] [TRAIN] Epoch=9/10, Step=14/22, loss=0.546328, acc1=0.796875, acc5=1.000000, lr=0.000025, time_each_step=0.15s, eta=0:0:6
2022-02-27 20:04:52 [INFO] [TRAIN] Epoch 9 finished, loss=0.5753054, acc1=0.8004261, acc5=0.9957386 .
2022-02-27 20:04:52 [INFO] Start to evaluate(total_samples=408, total_steps=7)...
2022-02-27 20:04:53 [INFO] [EVAL] Finished, Epoch=9, acc1=0.741071, acc5=0.982143 .
2022-02-27 20:04:53 [INFO] Current evaluated best model on eval_dataset is epoch_6, acc1=0.7425594925880432
2022-02-27 20:04:53 [INFO] Model saved in output/mobilenetv3_small/epoch_9.
2022-02-27 20:04:54 [INFO] [TRAIN] Epoch=10/10, Step=2/22, loss=0.833730, acc1=0.718750, acc5=1.000000, lr=0.000025, time_each_step=0.19s, eta=0:0:3
2022-02-27 20:04:56 [INFO] [TRAIN] Epoch=10/10, Step=12/22, loss=0.838117, acc1=0.750000, acc5=1.000000, lr=0.000025, time_each_step=0.15s, eta=0:0:1
2022-02-27 20:04:57 [INFO] [TRAIN] Epoch=10/10, Step=22/22, loss=0.532285, acc1=0.781250, acc5=1.000000, lr=0.000025, time_each_step=0.15s, eta=0:0:0
2022-02-27 20:04:57 [INFO] [TRAIN] Epoch 10 finished, loss=0.5774534, acc1=0.79616475, acc5=0.9957386 .
2022-02-27 20:04:58 [INFO] Start to evaluate(total_samples=408, total_steps=7)...
2022-02-27 20:04:59 [INFO] [EVAL] Finished, Epoch=10, acc1=0.745536, acc5=0.982143 .
2022-02-27 20:04:59 [INFO] Model saved in output/mobilenetv3_small/best_model.
2022-02-27 20:04:59 [INFO] Current evaluated best model on eval_dataset is epoch_10, acc1=0.7455357313156128
2022-02-27 20:04:59 [INFO] Model saved in output/mobilenetv3_small/epoch_10.
#模型在训练过程中,会每间隔一定轮数保存一次模型
#在验证集上评估效果最好的一轮会保存在save_dir目录下的best_model文件夹
#加载模型,进行预测:
import paddlex as pdx
model = pdx.load_model('output/mobilenetv3_small/best_model')
result = model.predict('/home/aistudio/data/RockData/Coal/Coal271.jpg')
#设置预测结果为标题
plt.title(result[0]['category'])
#显示预测的图像
plt.imshow(cv2.imread('/home/aistudio/data/RockData/Coal/Coal271.jpg',1))
#打印预测的结果
print("Predict Result: ", result)
点击AIstudio左侧工具栏倒数第五个:【数据模型可视化】
设置logdir为【!cat output/mobilenetv3_small/vdl_log/】
点击【启动VisualDL服务】
导读语言模型给我们的生产生活带来了极大便利,但同时不少人也利用他们从事作弊工作。如何规避这些难辨真伪的文字所产生的负面影响也成为一大难题。在3月9日智源Live第33期活动「DetectGPT:判断文本是否为机器生成的工具」中,主讲人Eric为我们讲解了DetectGPT工作背后的思路——一种基于概率曲率检测的用于检测模型生成文本的工具,它可以帮助我们更好地分辨文章的来源和可信度,对保护信息真实、防止欺诈等方面具有重要意义。本次报告主要围绕其功能,实现和效果等展开。(文末点击“阅读原文”,查看活动回放。)Ericmitchell斯坦福大学计算机系四年级博士生,由ChelseaFinn和Chri
导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵
之前说过10之后的版本没有3dScan了,所以还是9.8的版本或者之前更早的版本。 3d物体扫描需要先下载扫描的APK进行扫面。首先要在手机上装一个扫描程序,扫描现实中的三维物体,然后上传高通官网,在下载成UnityPackage类型让Unity能够使用这个扫描程序可以从高通官网上进行下载,是一个安卓程序。点到Tools往下滑,找到VuforiaObjectScanner下载后解压数据线连接手机,将apk文件拷入手机安装然后刚才解压文件中的Media文件夹打开,两个PDF图打印第一张A4-ObjectScanningTarget.pdf,主要是用来辅助扫描的。好了,接下来就是扫描三维物体。将瓶
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
Heroku支持人员告诉我,为了在我的Web应用程序中使用自定义字体(未安装在系统中,您可以在bash控制台中使用fc-list查看已安装的字体)我必须部署一个包含所有字体的.fonts文件夹里面的字体。问题是我不知道该怎么做。我的意思是,我不知道文件名是否必须遵循heroku的任何特殊模式,或者我必须在我的代码中做一些事情来考虑这种字体,或者如果我将它包含在文件夹中它是自动的......事实是,我尝试以不同的方式更改字体的文件名,但根本没有使用该字体。为了提供更多详细信息,我们使用字体的过程是将PDF转换为图像,更具体地说,使用rghostgem。并且最终图像根本不使用自定义字体。在
需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc
在我让另一个人重做我的前端UI之前,我的Rails应用程序运行平稳。我已经尝试解决此错误3天了。这是错误:Nosuchfileordirectory-identifyExtractedsource(aroundline#59):575859606162@post=Post.find(params[:id])authorize@postif@post.update_attributes(post_params)flash[:notice]="Postwasupdated."redirect_to[@topic,@post]else{"utf8"=>"✓","_method"=>"patc
我正在寻找用于Rails的优质管理插件。似乎大多数现有的插件/gem(例如“restful_authentication”、“acts_as_authenticated”)都围绕着self注册等展开。但是,我正在寻找一种功能齐全的基于管理/管理角色的解决方案——但不是简单地附加到另一个非基于角色的解决方案。如果我找不到,我想我会自己动手......只是不想重新发明轮子。 最佳答案 RyanBates最近做了两个关于授权的railscast(注意身份验证和授权之间的区别;身份验证检查用户是否如她所说的那样,授权检查用户是否有权访问资源
我正在根据Rakefile中的现有测试文件动态生成测试任务。假设您有各种以模式命名的单元测试文件test_.rb.所以我正在做的是创建一个以“测试”命名空间内的文件名命名的任务。使用下面的代码,我可以用raketest:调用所有测试require'rake/testtask'task:default=>'test:all'namespace:testdodesc"Runalltests"Rake::TestTask.new(:all)do|t|t.test_files=FileList['test_*.rb']endFileList['test_*.rb'].eachdo|task|n
如果我们有一个数组array=[1,1,0,0,2,3,0,0,0,3,3,3]我们如何识别给定数字的运行(具有相同值的连续数字的数量)?例如:run_pattern_for(array,0)->2run_pattern_for(array,3)->1run_pattern_for(array,1)->1run_pattern_for(array,2)->0没有2的运行,因为没有连续出现2。3有一个运行,因为只有一个幻影以树为连续数字。 最佳答案 尝试:classArraydefcount_runs(element)chunk{|n