Suncompass
This repository contains code for estimating the direction of the sun from a single outdoor image.
Repository Contents
- pretrained_resnet.py: Defines a regression model based on a pre-trained ResNet model and includes functions for training and loading the model.
- 3_224_224_resnet.pth: A pre-trained ResNet model for estimating the direction of the sun from a single outdoor image.
- suncompass.py: Class for interacting with the pre-trained ResNet model.
- demo.py: Demonstrates how to use the pre-trained ResNet model to estimate the direction of the sun from a single outdoor image.
Requirements
- Python 3.7+
- PyTorch
- torchvision
- pandas
- numpy
- matplotlib
- tqdm
- click
- PIL
- tensorboard
- suncalc
Installation
-
Clone the repository:
git clone https://github.com/hugohadfield/suncompass.git cd suncompass
-
Install the package:
pip install .
Usage
add_sun_vector.py
This script calculates the sun vector in the ENU frame and the relative frame based on heading.
Example usage:
python add_sun_vector.py
extract_motion.py
This script extracts motion parameters such as speed, heading, and curvature from a given dataset.
Example usage:
python extract_motion.py
pretrained_resnet.py
This script defines and trains a regression model based on a pre-trained ResNet model.
Example usage:
python pretrained_resnet.py
run_model_on_images.py
This script runs the trained ResNet model on a set of images and saves the results to a CSV file.
Example usage:
python run_model_on_images.py --model_name 3_224_224_resnet.pth --image_dir /path/to/images --gt_csv /path/to/ground_truth.csv
Function Details
add_sun_vector.py
calculate_sun_vector_ENU(time: datetime, lat_degs: float, long_degs: float) -> np.ndarray: Calculates the sun vector in the ENU frame.calculate_sun_vector_relative(time_unixus: int, lat_degs: float, long_degs: float, heading_rads_from_east: Union[float, np.complex128]) -> np.ndarray: Calculates the sun vector in the relative frame.calculate_relative_azimuth_angle(time_unixus: int, lat_degs: float, long_degs: float, heading_rads_from_east: float) -> float: Calculates the azimuth angle of the sun vector in the relative frame.
extract_motion.py
haversine(lat1, lon1, lat2, lon2) -> float: Calculates the great circle distance between two points on the Earth.calculate_bearing_clockwise_from_north(lat1, lon1, lat2, lon2) -> float: Calculates the bearing between two points.calculate_heading_anticlockwise_from_east(lat1, lon1, lat2, lon2) -> float: Calculates the heading anti-clockwise from east.extract_motion(data: pd.DataFrame) -> pd.DataFrame: Extracts speed, heading, and curvature from the given data.
pretrained_resnet.py
ResNetRegression: Defines a regression model based on a pre-trained ResNet model.train_network(device, n_epochs: int = 10, image_size: Tuple[int, int] = (128, 128)): Trains the network for a set number of epochs.
run_model_on_images.py
run_model_on_images(model_name: Path, image_dir: Path, image_size: Tuple[int, int, int] = (1, 100, 100)): Runs the model on the images and saves the results to a CSV file.plot_results_csv(gt_csv: Optional[str] = None): Plots the results from the CSV file.
License
This project is licensed under the MIT License - see the licence.txt file for details.
Metadata
Release files for suncompass 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| suncompass-0.0.1.tar.gz | 43.5 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| suncompass-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 86.9 MB
Release files / suncompass-0.0.1.tar.gz
| Download URL | suncompass-0.0.1.tar.gz |
|---|---|
| Size | 43.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d6a302bc0fc3bdb2f27116e7b8ed1af73523f9fd09a8f3041f48a9964ed55ca2
|
|
BLAKE2b-256 checksum How to use checksums |
2389e0b0b8aecf603aba1af3de1da64f641532b6f6114a578daef7dd07e2d1bd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/5.1.0 CPython/3.12.4
|
Release files / suncompass-0.0.1-py3-none-any.whl
| Download URL | suncompass-0.0.1-py3-none-any.whl |
|---|---|
| Size | 43.5 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8f2b8dc8dd4f526212b7f874ff84fce9aa856db84c955b49cbe0304d5733ee4a
|
|
BLAKE2b-256 checksum How to use checksums |
0964235a6266b61ee66d1fa3c8094916231314e6f970cfc396bc0eb9fff5ba71
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/5.1.0 CPython/3.12.4
|