s********f 发帖数: 3924 | | w***g 发帖数: 5958 | 2 从SSD随机读。我写picpac就是专门为了对付这种情况。
我现在正在大改版,主要是用C++重写imgaug那套东西。你要不要试试?
config = {"db": "train.spoly.db", #事先导入到存在SSD上的db文件。
"loop": True,
"shuffle": True,
"annotate": True,
"channels": 1,
"dtype": "float32",
"transforms": [
{"type": "augment.flip", "horizontal": True, "vertical":
True},
{"type": "augment.rotate", "min":-180, "max":180},
{"type": "augment.scale", "min":0.7, "max":1.2},
{"type": "clip", "round": 4},
#{"type": "colorspace", "code": "BGR2HSV", "mul0": 1.0/255
},
{"type": "augment.add", "range":20},
#{"type": "colorspace", "code": "HSV2BGR", "mul1": 255.0},
{"type": "rasterize"}, # annotation是polygons
# 这个操作把polygons变成masks
# 我正在写做mask-RCNN的anchor和minimask操作。
# transforms是可以嵌套的,imgaug的sometimes和someof
# 都可以实现。
]
}
tr_stream = picpac.ImageStream(config)
for _, images, masks in tr_stream:
mm, _ = sess.run([metrics, train_op], feed_dict={X: images, Y:
masks})
Keras也很容易。tr_stream本身就是个generator,fit_generator应该就行。
pytorch也是这个套路。
在 silentwolf (沉默的狼) 的大作中提到: 】 | w***g 发帖数: 5958 | 3 搞deeplearning的同学看到了请帮我挑挑刺,包括哪些用词可以改的
建议也好。我想把这个东西做的精致一点。
transforms这个结构从python传入会转成json,然后在C++中构造
对应的类实现。扩展的话也需要写C++。
【在 w***g 的大作中提到】 : 从SSD随机读。我写picpac就是专门为了对付这种情况。 : 我现在正在大改版,主要是用C++重写imgaug那套东西。你要不要试试? : config = {"db": "train.spoly.db", #事先导入到存在SSD上的db文件。 : "loop": True, : "shuffle": True, : "annotate": True, : "channels": 1, : "dtype": "float32", : "transforms": [ : {"type": "augment.flip", "horizontal": True, "vertical":
| m****o 发帖数: 182 | 4 用minibatch做在线学习。
【在 s********f 的大作中提到】 : 如果数据是图像,没这么大内存怎么办?
| m****o 发帖数: 182 | 5 这个和tensorflow的dataset api相比效率如何?
【在 w***g 的大作中提到】 : 从SSD随机读。我写picpac就是专门为了对付这种情况。 : 我现在正在大改版,主要是用C++重写imgaug那套东西。你要不要试试? : config = {"db": "train.spoly.db", #事先导入到存在SSD上的db文件。 : "loop": True, : "shuffle": True, : "annotate": True, : "channels": 1, : "dtype": "float32", : "transforms": [ : {"type": "augment.flip", "horizontal": True, "vertical":
| w***g 发帖数: 5958 | 6 没有benchmark过。我这个是一个数据库。tfrecord好像不支持random access。
我当初是想做一个独立于各个框架的数据接入方案。
我自己感觉,效率应该不会比tf低。
【在 m****o 的大作中提到】 : 这个和tensorflow的dataset api相比效率如何?
| g*******u 发帖数: 3948 | | m****o 发帖数: 182 | 8 dataset api可以shuffle数据源
【在 w***g 的大作中提到】 : 没有benchmark过。我这个是一个数据库。tfrecord好像不支持random access。 : 我当初是想做一个独立于各个框架的数据接入方案。 : 我自己感觉,效率应该不会比tf低。
| g*******u 发帖数: 3948 | 9 不是建议组织数据的时候自己先shuffle, 训练的时候在shuffle影响时间?
【在 m****o 的大作中提到】 : dataset api可以shuffle数据源
| w***g 发帖数: 5958 | 10 世事变化太快。我做第一个版本的这个软件时还没有tensorflow。
后来又出来了nervana neon,后来nervana neon又完蛋了。
然后mxnet又一直不温不火,然后出来caffe2半死不活了很长时间。
有一阵lua的torch也很火,我还做了lua的binding。
然后pytorch火了。将来说不定大家嫌TF和pytorch太臃肿了,
又会出来别的什么小清新,或者别的语言。
我感觉最初的目标其实没错,就是到最后其实dataset为王。
我的目标是为dataset服务。只是单兵作战战斗力有限,很多功能
没法实现,搞来搞去功能还不如dataset api多。
【在 g*******u 的大作中提到】 : dataset api不就是干这个的吗?
| | | w***g 发帖数: 5958 | 11 如果你有100G数据,想在每个epoch reshuffle,估计就独我一家可以支持了。
虽然其实reshuffle了也是然并卵。但他们那么建议是因为软件设计无法支持
reshuffle。Design decision不一样,代码没什么困难的。
【在 g*******u 的大作中提到】 : 不是建议组织数据的时候自己先shuffle, 训练的时候在shuffle影响时间?
| g*******u 发帖数: 3948 | 12 我靠 人家g 好几十人 甚至好几百人 , 你一个人要单挑人家啊
单挑可以,群殴肯定不行啊
【在 w***g 的大作中提到】 : 世事变化太快。我做第一个版本的这个软件时还没有tensorflow。 : 后来又出来了nervana neon,后来nervana neon又完蛋了。 : 然后mxnet又一直不温不火,然后出来caffe2半死不活了很长时间。 : 有一阵lua的torch也很火,我还做了lua的binding。 : 然后pytorch火了。将来说不定大家嫌TF和pytorch太臃肿了, : 又会出来别的什么小清新,或者别的语言。 : 我感觉最初的目标其实没错,就是到最后其实dataset为王。 : 我的目标是为dataset服务。只是单兵作战战斗力有限,很多功能 : 没法实现,搞来搞去功能还不如dataset api多。
| m****o 发帖数: 182 | 13 https://www.tensorflow.org/api_docs/python/tf/data/TextLineDataset#shuffle
有一种情况是数据量太大,那样只能shuffle index,在训练的时候用shuffled index
random access rows。我想tensorflow可以直接给省了这一步?
【在 g*******u 的大作中提到】 : 不是建议组织数据的时候自己先shuffle, 训练的时候在shuffle影响时间?
| w***g 发帖数: 5958 | 14 shuffle index是可以的。但是数据就只能保存成单个文件。
这样其实也没啥问题。性能上不会有本质损失。
index
【在 m****o 的大作中提到】 : https://www.tensorflow.org/api_docs/python/tf/data/TextLineDataset#shuffle : 有一种情况是数据量太大,那样只能shuffle index,在训练的时候用shuffled index : random access rows。我想tensorflow可以直接给省了这一步?
| w*****r 发帖数: 197 | 15 我看过picpac,除你自己,其他人要想上手改,不太容易
1, 建议把对不同framework的支持的粘合代码放到分别的文件夹下。比如我估计只care
TF和caffe,以后也许会有caffe2
2, 把图像变换函数做成Lib,和picpac分开,picpac只负责streaming,shuffle,和不同
框架对接。你就算写再多的imgaug功能,也不可能适应所以行业用户的每一个需求。
3, clean code,多写点注释,降低用户的learning curves
: 搞deeplearning的同学看到了请帮我挑挑刺,包括哪些用词可以改的
: 建议也好。我想把这个东西做的精致一点。
: transforms这个结构从python传入会转成json,然后在C 中构造
: 对应的类实现。扩展的话也需要写C 。
【在 w***g 的大作中提到】 : shuffle index是可以的。但是数据就只能保存成单个文件。 : 这样其实也没啥问题。性能上不会有本质损失。 : : index
| m****o 发帖数: 182 | 16 对C/C++一窍不通,没法comment你的库:)但是如果是多个文件的话,我想应该可以先
对文件名序列本身做shuffle,然后随机顺序读取文件以后,再对文件rows做random
shuffleing。如果不担心文件本身顺序是否要保持,Linux底下有一个命令shuf,可以
直接in place shuffle rows。
【在 w***g 的大作中提到】 : shuffle index是可以的。但是数据就只能保存成单个文件。 : 这样其实也没啥问题。性能上不会有本质损失。 : : index
| w***g 发帖数: 5958 | 17 streaming和augmentation没法分开最大的原因是python的多线程支持不好。
我没法从python接收一个imgaug实现的回调函数然后放到16个线程里面跑。
我不知道tf是怎么实现的。估计得用多进程共享内存。
care
【在 w*****r 的大作中提到】 : 我看过picpac,除你自己,其他人要想上手改,不太容易 : 1, 建议把对不同framework的支持的粘合代码放到分别的文件夹下。比如我估计只care : TF和caffe,以后也许会有caffe2 : 2, 把图像变换函数做成Lib,和picpac分开,picpac只负责streaming,shuffle,和不同 : 框架对接。你就算写再多的imgaug功能,也不可能适应所以行业用户的每一个需求。 : 3, clean code,多写点注释,降低用户的learning curves : : : 搞deeplearning的同学看到了请帮我挑挑刺,包括哪些用词可以改的 : : 建议也好。我想把这个东西做的精致一点。 : : transforms这个结构从python传入会转成json,然后在C 中构造
| l*******m 发帖数: 1096 | 18 现在的tf.dataset彻底和python没管了
【在 w***g 的大作中提到】 : streaming和augmentation没法分开最大的原因是python的多线程支持不好。 : 我没法从python接收一个imgaug实现的回调函数然后放到16个线程里面跑。 : 我不知道tf是怎么实现的。估计得用多进程共享内存。 : : care
| w*****r 发帖数: 197 | 19 你是要把imgaug集成到picpac,还是自己要用c++写一个imgaug?
如果是前者,我觉得不如让用户从picpac拿到数据后,再串联imgaug做处理 |
|