继续创作,加速成长!这是我参加「日新方案 10 月更文挑战」的第29天,点击查看活动详情

导读

给大家介绍一个十分好用的TensorFlow数据pipeline工具。

TensorPipe:支持最先进增增强和底层优化的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

TensorPipe:支持最先进增增强和底层优化的Tensorflow的高性能数据Pipeline

Mosaic

TensorPipe:支持最先进增增强和底层优化的Tensorflow的高性能数据Pipeline

Grid Mask

TensorPipe:支持最先进增增强和底层优化的Tensorflow的高性能数据Pipeline