GithubHelp home page GithubHelp logo

uavaustin / hawk-eye Goto Github PK

View Code? Open in Web Editor NEW
0.0 4.0 2.0 4.44 MB

Code for finding targets in aerial imagery.

Home Page: https://uavaustin.github.io/hawk-eye/

License: MIT License

Python 93.62% Starlark 4.76% Shell 1.63%
deep-learning computer-vision aerial-image-detection pytorch

hawk-eye's Introduction

hawk-eye

Code to find targets in aerial imagery.

Python3 CI


hawk-eye is an end-to-end pipeline for training models to detect aerial imagery. Specifically, the goal is to produce models that perform well in the AUVSI SUAS competition.

We train our models with a fusion of real and synthetic data and package our inferencing pipeline as a python pip package. The output of this project is utilized by UAV Austin's Orchestra team.

Overview

overview

Contents

Setup

This project supports Linux, WSL, and Mac systems. To setup one of these environments, run:

hawk_eye/setup/setup_env.sh

This file also takes an optional argument to a python virtual environment:

hawk_eye/setup/setup_env.sh ~/path_to_venv

Upon sucessful termination of this script, you need to then recieve access to Google Cloud Storage. See your lead about gaining permissions, then run

hawk_eye/setup/install_google_cloud.sh

To ensure you are all setup and ready to code, you can test code by running:

bazel test //...

Data Generation

Before we can ever train a model we need data. In our project, we actually create synthetic data using various python libraries. Inside of hawk_eye/data_generation you'll find the scripts related to data processing and more information.

Model Training

Currently we train both classifiers and detection models. This is in flux as the pace of discovery in machine learning is rapid.

See hawk_eye/train/README.md for more information on how to running training jobs.

Inference

Inference on an image will utilize both the classifier and object detector models. The inference script can be run as follows:

PYTHONPATH=$(pwd) inference/find_targets.py \
    --image_path /path/to/image \
    --visualization_dir /path/to/save

The command above will visualize and save the models' predictions. See inference/find_targets.py for the full list of available arguments.

One can also specify the model timestamps if you have a certain model to test.

Testing

Testing is done with bazel. Please see the docs for more information on writing and running tests.

Bazel

Bazel is an open-sourced Google project used for a variety of build environments. Right now, we mainly use it for python testing, but if PyTorch eventually supports building itself as an external third party project, we might start using the C++ PyTorch API.

For now, if you're interested, here is some documentation.

hawk_eye closely models the repository structure of Google's MediaPipe. Please see this project when you have questions about how to structure certain Bazel files.

Style

All python code will be automatically formatted using Black through pre-commit. flake8 is employed to correct any other style errors. Please familiarize yourself with the Google python style guide.

hawk-eye's People

Contributors

alexwitt23 avatar anyap0p avatar bprimal22 avatar kadhirumasankar avatar

Watchers

 avatar  avatar  avatar  avatar

hawk-eye's Issues

Modularize the data generation scripts

Right now, there are three data generation scripts that use some of the same functions to create their respective data types. Also, the classification generation script requires the detection data to already be made.

Make the data generation modular and each script run independently.

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.