Is there a way to pass in a custom function which can add to preprocessing of the data. Like if I want to equalise the histogram of an image before passing it to network, what is the best way to do it in existing fastai setup?
And it doesn’t even need to be a class - you can pass a function too!
Do you have an example for such a class or function handy?
I tried the following class
class gammaCorrection():
def __init__(self, b): self.b = b
def __call__(self, x):
gamma = self.b
return np.uint8(cv2.pow(x / 255., gamma)*255.)
used it as
tfms = tfms_from_model(arch, sz, aug_tfms=[gammaCorrection(0.8)], max_zoom=1.1)
data = ImageClassifierData.from_paths(PATH, bs=bs, tfms=tfms)
learn = ConvLearner.pretrained(arch, data, precompute="True", ps=0.2)
learn.lr_find()
But it gave me the following error:
~/.conda/envs/fastai/lib/python3.6/site-packages/fastai/transforms.py in compose(im, y, fns)
def compose(im, y, fns):
for fn in fns:
--> 446 im, y =fn(im, y)
return im if y is None else (im, y)
when I call
learn.fit(1e-2, 2, cycle_len=1)
Any ideas? (I am currently working on the kaggle IEEE competition where the deadline is tomorrow )