All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
The following PRs have been merged since the last version.
ai-fast-track
- Updating mmcv installation to torch 1.10.0 (#972)
- Upgrade to torch 1.10 and torchvision 0.11 (#970)
- Pass both map_location, and logger to downstream methods (#968)
- Bumped torch and torchision versions (#961)
- Update CHANGELOG.md for Release 0.11.0 (#959)
- Adding an installation script for cuda and cpu (#956)
- fixed yaml issue in doc generation CI/CD (#952)
- Upgrade mk-docs-build.yml in the CI/CD (#951)
- Update mmcv to 1.3.14 and mmdet to 2.17.0 in CI/CD (#949)
- Update notebooks installation (#940)
- Fix Colab script (#938)
- Fixed Colab installation script (#937)
- Update installation to torch 1.9 and dependencies (#935)
- Inference - automatically recreate model trained with COCO (#929)
- Simplify save and load model checkpoints (#924)
- Update installation to torch 1.9 + dependencies (#919)
- Added MMDetection VFNet Support. (#906)
- Make MMDetection config object accessible to users (#904)
- Adding progressive resizing support (#902)
- Fix mmdet weights path issue (#900)
- add docker-compose instructions (#898)
- Added script for icevision inference installation (#893)
- Added kwargs and label_border_color to end2end_detect() (#891)
- Fix icevision installation in Colab (#887)
- added kwargs to the EfficientDet model() method (#883)
fstroth
- (WIP) Fix masks for instance segmentation (#967)
- (Refactor) Removed the coco function. (#964)
- (Feature) init coco and via parser with a dict instead of the filepath (#963)
- (Feature) Added way to output metrics for pytorchlightning during training (#960)
- Fix for CHANGLOG.md update script. (#958)
- Script for automatically updating CHANGELOG.md (#957)
- (Update) Updated code to run with albumentations version 1.0.3. (#927)
- Radiographic images (#912)
potipot
- Fix show pred (#930)
- Fix inference on rectangular efficientdet input (#910)
FraPochetti
jaeeolma
- Empty mask fix (#933)
bogdan-evtushenko
drscotthawley
lgvaz
- Unet3 (#907)
nicjac
Thank you to all contributers: @ai-fast-track, @fstroth, @potipot, @FraPochetti, @jaeeolma, @bogdan-evtushenko, @drscotthawley, @lgvaz, @nicjac
Unreleased - 0.10.0a1
- torch 1.9.0
- tochvision 0.10
- mmdet 2.16.0
- mmcv 1.3.14
- fastai 2.5.2
- pytorch-lightning 1.4.8
Unreleased - 0.9.0a1
- Low level parsing workflow with
RecordCollection - Semantic segmentation support with fastai
- Breaking: Refactored mask components workflow
- Breaking: Due to the new mask components refactor, autofix doesn't work for mask components anymore.
end2end_detect(): Run Object Detection inference (onlybboxes) on a single image, and return predicted boxes corresponding to original image size -Breaking: BaseLabelsRecordComponentas_dict()now returns bothlabelsand labels_ids.labelsare now strings instead of integers.
- Breaking: On
tfms.A.aug_tfmsparametersizeandpresizechanged from order (height, width) to (width, height) - Added
RecordCollection - Breaking: Changed how the resnet (not-fpn) backbone cut is done for torchvision models. Previous resnet torchvision trained models will have trouble loading weights.
Supports pytorch 1.8
iou_thresholdsparameter toCOCOMetricSimpleConfusionMatrixMetric- Negative samples support for mmdetection object detection models
- Breaking: Albumentations
aug_tfmsdefaults.- rotate_limit changed from 45 to 15
- rgb_shift_limit changed from 20 to 10
- VOC parser uses image sizes from annotation file instead of image
- bumps fastai to latest version (<2.4)
BREAKING: API Refactor
- Metrics for mmdetection models
- Breaking: Renamed tasks
default,detect,classiftocommon,detection,classification - Breaking: Renamed
imageidtorecord_id - Breaking: Added parameter
is_newtoParser.parse_fields - Removed all dependencies on
cv2for visualisation - Use new composite API for visualisation - covers user defined task names & multiple tasks
- Added a ton of visualisation goodies to
icevision.visualize.draw_data.draw_sample- user can now- use custom fonts
- control mask thickness
- control mask blending
- prettify labels -- show confidence score & capitalise label
- plot specific and/or exclude specific labels
- pass in a dictionary mapping labels to specific colors
- control label height & width padding from bbox edge
- add border around label for legibility (color is a parameter)
Breaking:: Rename labels->label_ids, labels_names->labels in LabelsRecordComponent
- Renamed torchvision resnet backbones:
- resnet_fpn.resnet18 -> resnet18_fpn
- resnest_fpn.resnest18 -> resnest18_fpn
Breaking: Added parameters sample and keep_image to convert_raw_prediction
Breaking: Renamed VocXmlParser to VOCBBoxParser and VocMaskParser to VOCMaskParser
Breaking: Renamed predict_dl to predict_from_dl
- mmdetection models
- Breaking: All
Parsersubclasses need to callsuper.__init__ - Breaking:
LabelsMixin.labelsnow needs to returnList[Hashable]instead ofList[int](labels names instead of label ids) - Breaking: Model namespace changes e.g.
faster_rcnn->models.torchvision.faster_rcnn,efficientdet->models.ross.efficientdet - Breaking: Renamed
ClassMap.get_name/get_idtoClassMap.get_by_name/get_by_id - Breaking: Removes
idmapargument fromParser.parse. Instead passidmapto the constructor (__init__). - ClassMap is not created inside of the parser, it's not required to instantiate it before
- class_map labels get automatically filled while parsing
- background for class_map is now always 0 (unless no background)
- adds
class_maptoRecord
aggregate_records_objectsfunction
- Added
label_fieldto VIA parser to allow for alternateregion_attributenames
- Keypoints full support: data API, model and training
- VGG Image Annotator v2 JSON format parser for bboxes
figsizeparameter toshow_recordandshow_sample
- improved visualisation for small bboxes
COCOMetricnow returns all metrics from pycocotools- makes torchvision models torchscriptable
- retinanet: model, dataloaders, predict, ...
- Breaking: models/rcnn renamed to models/torchvision_models
- tests/models/rcnn renamed to tests/models/torchvision_models
- pytorch 1.7 support, all dependencies updated
- tutorial with hard negative samples
- ability to skip record while parsing
- show_preds visual improvement
- Cache records after parsing with the new parameter
cache_filepathadded toParser.parse(#504) - Added
pretrained: bool = Trueargument to both faster_rcnn and mask_rcnnmodel()methods. (#516) - new class
EncodedRLEs - all masks get converted to
EncodedRLEsat parsing time
- Removed warning on autofixing masks
- RLE default counts is now COCO style
- renamed
Mask.to_erletoMask.to_erles
- updated matplotlib and ipykernel minimum version for colab compatibility
- Switched from poetry to setuptools
- Function
wandb_img_predsto help logging bboxes to wandb - wandb as a soft dependency
- Template code for
parsers.SizeMixinifparsers.FilepathMixinis used - Get image size without opening image with
get_image_size - Ability to skip record while parsing with
AbortParseRecord - Autofix for record:
autofix_recordsfunction andautofix:boolparameter added toParser.parse - Record class and mixins,
create_mixed_recordfunction to help creating Records - InvalidDataError for BBox
- Catches InvalidDataError while parsing data
- Breaking: Unified
parsers.SizeMixinfunctionsimage_widthandimage_heightinto a single functionimage_width_height - Rename Parser
SizeMixinfields fromwidthheighttoimage_widthimage_height
- Removed
CombinedParser, all parsing can be done with the standardParser
- Efficientdet now support empty annotations
- Returns float instead of dict on
FastaiMetricAdapter
- Updates fastai2 to the final release version
- soft import
icedatainicevision.all show_pbarparameter toCOCOMetric
- Effdet as direct dependency
show_resultsfunction for each model
- Default
data_splitterfor Parser changed toRandomSplitter - Renamed package from
mantisshrimptoicevision
- Removed
datasetsmodule to instead use the newicedatapackage
batch, samples = <model_name>.build_infer_batch(dataset)preds = <model_name>.predict(model, batch)infer_dl = <model_name>.infer_dataloader(dataset)samples, preds = predict_dl(model, infer_dl)Dataset.from_imagesContructs aDatasetfrom a list of images (numpy arrays)tfms.A.aug_tfmsfor easy access to common augmentation transforms with albumentationstfms.A.resize_and_pad, useful as a validation transform**predict_kwargstopredict_dlsignaturefrom mantisshrimp.all import *to import internal modules and external importsshowparameter toshow_imgdownload_gdriveanddownload_and_extract_gdrive- New datasets
pennfundanandbirds
- Renames
AlbuTransformtoAlbumentationTransforms - All
build_batchmethod now returnsbatch, samples, the batch is always a tuple of inputs to the model batch_tfmsmoved totfms.batchAlbumentationTransformsmoved totfms.A.Adapter- All parsers function were moved to their own namespace
parsersinstead of being on the global namespace so, for example, instead ofParsernow we have to doparsers.Parser - Removed
Parserword from Mixins, e.g.ImageidParserMixin->parsers.ImageidMixin - Removed
Parserword from parser default bundle, e.g.FasterRCNNParser->parsers.FasterRCNN - COCO and VOC parsers moved from
datasetstoparsers DataSplitters moved fromparsers/splits.pytoutils/data_splitter.py- Renames
*_dataloaderto*_dl, e.g.mask_rcnn.train_dataloadertomask_rcnn.train_dl - Moves
RecordTypefromparserstocore - Refactors
IDMap, adds methodsget_nameandget_id - Moves
IDMapfromutilstodata DataSplitter.splitnow receivesidmapinstead ofids
CaptureStdoutfor capturing writes to stdout (print), e.g. from COCOMetricmantisshrimp.models.<model_name>.convert_raw_predictionsto convert raw preds (tensors output from the model) to library standard dictCOCOMetricTypefor selecting what metric type to use (bbox,mask,keypoints)COCOMetricfixedsortparameter forget_image_filesClassMap: A class that handles the mapping between ids and names, with the optional insertion of the background class
- All dataloaders now return the batch and the records, e.g.
return (images, targets), records Metric.accumulatesignature changed to(records, preds), reflects inFastaiMetricAdapterandLightningModelAdapterdatasets.<name>.CLASSESsubstituted by a functiondatasets.<name>.class_mapthat returns aClassMapdatasets.voc.VocXmlParser,showmethods: parameterclasses: Sequence[str]substituted byclass_map: ClassMapdatasets.fridge.parser,datasets.pets.parser: additional required parameterclass_map
MantisFasterRCNN,MantisMaskRCNNMantisEfficientDetCategoryMap,CategoryMantisModule