热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据集和神经网络共同进步之代码之路

如下代码的不断调整可使得神经网络和数据集共同进步5分类成功分成了7分类,也就是说模型的能力将不属于该类的分出去l但是人们还是利用模型将这些图片强行的5分类,那么一定地不准确的也

如下代码的不断调整可使得神经网络和数据集共同进步

在这里插入图片描述5分类成功分成了7分类,也就是说模型的能力将不属于该类的分出去l
但是人们还是利用模型将这些图片强行的5分类,那么一定地不准确的

也就是说本来这个图片既不是0分类和1分类,但是人们训练好模型后
识别出来只有5个结果,自然就只有5个结果,虽然这个图片哪个都不是但是还是会被认为是5个类别的一个,也就是说模型没有错而是,你强行的将其范围分类方位给缩小了也就是说你提供的数据标注,只是你所想到的那几类,但是模型完全可以将你的这种标注的所有分类都找出来
但是如果你没有可视化的话,你却不知道还有几类你根本没有想到
但是模型想到l,
所以说,模型是真的能分开,而是人类的意愿导致了模型的错误,
所以接下来将纠正这样的错误,采取模型和数据集合共同进步的方式
来解决大量的标注时间和模型达不到人类想要的结果

上面总结一句话,数据集中有一些是我们不需要的类的数据
下面将其剔除

如下图是训练数据网络能让图片分类的真实分布可以看到这个数据集应该标注为7类
而不是5类
所以,将7类的分割线上的任意两个点的坐标带入我的数据集矫正类别方法中,将数据级分为7类,去除我们不想要的类别,继续使用新标注的数据级或者说使用去除杂类的数据集合
在这里插入图片描述放入自己的图片到项目中,更改readmist中的数据处理代码
生成图片标签和路径的txt文件
首先执行代码的train
训练后执行readminst中的数据人工分类cls_data()
会得到如图类似的分类在这里插入图片描述
在使用鼠标在空白处选取两个点作为分割线(顺时针或者反之,分割线与分割线要挨着),
这样的格式

[3.35,-6.27,10.72,-22.7,8.56,-2.69,21.89,-3.40,9.37,2.08,22.34,4.95,7.75,6.38,17.57,15.95,6.12,9.25,12.28,19.05,-1.25,7.34,-8.1,21.92,-3.15,-5.79,-9.0,-17.15]

记录完后关闭图像,
将上面的数据输入到控制台
回车后就会生成,一个json文件,文件中已经将图片的地址按照上面的分割线分别存在列表中,最后只需要自己将路径读取出来再写一个
图片分别存放在相应的文件中即可完成,人工分类

代码在
https://download.csdn.net/download/weixin_32759777/12328521

可以使用如下代码进行人工分割

def get_path_and_dir(path):with open(path,"r") as f:data=json.load(f)for i ,one_path_list in enumerate(data["new_path_data"]):makedirs("image"+str(i))for one_path in one_path_list:with open(one_path,"rb") as f:data=f.read()with open("image"+str(i)+"/"+one_path.split("/")[-1],"wb") as f:f.write(data)if __name__ == '__main__':# cls_data()get_path_and_dir("/home/chenyang/PycharmProjects/arc_face/new_data_path.json")

在这里插入图片描述分类后发现图片不是按照分割线分开的而是按照上图这样分开的
检查后发现图片每个文件中都前面的都一样,也就是说我们的cls_data()
写的有问题
在这里插入图片描述
问题出现的原因就是所有的图片都会小于AB两条线

所以所有的造成了混淆看上去就像同心圆
实际的同心圆应该如下图
所示
在这里插入图片描述
所以重写
cls_data()

在这里插入图片描述基本就是分为四种情况,按照上图的方向

c_x_0起点分割线上的外点x减内点x
c_x_1终点分割线上的外点x减内点x
x_0_1 两个分割线焦点x
带入x值到起点分割线y的值real_0
带入x值到终点分割线y的值real_1
y实际值

c_x_0 >x_0_1
c_x_1 >x_0_1
y y>real_0

c_x_1 real_1y>real_0

c_x_0 c_x_1 >x_0_1
y y

c_x_1 y>real_1
y

代码如下


def cls_data():data&#61;dis_data()draw_json(data[0],data[1])print("请在图中输入分割线的坐标(线上两个点坐标共计四个值),保留两位小数")print("输入的线要按照分割的顺序输入")line_data&#61;json.loads(input("请按照说明输入数据这样的格式[1,2,3,4,5,65]"))line_data&#61;numpy.array(line_data).reshape(-1,4).tolist()k_b_list&#61;[]cls_index_path&#61;[]for xy in line_data:k_b &#61; y_kx_b(xy)cls_index_path.append([])k_b_list.append(k_b)k_b_list.append(k_b_list[0])cls_index_path.append([])index_x&#61;-1set_path&#61;[]for x,y in zip(data[0],data[1]):try:index_x&#43;&#61;1k_b_index&#61;0for _ in range(len(k_b_list)):k_b_index&#43;&#61;1real_0&#61;k_b_list[k_b_index-1][0]*x&#43;k_b_list[k_b_index-1][1]real_1&#61;k_b_list[k_b_index][0]*x&#43;k_b_list[k_b_index][1]c_x_0&#61;k_b_list[k_b_index-1][2]c_x_1&#61;k_b_list[k_b_index][2]x_0_1&#61;(k_b_list[k_b_index][1]-k_b_list[k_b_index-1][1])/(k_b_list[k_b_index-1][0]-k_b_list[k_b_index][0])# c_x_0大于x_0_1的y>real_0否则y# 当c_x_0 >x_0_1 ,c_x_1 >x_0_1的yreal_1# 当c_x_0 x_0_1的yreal_1if c_x_0 >x_0_1:if c_x_1 >x_0_1:if y>real_0 and y<real_1:if data[2][data[0].tolist().index(x)] in set_path:continueelse:set_path.append(data[2][data[0].tolist().index(x)])cls_index_path[k_b_index].append(data[2][data[0].tolist().index(x)])else:if y>real_0 and y>real_1:if data[2][data[0].tolist().index(x)] in set_path:continueelse:set_path.append(data[2][data[0].tolist().index(x)])cls_index_path[k_b_index].append(data[2][data[0].tolist().index(x)])else:if c_x_1 > x_0_1:if y<real_0 and y<real_1:if data[2][data[0].tolist().index(x)] in set_path:continueelse:set_path.append(data[2][data[0].tolist().index(x)])cls_index_path[k_b_index].append(data[2][data[0].tolist().index(x)])else:if y<real_0 and y>real_1:if data[2][data[0].tolist().index(x)] in set_path:continueelse:set_path.append(data[2][data[0].tolist().index(x)])cls_index_path[k_b_index].append(data[2][data[0].tolist().index(x)])print(index_x)except:passwith open("new_data_path.json", "w", encoding&#61;"utf-8") as f:json.dump({"new_path_data":cls_index_path}, f, ensure_ascii&#61;False)# q&#61;[-4.70, -6.42, -15.51, -27.40,1.92, -2.72,7,14,2.21, 3.45,8.1, 15.37,-1.87, 3.86,-7.82, 17.64,-6.75, 7.35,-11.03,12.90,-9.57, 4.88,-19.60, 7.14,-8.40, -1.07,-21.84, -1.28]#将坐标q&#61;[3.35,-6.27,10.72,-22.7,8.56,-2.69,21.89,-3.40,9.37,2.08,22.34,4.95,7.75,6.38,17.57,15.95,6.12,9.25,12.28,19.05,-1.25,7.34,-8.1,21.92,-3.15,-5.79,-9.0,-17.15,-3.42,-9.62,-9.18,-28]

在这里插入图片描述


推荐阅读
  • 技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告
    技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 【图像分类实战】利用DenseNet在PyTorch中实现秃头识别
    本文详细介绍了如何使用DenseNet模型在PyTorch框架下实现秃头识别。首先,文章概述了项目所需的库和全局参数设置。接着,对图像进行预处理并读取数据集。随后,构建并配置DenseNet模型,设置训练和验证流程。最后,通过测试阶段验证模型性能,并提供了完整的代码实现。本文不仅涵盖了技术细节,还提供了实用的操作指南,适合初学者和有经验的研究人员参考。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 针对图像分类任务的训练方案进行了优化设计。通过引入PyTorch等深度学习框架,利用其丰富的工具包和模块,如 `torch.nn` 和 `torch.nn.functional`,提升了模型的训练效率和分类准确性。优化方案包括数据预处理、模型架构选择和损失函数的设计等方面,旨在提高图像分类任务的整体性能。 ... [详细]
  • 基于Dubbo与Zipkin的微服务调用链路监控解决方案
    本文提出了一种基于Dubbo与Zipkin的微服务调用链路监控解决方案。通过抽象配置层,支持HTTP和Kafka两种数据上报方式,实现了灵活且高效的调用链路追踪。该方案不仅提升了系统的可维护性和扩展性,还为故障排查提供了强大的支持。 ... [详细]
  • 本文探讨了如何利用 jQuery 的 JSONP 技术实现跨域调用外部 Web 服务。通过详细解析 JSONP 的工作原理及其在 jQuery 中的应用,本文提供了实用的代码示例和最佳实践,帮助开发者解决跨域请求中的常见问题。 ... [详细]
  • Python 编程技巧:实现字符串中字符大小写的转换 ... [详细]
author-avatar
捕鱼达人qq怎么刷金币
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有