Git Product home page Git Product logo

perceptreev1's Introduction

PercepTreeV1

Official code repository for the papers:

DINO illustration
DINO illustration

Datasets

All our datasets are made available to increase the adoption of deep learning for many precision forestry problems.

Dataset name Description Download
SynthTree43k A dataset containing 43 000 synthetic images and over 190 000 annotated trees. Includes images, train, test, and validation splits. (84.6 GB) S3 storage
SynthTree43k Depth images. OneDrive
CanaTree100 A dataset containing 100 real images and over 920 annotated trees collected in Canadian forests. Includes images, train, test, and validation splits for all five folds. OneDrive

The annotations files are already included in the download link, but some users requested the annotations for entire trees: train_RGB_entire_tree.json, val_RGB_entire_tree.json, test_RGB_entire_tree.json. Beware that it can result in worse detection performance (in my experience), but maybe there is something to do with models not based on RPN (square ROIs), such as Mask2Former.

Pre-trained models

Pre-trained models weights are compatible with Detectron2 config files. All models are trained on our synthetic dataset SynthTree43k. We provide a demo file to try it out.

Mask R-CNN trained on synthetic images (SynthTree43k)

Backbone Modality box AP50 mask AP50 Download
R-50-FPN RGB 87.74 69.36 model
R-101-FPN RGB 88.51 70.53 model
X-101-FPN RGB 88.91 71.07 model
R-50-FPN Depth 89.67 70.66 model
R-101-FPN Depth 89.89 71.65 model
X-101-FPN Depth 87.41 68.19 model

Mask R-CNN finetuned on real images (CanaTree100)

Backbone Description Download
X-101-FPN Trained on fold 01, good for inference. model

Demos

Once you have a working Detectron2 and OpenCV installation, running the demo is easy.

Demo on a single image

  • Download the pre-trained model weight and save it in the /output folder (of your local PercepTreeV1 repos). -Open demo_single_frame.py and uncomment the model config corresponding to pre-trained model weights you downloaded previously, comment the others. Default is X-101. Set the model_name to the same name as your downloaded model ex.: 'X-101_RGB_60k.pth'
  • In demo_single_frame.py, specify path to the image you want to try it on by setting the image_path variable.

Demo on video

  • Download the pre-trained model weight and save it in the /output folder (of your local PercepTreeV1 repos). -Open demo_video.py and uncomment the model config corresponding to pre-trained model weights you downloaded previously, comment the others. Default is X-101.
  • In demo_video.py, specify path to the video you want to try it on by setting the video_path variable.
DINO illustration

Bibtex

If you find our work helpful for your research, please consider citing the following BibTeX entry.

@article{grondin2022tree,
    author = {Grondin, Vincent and Fortin, Jean-Michel and Pomerleau, François and Giguère, Philippe},
    title = {Tree detection and diameter estimation based on deep learning},
    journal = {Forestry: An International Journal of Forest Research},
    year = {2022},
    month = {10},
}

@inproceedings{grondin2022training,
  title={Training Deep Learning Algorithms on Synthetic Forest Images for Tree Detection},
  author={Grondin, Vincent and Pomerleau, Fran{\c{c}}ois and Gigu{\`e}re, Philippe},
  booktitle={ICRA 2022 Workshop in Innovation in Forestry Robotics: Research and Industry Adoption},
  year={2022}
}

perceptreev1's People

Contributors

charmingzh avatar vgrondin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

perceptreev1's Issues

CanaTree100 link broken

First, huge thanks for publishing all the data that you are using. I'm sure it will be very appreciated by lots of people around the world.

The link to the dataset CanaTree100 is broken. I'm getting the error message: Sorry, the link has expired.

diameter estimation

hello ,
I just wanted to know how can i get the diameter of the tree because when i run the demo files i only get the tree segmentation and the key points. However i would like to know how can i get also the diameter . Can anyone help please?

Link for CanaTree100 died

I received the notification that the link for CanaTree100 had expired. Please update the new link for CanaTree100 dataset

Integration with docker

Hello,

thank you very much for your work. Considering the complexity of the installation of the detectron2 package, do you plan to integrate your solution with docker to facilitate the execution of your project?

If not and I manage to do it, I can send you the information if needed,

Thank you,
Pierre

Diameter estimation

Hi,

The program works very good with the test data and my own, spectacular! I can't figure out how to transform the diameter in pixels to the real life diameter however. Could you help me with this? I have the pixels of every tree from every frame in an array now but i can't fix the tranformation.

Thanks in advance !

Greets,
Elias

requiremets.txt might help with potential user issues

Hi! I just started using you amazing tool for a university robotics project.

We as a team have already spend numerous days on trying to figure out the error the constantly get with any kind of json we are using

    return _mask.decode(rleObjs)
  File "pycocotools/_mask.pyx", line 145, in pycocotools._mask.decode
  File "pycocotools/_mask.pyx", line 127, in pycocotools._mask._frString
TypeError: list indices must be integers or slices, not str

which happens in the following line of code:

masks = [maskUtils.decode(ann['segmentation']) for ann in dataset_dict['annotations']].

We have also tried CanaTree100 dataset that you provided.

I would really appreciate your help since we want to upgrade your work and train it on jungle data.

CanaTree 100 link is dead

Hi,

Sorry to disturb again on this issue, but the link to CanaTree 100 is dead.
Is it possible to re-upload it ?

Thanks

Questions about penmanship and undefined variables in projects

Dear Author.

I was researching your project and found a small error. Specifically, I see a typo in the file train_synth_RGB.py and I would like to submit a pull request to fix it. I would appreciate it if you would accept my changes.

cfgMODEL.BACKBONE.FREEZE_AT = 2

Also, I have a question about an undefined variable. In the file train_synth_RGB.py, there is a variable that doesn't seem to be defined. I tried to find the documentation and source code, but I couldn't find any information about it. How should I use this variable? Or am I missing some key information?

cfg.merge_from_list(opts)

Thank you for your time and patience, and I look forward to hearing from you.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.