- repo directory structure
- setup pre-commit
- select camera stream
- check for test data and setup
- check for gpu devices and setup
- check and list models and select one for inference
- porting inference logic from jupyter notebook to python script
- multithreading
- organize helper functions
- converting coordinates to motion
- logging and analytics setup
- remove gdown dependency
- ruff setup
- pytest setup
- checking for failures in logic
- proper setup instructions for each platform
- windows
- mac
- linux
- docker
- nix
- editor setup
- vscode, zed, pycharm
- vim, neovim
- seamless issue creation
- setup semantic-release
- releases and changelog
- assertions for faster iteration
- setup github actions
- low latency webcam refer
simple instructions wip recommended to use wsl in windows
- install the latest stable version of python from python.org, or use a version manager like pyenv or nix
- v3.11.0 to 3.12.3 recommended
- install poetry
usind
pipx
to install poetry is recommended - clone the repository
- install dependencies
poetry install
- run the main script
poetry run python src/binfinder
root
├── src
│ ├── binfinder
│ │ ├── __init__.py -- starting point
│ │ ├── __main__.py -- main function
│ │ ├── config -- configuration files
│ │ │ ├── __init__.py
│ │ │ ├── camera.py
│ │ ├── helpers -- helper functions
│ │ │ ├── __init__.py
│ │ │ ├── camera.py
│ ├── tests -- test files wip
│ ├── data
│ │ ├── result -- annotated results, graphs and logs
│ │ ├── test -- test images dataset
│ │ ├── train -- train images dataset
│ │ ├── weights -- model weights
these files are used by semantic-release
to determine the type of the next release. the .commitlintrc.json
file is used to lint the commit messages. the .releaserc.json
file is used to determine the version of the next release based on the commit messages. to lint commit messages, this project uses the default configuration of @commitlint/config-conventional
.
the .python-version
file contains the python version used in this project. this project has been built with using pyenv
as python version manager.
this file is used by pre-commit
to determine the hooks that will be run before each commit. the hooks are defined in the hooks
section of the file. the hooks are run in the order they are defined in the file.
this repository uses github actions for ci/cd. ci is composed of lint
with pre-commit and test
with pytest. release is composed of lint
, test
, release
with semantic-release.
- lint is done with pre-commit. to run lint locally, run
pre-commit run --all-files
. - test is done with pytest. to run test locally, run
pytest
. or poetry runpytest
if you use poetry as package manager. - release is done with semantic-release