To clone this repository, type git clone --recursive https://github.com/aisu-programming/Market-Computer-Vision.git.
Notice that the option --recursive is necessary because of submodules.
Type the command sh download-weights.sh to download all model's weights files.
- Type the command
sh setup-torch.shto install PyTorch (version 1.9) for Raspberry Pi 32-bits OS with Python 3.7. - Type the command
sh setup-torchvision.shto install torchvision (version 0.10) for Raspberry Pi 32-bits OS with Python 3.7. - Type the command
sh setup-others.shto install all other requirements. - Setup the Google Sheet API. See tutorial.
Type the command git pull then sh download-weights.sh to get the newest model weight file.
The main command is python3 detect.py.
There are serveral options can be add:
--fd: enable the Footfall-Detection function. (default: False)Example:
python3 detect.py --fd.--fd-img-size <int>: the size of input images for the Footfall-Detection task will be resize to this. (default: 64)Example:
python3 detect.py --fd-img-size 32will set the size of input images to 32x32.
--sed: enable the Shelf-Empty-Detection function. (default: False)Example:
python3 detect.py --sed.--sed-img-size <int>: the size of input images for the Shelf-Empty-Detection task will be resize to this. (default: 256)Example:
python3 detect.py --sed-img-size 128will set the size of input images to 128x128.--sed-alert-amount-thres <float>: the amount threshold to view a stock as empty. (default: 0.5)Example:
python3 detect.py --sed-alert-amount-thres 0.3will set the alert amount to 0.3.--sed-smoothing-len <int>: the length of the smoothing array which to prevent unstable predictions. (default: 10)Example:
python3 detect.py --sed-smoothing-len 20will set the length of the smoothing array to 20.--test: use the testing images in test directory to test the inference. (default: False)Example:
python3 detect.py --test.--view-img: show real-time camera images. (default: False)Example:
python3 detect.py --view-img.--sleep <int>: the sleep time between every inference. (default: 0)Example:
python3 detect.py --sleep 3for sleeping 3 seconds after every image.--save-img: save inferenced images to the output directory or not. (default: False)Example:
python3 detect.py --save-img.--save-img-interval <int>: save inferenced images to output directory per seconds. (default: 900)Example:
python3 detect.py --save-img-interval 60for saving image every 1 minute (60 seconds).--save-csv: save results to csv file or not. (default: False)Example:
python3 detect.py --save-csv.--save-csv-interval <int>: save results to csv file per seconds. (default: 900)Example:
python3 detect.py --save-csv-interval 60for saving records every 1 minute (60 seconds).--save-google-sheet: save results to google sheet or not. (default: False)Example:
python3 detect.py --save-google-sheet.--save-google-sheet-interval <int>: save results to google sheet per seconds. (default: 900)Example:
python3 detect.py --save-google-sheet-interval 60for saving records every 1 minute (60 seconds).
Combine above options or edit default value of each options in detect.py.
| Raspberry Pi 3B | Raspberry Pi 4B | |
|---|---|---|
| Installation time (setup-*.sh + download-weights.sh) | 31 minutes | 23 minutes |
| Footfall-Detection speed (input img size = 64) | 2~4 sec / per inference | 1.4 sec / per inference |
| Shelf-Empty-Detection speed (input img size = 256) | 6~8 sec / per inference | 2~3 sec / per inference |
I used the Raspberry Pi Imager.
The OS I chose is the Raspberry Pi OS (Legacy), which is 32-bits and with the Python version 3.7.