Update documentation and face scan build verification
This commit is contained in:
parent
73b44d24e5
commit
e78abcf9a2
3 changed files with 320 additions and 105 deletions
255
README.md
255
README.md
|
|
@ -1,129 +1,174 @@
|
|||
# Galleria con json-server e protetto con JWT S6J
|
||||
git clone https://forgit.patachina.it/Fabio/gallery_server_client.git a
|
||||
cd a
|
||||
|
||||
clear
|
||||
ls -lh models
|
||||
ls -lh native/face-knn
|
||||
ls -lh bin/face_scan
|
||||
find . -name "*.sqlite"
|
||||
|
||||
## Installazione
|
||||
|
||||
clonare questa repo e installare tutte le dipendenze con `npm ci`
|
||||
|
||||
|
||||
## Start/Stop servers
|
||||
|
||||
| Description | Script |
|
||||
| ------------------------- | -------------------- |
|
||||
| Start server senza auth | `npm start-no-auth` |
|
||||
| Start server con auth | `npm run start` |
|
||||
|
||||
## Tools
|
||||
|
||||
| Description | Script |
|
||||
| ------------------------------ | ------------------- |
|
||||
| Generate user hashed passwords | `npm run hash` |
|
||||
|
||||
|
||||
[json-server api reference](https://github.com/typicode/json-server)
|
||||
|
||||
## Come usarlo
|
||||
|
||||
clonare e poi installare con
|
||||
|
||||
```
|
||||
npm ci
|
||||
node db/init.js
|
||||
npm start
|
||||
```
|
||||
|
||||
nel file .env ci sono tutti i dati da modificare
|
||||
|
||||
poi inserire in user.json user e password utilizzati per fare il login
|
||||
|
||||
la password da inserire è criptata e viene generata con npm run hash
|
||||
|
||||
il nome viene utilizzato come cartella da scansionare, si trova dentro photos
|
||||
|
||||
es:
|
||||
```
|
||||
name: Fabio
|
||||
|
||||
public/photos
|
||||
└── Fabio
|
||||
└── original
|
||||
└── 2017Irlanda19-29ago
|
||||
├── IMG_0092.JPG
|
||||
├── IMG_0099.JPG
|
||||
├── IMG_0100.JPG
|
||||
```
|
||||
poi dentro Fabio genererà thumbs con tutti i thumbs
|
||||
|
||||
- npm run start
|
||||
- su IP:4000 ci sarà la galleria e andando su impostazioni si potrà fare lo scan di tutte le foto
|
||||
|
||||
dopo aver fatto lo scan è possibile richiedere il json al server con tutte le informazioni anche senza autorizzazione
|
||||
|
||||
basta farlo partire con npm run start-no-auth e le info si possono vedere con
|
||||
|
||||
ip:4000/photos
|
||||
|
||||
- npm start
|
||||
|
||||
|
||||
---
|
||||
|
||||
#### FIT parse (utilizzo di python)
|
||||
|
||||
Per avere il parse dei fit installare python, pipx e i seguenyi packages
|
||||
se serve aggiornare i file di face in c++
|
||||
|
||||
```
|
||||
sudo apt install pipx
|
||||
pipx ensurepath
|
||||
pipx install fitdecode
|
||||
cd docs/face-scan-source
|
||||
|
||||
make clean
|
||||
make
|
||||
```
|
||||
|
||||
usa per sapere dove è installato python
|
||||
dovrebbe produrre
|
||||
|
||||
```
|
||||
pipx list
|
||||
```
|
||||
in api_v1/scanner/parsers/parseFit.js va inserito il riferimento
|
||||
|
||||
in questo caso
|
||||
|
||||
```
|
||||
async function parseFit(absPath) {
|
||||
const frames = await new Promise((resolve, reject) => {
|
||||
execFile(
|
||||
"/home/orangepi/.local/pipx/venvs/fitdecode/bin/python",
|
||||
["api_v1/scanner/parsers/parse_fit.py", absPath],
|
||||
{ maxBuffer: 1024 * 1024 * 50 }, // 50 MB
|
||||
bin/face_scan
|
||||
bin/face_recognition
|
||||
```
|
||||
|
||||
Inspired in this [post](https://www.techiediaries.com/fake-api-jwt-json-server/) by [Techiediaries](https://www.techiediaries.com/)
|
||||
|
||||
#### Interrogazioni manuali
|
||||
|
||||
per vedere il token
|
||||
|
||||
```
|
||||
curl -s -X POST https://prova.patachina.it/auth/login \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"email":"fabio@gmail.com","password":"master66"}'
|
||||
cd docs/face-knn-source
|
||||
|
||||
g++ \
|
||||
-std=c++17 \
|
||||
-O2 \
|
||||
-Wall \
|
||||
-Wextra \
|
||||
-Wpedantic \
|
||||
-Iinclude \
|
||||
src/face_knn.cc \
|
||||
src/knn_opencl.cc \
|
||||
src/knn_opencl_backend.cc \
|
||||
-lOpenCL \
|
||||
-ldl \
|
||||
-lpthread \
|
||||
-o bin/face_knn
|
||||
```
|
||||
|
||||
per salvare il token
|
||||
### Face Scan (RKNN)
|
||||
|
||||
```
|
||||
TOKEN=$(curl -s -X POST https://prova.patachina.it/auth/login \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"email":"fabio@gmail.com","password":"master66"}' \
|
||||
| jq -r '.token')
|
||||
```
|
||||
Per funzionare servono:
|
||||
|
||||
per interrogare le foto
|
||||
bin/face_scan
|
||||
|
||||
```
|
||||
curl -s "https://prova.patachina.it/photos/" \
|
||||
-H "Authorization: Bearer $TOKEN"
|
||||
```
|
||||
|
||||
per interrogare le attività
|
||||
e inoltre:
|
||||
|
||||
models/
|
||||
├── SCRFD_500M_KPS_640.rknn
|
||||
└── face_recognition_sface_2021dec.rknn
|
||||
|
||||
|
||||
e:
|
||||
|
||||
lib/
|
||||
└── librknnrt.so
|
||||
|
||||
Esempio
|
||||
|
||||
Sul server:
|
||||
|
||||
s190js/
|
||||
├── bin/
|
||||
│ └── face_scan
|
||||
├── models/
|
||||
│ ├── SCRFD_500M_KPS_640.rknn
|
||||
│ └── face_recognition_sface_2021dec.rknn
|
||||
└── lib/
|
||||
└── librknnrt.so
|
||||
|
||||
### Face KNN (OpenCL)
|
||||
|
||||
Per funzionare servono:
|
||||
|
||||
native/face-knn/
|
||||
|
||||
|
||||
completa:
|
||||
|
||||
native/face-knn/
|
||||
├── bin/
|
||||
│ └── face_knn
|
||||
├── kernels/
|
||||
│ └── knn_float4_topk.cl
|
||||
├── config.json
|
||||
├── run-face-knn.sh
|
||||
└── SHA256SUMS
|
||||
|
||||
Copia completa
|
||||
cp -a \
|
||||
docs/face-knn-source/bin/face_knn \
|
||||
s190js/native/face-knn/bin/
|
||||
|
||||
cp -a \
|
||||
docs/face-knn-source/kernels \
|
||||
s190js/native/face-knn/
|
||||
|
||||
cp \
|
||||
s190js/native/face-knn/config.json \
|
||||
s190js/native/face-knn/
|
||||
|
||||
|
||||
In pratica il modo più sicuro è copiare tutta:
|
||||
|
||||
native/face-knn/
|
||||
|
||||
Per ricompilare in futuro
|
||||
|
||||
Conserverei anche:
|
||||
|
||||
docs/face-scan-source/
|
||||
docs/face-knn-source/
|
||||
|
||||
|
||||
perché contengono:
|
||||
|
||||
Face Scan
|
||||
Makefile
|
||||
src/
|
||||
include/
|
||||
models/
|
||||
lib/
|
||||
|
||||
Face KNN
|
||||
src/
|
||||
include/
|
||||
kernels/
|
||||
original-build/
|
||||
COMPILAZIONE_FACE_KNN.md
|
||||
|
||||
Backup completo consigliato
|
||||
|
||||
Se dovessi ripristinare tutto su una macchina nuova io copierei:
|
||||
|
||||
bin/
|
||||
models/
|
||||
lib/
|
||||
native/face-knn/
|
||||
|
||||
docs/face-scan-source/
|
||||
docs/face-knn-source/
|
||||
|
||||
|
||||
Così avresti:
|
||||
|
||||
✅ eseguibili pronti
|
||||
|
||||
✅ modelli .rknn
|
||||
|
||||
✅ runtime RKNN
|
||||
|
||||
✅ kernel OpenCL
|
||||
|
||||
✅ sorgenti
|
||||
|
||||
✅ documentazione di build
|
||||
|
||||
✅ oggetti originali .o
|
||||
|
||||
```
|
||||
curl -s "https://prova.patachina.it/activities/" \
|
||||
-H "Authorization: Bearer $TOKEN"
|
||||
```
|
||||
|
|
|
|||
129
README1.md
Normal file
129
README1.md
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
# Galleria con json-server e protetto con JWT S6J
|
||||
|
||||
## Installazione
|
||||
|
||||
clonare questa repo e installare tutte le dipendenze con `npm ci`
|
||||
|
||||
|
||||
## Start/Stop servers
|
||||
|
||||
| Description | Script |
|
||||
| ------------------------- | -------------------- |
|
||||
| Start server senza auth | `npm start-no-auth` |
|
||||
| Start server con auth | `npm run start` |
|
||||
|
||||
## Tools
|
||||
|
||||
| Description | Script |
|
||||
| ------------------------------ | ------------------- |
|
||||
| Generate user hashed passwords | `npm run hash` |
|
||||
|
||||
|
||||
[json-server api reference](https://github.com/typicode/json-server)
|
||||
|
||||
## Come usarlo
|
||||
|
||||
clonare e poi installare con
|
||||
|
||||
```
|
||||
npm ci
|
||||
```
|
||||
|
||||
nel file .env ci sono tutti i dati da modificare
|
||||
|
||||
poi inserire in user.json user e password utilizzati per fare il login
|
||||
|
||||
la password da inserire è criptata e viene generata con npm run hash
|
||||
|
||||
il nome viene utilizzato come cartella da scansionare, si trova dentro photos
|
||||
|
||||
es:
|
||||
```
|
||||
name: Fabio
|
||||
|
||||
public/photos
|
||||
└── Fabio
|
||||
└── original
|
||||
└── 2017Irlanda19-29ago
|
||||
├── IMG_0092.JPG
|
||||
├── IMG_0099.JPG
|
||||
├── IMG_0100.JPG
|
||||
```
|
||||
poi dentro Fabio genererà thumbs con tutti i thumbs
|
||||
|
||||
- npm run start
|
||||
- su IP:4000 ci sarà la galleria e andando su impostazioni si potrà fare lo scan di tutte le foto
|
||||
|
||||
dopo aver fatto lo scan è possibile richiedere il json al server con tutte le informazioni anche senza autorizzazione
|
||||
|
||||
basta farlo partire con npm run start-no-auth e le info si possono vedere con
|
||||
|
||||
ip:4000/photos
|
||||
|
||||
- npm start
|
||||
|
||||
|
||||
---
|
||||
|
||||
#### FIT parse (utilizzo di python)
|
||||
|
||||
Per avere il parse dei fit installare python, pipx e i seguenyi packages
|
||||
|
||||
```
|
||||
sudo apt install pipx
|
||||
pipx ensurepath
|
||||
pipx install fitdecode
|
||||
```
|
||||
|
||||
usa per sapere dove è installato python
|
||||
|
||||
```
|
||||
pipx list
|
||||
```
|
||||
in api_v1/scanner/parsers/parseFit.js va inserito il riferimento
|
||||
|
||||
in questo caso
|
||||
|
||||
```
|
||||
async function parseFit(absPath) {
|
||||
const frames = await new Promise((resolve, reject) => {
|
||||
execFile(
|
||||
"/home/orangepi/.local/pipx/venvs/fitdecode/bin/python",
|
||||
["api_v1/scanner/parsers/parse_fit.py", absPath],
|
||||
{ maxBuffer: 1024 * 1024 * 50 }, // 50 MB
|
||||
```
|
||||
|
||||
Inspired in this [post](https://www.techiediaries.com/fake-api-jwt-json-server/) by [Techiediaries](https://www.techiediaries.com/)
|
||||
|
||||
#### Interrogazioni manuali
|
||||
|
||||
per vedere il token
|
||||
|
||||
```
|
||||
curl -s -X POST https://prova.patachina.it/auth/login \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"email":"fabio@gmail.com","password":"master66"}'
|
||||
```
|
||||
|
||||
per salvare il token
|
||||
|
||||
```
|
||||
TOKEN=$(curl -s -X POST https://prova.patachina.it/auth/login \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"email":"fabio@gmail.com","password":"master66"}' \
|
||||
| jq -r '.token')
|
||||
```
|
||||
|
||||
per interrogare le foto
|
||||
|
||||
```
|
||||
curl -s "https://prova.patachina.it/photos/" \
|
||||
-H "Authorization: Bearer $TOKEN"
|
||||
```
|
||||
|
||||
per interrogare le attività
|
||||
|
||||
```
|
||||
curl -s "https://prova.patachina.it/activities/" \
|
||||
-H "Authorization: Bearer $TOKEN"
|
||||
```
|
||||
|
|
@ -279,3 +279,44 @@ Data documentazione:
|
|||
```text
|
||||
2026-10-26
|
||||
```
|
||||
## Verifica ricompilazione Face Scan
|
||||
|
||||
**Data verifica:** 2026-10-26
|
||||
|
||||
### Ambiente utilizzato
|
||||
|
||||
Repository: `/home/nvme/dockerdata/prove/a/docs/face-scan-source`
|
||||
|
||||
Comandi eseguiti:
|
||||
|
||||
make clean
|
||||
make
|
||||
|
||||
### Confronto binari
|
||||
|
||||
| File | SHA256 |
|
||||
|------|---------|
|
||||
| Binario compilato | `7b5148ee602f9bb1aa52e3c5c269c584b9dbea05b94296b049d32ec9985c69aa` |
|
||||
| Binario s190js | `7b5148ee602f9bb1aa52e3c5c269c584b9dbea05b94296b049d32ec9985c69aa` |
|
||||
|
||||
### Esito
|
||||
|
||||
✅ Ricompilazione verificata con successo.
|
||||
|
||||
Il binario generato dalla compilazione dei sorgenti presenti nel repository produce un file identico bit per bit al binario utilizzato in:
|
||||
|
||||
`/home/nvme/dockerdata/prove/s190js/bin/face_scan`
|
||||
|
||||
### Conclusione
|
||||
|
||||
Sono stati verificati:
|
||||
|
||||
- sorgenti
|
||||
- header
|
||||
- Makefile
|
||||
- libreria RKNN
|
||||
- modelli `.rknn`
|
||||
|
||||
Il repository contiene tutto il necessario per rigenerare il binario `face_scan` senza dipendenze aggiuntive.
|
||||
|
||||
**Riproducibilità confermata.**
|
||||
|
|
|
|||
Loading…
Reference in a new issue