123 lines
2.4 KiB
Markdown
123 lines
2.4 KiB
Markdown
# Edge Jetson Deploy
|
|
|
|
Production counter: **direct LAN RTSP** + **YOLO11n TensorRT** + SQLite batch store.
|
|
Replaces MQTT `frigate-counter` on the edge Jetson.
|
|
|
|
## Quick install
|
|
|
|
```bash
|
|
# 1. Copy this folder to Jetson
|
|
sudo mkdir -p /opt/jetson-counter
|
|
sudo cp -r jetson-counter/* /opt/jetson-counter/
|
|
sudo chown -R jetson:jetson /opt/jetson-counter
|
|
|
|
# 2. Configure
|
|
cd /opt/jetson-counter
|
|
cp config.env.example .env
|
|
nano .env # SOURCE, MODEL_PATH, CAMERA_NAME, etc.
|
|
sed -i 's/\r$//' .env
|
|
|
|
# 3. Venv + services
|
|
chmod +x setup-venv.sh install-services.sh
|
|
sudo ./setup-venv.sh
|
|
sudo ./install-services.sh
|
|
```
|
|
|
|
Dashboard: `http://<jetson-ip>:5000`
|
|
|
|
---
|
|
|
|
## YOLO11n TensorRT engine (one-time)
|
|
|
|
On the Jetson (must match `IMGSZ` / `HALF` in `.env`):
|
|
|
|
```bash
|
|
source /opt/jetson-counter/venv/bin/activate
|
|
export PYTHONNOUSERSITE=1
|
|
|
|
yolo export model=/media/jetson/DATA/yolo11n.pt format=engine half=True imgsz=416 device=0
|
|
```
|
|
|
|
Verify classes:
|
|
|
|
```bash
|
|
PYTHONNOUSERSITE=1 python -c "
|
|
from ultralytics import YOLO
|
|
m = YOLO('/media/jetson/DATA/yolo11n.engine')
|
|
print(m.names)
|
|
"
|
|
```
|
|
|
|
Expect `ayam` and `talenan`.
|
|
|
|
---
|
|
|
|
## Direct camera RTSP
|
|
|
|
Set in `.env`:
|
|
|
|
```env
|
|
SOURCE=rtsp://user:pass@192.168.x.x:554/stream1
|
|
```
|
|
|
|
Test before install:
|
|
|
|
```bash
|
|
ffplay -rtsp_transport tcp -t 5 "$SOURCE"
|
|
nc -zv <camera-ip> 554
|
|
```
|
|
|
|
---
|
|
|
|
## Cutover from MQTT frigate-counter
|
|
|
|
`install-services.sh` automatically:
|
|
|
|
1. Disables `frigate-counter` and `frigate-counter-dashboard`
|
|
2. Enables `jetson-counter` + `jetson-counter-dashboard`
|
|
|
|
Archive old DB (optional):
|
|
|
|
```bash
|
|
sudo cp /opt/frigate-counter/frigate_counter.db ~/frigate_counter.db.backup
|
|
```
|
|
|
|
---
|
|
|
|
## Validation checklist
|
|
|
|
```bash
|
|
sudo systemctl is-active jetson-counter jetson-counter-dashboard
|
|
PYTHONNOUSERSITE=1 /opt/jetson-counter/venv/bin/python -c "import torch; print('cuda', torch.cuda.is_available())"
|
|
sudo journalctl -u jetson-counter -n 20 --no-pager
|
|
```
|
|
|
|
Good signs:
|
|
|
|
- `Stream ready!`
|
|
- `Loaded engine size: ... MiB`
|
|
- `Frame 100 | Batch ...`
|
|
|
|
---
|
|
|
|
## Logs & restart
|
|
|
|
```bash
|
|
sudo journalctl -u jetson-counter -f
|
|
sudo systemctl restart jetson-counter # after .env change
|
|
```
|
|
|
|
---
|
|
|
|
## JetPack 6.0 torch wheel
|
|
|
|
If `setup-venv.sh` fails on torch URL, list wheels:
|
|
|
|
```bash
|
|
curl -s https://developer.download.nvidia.com/compute/redist/jp/v60/pytorch/ | grep cp310
|
|
```
|
|
|
|
Set `TORCH_WHEEL_URL=...` when running `setup-venv.sh`.
|
|
|
|
See also [jetson-counter-dev/GO_LIVE_TROUBLESHOOT.md](../jetson-counter-dev/GO_LIVE_TROUBLESHOOT.md) for torchvision and RTSP issues.
|