|
1 |
| -# dji-aerial-georeferencing |
| 1 | +# DJI Aerial Georeferencing with Computer Vision |
2 | 2 |
|
3 |
| -This project takes a video from a DJI Mavic Air 2, combined with its flight log, Mapbox, and a computer vision model trained on Roboflow to find solar panels and uses them to visualize and extract the GPS coordinates of the recognized panels. |
| 3 | +This project takes a video from a DJI Mavic Air 2, combined with its flight log, Mapbox, and a computer vision model trained on Roboflow to find solar panels. It converts the machine learning model's predictions to GPS coordinates and uses them to visualize the recognized panels on a map. |
4 | 4 |
|
5 | 5 | https://user-images.githubusercontent.com/870796/189461690-122f4e64-a66e-40f0-ac4b-68258a8abe7e.mov
|
6 | 6 |
|
| 7 | +## Try It in Your Browser |
| 8 | + |
| 9 | +The project is [deployed to Github Pages here](https://roboflow-ai.github.io/dji-aerial-georeferencing/) and you can test it out with [this sample video and flight log](https://drive.google.com/drive/folders/1m0lmYyLEQJiaykf821rYtyRvlO5Q_SAf). |
| 10 | + |
| 11 | +## Resources |
| 12 | + |
| 13 | +* A blog post about how this works is in progress; check back soon. |
| 14 | +* Try the [aerial solar panels pre-trained computer vision model](https://universe.roboflow.com/brad-dwyer/aerial-solar-panels/model/5) in your browser on [Roboflow Universe](https://universe.roboflow.com) |
| 15 | +* Browse other [Aerial Imagery Datasets and Pre-Trained Models](https://universe.roboflow.com/browse/aerial) |
| 16 | +* [Train Your Own Computer Vision Model](https://docs.roboflow.com/quick-start) to use with this repo |
| 17 | + |
| 18 | +## Run It Locally |
| 19 | + |
| 20 | +* Clone this repo |
| 21 | +* Run `npm install` in the main directory |
| 22 | +* Run `npm run build:dev` to start a webpack build with livereload |
| 23 | +* Open a new terminal window and run `npx serve dist` |
| 24 | +* Open `http://localhost:3000` in your browser |
| 25 | + |
| 26 | +## Customize It |
| 27 | + |
| 28 | +This repo can easily be changed to run any custom model trained with [Roboflow](https://app.roboflow.com) including the thousands of [pre-trained models shared on Roboflow Universe](https://universe.roboflow.com/search?q=aerial%20imagery%20top%20down%20view%20trained%20model). Simply swap out your `publishable_key` and the `model` ID and `version` in the `ROBOFLOW_SETTINGS` at the top of [`main.js`](src/main.js). |
| 29 | + |
| 30 | +There are also some additional configuration options available at the top of [`renderMap.js`](src/renderMap.js). |
| 31 | + |
| 32 | +## Contributing |
| 33 | + |
| 34 | +Pull requests are welcome to improve this repo. Ideas for improvements that could be made: |
| 35 | + |
| 36 | +* Taking into account changes in the ground elevation & their impact on the `distance` calculations |
| 37 | +* Intelligently choosing the correct part of the flight log based on the duration of `isVideo` compared to the duration of the loaded video |
| 38 | +* Exporting a JSON file of the detected objects |
| 39 | +* Adding a CLI for processing outside of a web browser |
| 40 | +* Rendering the flight video and predictions into a single image (patching video frames together) |
| 41 | +* Video controls (play/pause, scrubbing) |
| 42 | +* Option to show the video in a static position vs flying over the flight path |
0 commit comments