热门标签 | 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函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • Java程序设计第4周学习总结及注释应用的开发笔记
    本文由编程笔记#小编为大家整理,主要介绍了201521123087《Java程序设计》第4周学习总结相关的知识,包括注释的应用和使用类的注释与方法的注释进行注释的方法,并在Eclipse中查看。摘要内容大约为150字,提供了一定的参考价值。 ... [详细]
  • 本文介绍了一个编程问题,要求求解一个给定n阶方阵的鞍点个数。通过输入格式的描述,可以了解到输入的是一个n阶方阵,每个元素都是整数。通过输出格式的描述,可以了解到输出的是鞍点的个数。通过题目集全集传送门,可以了解到提供了两个函数is_line_max和is_rank_min,用于判断一个元素是否为鞍点。本文还提供了三个样例,分别展示了不同情况下的输入和输出。 ... [详细]
  • 颜色迁移(reinhard VS welsh)
    不要谈什么天分,运气,你需要的是一个截稿日,以及一个不交稿就能打爆你狗头的人,然后你就会被自己的才华吓到。------ ... [详细]
  • Opencv提供了几种分类器,例程里通过字符识别来进行说明的1、支持向量机(SVM):给定训练样本,支持向量机建立一个超平面作为决策平面,使得正例和反例之间的隔离边缘被最大化。函数原型:训练原型cv ... [详细]
  • Ansibleplaybook roles安装redis实例(学习笔记二十九)
    1、相关redis参数:2、templatesredis.conf配置相关参数:daemonizeyespidfilevarrunredis_{{red ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • 本人学习笔记,知识点均摘自于网络,用于学习和交流(如未注明出处,请提醒,将及时更正,谢谢)OS:我学习是为了上 ... [详细]
  • 【爬虫训练场】:分页爬虫案例设计Demo,Python Flask与MySQL的完美连接
    网站类应用,一定离不开MySQL,所以本案例将带着大家学习一下,通过Flask调用MySQL数据,并实现分页呈现。类被称作蓝图,它是一个存储操作方法的容器,Flask可以通过Blu ... [详细]
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社区 版权所有