Skip to content

Commit ecb325b

Browse files
Release of PULP-Dronet-v3 and Tiny-PULP-Dronet-v3 (#26)
* added tiny-pulp-dronet-v3 * added nemo * added dory * added pre-trained weights * added onnx files * added drone applications * added dataset visualizer * added dataset collection framework * added external modules * update README.md * update tiny-pulp-dronet-v3/README.md * update LICENSE * update LICENSE_README.md * added dataset to README * added gifs to README * added images to imgs/ * tested all python scripts and c applications * added conda envs --------- Co-authored-by: Lorenzo Lamberti <[email protected]>
1 parent 011c5de commit ecb325b

File tree

244 files changed

+34386
-296
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

244 files changed

+34386
-296
lines changed

.gitignore

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
# my folders
2+
*checkpoints/
3+
*nemo_output/
4+
*bin/
5+
runs/
6+
logs/
7+
tiny-pulp-dronet-v3/dataset/
8+
tiny-pulp-dronet-v3/training/
9+
10+
# Byte-compiled / optimized / DLL files
11+
__pycache__/
12+
*.py[cod]
13+
*$py.class
14+
15+
# C extensions
16+
*.so
17+
18+
# Distribution / packaging
19+
.Python
20+
build/
21+
develop-eggs/
22+
dist/
23+
downloads/
24+
eggs/
25+
.eggs/
26+
lib/
27+
lib64/
28+
parts/
29+
sdist/
30+
var/
31+
wheels/
32+
*.egg-info/
33+
.installed.cfg
34+
*.egg
35+
MANIFEST
36+
37+
# PyInstaller
38+
# Usually these files are written by a python script from a template
39+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
40+
*.manifest
41+
*.spec
42+
43+
# Installer logs
44+
pip-log.txt
45+
pip-delete-this-directory.txt
46+
47+
# Unit test / coverage reports
48+
htmlcov/
49+
.tox/
50+
.coverage
51+
.coverage.*
52+
.cache
53+
nosetests.xml
54+
coverage.xml
55+
*.cover
56+
.hypothesis/
57+
.pytest_cache/
58+
59+
# Translations
60+
*.mo
61+
*.pot
62+
63+
# Django stuff:
64+
*.log
65+
local_settings.py
66+
db.sqlite3
67+
68+
# Flask stuff:
69+
instance/
70+
.webassets-cache
71+
72+
# Scrapy stuff:
73+
.scrapy
74+
75+
# Sphinx documentation
76+
docs/_build/
77+
78+
# PyBuilder
79+
target/
80+
81+
# Jupyter Notebook
82+
.ipynb_checkpoints
83+
84+
# pyenv
85+
.python-version
86+
87+
# celery beat schedule file
88+
celerybeat-schedule
89+
90+
# SageMath parsed files
91+
*.sage.py
92+
93+
# Environments
94+
.env
95+
.venv
96+
env/
97+
venv/
98+
ENV/
99+
env.bak/
100+
venv.bak/
101+
102+
# Spyder project settings
103+
.spyderproject
104+
.spyproject
105+
106+
# Rope project settings
107+
.ropeproject
108+
109+
# mkdocs documentation
110+
/site
111+
112+
# mypy
113+
.mypy_cache/

.gitmodules

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,15 @@
1010
[submodule "src/autotiler"]
1111
path = pulp-dronet-v1/src/autotiler
1212
url = https://github.com/pulp-platform/autotiler.git
13+
[submodule "tiny-pulp-dronet-v3/nemo-dory/nemo"]
14+
path = tiny-pulp-dronet-v3/nemo-dory/nemo
15+
url = [email protected]:LorenzoLamberti94/nemo.git
16+
[submodule "tiny-pulp-dronet-v3/nemo-dory/dory"]
17+
path = tiny-pulp-dronet-v3/nemo-dory/dory
18+
url = [email protected]:LorenzoLamberti94/dory_dronet.git
19+
[submodule "dataset_collection_framework/crazyflie_firmware_patches/crazyflie-firmware-modified-dataset"]
20+
path = dataset_collection_framework/crazyflie_firmware_patches/crazyflie-firmware-modified-dataset
21+
url = [email protected]:LorenzoLamberti94/crazyflie-firmware-modified-dataset.git
22+
[submodule "tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/viewer-pulp-dronet"]
23+
path = tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/viewer-pulp-dronet
24+
url = https://github.com/LorenzoLamberti94/viewer-pulp-dronet
File renamed without changes.

LICENSE_README.md

Lines changed: 250 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,250 @@
1+
# LICENSE README
2+
this file describes the license of all the files in this repository, and the license of any external module
3+
4+
5+
## PULP-Dronet v1
6+
The project's structure is the following:
7+
8+
```
9+
├── pulp-dronet-v1/
10+
│ ├── bin/
11+
│ │ ├── PULPDroNet_GAPuino
12+
│ │ ├── PULPDroNet_PULPShield
13+
│ ├── dataset/
14+
│ │ ├── Himax_Dataset/
15+
│ │ ├── Udacity_Dataset/
16+
│ │ ├── Zurich_Bicycle_Dataset/
17+
│ ├── imgs/
18+
│ │ ├── PULP_dataset.png
19+
│ │ ├── PULP_drone.png
20+
│ │ ├── PULP_proto.png
21+
│ │ ├── PULP_setup.png
22+
│ ├── PULP-Shield/
23+
│ │ ├── GAP8/
24+
│ │ ├── jtag-convboard/
25+
│ ├── src/
26+
│ │ ├── autotiler/
27+
│ │ ├── config.h
28+
│ │ ├── config.ini
29+
│ │ ├── PULPDronet.c
30+
│ │ ├── PULPDronetGenerator.c
31+
│ │ ├── PULPDronetKernels.c
32+
│ │ ├── PULPDronetKernels.h
33+
│ │ ├── PULPDronetKernelsInit.c
34+
│ │ ├── PULPDronetKernelsInit.h
35+
│ │ ├── Makefile
36+
│ │ ├── run_dataset.sh
37+
│ ├── weights/
38+
│ │ ├── binary/
39+
│ │ ├── WeightsPULPDroNet.raw
40+
│ ├── LICENSE.apache.md
41+
│ ├── LICENSE_README.md
42+
│ ├── README.md
43+
```
44+
45+
All the folders, sub-folders and files in this project except for the content of the following two folders:
46+
47+
* `pulp-dronet-v1/dataset/Udacity_Dataset`
48+
* `pulp-dronet-v1/dataset/Zurich_Bicycle_Dataset`
49+
50+
are released open-source with the Apache 2.0 license.
51+
A copy of the Apache 2.0 license is included in `pulp-dronet/LICENSE.apache.md` and in `pulp-dronet-v1/dataset/Himax_Dataset/LICENSE.apache.md`.
52+
53+
All the files in `pulp-dronet-v1/dataset/Udacity_Dataset` and `pulp-dronet-v1/dataset/Zurich_Bicycle_Dataset` are released with the MIT License included in the same folder as `LICENSE.mit.md`.
54+
55+
## PULP-Dronet v2
56+
The project's structure is the following:
57+
58+
The project's structure is the following:
59+
60+
```
61+
.
62+
└── pulp-dronet-v2/
63+
├── dataset/
64+
│ ├── fine_tuning/
65+
│ ├── himax/
66+
│ ├── testing/
67+
│ ├── training/
68+
│ └── validation/
69+
├── gapflow/
70+
├── imgs/
71+
│ └── PULP_drone.png
72+
├── model/
73+
│ ├── dronet_v2_gapflow.py
74+
│ ├── dronet_v2_nemo_dory.py
75+
│ ├── dronet_v2_gapflow_original.pth
76+
│ ├── dronet_v2_gapflow_original_himax.pth
77+
│ ├── dronet_v2_nemo_dory_original.pth
78+
│ └── dronet_v2_nemo_dory_original_himax.pth
79+
├── nemo-dory/
80+
│ └── quantize.py
81+
├── conda_deps.yml
82+
├── config.py
83+
├── evaluation.py
84+
├── testing.py
85+
├── training.py
86+
├── utility.py
87+
├── LICENSE
88+
└── README.md
89+
```
90+
All the folders, sub-folders and files in this project are released open-source with the Apache 2.0 license.
91+
92+
A copy of the Apache 2.0 license is included in `pulp-dronet/LICENSE`.
93+
94+
95+
96+
## Tiny-PULP-Dronet v3
97+
98+
The project's structure is the following:
99+
100+
```
101+
.
102+
└── tiny-pulp-dronet-v3/
103+
├── dataset/ # directory where you must put the PULP-Dronet v3 dataset
104+
│   ├── training/ # put here the training dataset, dowloaded from Zenodo
105+
│   └── testing/ # put here the testing dataset, dowloaded from Zenodo
106+
├── drone-applications/ # code running on the Bitcraze Crazyflie 2.1 nano-drone and the GAP8 SoC
107+
│   ├── crazyflie-dronet-app/ # Crazyflie STM32 code (flight controller)
108+
│   │   ├── inc/ ...
109+
│   │   ├── src/ ...
110+
│   │   └── Makefile
111+
| ├── external/
112+
| | └── crazyflie-firmware # use tag 2022.01
113+
│   └── gap8-dronet-app/ # AI-Deck GAP8 code (CNN processing + camera). Use gap-sdk 3.9.1
114+
│      ├── pulp-dronet-v3/ # main running pulp-dronet v3 (19fps, 320kB)
115+
│      │   ├── DORY_network/
116+
│      │   │   ├── inc/ ...
117+
│      │   │   └── src/ ...
118+
│      │   └── Makefile
119+
│      ├── tiny-pulp-dronet-v3/ # main running tiny-pulp-dronet v3 (139fps, 2.9kB)
120+
│      │   ├── DORY_network/
121+
│      | │   ├── inc/ ...
122+
│      | │   └── src/ ...
123+
│      | └── Makefile
124+
| └── viewer-pulp-dronet/
125+
| └── viewer_custom.py
126+
├── imgs/ # images for readme
127+
├── model/
128+
│   ├── dronet_v3.py # pytorch definition of the PULP-Dronet v3 CNN.
129+
│   ├── pulp-dronet-v3-resblock-1.0.pth # pre-trained pytorch model of PULP-Dronet v3
130+
│   └── tiny-pulp-dronet-v3-dw-pw-0.125.pth # pre-trained pytorch model of Tiny-PULP-Dronet v3
131+
├── nemo-dory/
132+
│   ├── nemo/ # external: NEMO tool for quantization of CNNs
133+
│   └── dory_dronet/ # external: DORY tool for deployment of CNNs on MCUs
134+
├── training/ # directory where all training checkpoints, logs, and tensorboard files are saved.
135+
├── classes.py # class definitions used in the project.
136+
├── conda_deps.yml # conda environment file.
137+
├── config.py # default args for .py files.
138+
├── README.md
139+
├── testing.py # Test a pre-trained model on the testing set in pytorch
140+
├── training.py # training and validation of a PULP-Dronet v3 CNN.
141+
└── utility.py # utility for python scripts: dataset loader, loss functions, checkpoint loading
142+
```
143+
144+
All the folders, sub-folders and files in this project are released open-source with the Apache 2.0 license.
145+
146+
A copy of the Apache 2.0 license is included in `pulp-dronet/LICENSE`.
147+
148+
External modules, which can be downloaded from external github repositories, are released under different licenses:
149+
* `pulp-dronet/tiny-pulp-dronet-v3/drone-applications/external/crazyflie-firmware` is released under GNU General Public License v3.0
150+
* `pulp-dronet/tiny-pulp-dronet-v3/drone-applications/gap8-dronet-app/viewer-pulp-dronet` is released under GNU General Public License v3.0
151+
152+
153+
## PULP-Dronet v3 Dataset
154+
155+
We release the dataset ([zenodo.org/records/13348430](https://zenodo.org/records/13348430)) as open source under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
156+
157+
158+
## Dataset collector framework
159+
160+
The project's structure is the following:
161+
162+
```
163+
dataset_collection_framework
164+
├── conda_deps.yml
165+
├── crazyflie_firmware_patches/
166+
│ ├── crazyflie-firmware-modified-dataset/
167+
│ └── dataset_collection_app/
168+
│ ├── current_platform.mk
169+
│ ├── datasetcollector.c
170+
│ ├── datasetcollector.h
171+
│ └── Makefile
172+
├── dataset_collector_python/
173+
│ ├── control_config.json
174+
│ ├── CrazyflieCameraStreamer.py
175+
│ ├── CrazyflieCommunicator.py
176+
│ ├── CrazyflieController.py
177+
│ ├── datasetcollector_main.py
178+
│ ├── DatasetLogger.py
179+
│ ├── dataset_tools/
180+
│ │ ├── count_images_dataset.sh
181+
│ │ ├── dataset_partitioning.py
182+
│ │ ├── dataset_post_processing.py
183+
│ │ ├── image_viewer_cv.py
184+
│ │ ├── image_viewer.py
185+
│ │ ├── save_all_videos.sh
186+
│ │ └── UI/
187+
│ │ ├── create_ui_python_code.sh*
188+
│ │ ├── imageViewer.ui
189+
│ │ └── imageViewerUI.py
190+
│ ├── default_config.json
191+
│ ├── draw_binary_digits.py
192+
│ ├── ds_logger.py
193+
│ ├── logger_app.py
194+
│ └── UI/
195+
│ ├── controlConfigDialog.py
196+
│ ├── controlConfigDialog.ui
197+
│ ├── coordinate_system.jpg
198+
│ ├── create_ui_python_code.sh*
199+
│ ├── datasetcollector.ui
200+
│ ├── datasetcollector_ui.py
201+
│ ├── logConfigDialog.py
202+
│ └── logConfigDialog.ui
203+
├── external/
204+
├── GAP8_streamer/
205+
│ ├── inc/
206+
│ │ └── frame_streamer.h
207+
│ └── wifi_jpeg_streamer/
208+
│ ├── config.ini
209+
│ ├── Makefile
210+
│ └── wifi_frame_streamer.c
211+
├── gap_sdk_setup.md
212+
├── images/
213+
└── README.md
214+
```
215+
216+
217+
All the folders, sub-folders and files in this project are released open-source with the Apache 2.0 license.
218+
219+
A copy of the Apache 2.0 license is included in `pulp-dronet/LICENSE`.
220+
221+
External modules, which can be downloaded from external github repositories, are released under different licenses:
222+
* `/pulp-dronet/dataset_collection_framework/crazyflie_firmware_patches/crazyflie-firmware-modified-dataset` is released under GNU General Public License v3.0
223+
* `/pulp-dronet/dataset_collection_framework/external/crazyflie-firmware` is released under GNU General Public License v3.0.
224+
225+
## Dataset visualizer
226+
227+
The project's structure is the following:
228+
229+
```
230+
dataset_visualizer
231+
├── dataset_visualizer/
232+
│ ├── acquisition_visualizer.py
233+
│ ├── classes.py
234+
│ ├── dataset_partitioning.py
235+
│ ├── dataset_post_processing.py
236+
│ ├── image_visualizer.py
237+
│ ├── main.py
238+
│ ├── metadata_visualizer.py
239+
│ ├── plot_statistics.py
240+
│ ├── stats_config.json
241+
│ └── video.py
242+
├── imgs/
243+
│ ├── dataset_visualizer_grid_view.png
244+
│ └── dataset_visualizer.png
245+
├── README.md
246+
└── setup.py
247+
```
248+
249+
All the folders, sub-folders and files in this project are released open-source with the Apache 2.0 license.
250+
A copy of the Apache 2.0 license is included in `pulp-dronet/LICENSE`.

0 commit comments

Comments
 (0)