[ImageClassification Transfer Learning] Simplify/Hide steps and hyper-parameters in new ImageClassification - Transfer Learning #4087
Labels
enhancement
New feature or request
P2
Priority of the issue for triage purpose: Needs to be fixed at some point.
Since the new (early preview) 'ImageClassification - Transfer Learning' is aimed to provide a high-level API per scenario (image classifciation in this case), we should simplify the API even further.
Here's an example of a current training pipeline:
Good points to simplify are image transformations and "technical" hyper-paramenters:
1. Hide image re-size step: Since the image size is determined by the internal DNN model (TensorFlow model, currently) why don't we simply do it within the
ImageClassification
code?2. Hide extract pixels step: Same thing here. The extract pixels step should be hidden as part of the
ImageClassification
code. This is surfacing too much details. I expect the interleavePixelColors could also be determined by the info in the TF model .pb file, ot in the worst case based on the Architecture metadata that we could have per architecture (InceptionV3, etc.).3. Hide EPOCH and BATCHSIZE: These are also configuration details that, even when they currently have "by default values" (epoch=10 and batchSize=20), those values are not valid for any imageset and architecture and should vary depending on the specific image-set size and chosen architecture. I'd be good to have them initialized dynamically within the
ImageClassification
code depending on the context instead of "fixed default values" and parameters that surface to the user who might not know what is an EPOCH or BATCH.After simplifying the above points, the example code could look like the following, which looks a lot simpler and clean: :)
Even the architecture should also be simplified and maybe letting the user select per type of images to be trained, such as: Photos vs. Numbers/Digits vs. other characteristics that make one or the other architecture advisable to be used. A regular .NET developer usually won't know if he/she should use InceptionV3 vs. ResnetV2101, etc.
The text was updated successfully, but these errors were encountered: