动手学深度学习——5. 数据清洗

记录一下学习深度学习的一些。本篇简述如何使用 cleanlab 清洗分类数据

所使用环境:

  • Ubuntu 16.04
  • 8700K
  • GeForce RTX 1080Ti
  • Python 3.8
  • Pytorch 1.7.1
  • cleanlab 0.1.1

数据准备

首先将上篇所说的猫狗大战的训练集,按猫狗分为0/1两个目录,父目录命名为 train,接着将两类图片分类,按名字检索一下就可以分开。

因为图片的大小不一,所以在进行交叉验证训练的时候,将图片缩放至统一尺寸 224 × 224 224 \times 224 224×224,方便训练。

train_dataset = datasets.ImageFolder(traindir,transforms.Compose([transforms.Resize((224, 224)),transforms.RandomHorizontalFlip(),transforms.ToTensor(),normalize,]),
)val_dataset = datasets.ImageFolder(valdir,transforms.Compose([transforms.Resize((224, 224)),transforms.RandomHorizontalFlip(),transforms.ToTensor(),normalize,]),
)

数据清洗

交叉验证获取预测概率矩阵 psx

python train_crossval.py -a efficientnet-b6 -o output -j 4 -b 20 --epochs 10 --lr 0.001 --pretrained --world-size 1 --rank 0 --dist-url tcp://localhost:8001 --multiprocessing-distributed --cvn 5 --cv 0 --num-classes 2 data

修改参数 cv,直至 k 折交叉验证均完成,相应的 out-of-sample 预测概率 P ^ k , i \hat{P}_{k,i} P^k,i​ 的 npy 文件会生成至 output 参数所指定的目录。这里有一点不同的是,官方提供的实例是使用 val 目录下的数据集来调优的,而我用交叉验证的 holdout 部分,所以效果可能会有所下降。

合并所有的 npy 文件,生成完整的 psx

python train_crossval.py -a efficientnet-b6 --cvn 5 -o output --num-classes 11 --combine-folds data

获取错误的标签及对应的原始标签

python get_error_labels.py --psx output/train__model_efficientnet-b6__pyx.npy -db output/test.db -t test data/train

查看结果

Overall accuracy: 98.12%
Total: 101

可以看到通过 cleanlab,25,000 张训练图像中有 101 的错误标注,通过图来验证一下。

原始标签为猫的,cleanlab 预测为狗的:

nrows = math.ceil(num_cats_dogs / ncols)
plt.figure(figsize=(24,16))
for i, (name, given, p_given, pred, p_pred) in enumerate(cats_dogs, start=1):path = os.path.join('data/train', '0', name)img = Image.open(path).convert("RGB")plt.subplot(nrows, ncols, i)plt.imshow(img)plt.axis('off')
plt.subplots_adjust(top=1,bottom=0,left=0,right=1,hspace=0,wspace=0)
plt.show()

原始标签为狗,cleanlab 预测为猫的:

nrows = math.ceil(num_dogs_cats / ncols)
plt.figure(figsize=(24,16))
for i, (name, given, p_given, pred, p_pred) in enumerate(dogs_cats, start=1):path = os.path.join('data/train', '1', name)img = Image.open(path).convert("RGB")plt.subplot(nrows, ncols, i)plt.imshow(img)plt.axis('off')
plt.subplots_adjust(top=1,bottom=0,left=0,right=1,hspace=0,wspace=0)
plt.show()

可以看到上述结果中,有部分被标注错误了的,还有一部分的卡通图及其他非猫/狗图,还有一部分同时出现两种的,当然也还有有一部分出错了,但还是具有一定的参考意义。

将使用 cleanlab 清洗数据的流程写入了 sh,可以通过修改 sh 的相关变量,再调用 sh 来完成数据清洗。其中,train.sh 为单标签分类的清洗流程,train_m.sh 为多标签的清洗流程。

Code

  • Script

动手学深度学习——5. 数据清洗相关推荐

  1. 「动手学深度学习」在B站火到没谁,加这个免费实操平台,妥妥天花板!

    论 AI 圈活菩萨,非李沐老师莫属. 前有编写「动手学深度学习」,成就圈内入门经典,后又在B站免费讲斯坦福 AI 课,一则艰深硬核讲论文的视频播放量36万,不少课题组从导师到见习本科生都在追番. 如此 ...

  2. 《动手学深度学习》中文第二版预览版发布

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨李沐@知乎 来源丨https://zhuanlan.zhihu ...

  3. 收藏 |《动手学深度学习》中文版PDF

    对于初学者来说,直接阅读英文资料,效率慢,估计读着读着都没有信心读下去了.对于初学者,中文资料是再好不过了.今天小编就来安利一本中文资料--中文版本的<动手学深度学习>. 资料领取: 扫码 ...

  4. 深度学习经典教程:深度学习+动手学深度学习

    作者:[美] Ian,Goodfellow(伊恩·古德费洛),[加] Yoshua,Bengio(约书亚·本吉奥)等 出版社:人民邮电出版社 品牌:异步图书 出版时间:2019-06-01 深度学习经 ...

  5. 资源 | 李沐等人开源中文书《动手学深度学习》预览版上线

    来源:机器之心 本文约2000字,建议阅读10分钟. 本文为大家介绍了一本交互式深度学习书籍. 近日,由 Aston Zhang.李沐等人所著图书<动手学深度学习>放出了在线预览版,以供读 ...

  6. 最新版 | 2020李沐《动手学深度学习》

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 强烈推荐李沐等人的<动手学深度学习>最新版!完整中文版 PDF 终于 在 ...

  7. 动手学深度学习需要这些数学基础知识

    https://www.toutiao.com/a6716993354439066124/ 本附录总结了本书中涉及的有关线性代数.微分和概率的基础知识.为避免赘述本书未涉及的数学背景知识,本节中的少数 ...

  8. 《动手学深度学习》PyTorch版GitHub资源

    之前,偶然间看到过这个PyTorch版<动手学深度学习>,当时留意了一下,后来,着手学习pytorch,发现找不到这个资源了.今天又看到了,赶紧保存下来. <动手学深度学习>P ...

  9. 用PyTorch实现的李沐《动手学深度学习》,登上GitHub热榜,获得700+星

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 李沐老师的<动手学深度学习>是一本入门深度学习的优秀教材,也是各大在线书店的计算机类畅销书. 作为MXNet的作者之一,李沐老 ...

最新文章

  1. 3D惯导Lidar仿真
  2. mac下,svn配置
  3. 20+ 个很棒的 jQuery 文件上传插件或教程(此文值得“推荐”和“收藏”)
  4. 服务器应用服务为何卡顿?原来是内存耗尽惹的祸!
  5. 一个能自动搜索源文件并自动推导的Makefile
  6. Ubuntu桌面培训(Ubuntu Desktop Course)中文译本发布
  7. 软件工程第一次结对编程
  8. mysql5.6.28安装_mysql5.6.28源码安装
  9. python中sorted方法和列表的sort方法使用详解
  10. [backbone] Getting Started with Backbone.js
  11. mysql 账户管理_MySql 账户管理
  12. flash 加载外部flash怎么卸载干净
  13. 谷歌邮箱lmap服务器填什么_Gmail/QQ邮箱/163邮箱等各大邮箱IMAP/SMTP/POP3地址
  14. 虚拟云服务器能调用本地摄像头,云服务器本地摄像头
  15. 彩色飘带字体怎么制作?AE教程教给你
  16. Apple现行公开的framework简介
  17. 一加手机android auto,一加手机怎么升级安卓5.0系统
  18. python输入end退出循环_python练习:从入门到实践——用户输入和while循环
  19. PHP生成海报 文字描边,海报字体 怎么为海报字体添加描边样式?海报文字描边怎么做?海报字体描边样式制作...
  20. SEO必备的利器–iMacros

热门文章

  1. A-Level是“最简单的”国际课程吗?
  2. steam搬砖项目,长久稳定,月入5000+
  3. FlowLayout流布局管理器
  4. 50套精美的免费 PSD 网页界面素材资源
  5. python编程基础张健答案-PYTHON编程基础
  6. 如何用html制作明信片,用HTML和css选择器写明信片
  7. win10安装Anaconda、CUDA、cudnn、Pytorch
  8. 阿里天池--金融数据分析赛题1:银行客户认购产品预测
  9. 一些正则表达式(js代码验证)
  10. linux debian 修改终端字体大小