热门标签 | 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]

在这里插入图片描述


推荐阅读
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • 本文介绍了使用Python编写购物程序的实现步骤和代码示例。程序启动后,用户需要输入工资,并打印商品列表。用户可以根据商品编号选择购买商品,程序会检测余额是否充足,如果充足则直接扣款,否则提醒用户。用户可以随时退出程序,在退出时打印已购买商品的数量和余额。附带了完整的代码示例。 ... [详细]
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文介绍了一个编程问题,要求求解一个给定n阶方阵的鞍点个数。通过输入格式的描述,可以了解到输入的是一个n阶方阵,每个元素都是整数。通过输出格式的描述,可以了解到输出的是鞍点的个数。通过题目集全集传送门,可以了解到提供了两个函数is_line_max和is_rank_min,用于判断一个元素是否为鞍点。本文还提供了三个样例,分别展示了不同情况下的输入和输出。 ... [详细]
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社区 版权所有