Support

Contributing to DeepView

Please see the Contributor’s Guide.

Submit Feedback

  • Find a bug? Have a feature suggestion? Submit an Issue on the DeepView GitHub Page.

Debugging

Here are some tips and common issues. Further issues or suggestions for additional tips can be filed as issues in the DeepView repository page.

peek_first_batch

The peek_first_batch method can be an incredibly helpful tool for debugging deepview pipelines. It can be used to run a single batch of data (for any batch size) through a pipeline and analyze the results. Here is an example usage:

from deepview.base import peek_first_batch, pipeline

# set up Producer
producer = ...

# any list of PipelineStages, which could include model inference
processor1 = ...  # e.g. resize data input
model = ...  # loaded from disk or custom defined
processor2 = ...  # e.g. postprocess data after model inference

response_producer = pipeline(
    producer,
    processor1,
    model("responseA"),
    processor2
)

# first, debug that the producer is working as intended
# use fields in this object (e.g., b.fields, b.metadata), and explore
b = peek_first_batch(producer, batch_size=1)

# it's possible to debug intermediate stages as well, such as preprocessing
b_processor = peek_first_batch(pipeline(producer, processor1), batch_size=2)

# or debug the whole pipeline
b_full = peek_first_batch(response_producer, batch_size=1)

PipelineDebugger

The PipelineDebugger can also be a helpful debugging tool. See an example below:

producer = pipeline(stub_dataset_metadata, SnapshotSaver(save="snap"), PipelineDebugger())
batch = peek_first_batch(producer, 5)

output = PipelineDebugger.dump(batch)

umap vs. umap-learn

To run the UMAP projection strategy, deepview[dimreduction] or deepview[dataset-report] will likely have been installed, installing the umap-learn package. DeepView does not depend on the umap package, which is a different package altogether. But, when using umap-learn, it is imported as import umap.

ImageProducer with Images of Different Sizes

When using ImageProducer, the images need to be the same dimensions. If some images in the dataset have different sizes, it’s necessary to define a custom Producer to resize the data samples. How to do this is noted in the doc page on loading data.

Python 3.9.7

There is a bug in Python 3.9.7 that makes this version incompatible with DeepView.

More specifically, this bug causes dataclasses that inherit from Protocols to have an incorrect __init__ function. Dataclasses and Protocols are used throughout DeepView, so DeepView will fail on Python 3.9.7.

tf.keras vs. keras models

This issue is only applicable certain versions, see below:

As noted in this helpful document, there is a distinction between TensorFlow’s Keras and Keras native that’s important to note for loading models and using DeepView.

  • Original keras was not subsumed into tensorflow to ensure compatibility and so that they could both organically develop.

  • Keras 2.3.0 is the first release of Keras that brings keras in sync with tf.keras

DeepView supports the use of both TensorFlow 1 and TensorFlow 2. Throughout, for Keras use, DeepView uses tf.keras. Errors may arise when attempting to load a model with the function load_tf_model_from_path for a model that was saved with native Keras. One possible solution is loading the model first outside of DeepView, and then using the load_tf_model_from_memory method to load into DeepView. (Note: In Tensorflow1, ensure that when clearing any session, it’s the appropriate tf.keras vs. keras backend session.)

MacOS Python Certificate Failure

During setup, a SSL: CERTIFICATE_VERIFY_FAILED error indicates that certs are missing (MacOS). This can likely be fixed with:

` # Python 3.x (substitute Python version below) /Applications/Python\ 3.x/Install\ Certificates.command `

This will pip install the proper certificates. See more [https://stackoverflow.com/questions/42098126/mac-osx-python-ssl-sslerror-ssl-certificate-verify-failed-certificate-verify](here).

Deprecation Warnings

Calling deepview.exceptions.enable_deprecation_warnings() will configure DeepView so that it will raise exceptions for every DeepView deprecation warning.