excel表格格式怎样转换图片-英雄云拓展知识分享
640
2024-02-01
【摘要】 前言 在很多深度学习的比赛项目中,各种方法trick层出不穷,其中有一种颇受争议的方法就是在测试时使用增强的手段,将输入的源图片生成多份分别送入模型,然后对所有的推理结果做一个综合整合。这种方法被称为测试时增强(test time augmentation, TTA),今天我们就来说说这个测试时增强。TTA流程 TTA的基本流程是通过对原图做增强操作,获得很多份增强后...
在很多深度学习的比赛项目中,各种方法trick层见叠出,其中有一种颇受争议的方法就是在测试时使用增强的手段,将输入的源time augmentation, TTA),今天我们就来讲说这个测试时增强。
TTA的基本流程是经过对原style="text-align: center;">
这么看上去需要确认很多问题:
原
生成的样本在获得推理结果以后应当使用甚么样的方法进行合成。
我们举个简单的例子来讲明TTA的作用和如何利用ModelArts平台提供的功能来使用TTA。
数据集:在前一篇博客中,我有说明一种用于解决数据过少和不均衡现象的方法,一样我们也使用这个太阳能电板的数据集。数据集样例style="text-align: center;">
其中左边为正常样本 使用框架及算法:pytorch官方提供的训练imagenet开源代码,参考https://github.com/pytorch/examples/tree/master/imagenet
训练策略:50个epoch,初始学习率lr0.001,batchsize16用Adam的优化器训练。
精度信息 | 正常类 | 有瑕疵非正常类 |
召回率recall | 97.2% | 71.3% |
精度值accuracy | 89.13% |
首先,我们要选定使用的增强方法来获得多样本。这里有两类方法:
(1).从训练中使用的增强手段入手,用训练中使用的增强手段获得多样本。
如pytorch训练imagenet的代码中,使用了算子transforms.RandomHorizontalFlip()做垂直方向的翻转操作。那末对模型而言,应当也见过很多经过垂直翻转的 对原模型进行评估,评估代码以下,这里是修改了开源代码中validate部份做前向部份推理的代码:
with torch.no_grad():end = time.time()
for i, (images, target) in enumerate(val_loader):
if args.gpu is not None:
images = images.cuda(args.gpu, non_blocking=True)
target = target.cuda(args.gpu, non_blocking=True)
# compute output
output_origin = model(images)
output = output_origin
loss = criterion(output, target)
pred_list += output.cpu().numpy()[:, :2].tolist()
target_list += target.cpu().numpy().tolist()
# measure accuracy and record loss
acc1, acc5 = accuracy(output, target, topk=(1, 5), i=i)
losses.update(loss.item(), images.size(0))
top1.update(acc1[0], images.size(0))
top5.update(acc5[0], images.size(0))
# measure elapsed time
batch_time.update(time.time() - end)
end = time.time()
if i % args.print_freq == 0:
progress.display(i)
# TODO: this should also be done with the ProgressMeter
print(' * Acc@1 {top1.avg:.3f} Acc@5 {top5.avg:.3f}'
.format(top1=top1, top5=top5))
name_list = val_loader.dataset.samples
for idx in range(len(name_list)):
name_list[idx] = name_list[idx][0]
analyse(task_type='image_classification', save_path='./', pred_list=pred_list, label_list=target_list, name_list=name_list)
评估就是需要取得3个list,推理的直接的结果logits组合成的pred_list,存储的是每张21.92235565185547]...[xxx, xxx]]。一个真实的label值组成的target_list,存储的是每张1, 0, 1, 1..., 1, 0]。还有原... xxx.jpg],这里是从pytorch度数据模块的类中经过val_loader.dataset.samples获得到后重新组合的。然后调用deep_moxing库中的analyse接口,在save_path下会生成一个model_analysis_results.json的文件,将这个文件上传到页面上任意一个训练任务的输出目录下,就可以在页面的评估界面上看到对模型评估的结果:
这结果中我们需要分析模型的敏感度:
接下来我们可以看看在pytorch中,如何加入TTA。
pytorch的好处在于,可以直接获得到输入模型前的tensor并进行想要的操作。如在eval中
with torch.no_grad():end = time.time()
for i, (images, target) in enumerate(val_loader):
if args.gpu is not None:
images = images.cuda(args.gpu, non_blocking=True)
这里拿到的images就是已做好前处理的一个batch的class="brush:python;toolbar:false">def flip(x, dim):
indices = [slice(None)] * x.dim()
indices[dim] = torch.arange(x.size(dim) - 1, ⑴, ⑴,
dtype=torch.long, device=x.device)
return x[tuple(indices)]
dim为模式,这里使用2为竖直方向的翻转,3为水平方向,1为做通道翻转。使用img_flip = flip(images, 2)就可以得到竖直方向翻转的class="brush:python;toolbar:false">img = images.numpy()
img[0] = cv2.blur(img[0], (3, 3))
images_blur = torch.from_numpy(img.copy())
3. 结果合成
我们现在就得到了3个输出,原style="text-align: center;">
先看flip_output,一个想法是,原训练中见过的做过翻转的style="text-align: center;">logits = 0.5*origin_result + 0.5*flip_result
此时,模型的精度结果为:
操作 | acc | norm类recall | abnorm类recall |
原版 | 89.13% | 97.2% | 71.3% |
flip结果合成 | 87.74% | 93.7% | 72.7% |
可以看到,虽然损耗了norm类的精度,但是相对而言更重要的指标abnorm类的recall有提升。
然后分析blur_output,可以看到,位于最低的0⑵0%时,瑕疵类的精度是最高的,但是norm类的精度掉的太多,而且模糊本身就是提升abnorm类精度的,所以我们做一个折衷,一样取blurstyle="text-align: center;">logit = 0.5*origin_result + 0.5*blur_output
此时,模型的精度结果为:
操作 | acc | norm类recall | abnorm类recall |
原版 | 89.13% | 97.2% | 71.3% |
blur结果合成 | 88.117% | 94.8% | 73.3% |
可以看到,norm类的精度降落较多,abnorm类增长明显,与模型评估的分析结果一致。
综上,我们调剂的结果虽然对norm类的损耗较多致使整体精度降落,但是这是符合模型分析的结果的,我们需要的指标就是abnorm类recall的提升,而且可以看到,模型评估的结果要稍好过使用原版增强的合成结果。
我们这里实验了两类使用test time augmatation的方法,一种是针对训练进程自带的增强方法来选择测试前增强,另外一种是经过对模型进行敏感度分析,分析
🌟 选择英雄云hpapaas 开启自动化、智能化企业转型未来 🌐 >>>>作为一款提供hpaPaaS平台服务的英雄云,有什么优势呢?面对数字化转型的挑战与机遇,选择一个适合自己企业的高度信息化、智能化和自动化的管理系统尤为重要。英雄云是一个值得考虑的选择。英雄云提供了一系列独特的优势,使其成为企业智能管理的首选。下面是英雄云的八大优势:
: 英雄云的平台无需编程知识,即可操作自定义的管理系统:ERP系统、CRM系统、进销存系统、人事行政OA系统、WMS系统等。这意味着用户无需拥有编程技能,也能轻松操控自己的系统。
: 英雄云允许用户根据自己的业务需求、企业规模、成员人数、所需系统等等,进行高度定制服务;三大业务引擎:云表单(进阶版Excel)、工作流程(智能自动触发流程)以及仪表盘(可视化报表),帮助企业进行更简易的业务操作。
:无论是数据录入、审批流程还是报表生成,都可以轻松自动化,使员工能够专注于更有价值的任务。这种减免重复工作的方式不仅提高了工作效率,还降低了错误发生的可能性,为企业节省了时间和资源。
: 英雄云与其他常用企业应用和工具具有良好的生态系统集成能力,可以轻松集成与第三方系统,如财务软件、邮件服务等,实现全面的业务支持。
: 英雄云提供先进的数据分析工具如数据加工工厂,帮助用户更好地理解业务趋势和数据。这使得企业能够做出更明智的战略决策,优化业务流程。
: 英雄云不断进行系统的更新和改进,以适应不断变化的业务环境和技术趋势。这意味着您始终能够使用最新的功能和性能提升。
: 英雄云提供了多样化的部署选项,用户可以根据自身需求选择合适的部署方式,无需自主运维。无论是选择云端部署、私有云部署还是本地部署,英雄云都能提供灵活的解决方案。这意味着用户无需担心硬件维护、系统更新等问题,能够更专注于业务运营,降低了IT运营成本和风险。
: 英雄云提供免费版本,用户可以在免费版本中获得一定数量的表单数据量和企业数据总量,为小型企业提供了经济实惠的选择。
选择英雄云作为您的数字化管理系统,将带来高度的灵活性、可定制性和效率提升。不管您的企业规模如何,英雄云都能满足您的需求,助力您的仓库管理更上一层楼。不妨注册一个英雄云账户,亲自体验这些优势,并让您的企业管理更加智能化和高效化。
免责声明:
本网址(www.yingxiongyun.com)发布的材料主要源于独立创作和网友匿名投稿。此处提供的所有信息仅供参考之用。我们致力于提供准确且可信的信息,但不对材料的完整性或真实性作出任何保证。用户应自行验证相关信息的正确性,并对其决策承担全部责任。对于由于信息的错误、不准确或遗漏所造成的任何损失,本网址不承担任何法律责任。本网站所展示的所有内容,如文字、
发表评论
暂时没有评论,来抢沙发吧~