继续创作,加速成长!这是我参加「日新方案 10 月更文挑战」的第29天,点击查看活动详情
导读
给大家介绍一个十分好用的TensorFlow数据pipeline工具。
高性能的Tensorflow Data Pipeline,运用SOTA的增强和底层优化。
安装方法
pipinstalltensorflow-addons==0.11.2
pipinstalltensorflow==2.2.0
pipinstallsklearn
功用
- High Performance tf.data pipline
- Core tensorflow support for high performance
- Classification data support
- Bbox data support
- Keypoints data support
- Segmentation data support
- GridMask in core tf2.x
- Mosiac Augmentation in core tf2.x
- CutOut in core tf2.x
- Flexible and easy configuration
- Gin-config support
高级用户部分
用例1,为练习创立数据Pipeline
frompipeimportFunnel
frombunchimportBunch
"""
CreateaFunnelforthePipeline!
"""
#ConfigforFunnel
config={
"batch_size":2,
"image_size":[512,512],
"transformations":{
"flip_left_right":None,
"gridmask":None,
"random_rotate":None,
},
"categorical_encoding":"labelencoder"
}
config=Bunch(config)
pipeline=Funnel(data_path="testdata",config=config,datatype="categorical")
pipeline=pipeline.dataset(type="train")
#Piplinereadytouse,iteroverittouse.
#Customloopexample.
fordatainpipeline:
image_batch,label_batch=data[0],data[1]
#youcanuse_loss=loss(label_batch,model.predict(image_batch))
#calculategradientsonlossandoptimizethemodel.
print(image_batch,label_batch)
用例2,为验证创立数据Pipeline
frompipeimportFunnel
frombunchimportBunch
"""
CreateaFunnelforthePipeline!
"""
#ConfigforFunnel
config={
"batch_size":1,
"image_size":[512,512],
"transformations":{
},
"categorical_encoding":"labelencoder"
}
config=Bunch(config)
pipeline=Funnel(data_path="testdata",config=config,datatype="categorical",training=False)
pipeline=pipeline.dataset(type="val")
#usepipelinetovalidateyourdataonmodel.
loss=[]
fordatainpipeline:
image_batch,actual_label_batch=data[0],data[1]
#pred_label_batch=model.predict(image_batch)
#loss.append(calc_loss(actual_label_batch,pred_label_batch))
print(image_batch,label_batch)
初学者部分
Keras 兼容性,运用keras model.fit来构建十分简单的pipeline。
importtensorflowastf
frompipeimportFunnel
"""
CreateaFunnelforthePipeline!
"""
config={
"batch_size":2,
"image_size":[100,100],
"transformations":{
"flip_left_right":None,
"gridmask":None,
"random_rotate":None,
},
"categorical_encoding":"labelencoder",
}
pipeline=Funnel(data_path="testdata",config=config,datatype="categorical")
pipeline=pipeline.dataset(type="train")
#CreateKerasmodel
model=tf.keras.applications.VGG16(
include_top=True,weights=None,input_shape=(100,100,3),
pooling=None,classes=2,classifier_activation='sigmoid'
)
#compile
model.compile(loss='mse',optimizer='adam')
#passpipelineasiterable
model.fit(pipeline,batch_size=2,steps_per_epoch=5,verbose=1)
装备
- image_size– pipeline的图画尺度。
- batch_size– pipeline的Batch size。
- transformations– 运用数据增强字典中的对应关键字。
- categorical_encoding– 对类别数据进行编码 – (‘labelencoder’ , ‘onehotencoder’).
增强:
GridMask
在输入图画上创立gridmask,并在规模内界说旋转。
- 参数:
-
- ratio– 空间上的网格份额
- fill– 填充值fill value
- rotate– 旋转的视点规模
MixUp
运用给定的alpha值,将两个随机采样的图画和标签进行混合。
- 参数:
-
- alpha– 在混合时运用的值。
RandomErase
在给定的图画上的随机位置擦除一个随机的矩形区域。
- 参数:
-
- prob– 在图画上进行随机的概率。
CutMix
在给定图画上对另一个随机采样的图画进行随机的缩放,再以完全掩盖的方法贴到这个给定图画上。
- params:
-
- prob– 在图画上进行CutMix的概率。
Mosaic
把4张输入图画组成一张马赛克图画。
- 参数:
-
- prob– 进行Mosaic的概率。
CutMix , CutOut, MixUp
Mosaic
Grid Mask