最近准备 DL 训练样本,被数十万的小图片折磨得死去活来,打开文件夹慢卡、预览慢、移动慢、删除慢,慢慢慢。
求解有没有什么好的工具可以方便浏览这些小东西的?删除的话我现在直接写程序多线程删,不知道伤不伤硬盘(不过管他的,反正硬盘是公司的)。
1
ivechan 2017-08-08 13:17:02 +08:00
用命令行会好一点把, 当然一劳永逸的办法是把这些小图片合并一下, 比如 10w 图片合并成一个,
尽量选择紧凑点的格式. |
2
am241 2017-08-08 13:24:22 +08:00 via Android
预处理拿出来
用一个单独的程序预处理,成 numpy 数组,然后用 numpy.save 保存,以后调用也方便 |
3
onion83 2017-08-08 13:24:54 +08:00
删除大量文件的正确姿势是 umount && mkfs
|
4
isbarton 2017-08-08 13:27:40 +08:00
如果单纯的浏览的话,google 的照片,会批量缩略图。
|
5
VShawn OP |
6
ivechan 2017-08-08 14:12:30 +08:00
@VShawn 没必要自己写这个程序, DL 很多用 numpy 数组形式保存(前提是 Python 平台)
不过如果你要经常修改, 用这个合并的方法也比较麻烦. 另外, 你所说的打开文件夹慢是指用 GUI 的文件夹浏览器 打开某个文件夹? |
7
kokutou 2017-08-08 14:17:45 +08:00
http://www.xnview.com/en/
http://www.xnview.com/en/xnviewmp/ acdsee pro adobe bridge 几个都可以试试,看哪个性能好 ps.要是你的图片在机械硬盘上,那不管怎么搞都快不起来把吧= = 不管怎么搞都不会伤硬盘,除了固态工作的时候断电,机械工作的时候踢几脚。。。 |
8
ilotuo 2017-08-08 14:18:55 +08:00
如果要重新标注最好用 matplotlib 显示并一键标注吧.
|
9
XiaoFaye 2017-08-08 14:32:52 +08:00
@VShawn 2KB * 500,000 / 1000 = 1000MB = 1G,你全部扔内存缓存不行吗?安卓都 8G 内存了。
|
10
hitmanx 2017-08-08 15:51:21 +08:00
海量的小文件硬盘寻道比较慢,可以试着把 10 万个图片存成一个 2 进制文件,自己定义个 header,里面包含文件的数量和每个文件起始段的索引和大小.
最好把文件的格式设计成未来 append img 比较方便的,这样不用每次添加一个新的图片,得把前面已有的 10w+的图片重新生成一遍. |
11
VShawn OP @ivechan 对,是在做标记跟人工校验分类结果的时候,要打开文件夹筛选
@kokutou ACDSEE 有试过,在两三千张图片的文件夹还算好用,但图片数量级上升后依然好等待一段时间进行索引,而且在 ACDSEE 中移动文件不是很方便。至于硬盘,我一开始是用固态硬盘做的,闪迪的 extreme pro,实测没有机械硬盘快,可能是 4k 随机读取能力不足。 @ilotuo 没有接触过 matplotlib,公司的 DL 是用 C++搞起的。 @XiaoFaye 训练时当然是放在内存的,但查看的时候不可能一直把他们保持在内存中吧。 @hitmanx 目前是这么考虑的。 最后,我现在在拷贝 160w 份同图片到移动硬盘,4.54G 剩余 21 小时(我讨厌大数据 : ( 逃..... |
12
ivechan 2017-08-08 18:28:27 +08:00
@VShawn 你这样肯定不行啊, 无论是 Linux 还是 Windows 的文件管理器对于大量文件查看都不友好的,
还是用 Shell 处理比较好. |
13
SuperMild 2017-08-08 18:37:34 +08:00 via iPhone
内存盘 RAM disk
|
15
wenzhoou 2017-08-08 21:45:23 +08:00 via Android
说 shell 处理好的,你是没见过 ls 命令导致服务器 down 掉。
|
16
rogerchen 2017-08-08 23:29:35 +08:00 via Android
2k 的图片,验证码,黑产?大家散了吧
|
17
u5f20u98de 2017-08-08 23:34:17 +08:00
/dev/shm
|
18
realpg 2017-08-09 01:22:08 +08:00
删除这么多小文件的方式是把分区内其他文件都拷出去然后格式化
|
19
inflationaaron 2017-08-09 01:52:46 +08:00
如果用 TensorFlow 的话考虑用 TFRecord,把 label 和 image 都存成二进制文件。如果是其他平台,可以用 HDF5 作为存储格式,各种语言都有相应的库。
|
20
inflationaaron 2017-08-09 01:53:15 +08:00
@wenzhoou ls 默认的时候会排序,关掉就好了。
|
21
xenme 2017-08-09 06:30:06 +08:00 via iPhone
机械盘无论 4K 还是随机读写甩机械盘几个数量级,你居然能测出更慢?
你那是 U 盘吧? |
22
wenzhoou 2017-08-09 07:36:59 +08:00 via Android
@inflationaaron 受教了。谢谢
|