Recent Releases of AgML

AgML - AgML 0.7.4

This is a small release:

  • Introduces a new dataset soybean_insect_classification.
  • Fixes an error with peachpear_flower_segmentation.
  • Adds some quality of life improvements to information messages printed by the library, including progress bars.

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi 9 days ago

AgML - AgML 0.7.3

This release introduces the iNatAg dataset (and its companion dataset iNatAg-mini), one of the world's largest datasets of agricultural images. This introduces over 4.7 million images into AgML, across 2,900+ species.

You can load the iNatAg dataset with agml.data.AgMLDataLoader.from_parent('iNatAg'), and specify various filters to load specific subsets of specific species.

In addition, this release contains a couple of small bugfixes and updates.

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi about 1 month ago

AgML - AgML 0.7.2

This is a relatively major release that introduces a significant number of new datasets into AgML, alongside various bugfixes and improvements.

New Datasets

The following new datasets have been introduced: embrapa_wgisd_grape_detection, growliflower_cauliflower_segmentation, strawberry_detection_2023, strawberry_detection_2022, almond_harvest_2021, almond_bloom_2023, gemini_flower_detection_2022, gemini_leaf_detection_2022, gemini_pod_detection_2022, gemini_plant_detection_2022, paddy_disease_classification, onion_leaf_classification, chilli_leaf_classification, orange_leaf_disease_classification, papaya_leaf_disease_classification, blackgram_plant_leaf_disease_classification, arabica_coffee_leaf_disease_classification, banana_leaf_disease_classification, coconut_tree_disease_classification, rice_leaf_disease_classification, tea_leaf_disease_classification, betel_leaf_disease_classification, java_plum_leaf_disease_classification, sunflower_disease_classification, and cucumber_disease_classification. This is the largest individual release to-date of datasets. Specifically, 10+ datasets designed for disease classification have been introduced, alongside a variety of publicly-sourced object detection datasets.

Documentation

New documentation has been introduced for AgML. At the moment, it provides an interface for inspecting data online with ease, and will expand to include more information about library usage in general. Check out the documentation at: https://project-agml.github.io/AgML/index.html.

Major Updates

  • The agml.synthetic API has been improved and is now tested to work on Windows, in addition to Mac and Linux. Breaking changes that had been introduced into Helios have now been integrated into the AgML API as well.
  • The Raditation API that is introduced in Helios, for more accurate and efficient synthetic data generation, has also been incorporated into AgML in an early stage.

Quality Changes

  • New tools for testing and uploading datasets, as well as version management on PyPi have been introduced.
  • Code quality has been improved throughout the library, improving readability.

More Detailed Information

New Contributors

Full Changelog: https://github.com/Project-AgML/AgML/compare/v0.7.0...v0.7.2

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi 3 months ago

AgML - AgML 0.7.0

This is a major update to AgML that includes a new agml.models API, new datasets, new tools, and a suite of bugfixes and improvements across the board.

Major Changes

  • The agml.models.Detector API has been introduced. This API wraps the Ultralytics YOLO11 model (see ultralytics for more information) and provides an easy-to-use interface for training and inference with state-of-the-art object detection models.
    • Use agml.models.Detector.train(loader, 'yolo_model') to quickly train an AgML dataset using your choice of YOLO model - all right within the AgML API.
    • Use agml.models.Detector.load('model_name') to load a trained model easily, stored directly within the AgML local model repository.
    • Use agml.models.Detector.load_benchmark('dataset_name', 'yolo_name') to access a pre-trained agricultural object detection model from a set of available pretrained benchmarks.
    • Note: If you want fine-grained transfer learning and finetuning capabilities, use the standard agml.models.DetectionModel API, but the agml.models.Detector API is a much more user-friendly quick-start for quick training and inference.
  • We have added four new datasets:
    • tomato_ripeness_detection: Object Detection
    • corn_maize_leaf_disease: Image Classification
    • tomato_leaf_disease: Image Classification
    • vine_virus_photo_dataset: Image Classification
  • A new export tool has been added agml.data.extensions.restructure_cvat_annotations, that automatically reformats the exported COCO annotations from the CVAT tool into the format used in AgML. This increases AgML's interoperability with existing machine learning frameworks.

Major Bugfixes

  • Helios compilation and execution is now fixed and works for Windows systems - Windows users can now use the agml.synthetic API to generate their own simulated data.

Other Changes and Improvements

  • The documentation for AgML datasets has been improved to show more representative samples, and datasets without documentation now have theirs added.
  • Improvements have been made to the agml.data.ImageLoader, and there is now a new method agml.data.AgMLDataLoader.take_images() which enables you to extract just the images from an AgMLDataLoader, useful for inference and other image-only applications.
  • A bug which prevented saving and loading splits for object detection has been fixed: you can now load and save object detection data splits successfully.
  • Some small errors with visualization have been fixed, including orientation and number of images in certain methods.
  • The agml.data.tools.convert_bbox_format tool now has new formats xyxy and yxyx which wrap longer strings, for ease of use.

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi 6 months ago

AgML - AgML v0.6.2

This release introduces a new export tool for AgML datasets, various expansions to methods, and some bugfixes.

Major Changes

  • A new method agml.data.exporters.export_yolo() has been added (alongside a companion wrapper to a dataset, loader.export_yolo()), that enables exporting datasets to the Ultralytics YOLO format. The resulting datasets can be directly integrated in one line of code into Ultralytics/Darknet YOLO training pipelines, which augments AgML's object detection resources.

Improvements

  • Splitting datasets, specifically with multi-dataset loaders, now works properly.

Bugfixes

  • Added an export_tensorflow() method for multi-loaders, which was previously missing.
  • Updated Helios compilation instructions to be compatible with the C++17 standard needed for updated Helios versions.
  • All example notebooks have been updated to be consistent with new AgML methods.
  • AgML visualization methods now no longer double-display in Jupyter notebooks.

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi 7 months ago

AgML - AgML 0.6.1

This is a small update.

  • A new dataset vegann_multicrop_presence_segmentation has been added: this is the AgML-incorporation of the VegAnn dataset.
  • Fixed an issue with the class names in the rangeland_weeds_australia dataset: the awry "no_weeds" class has been removed and the dataset now follows the original specification of the DeepWeeds dataset.
  • A bug that prevented the storage/loading of custom splits has been fixed.
  • A bug that cut off text when visualizing image classification data samples has been fixed.

Full Changelog: https://github.com/Project-AgML/AgML/compare/v0.6.0...v0.6.1

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi 12 months ago

AgML - AgML 0.6.0

This release introduces tools for training custom agricultural machine learning models using AgML.

Main Changes

agml.models

  • The agml.models API has been extended with new features for training, namely the run_training method which enables quick training of image classification, semantic segmentation, and object detection models.
    • Simply instantiate a model with your number of classes, build an AgMLDataLoader with your data preprocessing, and pass it to the run_training method alongside other training hyperparameters to train a model.
    • Choose your level of customizability: for newer users, options like optimizers, loss, and other hyperparameters are auto-selected, but for experienced users, you can go as far as extending the training_step, validation_step, and other arguments for greater customizability over training.

Other Changes and Bugfixes

  • A major bug which prevented recompliation of Helios without LiDAR has been fixed, enabling users to switch between using LiDAR-compiled Helios and standard Helios.
  • A bug which caused Helios installation on basic inspection is now patched. Helios will no longer auto-install unless the agml.synthetic module is actively used for data generation.
  • You can now correctly display image samples when using agml.viz.show_sample with the image_only option.
  • Bugfixes have been done for agml.models.metrics.Accuracy and agml.models.metrics.MeanAveragePrecision to ensure that they work with training.

Read the Full Changelog: https://github.com/Project-AgML/AgML/compare/v0.5.2...v0.6.0

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi over 1 year ago

AgML - AgML 0.5.2

New Features and Bugfixes

  • Added the ability to save and load data splits for individual datasets using loader.save_split and loader.load_split.
  • Added the ability to load multiple datasets using a wildcard name instead of passing each individual dataset in a list (e.g., to load all of the apple detection datasets, use apple_detection*).
  • Use agml.models.get_benchmark to get benchmark information for a certain model trained on a certain dataset.
  • Fixed bugs with mAP calculation during training.
  • Fixed bugs with image preprocessing for object detection and visualization of object detection predictions.

Full Changelog: https://github.com/Project-AgML/AgML/compare/v0.5.1...v0.5.2

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi over 1 year ago

AgML - AgML 0.5.1

Main Changes

  • Added a new dataset, ghai_strawberry_fruit_detection.
  • Added a new method agml.io.read_image for convenience.
  • Added the ability to generate both RGB & LiDAR data using the option agml.synthetic.SimulationType.Both.

Bugfixes and Updates

  • You can now instantiate a collection of synthetic datasets by passing a list of them to the initialization of an AgMLDataLoader.
  • A bug which prevented the visualization of predictions when using a SegmentationModel has now been patched.

Full Changelog: https://github.com/Project-AgML/AgML/compare/v0.5.0...v0.5.1

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi almost 2 years ago

AgML - AgML 0.5.0

This release introduces synthetic LiDAR data generation through Helios, a rework of the agml.viz module with better functionality, and a number of new available datasets, amongst other features.

Major Changes

  • The agml.io module has been added, with a few convenience functions for working with file and directory structures.
    • Currently available functions include get_file_list and get_dir_list which also work with nested structures, as well as recursive_dirname, parent_path, and random_file.

agml.data

  • Three new datasets have been introduced:
    • Object Detection: ghai_iceberg_lettuce_detection, ghai_broccoli_detection
    • Image Classification: riseholme_strawberry_classification_2021
  • The agml.data.ImageLoader has been added, which is essentially a simple loader designed only for images.
    • Enables loading images from a nested directory structure.
    • Enables easy resizing and transforms of the loaded images.
  • The AgMLDataLoader now has a new method show_sample which can be used to visualize samples from the dataset directly from the loader.

agml.synthetic

  • LiDAR Data Generation: You can generate LiDAR-based synthetic data now, using opt.simulation_type = agml.synthetic.SimulationType.LiDAR.
  • You can recompile Helios with LiDAR enabled, as well as in parallel (for Linux and MacOS systems) using recompile_helios(lidar_enabled = True) and recompile_helios(parallel = True) [note that parallel compilation is enabled by default].
  • A new loader agml.synthetic.LiDARLoader has been added, which can be used to load point clouds from a generated directory in the same format as ImageLoader, and can be used to get point clouds and visualize them.

agml.viz

  • The entire agml.viz module has been reworked with new methods and a functional visualization backend which enables both cv2 and matplotlib displays, depending on what the user desires.
  • The following is a mapping of the old functions to new functions:
    • visualize_images_and_labels -> show_images_and_labels
    • output_to_mask -> convert_mask_to_colored_image
    • overlay_segmentation_masks -> annotate_semantic_segmentation
    • visualize_image_and_mask -> show_image_and_mask
    • visualize_overlaid_masks -> show_image_and_overlaid_mask
    • visualize_image_mask_and_predicted -> show_semantic_segmentation_truth_and_prediction
    • annotate_bboxes_on_image -> annotate_object_detection
    • visualize_image_and_boxes -> show_image_and_boxes
    • visualize_real_and_predicted_bboxes -> show_object_detection_truth_and_prediction
    • visualize_images -> show_images
  • To swap between viz backends, use get_viz_backend and set_viz_backend.
  • In order to simply display an image, you can use display_image.
  • To visualize a point cloud (either in Open3D if installed, or matplotlib), use show_point_cloud.

Other Changes

  • Major Change for New Users: torch, torchvision, and other related modeling packages for the agml.models package are no longer distributed with the AgML requirements -- you must install these on your own if you want to use them.

Minor/Functional Changes + Bugfixes

  • Fixed backend swapping between TensorFlow and PyTorch when using clashing transforms.
  • Added the ability to run prediction with a classification and a segmentation model without normalizing the input image using model.predict(..., normalize = False).
  • Images no longer auto-show as matplotlib figures when using agml.viz.show_* methods, instead they are returned as image arrays and can be displayed in a desired format.
  • Improved access and setting of information in the backend config.json file, so information is not accidentally overwritten.

Full Changelog: https://github.com/Project-AgML/AgML/compare/v0.4.7...v0.5.0

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi almost 2 years ago

AgML - AgML 0.4.7

Main Changes

  • Introduced two new public object detection datasets from the Western Growers Global Harvest Automation Initiative (https://github.com/AxisAg/GHAIDatasets): ghai_romaine_detection, and ghai_green_cabbage_detection.
  • Added the ability to generate multiple different types of annotations when generating synthetic datasets with Helios.

Other Changes

  • Fixed errors with different visualization utilities as well as synthetic data annotation conversions.

Full Changelog: https://github.com/Project-AgML/AgML/compare/v0.4.6...v0.4.7

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi about 2 years ago

AgML - AgML 0.4.6

Main Changes

  • You can now manually generate synthetic data with Helios using your own C++ generation file and CMake parameters/XML style file, using the method agml.synthetic.manual_generate_data. This allows for a greater deal of customizability and control over how Helios is compiled, as well as which methods are being used.
  • A convenience method agml.viz.show_sample has been added which enables quick visualization of an image and its annotations: this works for all types of annotations, simply pass a loader as the argument.

Other Improvements

  • If you want to overwrite files when generating synthetic data with the HeliosDataGenerator, you can now pass the argument clear_existing_files = True to the generate method.
  • You can now compile Helios using the standard API in both the 'Release' and 'Debug' modes.

Read the Full Changelog Here.

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi over 2 years ago

AgML - AgML 0.4.5

This feature adds a couple of new features as well as bugfixes for the existing API.

Main Changes

  • You can now use image classification models (agml.models.ClassificationModel) as image regression models by passing regression = True upon instantiation. This drops the final argmax computation and returns the softmax regression values.
  • Pass a custom set of RGB values to agml.viz.set_colormap to use a custom colormap.
  • A new preprocessing function has been added to agml.models.preprocessing: agml.models.preprocessing.imagenet_preprocess, which prepares images for input to an ImageNet-backend model (image classification, semantic segmentation).

Bugfixes

  • The MeanAveragePrecision metric has been fixed, and no longer throws errors for empty predictions (or for early-stage training results).
  • Custom object detection datasets can now be auto-loaded and classes automatically inferred without throwing an error.

Read the Full Changelog Here.

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi over 2 years ago

AgML - AgML 0.4.4

This release introduces a number of updates and bugfixes.

Main Changes

agml.synthetic

  • Helios compilation has now been optimized, meaning that canopy generation speed should be increased by 3 to 5 times.
  • When using HeliosOptions.camera.generate_positions(), camera views are no longer angled by default.

agml.models

  • The agml.models.ClassificationModel is now initialized with num_classes, rather than a dataset name.
  • For the agml.models.SegmentationModel.predict() method, a new argument, overlay, has been added, which allows the resulting segmentation mask to be overlaid or displayed side-by-side.

agml.viz

  • A new method has been added, agml.viz.convert_figure_to_image(), which converts the in-built Matplotlib figure when using agml.viz methods into an image array.

Read the Full Changelog Here.

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi over 2 years ago

AgML - AgML 0.4.3

This release contains additional bugfixes for Helios installation and compilation.

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi over 2 years ago

AgML - AgML 0.4.2

This release fixes installation problems when installing Helios.

Bugfixes

  • Helios will now auto-install when running any configuration or compilation methods, rather than throwing an installation error.
  • The installation script which fetches Helios is now correctly included with the package.

Note: AgML v0.4.1 contains a partial fix of these errors, so please use this version instead. This GitHub release collapses v0.4.1 and v0.4.2 into a single release.

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi over 2 years ago

AgML - AgML 0.4.0

This is the first release in the AgML v0.4.x cycle, introducing the agml.synthetic module backed by the Helios API (https://baileylab.ucdavis.edu/software/helios/) for generating synthetic agricultural data.

API Changes

agml.synthetic

  • Introduction of the agml.synthetic module.
  • Generate data using the agml.synthetic.HeliosDataGenerator.
    • Customize generated data, including task, environment, and canopy parameters, using agml.synthetic.HeliosOptions.
    • Convert data between the Helios and AgML formats automatically upon generation.
  • Customize the compilation of Helios using agml.synthetic.recompile_helios.
  • Get default parameters and information using agml.synthetic.available_canopies() and agml.synthetic.default_canopy_parameters().

agml.data

  • Load Helios-generated synthetic datasets using agml.data.AgMLDataLoader.helios().

agml.viz

  • Added new inspection methods for synthetic data:
    • agml.viz.plot_synthetic_camera_positions creates a 3D plot from camera position and lookat vectors, to understand the geometry of the environment.
    • agml.viz.vizualize_all_views plots all of the views for a specific generated canopy.

agml.backend

  • Similar to the methods for public datasets and models, synthetic datasets can be generated to a specific path by using agml.backend.set_synthetic_save_path(), and retrieved using agml.backend.synthetic_save_path().

Read The Full Changelog Here

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi over 2 years ago

AgML - AgML 0.3.0

This is the first release in AgML v0.3.x cycle, introducing the agml.models module.

API Changes

agml.models

  • Introduction of the agml.models module. To load the module, include an import agml.models statement after the standard import agml.
  • Construct inference models for the following tasks:
    • image classification: agml.models.ClassificationModel (using an EfficientNetB4 model)
    • semantic segmentation: agml.models.SegmentationModel (using a DeepLabV3 model)
    • object detection: agml.models.DetectionModel (using an EfficientDetD4 model)
  • Use model.predict on an input data sample to get the prediction results, or use model.show_prediction to visualize the prediction for semantic segmentation and object detection datasets.
  • Use model.preprocess_input to format inputs in the required format for each model.
  • Load a pretrained benchmark for an AgML public dataset using model.load_benchmark.
    • Currently available for semantic segmentation and object detection.
    • Print information about the benchmark metric and training parameter using the model.benchmark property.
  • Evaluate a model using standard metrics using model.evaluate() with an AgMLDataLoader
  • Standard metric containers using the agml.models.metrics module: currently with Accuracy for image classification and MeanAveragePrecision for object detection.
  • Preprocessing pipelines using agml.models.preprocessing: currently with EfficientDetPreprocessor for object detection models.
  • Standard loss functions with agml.models.losses: currently with DiceLoss for semantic segmentation.

agml.data

  • Load multiple datasets into a single AgMLDataLoader using the new Sequence API: agml.data.AgMLDataLoader([<d1>, <d2>]).
  • Load custom datasets into an AgMLDataLoader using agml.data.AgMLDataLoader.custom(<d>).
  • Merge two loaders into a single AgMLDataLoader using agml.data.AgMLDataLoader.merge(<l1>, <l2>).
  • Copy the state of another AgMLDataLoader using agml.data.AgMLDataLoader.copy_state(<d>). This copies the states of the internal managers, so the original loader will get the transforms, resizing, and training mode of the copied loader.
  • New Dataset Reduction Methods:
    • Use loader.take_random to select a random number of data samples from the loader and return a new loader with this reduced number of samples.
    • Use loader.take_class on a multi-dataset object detection AgMLDataLoader to return a reduced loader containing all samples belonging to the specific class (or multiple classes).
    • Use loader.take_dataset on a multi-dataset AgMLDataLoader to return one of the individual loaders in the collection.
  • Preprocessing Changes:
    • Select a custom method for image resizing using the method keyword argument in AgMLDataLoader.resize_images().
    • You can update whether the loader should be auto-shuffled internally through the shuffle_data property (set to True or False).
    • Semantic segmentation loaders now have an option loader.mask_to_channel_basis (the parallel of loader.labels_to_one_hot for image classification), which converts one-channel masks to multi-channel masks with each channel representing a binary mask for a class.
    • For multi-dataset object detection loaders, the loader.generalize_class_detections method generalizes all classes, thus resulting in the loader having only one-class (useful for localization-intensive tasks).
    • The agml.data.convert_bbox_format method now allows you to pass string formats, e.g., pascal-voc or efficientdet: these get auto-expanded to the full bounding box format in the method itself.

agml.backend

  • Similar to the method for datasets, models can now be saved to a specific path using agml.backend.set_model_save_path() and this path can be retrieved using agml.backend.model_save_path().
  • A new agml.backend.experimental module has been added for experimental features.
    • Currently, the first experimental feature is splitting already-split loaders, with agml.backend.experimental.allow_nested_data_splitting().

agml.viz

  • New methods have been introduced which allow visualization of real and predicted samples:
    • Visualize real and predicted bounding boxes with agml.viz.visualize_real_and_predicted_boxes.
    • Visualize an image with multiple sets of bounding boxes using agml.viz.visualize_image_and_many_boxes.
    • Visualize a real and predicted semantic segmentation mask with agml.viz.visualize_image_mask_and_predicted.

Behavior Changes

  • The AgMLDataLoader now has a set of new properties (num_images, num_classes, etc). These are similar to the properties loader.info.num_images, loader.images.num_classes, etc., however, the properties directly on the loader reflect any changes applied to reduction methods.
    • For instance, if you call loader.split(), then the reduced loader.train_data loader will have a reduced number of loader.num_images, while loader.info.num_images will continue to reflect the total number of images for the original dataset.
  • Dataset transforms are now tracked by their time of insertion; if you call loader.transform() twice, the transforms which are passed in the first call will be applied before those in the second call.
  • Any methods which use random operations (such as loader.take_random) now have an optional random_state keyword argument, which can be passed to control the random seed used for that method only.
  • All transformation methods now have an optional argument add which allows them to be disabled.
  • When converting an AgMLDataLoader into training mode, it now disables the auto mode so that no inadvertent resizing is done unless the user explicitly requests it.
  • In all agml.viz methods, image arrays are auto-converted to 8-bit unsigned integer format before display. Additionally, the format_image method now takes an additional argument mask for preprocessing masks.
  • Array check methods now check for NumPy arrays and lists, before PyTorch tensors, before finally TensorFlow tensors: this prevents having to load in the full API for PyTorch/TensorFlow modules when unnecessary.

Other Bugfixes

  • Bounding boxes for object datasets are now clipped at [0, image_size) on loading.
  • Exporting COCO datasets from a split AgMLDataLoader now returns the correct, reduced COCO JSON dictionary, rather than the entire dataset's COCO JSON.
  • Copying a loader or splitting it will now update all internal states; previously there was a chance the TrainingManager would have different resize/transform managers than the upper-level DataManager.
  • You can now download a list of datasets using agml.data.download_public_dataset.
  • When visualizing semantic segmentation masks with no class labels (e.g., a prediction with only zeros), now only the original image is displayed, rather than throwing an error.
  • An error with namedtuples in local scopes which prevented AgMLMetadata from being serialized has been resolved.

Read the Full Changelog Here.

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi over 2 years ago

AgML - AgML 0.2.9

This release fixes a small breaking change, updating the AWS download URL for datasets.

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi over 2 years ago

AgML - AgML 0.2.8

This release introduces three new semantic segmentation datasets:

  1. peachpear_flower_segmentation
  2. red_grapes_and_leaves_segmentation
  3. white_grapes_and_leaves_segmentation

Read the Full Changelog Here.

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi almost 3 years ago

AgML - AgML 0.2.7

This release introduces two new object detection datasets: plant_doc_detection and wheat_head_counting.

In addition, a number of fixes have been made to existing datasets:

  • plant_doc_classification: Class names have been updated.
  • fruit_detection_worldwide: Class indexing has been redone from 1 instead of 0 (to fit the object detection standard).
  • apple_detection_usa: There was an issue where multiple images had the same ID, this has been fixed so each image has a unique ID.
  • rice_seedling_segmentation: Removed the redundant background class and re-indexed from 1.

Read the Full Changelog Here.

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi about 3 years ago

AgML - AgML 0.2.6

This is a bugfix-oriented release. The biggest new change is the removal of the cotton_seedling_counting dataset.

Bugfixes

  1. Fixed an issue regarding splitting datasets using proportions (float values).
  2. Updated the number of images in plant_seedlings_aarhus to reflect the actual count.
  3. Updated the error message displayed when accessing nonexistent metadata.

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi about 3 years ago

AgML - AgML 0.2.5

This release adds three new datasets:

  • Object Detection: apple_detection_drone_brazil and apple_detection_spain.
  • Image Classification: guava_disease_pakistan.

It also fixes a bug which was preventing data serialization and splitting.

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi about 3 years ago

AgML - AgML 0.2.4

This release adds three new object detection datasets: grape_detection_syntheticday, grape_detection_californiaday, and grape_detection_californianight, as well as general bugfixes.

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi over 3 years ago

AgML - AgML 0.2.3

This release adds a new dataset, autonomous_greenhouse_regression, as well as general support for image regression datasets.

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi over 3 years ago

AgML - AgML 0.2.2

This release provides some small updates and bugfixes.

Changes

agml.data

  • Added calculated mean and standard deviation for all public datasets.
  • Added a new normalize_images() method for the AgMLDataLoader which automatically scales images to the 0-1 range and applies normalization.
  • Updated data splitting and fixed a number of bugs including creating copies of the original managers, correctly instantiating new DataObjects, and applying batching.

agml.backend

  • Updated an instantiation bug which sometimes occurred when newly installing the module and generating the config.json.

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi over 3 years ago

AgML - AgML 0.2.1

This release reworks the AgMLDataLoader internals and updates its compatibility with TensorFlow/PyTorch training pipelines.

Changes

agml.data

  • Reworks the AgMLDataLoader architecture, removing the task-type-based subclasses and adding internal data management classes.
  • The batch, split, and shuffle methods can be used to perform different operations on the data within the AgMLDataLoader itself.
  • The transform and resize_images methods can be used to apply transforms to the data or resize the images to a specific size (or auto-resize the images smartly).
    • The new method labels_to_one_hot convert labels to one-hot-vectors for image classification tasks.
  • The as_keras_sequence and as_torch_dataset methods (alongside the reset_preprocessing, disable_preprocessing, and eval methods) enable the AgMLDataLoader to be used for training and evaluation modes independently, and directly in TensorFlow/PyTorch pipelines.
  • The export_contents method exports the raw data mapping for the user to use outside of agml.
  • The export_torch and export_tensorflow methods convert the loader to a torch.utils.data.DataLoader or tf.data.Dataset, respectively.

agml.backend

  • Added the capability to set a global path to save datasets, using agml.backend.set_data_save_path. Once run, this will change the path all datasets are downloaded to until it is either reset or changed back.

agml.viz

  • Bugfixes and improved visualization for different types of input images (both normalized and unnormalized).

Consumption - Agriculture and Nutrition - Python
Published by amogh7joshi over 3 years ago