错误数据(图片)去除
Python错误数据(图片)去除
在我们通过爬取网络图片,作为我们的深度学习样本数据集时,往往有许多我们不需要的错误数据,假如当我们进行人脸识别时,爬取到的图片会有许多这样的动画图片
这种类似的图片就是错误的样本数据,需要去除它们,在这里我们使用Opencv中的haarcascade_frontalface_alt.xml模型来去除掉样本中非人脸的数据,Opencv中的**CascadeClassifier.detectMultiScale()**函数可以返回检测到的一张图片中的人脸数量,如果返回的数值为0,说明没有识别到人脸,那么我们就删除此图片,继续识别下一张。
调用detectMultiScale()实现多尺度检测:
g_cascade.detectMultiScale(InputArray image, //输入图像CV_OUT std::vector<Rect>& objects, //输出检测到的目标区域double scaleFactor =1.1, //搜索前后两次窗口大小比例系数,默认1.1,即每次搜索窗口扩大10%int minNeighbors = 3, //构成检测目标的相邻矩形的最小个数 如果组成检测目标的小矩形的个数和小于minneighbors - 1 都会被排除,如果minneighbors为0 则函数不做任何操作就返回所有被检候选矩形框int flags = 0, //若设置为CV_HAAR_DO_CANNY_PRUNING 函数将会使用Canny边缘检测来排除边缘过多或过少的区域 Size minSize = Size(), //能检测的最小尺寸Size maxSize = Size() //能检测的最大尺寸);
注:detectMultiScale的检测过程是从最大的size逐步缩小,这里我们设置窗口的扩大系数是1.3,检测目标的相邻矩形的最小个数是5,其他的参数默认即可。
import osimport cv2.cv2
'''
这里主要用到了Opencv的人脸检测的分类器haarcascade_frontalface_alt.xml和CascadeClassifier函数
'''
cascade_path = 'haarcascade_frontalface_alt.xml'
cascade = cv2.CascadeClassifier(cascade_path)
images_dir = '../images/smile'
images = os.listdir(images_dir)
for image in images:img = cv2.imread(os.path.join(images_dir,image),1)# 得到检测到人脸的数量rects = cascade.detectMultiScale(img, 1.3,5)print('detected face', len(rects))# 如果没有检测到人脸就删除本图片if len(rects) == 0:cv2.namedWindow('Result',0)cv2.imshow('Result', img)os.remove(os.path.join(images_dir, image))k = cv2.waitKey(0)if k == ord('q'):break
最后要注意的一点就是,我们的模型筛选非人脸数据不是很理想,有许多人眼能看出来是人的图片,没有检测到,而一些具有人脸特征的动画反而被检测除了人脸,所以这个模型筛选后需要人工第二次筛选,虽然还是需要人工来筛选,但是大大减少了人工的工作量,还有就是被筛掉的样本数据是很多的,这里我爬取了1100多张的人脸图片,整个筛选完毕就剩下了大概600张左右,效果呢,是有点惨不忍睹,以后我会更新更好的模型筛选数据的教程。
如果想要了解CascadeClassifier的可以前往下面的链接:
关于opencv-CascadeClassifier(级联分类器)的初步认识
错误数据(图片)去除相关推荐
- Cython 图片去除水印
图片去除水印,此方法只支持去除那些水印色彩较为单一或者重复区域较多的图片. 思路: 计算并统计水印的颜色值,水印重复区域颜色出现较多 设置阈值,将重复较多的颜色值用图片最多的颜色值(图片主色彩)替换. ...
- 超好用的视频图片去除水印软件免费下载
在别的地方看到的破解国外一款 超好用的视频图片去除水印 的工具. 废话不多说直接开始说使用说明: 安装我就不说了 文件夹名字有提示. 直接开始说使用方法. 打开软件后 提示"add Imag ...
- PS图片去除文字的六个方法(图文)
PS图片去除文字的六个方法(图文) http://tieba.baidu.com/f?kz=395126968 1.使用仿制图章工具去除文字. 选取仿制图章工具,按住Alt键,在无文字区域点击相似的色 ...
- java 去掉 时期中的图片,去除图片浅色背景(Java 实现)
完成与去除图片浅色背景(PIL实现)同样的任务,实现方式为 Java.不同的是,手写实现"加权法"灰度化,在灰度化的同时去除背景. 源码如下: import java.awt.im ...
- matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
plt.savefig() 输出图片完美去除旁边的空白区域 plt.savefig("test.png",bbox_inches='tight',pad_inches = -0.1 ...
- java 去除干扰_【Selenium-WebDriver实战篇】Java丨验证码图片去除干扰像素,方便验证码的识别(转)...
1.先来看看效果: 原图 除去干扰像素后 2.解析代码: 1).读取文件夹里面的图片 1 String fileName = "picture"; 2 BufferedImage ...
- 微信图片去除马赛克_微信怎么把图片加上马赛克_微信如何将照片打码的方法介绍_3DM手游...
很多时候,我们发到朋友圈的照片是需要在某些地方加上马赛克的.比如有些无法去除的水印,或是一些不想让别人看到的内容.但是微信里是没有为照片加马赛克这个功能的,如果需要为照片加马赛克需要借用其它工具,方法 ...
- 图片在线去水印-一键图片去除水印工具
我们经常会看到喜欢的图片带了水印,这让很多人很无奈,不得不舍弃喜欢的图片.今天小编教大家两个方法,即便是有水印的图片也可以用软件处理掉.那么怎么去水印呢?接下来详细为大家介绍去水印的详细方法. 一.水 ...
- 图片去除下间隙(图片3像素)的方法
一.提出问题 在浏览器中,图片有一个下间隙问题,有人也称之为图片3像素BUG.如下图: 这是放大过的效果.我们可以清晰的看到,图片明显没有跟文字的最底部对齐,比如字母g,就比图片的底部更下探出一截. ...
- PHP 图片去除水印 去除logo
使用插件 ffmpeg 点这里 不使用插件 也可以 <?phpfunction CLEAR_ICO($filename,$savename,$Clear_W,$Clear_H,$Clear_X, ...
最新文章
- Android 使用adb 抓取日志信息
- 理论计算机初步:概率算法和近似算法
- php 服务常量,php常量
- Springboo零配置原理
- uva1628 最优路径问题
- 欢迎与我一起交流安全管理平台
- 我们出了套西游记考题,可以保证吴承恩不及格
- procyon java8_java jdk 8反编译工具JD-GUI、procyon-decompiler、luyten、crf下载使用简介
- java 反射 泛型 构造函数_Java复习——反射和泛型的复习
- 3.2 为超参数选择合适的范围
- systemtap原理及使用
- JavaScript 数字前补“0”的五种方法
- java jquery提交表单数据_[Java教程]jquery实现ajax提交表单信息
- python请输入星期几的第一个_python如何获取星期几
- Combobox MVVM绑定并设置选中
- Linux命令大全详解
- CQF笔记M1L5仿真和操作随机微分方程
- 项目采集自动刷新 php,PHP168 CMS自动采集-PHP168 CMS自动更新-齐博CMS站群管理系统...
- ROS开发--Qt接收摇杆话题
- 【转】Linux下进程隐藏的常见手法及侦测手段