IceVision: An Agnostic Object Detection Framework

We just released IceVision version 0.4.0. We now supports RetinaNet. We are sharing a Colab notebook that shows how to train a RetinaNet model using the fastai latest version.

RetinaNet shares some code similarities with Faster-RCNN: you can switch between the 2 models just by replacing faster_rcnn by retinanet. We also support all compatible backbones.

RetinaNet Notebook: https://airctic.com/retinanet/
Backbones for Faster-RCNN, Mask-RCNN, Retina: https://airctic.com/backbones_faster_mask_rcnn/

What is IceVision?

  • IceVision is an Object-Detection Framework that connects to different libraries/frameworks such as Fastai, Pytorch Lightning, and Pytorch with more to come.

  • Features a Unified Data API with out-of-the-box support for common annotation formats (COCO, VOC, etc.)

  • Supports EfficientDet (Ross Wightman’s implementation), Faster-RCNN, Mask-RCNN, and RetinaNet (Torchvision implementations)

  • Features unique to IceVision such as auto-detecting and auto-fixing of invalid data.

  • The IceData repo hosts community maintained parsers and custom datasets

  • Provides flexible model implementations with pluggable backbones

  • Helps researchers reproduce, replicate, and go beyond published models

  • Enables practitioners to get moving with object detection technology quickly

Documentation: https://airctic.com/

Repo: https://github.com/airctic/IceVision

If you have any questions, you can contact us here: https://discord.gg/JDBeZYK

14 Likes

Thanks a lot for this framework! It is I think this is the first object detection framework that includes all the benefits of fastai, so great work!

The good news: I tested the efficientdet notebook on a custom dataset I have, and it worked perfectly!

The bad news: I wasn’t able to make the FixedDataSplitter work. Do you have a working example that can be used in order to understand how to best use the FixedDataSplitters?

Thanks,
Sebastien

[EDIT] I finally managed to use it. I was trying to split according to the file names with extensions (file.png), whereas it seems like the library expects names without the extension (‘file’ instead of ‘file.png’). Still think having one or two examples there would be useful :slight_smile:.

3 Likes

Thanks a lot for the feedback @sebderhy, I’m happy to know you’re able to train efficientdet on your custom dataset.

We are working a lot on improving the documentation and will make sure to include some examples on how to use FixedDataSplitter. For now, just to clarify, what you have to pass to it is whatever you returning for imageid on your parser.

If you have more questions or would like to share your work with the community (we would love that) our discord forum would be a good place to do that =)

2 Likes

IceVision now supports Keypoints and beyond. Kudos to @FraPochetti who led the efforts to integrate the Keypoints in IceVision.

In IceVision, Keypoints are not hardcoded. We provide a KeyPoints class. User can instantiate any keypoints they like: from human to animals to objects, etc.!

We are very happy to rely on fastai v2 to train those beasts :dragon:

If you need any help, please let us know

Notebook (OCHuman DataSet): http://tinyurl.com/Ice-Keypoints
Help / Questions: http://discord.gg/JDBeZYK

5 Likes

@jerbly has kindly accepted to present us his end-to-end pipeline on how to:
Create a Game using IceVision and AzureML

Bonus: Getting familiar with both VGG Image Annotator and AzureML.

When: Saturday December 12th 11AM EST (4PM UTC)
Where: http://discord.gg/JDBeZYK

3 Likes

Today, I will be presenting: FCOS - Fully Convolutional One Stage Detector

Program

  • Introduction to Object Detection Architectures
  • FCOS
  • FCOS vs RetinaNet: Similarities & Differences
  • Code Exploration
  • Discussion

Feel free to join us

When: Tuesday Dec. 22nd 11AM EST (4PM UTC)
Where: http://discord.gg/JDBeZYK
:tv: Channel: # live-coding

4 Likes

We started posting our IceVision Presentations on our new YouTube channel. For those who missed one of them, here are the 2 first recorded ones:

My presentation about: FCOS - Fully Convolutional One Stage Detector

Rob Cole’s presentation about: Deploying Models using NVIDIA Jetson

More videos in the pipeline.

4 Likes

@lgvaz will present tomorrow:

:tada: IceVision Parser/Record New API :tada:

The foundation of a major IceVision new capability:

  • Multitask Training :rocket::rocket::rocket:

Feel free to join our active discussion about the new API and on how to concretely implement multitask training with some interesting use-cases.

When: Tuesday March 9th - 10:30AM EST (3:30PM UTC)
Where: http://discord.gg/JDBeZYK
:tv:Channel: # live-coding

4 Likes

Super Super excited to announce :tada:IceVision 0.7 :tada:

:white_check_mark: Multi-Task Training to efficiently combine object detection, segmentation, classification models
:white_check_mark: MMDetection, Torchvision, and EfficientDet Support
:white_check_mark: Data auto-fixing

To play with the Object Detection Colab notebook:

Github Repo: https://github.com/airctic/IceVision

Docs: http://airctic.com/ (more tutorials)

Please share far and wide, and help us to spread the word.

Huge Thank You

4 Likes

Hi Farid, thanks for all the awesome work.

But, I am not able to join discord channel.It always says invalid-invite…

So kindly, help me out with this…

Thanks…

@MuhammadAli Sorry for the late response. Please try this link: http://discord.gg/JDBeZYK

If it doesn’t work, let me know

To our fastai friends:

:loudspeaker: YOLOv5 is now supported in IceVision :loudspeaker:

You can train it with the awesome fastai library! We support the 4 models (small, medium, large, and xlarge). The results are really impressive in term of both speed and accuracy. @FraPochetti (who led our YOLOv5 integration project) was able to train YOLOv5s on cpu :fire:

If you have any questions, let us know.

Colab NB: http://tinyurl.com/ice-yolov5
Docs: http://airctic.com/
Forum: http://discord.gg/JDBeZYK

7 Likes

For those interested in Multi-Task datasets / models, here is a :movie_camera:Video Overview of a recent paper.

:newspaper:Paper: Multi-Task Self-Training (MuST) for Learning General Representations

1 Like

Hi Farid,

Thanks for working on Icevision. I just run getting_started_object_detection.ipynb. How can I export the model (onnx) to use it inference on Windows please.
I tried the following but got errors:

torch.onnx.export(
learn.model,
torch.randn(1, 3, 480, 480).cuda(),
“SortPattern.onnx”,
input_names=[“Classify”],
output_names=[“Defects”]
)
with open(“SortPattern_vocab.txt”, “w”) as f:
f.write("\n".join(list(learn.dls.vocab)))

TypeError: RetinaNet object argument after ** must be a mapping, not Tensor

Thanks again

Hi Farid,

Thanks for working on this library. Looks great!
I tried to use it and it, cannot get it installed, just the import line causes all sort of errors (importing from sahi, torch). I tried it in collab and my own Linux box.

Are there plans to update it?

Thanks,

Juan

It seems to be discontinued, unfortunately :frowning:

You could checkout Kornia Release v0.7.0 Image API, RT-DETR and Object Detection API, LightGlue Matcher, MobileSam, new Sensors API and many more ¡ kornia/kornia ¡ GitHub

1 Like

Hello,
I have a TBX11K data set of Chest X-Rays with COCO formatted annotations.
There is one big image directory with multiple subdirectories. Then there is one main JSON annotations directory with multiple annotation COCO files inside.

How would I use parser to set the annotation file path rather than directory since there is more than one annotation JSON COCO formatted file in that annotation directory? The parser constructor seems to assume there is only one annotation file per directory? I am confused.

Here is the TBX11K directory. I need to input the images and COCO annotations into the IceVision datasets and then train/test a detection model (e.g. faster RCNN with SWIN).

main dir: annotations
child dir: json
all_test.json
all_train.json
all_val.json
images dir: imgs
subdir1: all_test_train
subdir2: extra
subdir3: health
subdir4: sick
subdir5: tb

BTW - Can this all still work with new python 3.11 or higher?
Manuel Steele