Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Jetson gpu cuda support #519

Open
alekslyse opened this issue May 10, 2021 · 55 comments
Open

Jetson gpu cuda support #519

alekslyse opened this issue May 10, 2021 · 55 comments

Comments

@alekslyse
Copy link

As its a build that support gpu and cuda have any tried to use a nvidia jetson nano that got about 120 cuda cores?

@pospielov
Copy link
Collaborator

Hi, unfortunately, Nvidia Jetson Nano has ARM CPU which is not currently supported by CompreFace. So even CPU version won't work

@SilvioGiancola
Copy link

I recently tried on a Jetson TX1 (aarch64). The docker composes without displaying any issue, but http://localhost:8000/login is not reachable. Will it be supported in a future release? What are the current limitations/challenges that impede the the docker container to run on aarch64?

@pospielov
Copy link
Collaborator

There are several problems with supporting arm CPU:

  1. There is no easy way to automate such build without an arm-based computer. The first option is to find a contributor who has arm device and wants to build CompreFace for Arm. But the downside will be that we won't be able to publish Arm version if he leaves the team. The second option is Docker Buildx. As far as I know, it's in an experimental stage now, but this is the only good option. And we still need to understand how to use it.
  2. Not all libraries are built for Arm CPU. E.g. as far as I know, you can't just install Tensorflow from pip. Best case scenario - we find ready to use guide and build a fully compatible Tensorflow. Worst scenario - we build only TensorFlow lite and will probably have a separate code for arm platforms.
  3. There are lots of options to run neural networks on arm based devices. E.g. if you use Jetson Nano, you'll expect to use full Tensorflow, because you have a good CUDA accelerator. But others could want to use Google Coral, they will want to use TensorFlow Lite because this is the only option. Another option - Intel neural compute stick 2, which also could be run on Raspberry, but can use only the Intel Open Vino framework. So we need to find a way to support all of these frameworks and do not make our code too complex to support.
    I personally believe that in the near future arm based devices will become more popular(we already have MacBook on arm CPU) and more people spend their time expanding arm ecosystem. CompreFace will definitely support arm devices in the future, the question only - when.

@SilvioGiancola
Copy link

Thank you for your very detailed answer, it is very appreciated.
Looking forward further development for ARM-based architectures in a (near?) future :)

@marcfielding1
Copy link

For Jetson devices I have several Nano's sitting around I can run tests on, I really would like to see this for, believe it or not, a home assistant project, part of it is an internal tool called "Kane" that integrates with every device in our office(smart tv's, laptops, phones, etc) - part of it for our home shopping hub.

Re the comment on building/buildX I can try and help, just chuck me some tasks and I'll see if I can "make it work"?

@marcfielding1
Copy link

I've got just under a week free by the way so I can get a good run at some research/groundwork if you guys respond quickly :-)

@pospielov
Copy link
Collaborator

We would really like to integrate with the home assistant as well, so your research would be so helpful.
What I suggest to start from:
The critical point here is to build compreface-core image.
I think we can start building it on Jetson Nano, so we won't need to setup buildX.
To build it, clone the repository and run:
docker build -t embedding-calculator --build-arg SKIP_TESTS=true .
I think It will fail on RUN pip --no-cache-dir install -r requirements.txt step as there won't be all libraries compiled for ARM in the pip repository.
Then we need to collect the list of these libraries and think about what should we do - probably we will need to compile them ourselves.
For faster response, you can send your skype (or Whatsapp, or Telegram, any other messenger) to your email: [email protected]

@marcfielding1
Copy link

marcfielding1 commented Aug 31, 2021

Heya, sure so I had a thought you can just the actions buildx plugin for this sorta stuff, let me pull the image though and try it locally! Obviously don't leave token as string ya want it in a secret.

I'll ping my WhatsApp there shortly!

Something like this, although this is just out of a workflow I have for a NodeJS project. I can't remember if the names of build targets are right though.

jobs:
  docker-build:
    runs-on: ubuntu-latest
    steps:
      - name: Cache dependencies
        uses: actions/cache@v2
        with:
          path: ~/.npm
          key: npm-${{ hashFiles('package-lock.json') }}
          restore-keys: npm-          
      -
        name: Login to DockerHub
        uses: docker/login-action@v1 
        with:
          username: "marcfielding1"
          password: "TOKEN"
      - uses: actions/setup-node@v2
        with:
          node-version: '14.0.0'
      -
        name: Set up QEMU
        uses: docker/setup-qemu-action@v1
      -
        name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1          
      -
        name: Build and push
        uses: docker/build-push-action@v2
        with:
          platforms: linux/arm,linux/arm64,linux/amd64
          push: true
          tags: repo/image:latest

@marcfielding1
Copy link

Heya,

Sooo getting there, there is currently a problem with Scikit-image, I've found a solution here from the NVIDIA forums that I'm going to try out.

Build output below:

Sending build context to Docker daemon  10.91MB
Step 1/36 : ARG BASE_IMAGE
Step 2/36 : FROM ${BASE_IMAGE:-python:3.7-slim}
 ---> a1776b632fa3
Step 3/36 : RUN apt-get update && apt-get install -y build-essential cmake git wget unzip         curl yasm pkg-config libswscale-dev libtbb2 libtbb-dev libjpeg-dev         libpng-dev libtiff-dev libavformat-dev libpq-dev libfreeimage3     && rm -rf /var/lib/apt/lists/*
 ---> Using cache
 ---> 5610457fda7b
Step 4/36 : SHELL ["/bin/bash", "-c"]
 ---> Using cache
 ---> 5cc5df239fc2
Step 5/36 : WORKDIR /app/ml
 ---> Using cache
 ---> 3099534ddcb5
Step 6/36 : COPY requirements.txt .
 ---> Using cache
 ---> 63e0c2611094
Step 7/36 : RUN pip --no-cache-dir install -r requirements.txt
 ---> Running in 234b16d98c44
Collecting attrs==20.2.0
  Downloading attrs-20.2.0-py2.py3-none-any.whl (48 kB)
Collecting cached-property==1.5.2
  Downloading cached_property-1.5.2-py2.py3-none-any.whl (7.6 kB)
Collecting colour==0.1.5
  Downloading colour-0.1.5-py2.py3-none-any.whl (23 kB)
Collecting flasgger==0.9.5
  Downloading flasgger-0.9.5-py2.py3-none-any.whl (3.8 MB)
Collecting Flask==1.1.2
  Downloading Flask-1.1.2-py2.py3-none-any.whl (94 kB)
Collecting gdown~=3.12
  Downloading gdown-3.13.0.tar.gz (9.3 kB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
    Preparing wheel metadata: started
    Preparing wheel metadata: finished with status 'done'
Collecting Werkzeug==1.0.1
  Downloading Werkzeug-1.0.1-py2.py3-none-any.whl (298 kB)
Collecting mock~=4.0.2
  Downloading mock-4.0.3-py3-none-any.whl (28 kB)
Collecting pytest~=6.1.2
  Downloading pytest-6.1.2-py3-none-any.whl (272 kB)
Collecting pytest-mock~=3.3.1
  Downloading pytest_mock-3.3.1-py3-none-any.whl (11 kB)
Collecting requests~=2.24.0
  Downloading requests-2.24.0-py2.py3-none-any.whl (61 kB)
Collecting pylama~=7.7.1
  Downloading pylama-7.7.1-py2.py3-none-any.whl (35 kB)
Collecting Pillow~=8.0.1
  Downloading Pillow-8.0.1-cp37-cp37m-manylinux2014_aarch64.whl (2.1 MB)
Collecting imagecodecs~=2020.5.30
  Downloading imagecodecs-2020.5.30.tar.gz (9.0 MB)
^TCollecting numpy~=1.19.5
  Downloading numpy-1.19.5-cp37-cp37m-manylinux2014_aarch64.whl (12.4 MB)
Collecting scipy~=1.5.4
  Downloading scipy-1.5.4-cp37-cp37m-manylinux2014_aarch64.whl (24.4 MB)
Collecting opencv-python~=4.4.0
  Downloading opencv-python-4.4.0.46.tar.gz (88.9 MB)
  Installing build dependencies: started
  Installing build dependencies: still running...
  Installing build dependencies: still running...
  Installing build dependencies: still running...
  Installing build dependencies: still running...
  Installing build dependencies: still running...
  Installing build dependencies: still running...
  Installing build dependencies: still running...
  Installing build dependencies: still running...
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
    Preparing wheel metadata: started
    Preparing wheel metadata: finished with status 'done'
Collecting scikit-learn~=0.23.2
  Downloading scikit-learn-0.23.2.tar.gz (7.2 MB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
    Preparing wheel metadata: started
    Preparing wheel metadata: finished with status 'done'
Collecting scikit-image~=0.17.2
  Downloading scikit-image-0.17.2.tar.gz (29.8 MB)
    ERROR: Command errored out with exit status 1:
     command: /usr/local/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-3l0blh2u/scikit-image_870a4d563b4d40359e07b1cde9c82659/setup.py'"'"'; __file__='"'"'/tmp/pip-install-3l0blh2u/scikit-image_870a4d563b4d40359e07b1cde9c82659/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-uaakw08x
         cwd: /tmp/pip-install-3l0blh2u/scikit-image_870a4d563b4d40359e07b1cde9c82659/
    Complete output (7 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-3l0blh2u/scikit-image_870a4d563b4d40359e07b1cde9c82659/setup.py", line 234, in <module>
        'build_ext': openmp_build_ext(),
      File "/tmp/pip-install-3l0blh2u/scikit-image_870a4d563b4d40359e07b1cde9c82659/setup.py", line 58, in openmp_build_ext
        from numpy.distutils.command.build_ext import build_ext
    ModuleNotFoundError: No module named 'numpy'
    ----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/54/fd/c1b0bb8f6f12ef9b4ee8d7674dac82cd482886f8b5cd165631efa533e237/scikit-image-0.17.2.tar.gz#sha256=bd954c0588f0f7e81d9763dc95e06950e68247d540476e06cb77bcbcd8c2d8b3 (from https://pypi.org/simple/scikit-image/) (requires-python:>=3.6). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
ERROR: Could not find a version that satisfies the requirement scikit-image~=0.17.2 (from versions: 0.7.2, 0.8.0, 0.8.1, 0.8.2, 0.9.0, 0.9.1, 0.9.3, 0.10.0, 0.10.1, 0.11.2, 0.11.3, 0.12.0, 0.12.1, 0.12.2, 0.12.3, 0.13.0, 0.13.1, 0.14.0, 0.14.1, 0.14.2, 0.14.3, 0.14.5, 0.15.0, 0.16.2, 0.17.1, 0.17.2, 0.18.0rc0, 0.18.0rc1, 0.18.0rc2, 0.18.0, 0.18.1, 0.18.2rc1, 0.18.2rc2, 0.18.2, 0.18.3)
ERROR: No matching distribution found for scikit-image~=0.17.2
The command '/bin/bash -c pip --no-cache-dir install -r requirements.txt' returned a non-zero code: 1

@pospielov
Copy link
Collaborator

this is strange because you installed the NumPy package
hmm... Could you try to check if numpy is there?
I mean you can do it even without docker just try to install numpy on your Jetson and check if you can import it.
I think it should be like:

pip3 install numpy=1.19.5
python3
from numpy.distutils.command.build_ext import build_ext

@marcfielding1
Copy link

Quick update from me the issue now imagecodecs, installing numpy manually via RUN in the dockerfile somehow fixed the problem with pip install requirements.

Just figuring out the installation packages required. Turns out imagecodecs is a bit of beast.

@pospielov
Copy link
Collaborator

https://scikit-image.org/docs/dev/install.html#id5
scikit-image has tips for arm CPU, including how to handle imagecodecs

@marcfielding1
Copy link

https://scikit-image.org/docs/dev/install.html#id5
scikit-image has tips for arm CPU, including how to handle imagecodecs

Nice, thanks I was trawling through docs looking for something like that, saved me some time there!

@LordNex
Copy link

LordNex commented Aug 31, 2022

Any update on this? I'm currently using DoubleTake in Home Assistant tied to Frigate on a RPi4 with Coral TPU doing object recognition. When it detects a face it triggers DT to send to its detectors. I've tried DeepStack running on my Jetson Nano 4 gig as well as CompreFace on my Home Assistant Install. Even without a TPU or GPU, CompreFace consistently scores more correct matches than DeepStack on the Nano.

So my thought was to see if I could put CompreFace on the Nano and that way it can use the CUDA cores for the neural processing.

You also now have me wanting to go looking up this "Kane" you referred too.

@LordNex
Copy link

LordNex commented Oct 20, 2022

For Jetson devices I have several Nano's sitting around I can run tests on, I really would like to see this for, believe it or not, a home assistant project, part of it is an internal tool called "Kane" that integrates with every device in our office(smart tv's, laptops, phones, etc) - part of it for our home shopping hub.

Re the comment on building/buildX I can try and help, just chuck me some tasks and I'll see if I can "make it work"?

What's this "Kane" for home assistant your referring too. Happen to have a few links?

I would also like to see Jetson Nano support. Currently I'm running CompreFace and DoubleStack in Home Assistant with a separate VM running Frigate in Ubuntu server 20. Honestly, I'd prefer to put frigate wherever it can encode and decide streams the best and then off load the neural net to either my Jetson Nano, or a device with a Coral TPU, maybe both?

Honestly I'm fooling around with the idea of having Frigate on the Nano for encoding and decoding and basic object detection, then having a VM with a Coral TPU tied to it running CompreFace. Then tie it all together inside Home Assistant with DoubleTake

@LordNex
Copy link

LordNex commented Jan 22, 2023

Still very interested in the results is this. I have a Jetson Nano we could use. You'd just need to tell me what to do.

@pospielov
Copy link
Collaborator

Let's start with the instructions:
#519 (comment)
Let's see at what point the build will fail.

@jurgenweber
Copy link

jurgenweber commented Feb 9, 2023

Seeing this; #1018 I figured I could install the development build and build it on my jetson nano and it would work?

So I cloned the repo, went to /dev and run start.sh.

All of the containers build, but:

*** Operational MODE: preforking ***
{"severity": "DEBUG", "message": "Falling back to TensorFlow client; we recommended you install the Cloud TPU client directly with pip install cloud-tpu-client.", "request": null, "logger": "tensorflow", "module": "tpu_cluster_resolver", "traceback": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.7/site-packages/tensorflow/python/distribute/cluster_resolver/tpu/tpu_cluster_resolver.py\", line 30, in <module>\n    from cloud_tpu_client import client  # pylint: disable=g-import-not-at-top\nModuleNotFoundError: No module named 'cloud_tpu_client'\n", "build_version": "dev"}
{"severity": "DEBUG", "message": "Creating converter from %s to %s", "request": null, "logger": "h5py._conv", "module": "__init__", "traceback": null, "build_version": "dev"}
{"severity": "DEBUG", "message": "Creating converter from %s to %s", "request": null, "logger": "h5py._conv", "module": "__init__", "traceback": null, "build_version": "dev"}
{"severity": "DEBUG", "message": "Creating converter from %s to %s", "request": null, "logger": "h5py._conv", "module": "__init__", "traceback": null, "build_version": "dev"}
{"severity": "DEBUG", "message": "Creating converter from %s to %s", "request": null, "logger": "h5py._conv", "module": "__init__", "traceback": null, "build_version": "dev"}
/usr/local/lib/python3.7/site-packages/tensorflow_io/python/ops/__init__.py:98: UserWarning: unable to load libtensorflow_io_plugins.so: unable to open file: libtensorflow_io_plugins.so, from paths: ['/usr/local/lib/python3.7/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so']
caused by: ["[Errno 2] The file to load file system plugin from does not exist.: '/usr/local/lib/python3.7/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so'"]
  warnings.warn(f"unable to load libtensorflow_io_plugins.so: {e}")
/usr/local/lib/python3.7/site-packages/tensorflow_io/python/ops/__init__.py:104: UserWarning: file system plugins are not loaded: unable to open file: libtensorflow_io.so, from paths: ['/usr/local/lib/python3.7/site-packages/tensorflow_io/python/ops/libtensorflow_io.so']
caused by: ['/usr/local/lib/python3.7/site-packages/tensorflow_io/python/ops/libtensorflow_io.so: cannot open shared object file: No such file or directory']
  warnings.warn(f"file system plugins are not loaded: {e}")
{"severity": "INFO", "message": "{'BUILD_VERSION': 'dev', 'CALCULATION_PLUGIN': 'facenet.Calculator', 'EXTRA_PLUGINS': ['facenet.LandmarksDetector', 'agegender.AgeDetector', 'agegender.GenderDetector', 'facenet.facemask.MaskDetector', 'facenet.PoseEstimator'], 'FACE_DETECTION_PLUGIN': 'facenet.FaceDetector', 'GPU_IDX': -1, 'IMG_LENGTH_LIMIT': 640, 'INTEL_OPTIMIZATION': False, 'IS_DEV_ENV': False, 'LOGGING_LEVEL_NAME': 'DEBUG', 'ML_PORT': 3000, 'RUN_MODE': True}", "request": null, "logger": "src.app", "module": "app", "traceback": null, "build_version": "dev"}
{"severity": "DEBUG", "message": "Creating new app for WSGI", "request": null, "logger": "src.app", "module": "app", "traceback": null, "build_version": "dev"}
WSGI app 0 (mountpoint='') ready in 12 seconds on interpreter 0x5597b64bb0 pid: 1 (default app)

I see this in the core logs, am I going the right way here?

/login just returns an welcome to nginx page.

I inspected all the images, they are built with the right arch

    "Architecture": "arm64",

@jurgenweber
Copy link

What is confusing me is the doco clearly says go to /login, but it isn't handled by nginx:

https://github.com/exadel-inc/CompreFace/blob/master/ui/nginx/templates/nginx.conf.template

@jurgenweber
Copy link

jurgenweber commented Feb 11, 2023

ok, I tired again today and it worked... I have it up, created an account and some apps, hooked it up with double-take and boom.

¯_(ツ)_/¯

@pospielov
Copy link
Collaborator

Yes,
#519 (comment)
Recalling this comment, we solved two issues:

  1. We are creating Docker Buildx config now, so we will be able to build arm builds on x86 machines.
  2. thanks to this pull request CompreFace can run on arm devices.

We are preparing a build pipeline, so we build it and publish it on DockerHub.
But one point is that only the FaceNet version was updated to run on ARM, and now it doesn't use GPU.
So it will run on Jetson but won't use GPU, so we didn't solve the third problem yet.
I saw somewhere a build config to build FaceNet with GPU, I need to find it. Hopefully, it will be able to use Jetson GPU.

@jurgenweber
Copy link

Yes, I am aware of the 3 points you have covered. I can confirm I have it on aarch64!

# uname -a
Linux warvm-hass97 4.9.253-tegra #1 SMP PREEMPT Mon Jul 26 12:13:06 PDT 2021 aarch64 aarch64 aarch64 GNU/Linux

# docker ps
CONTAINER ID   IMAGE                           COMMAND                  CREATED      STATUS      PORTS                                                                                  NAMES
99506d6792a3   compreface-fe:latest            "/docker-entrypoint.…"   5 days ago   Up 5 days   0.0.0.0:8000->80/tcp, :::8000->80/tcp                                                  compreface-ui
e89638921010   compreface-admin:latest         "sh -c 'java $ADMIN_…"   5 days ago   Up 5 days   0.0.0.0:5006->5005/tcp, :::5006->5005/tcp, 0.0.0.0:8081->8080/tcp, :::8081->8080/tcp   compreface-admin
22dddf6d58b5   compreface-api:latest           "sh -c 'java $API_JA…"   5 days ago   Up 3 days   0.0.0.0:5005->5005/tcp, :::5005->5005/tcp, 0.0.0.0:8082->8080/tcp, :::8082->8080/tcp   compreface-api
e9757bbd7eda   compreface-postgres-db:latest   "docker-entrypoint.s…"   5 days ago   Up 5 days   0.0.0.0:6432->5432/tcp, :::6432->5432/tcp                                              compreface-postgres-db
141e0d875fe6   compreface-core:arm64           "uwsgi --ini uwsgi.i…"   5 days ago   Up 5 days   0.0.0.0:3300->3000/tcp, :::3300->3000/tcp                                              compreface-core

# lsb_release -a
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.6 LTS
Release:	18.04
Codename:	bionic

I think if you just build for GPU/CUDA it just works on all nvidia GPU's? ¯_(ツ)_/¯. Not sure, I am not an expert on this.

I did see this and try it; https://github.com/exadel-inc/CompreFace/blob/master/dev/docker-compose-gpu.yml#L101

but the base image is x86 only and I could not find a docker file for it anywhere.

@LordNex
Copy link

LordNex commented Feb 16, 2023

Sorry guys, I just started a new job and haven't had much time to mess with this. But I plan on testing with you guys as soon as I can catch up. You guys are rocking this though

With this, Frigate, Home Assistant, and DoubleTake you can build a pretty high end security system. And I work for a security company that pays through the nose for this stuff.

@whitepail
Copy link

whitepail commented Mar 13, 2023

I was able to start compreface on jetson TX2 with gpu support.
Used nvcr.io/nvidia/l4t-cuda:10.2.460-runtime as a base gpu image
installed python 3.7, libcharls2_2.2.0, mxnet 1.6.0 from https://mxnet-public.s3.us-east-2.amazonaws.com/install/jetson/1.6.0/mxnet_cu102-1.6.0-py2.py3-none-linux_aarch64.whl and several other packages, rebuilt onnx, added www-data user to video group (for GPU access)

Adding my changes to this issue plus my docker compose
Build image: https://hub.docker.com/repository/docker/whitepail/compreface-core
compreface.zip
docker-compose.yml.txt

Please pay attention that Docker Compose must be version 1.19.0 or higher to use nvidia runtime

@jurgenweber
Copy link

I was able to start compreface on jetson TX2 with gpu support. Used nvcr.io/nvidia/l4t-cuda:10.2.460-runtime as a base gpu image installed python 3.7, libcharls2_2.2.0, mxnet 1.6.0 from https://mxnet-public.s3.us-east-2.amazonaws.com/install/jetson/1.6.0/mxnet_cu102-1.6.0-py2.py3-none-linux_aarch64.whl and several other packages, rebuilt onnx, added www-data user to video group (for GPU access)

Adding my changes to this issue plus my docker compose Build image: https://hub.docker.com/repository/docker/whitepail/compreface-core compreface.zip docker-compose.yml.txt

Please pay attention that Docker Compose must be version 1.19.0 or higher to use nvidia runtime

This built, but nothing detected... but it seems going back to master I now have the same problem... I actually have this problem again. Thoughts?

Seeing this; #1018 I figured I could install the development build and build it on my jetson nano and it would work?

So I cloned the repo, went to /dev and run start.sh.

All of the containers build, but:

*** Operational MODE: preforking ***
{"severity": "DEBUG", "message": "Falling back to TensorFlow client; we recommended you install the Cloud TPU client directly with pip install cloud-tpu-client.", "request": null, "logger": "tensorflow", "module": "tpu_cluster_resolver", "traceback": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.7/site-packages/tensorflow/python/distribute/cluster_resolver/tpu/tpu_cluster_resolver.py\", line 30, in <module>\n    from cloud_tpu_client import client  # pylint: disable=g-import-not-at-top\nModuleNotFoundError: No module named 'cloud_tpu_client'\n", "build_version": "dev"}
{"severity": "DEBUG", "message": "Creating converter from %s to %s", "request": null, "logger": "h5py._conv", "module": "__init__", "traceback": null, "build_version": "dev"}
{"severity": "DEBUG", "message": "Creating converter from %s to %s", "request": null, "logger": "h5py._conv", "module": "__init__", "traceback": null, "build_version": "dev"}
{"severity": "DEBUG", "message": "Creating converter from %s to %s", "request": null, "logger": "h5py._conv", "module": "__init__", "traceback": null, "build_version": "dev"}
{"severity": "DEBUG", "message": "Creating converter from %s to %s", "request": null, "logger": "h5py._conv", "module": "__init__", "traceback": null, "build_version": "dev"}
/usr/local/lib/python3.7/site-packages/tensorflow_io/python/ops/__init__.py:98: UserWarning: unable to load libtensorflow_io_plugins.so: unable to open file: libtensorflow_io_plugins.so, from paths: ['/usr/local/lib/python3.7/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so']
caused by: ["[Errno 2] The file to load file system plugin from does not exist.: '/usr/local/lib/python3.7/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so'"]
  warnings.warn(f"unable to load libtensorflow_io_plugins.so: {e}")
/usr/local/lib/python3.7/site-packages/tensorflow_io/python/ops/__init__.py:104: UserWarning: file system plugins are not loaded: unable to open file: libtensorflow_io.so, from paths: ['/usr/local/lib/python3.7/site-packages/tensorflow_io/python/ops/libtensorflow_io.so']
caused by: ['/usr/local/lib/python3.7/site-packages/tensorflow_io/python/ops/libtensorflow_io.so: cannot open shared object file: No such file or directory']
  warnings.warn(f"file system plugins are not loaded: {e}")
{"severity": "INFO", "message": "{'BUILD_VERSION': 'dev', 'CALCULATION_PLUGIN': 'facenet.Calculator', 'EXTRA_PLUGINS': ['facenet.LandmarksDetector', 'agegender.AgeDetector', 'agegender.GenderDetector', 'facenet.facemask.MaskDetector', 'facenet.PoseEstimator'], 'FACE_DETECTION_PLUGIN': 'facenet.FaceDetector', 'GPU_IDX': -1, 'IMG_LENGTH_LIMIT': 640, 'INTEL_OPTIMIZATION': False, 'IS_DEV_ENV': False, 'LOGGING_LEVEL_NAME': 'DEBUG', 'ML_PORT': 3000, 'RUN_MODE': True}", "request": null, "logger": "src.app", "module": "app", "traceback": null, "build_version": "dev"}
{"severity": "DEBUG", "message": "Creating new app for WSGI", "request": null, "logger": "src.app", "module": "app", "traceback": null, "build_version": "dev"}
WSGI app 0 (mountpoint='') ready in 12 seconds on interpreter 0x5597b64bb0 pid: 1 (default app)

I see this in the core logs, am I going the right way here?

/login just returns an welcome to nginx page.

I inspected all the images, they are built with the right arch

    "Architecture": "arm64",

@jurgenweber
Copy link

yeah, I am not sure what is wrong tbh. I am not even sure any of those logs are relevant. What I do know is, every face been sent to compreface is returning

{"severity": "WARNING", "message": "400 Bad Request: No face is found in the given image", "request": {"method": "POST", "path": "/find_faces", "filename": "1679473394.788274-a6oqni-latest-1f5c258d-9c7f-431c-ac49-57d5edc41eaf.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "root", "module": "error_handling", "traceback": "Traceback (most recent call last):\n File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1950, in full_dispatch_request\n rv = self.dispatch_request()\n File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1936, in dispatch_request\n return self.view_functionsrule.endpoint\n File "./src/services/flask_/needs_attached_file.py", line 32, in wrapper\n return f(*args, **kwargs)\n File "./src/_endpoints.py", line 91, in find_faces_post\n faces = _limit(faces, request.values.get(ARG.LIMIT))\n File "./src/_endpoints.py", line 138, in _limit\n raise NoFaceFoundError\nsrc.exceptions.NoFaceFoundError: 400 Bad Request: No face is found in the given image\n", "build_version": "dev"}

Where before it detected LOTS and I can not login anymore. I just have this on the front page

image

Trying again with your docker-compose file, it seems I have some other problems because the jetson nano only has 4gb of mem. I am swapping lots now.

@jurgenweber
Copy link

jurgenweber commented Mar 22, 2023

ok, I have some logs for you

# docker exec -it compreface-core /bin/bash
root@8d4e31ed4b88:~# id www-data
uid=33(www-data) gid=33(www-data) groups=33(www-data),44(video)
# docker ps
CONTAINER ID   IMAGE                                           COMMAND                  CREATED         STATUS         PORTS                                   NAMES
5eaf2012140c   compreface-fe:latest                            "/docker-entrypoint.…"   7 minutes ago   Up 7 minutes   0.0.0.0:8000->80/tcp, :::8000->80/tcp   compreface-ui
73bd3ab279a6   compreface-admin:latest                         "sh -c 'java $ADMIN_…"   7 minutes ago   Up 7 minutes                                           compreface-admin
b99f3a3a5415   compreface-api:latest                           "sh -c 'java $API_JA…"   7 minutes ago   Up 7 minutes                                           compreface-api
e61bba8931bc   compreface-postgres-db:latest                   "docker-entrypoint.s…"   8 minutes ago   Up 7 minutes   5432/tcp                                compreface-postgres-db
8d4e31ed4b88   whitepail/compreface-core:arm64-mobilenet-gpu   "uwsgi --ini uwsgi.i…"   8 minutes ago   Up 7 minutes   3000/tcp                                compreface-core
# docker logs -f compreface-core
[uWSGI] getting INI configuration from uwsgi.ini
*** Starting uWSGI 2.0.19 (64bit) on [Wed Mar 22 01:46:03 2023] ***
compiled with version: 7.5.0 on 06 March 2023 10:37:31
os: Linux-4.9.253-tegra #1 SMP PREEMPT Mon Jul 26 12:13:06 PDT 2021
nodename: 8d4e31ed4b88
machine: aarch64
clock source: unix
detected number of CPU cores: 4
current working directory: /app/ml
detected binary path: /usr/local/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
setgid() to 33
set additional group 44 (video)
setuid() to 33
your memory page size is 4096 bytes
detected max file descriptor number: 1048576
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to TCP address 0.0.0.0:3000 fd 3
Python version: 3.7.5 (default, Dec  9 2021, 17:04:37)  [GCC 8.4.0]
Python main interpreter initialized at 0x5566670000
python threads support enabled
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 145808 bytes (142 KB) for 1 cores
*** Operational MODE: single process ***
{"severity": "INFO", "message": "{'BUILD_VERSION': 'dev', 'CALCULATION_PLUGIN': 'insightface.Calculator@arcface_mobilefacenet', 'EXTRA_PLUGINS': ['insightface.LandmarksDetector', 'insightface.GenderDetector', 'insightface.AgeDetector', 'insightface.facemask.MaskDetector', 'insightface.PoseEstimator'], 'FACE_DETECTION_PLUGIN': 'insightface.FaceDetector@retinaface_mnet025_v1', 'GPU_IDX': 0, 'IMG_LENGTH_LIMIT': 640, 'INTEL_OPTIMIZATION': False, 'IS_DEV_ENV': False, 'LOGGING_LEVEL_NAME': 'DEBUG', 'ML_PORT': 3000, 'RUN_MODE': True}", "request": null, "logger": "src.app", "module": "app", "traceback": null, "build_version": "dev"}
{"severity": "DEBUG", "message": "Creating new app for WSGI", "request": null, "logger": "src.app", "module": "app", "traceback": null, "build_version": "dev"}
WSGI app 0 (mountpoint='') ready in 3 seconds on interpreter 0x5566670000 pid: 1 (default app)
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 1)
spawned uWSGI worker 1 (pid: 14, cores: 1)
{"severity": "INFO", "message": "200 OK", "request": {"method": "GET", "path": "/status", "filename": "", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "src.services.flask_.log_response", "module": "log_response", "traceback": null, "build_version": "dev"}
{"severity": "INFO", "message": "200 OK", "request": {"method": "GET", "path": "/status", "filename": "", "api_key": "", "remote_addr": "172.19.0.6"}, "logger": "src.services.flask_.log_response", "module": "log_response", "traceback": null, "build_version": "dev"}
{"severity": "INFO", "message": "200 OK", "request": {"method": "GET", "path": "/status", "filename": "", "api_key": "", "remote_addr": "172.19.0.6"}, "logger": "src.services.flask_.log_response", "module": "log_response", "traceback": null, "build_version": "dev"}
{"severity": "INFO", "message": "200 OK", "request": {"method": "GET", "path": "/status", "filename": "", "api_key": "", "remote_addr": "172.19.0.6"}, "logger": "src.services.flask_.log_response", "module": "log_response", "traceback": null, "build_version": "dev"}
[01:48:08] src/nnvm/legacy_json_util.cc:209: Loading symbol saved by previous version v1.2.0. Attempting to upgrade...
[01:48:08] src/nnvm/legacy_json_util.cc:217: Symbol successfully upgraded!
[01:48:08] src/engine/engine.cc:55: MXNet start using engine: ThreadedEnginePerDevice
[01:48:08] src/base.cc:80: cuDNN lib mismatch: linked-against version 8201 != compiled-against version 8000.  Set MXNET_CUDNN_LIB_CHECKING=0 to quiet this warning.
[32, 16, 8] {'32': {'SCALES': (32, 16), 'BASE_SIZE': 16, 'RATIOS': (1.0,), 'ALLOWED_BORDER': 9999}, '16': {'SCALES': (8, 4), 'BASE_SIZE': 16, 'RATIOS': (1.0,), 'ALLOWED_BORDER': 9999}, '8': {'SCALES': (2, 1), 'BASE_SIZE': 16, 'RATIOS': (1.0,), 'ALLOWED_BORDER': 9999}}
use_landmarks True
{"severity": "DEBUG", "message": "Found: BoundingBoxDTO(x_min=75, y_min=107, x_max=169, y_max=213, probability=0.9144365191459656, _np_landmarks=array([[ 94.3847  , 135.70493 ],\n       [129.02686 , 146.25388 ],\n       [ 90.869064, 157.00577 ],\n       [ 81.520065, 178.39548 ],\n       [106.2912  , 186.9093  ]], dtype=float32))", "request": {"method": "POST", "path": "/find_faces", "filename": "44c3426b-88b3-4809-9eca-b855cc2e5c8f-mqtt-4c2cf8d4-e712-4168-83d8-e5dc69cdc8da.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "src.services.facescan.plugins.insightface.insightface", "module": "insightface", "traceback": null, "build_version": "dev"}
[01:48:59] src/nnvm/legacy_json_util.cc:209: Loading symbol saved by previous version v1.0.0. Attempting to upgrade...
[01:48:59] src/nnvm/legacy_json_util.cc:217: Symbol successfully upgraded!
{"severity": "INFO", "message": "200 OK", "request": {"method": "POST", "path": "/find_faces", "filename": "44c3426b-88b3-4809-9eca-b855cc2e5c8f-mqtt-4c2cf8d4-e712-4168-83d8-e5dc69cdc8da.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "src.services.flask_.log_response", "module": "log_response", "traceback": null, "build_version": "dev"}
{"severity": "DEBUG", "message": "Found: BoundingBoxDTO(x_min=126, y_min=197, x_max=314, y_max=400, probability=0.9837614893913269, _np_landmarks=array([[158.34282, 257.6136 ],\n       [232.86133, 265.72784],\n       [169.65201, 282.87625],\n       [158.09995, 335.88266],\n       [216.62791, 342.83426]], dtype=float32))", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481637.173793-njx4ci-snapshot-f804c6fa-ecc8-4d5d-9ddc-dd21e10c7206.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "src.services.facescan.plugins.insightface.insightface", "module": "insightface", "traceback": null, "build_version": "dev"}
{"severity": "INFO", "message": "200 OK", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481637.173793-njx4ci-snapshot-f804c6fa-ecc8-4d5d-9ddc-dd21e10c7206.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "src.services.flask_.log_response", "module": "log_response", "traceback": null, "build_version": "dev"}
{"severity": "WARNING", "message": "400 Bad Request: No face is found in the given image", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481637.173793-njx4ci-latest-a9783cb6-4fa9-496d-a471-ae7cb59ecf2c.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "root", "module": "error_handling", "traceback": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1950, in full_dispatch_request\n    rv = self.dispatch_request()\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1936, in dispatch_request\n    return self.view_functions[rule.endpoint](**req.view_args)\n  File \"./src/services/flask_/needs_attached_file.py\", line 32, in wrapper\n    return f(*args, **kwargs)\n  File \"./src/_endpoints.py\", line 75, in find_faces_post\n    faces = _limit(faces, request.values.get(ARG.LIMIT))\n  File \"./src/_endpoints.py\", line 121, in _limit\n    raise NoFaceFoundError\nsrc.exceptions.NoFaceFoundError: 400 Bad Request: No face is found in the given image\n", "build_version": "dev"}
{"severity": "WARNING", "message": "400 Bad Request: No face is found in the given image", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481637.173793-njx4ci-latest-b204ca71-8724-4464-b6dc-87af7d80d290.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "root", "module": "error_handling", "traceback": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1950, in full_dispatch_request\n    rv = self.dispatch_request()\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1936, in dispatch_request\n    return self.view_functions[rule.endpoint](**req.view_args)\n  File \"./src/services/flask_/needs_attached_file.py\", line 32, in wrapper\n    return f(*args, **kwargs)\n  File \"./src/_endpoints.py\", line 75, in find_faces_post\n    faces = _limit(faces, request.values.get(ARG.LIMIT))\n  File \"./src/_endpoints.py\", line 121, in _limit\n    raise NoFaceFoundError\nsrc.exceptions.NoFaceFoundError: 400 Bad Request: No face is found in the given image\n", "build_version": "dev"}
{"severity": "DEBUG", "message": "Found: BoundingBoxDTO(x_min=127, y_min=76, x_max=180, y_max=133, probability=0.8354594707489014, _np_landmarks=array([[139.7618 ,  91.0717 ],\n       [160.77344,  96.28698],\n       [142.19424, 102.25295],\n       [135.00635, 114.07473],\n       [150.9277 , 117.96715]], dtype=float32))", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481637.173793-njx4ci-snapshot-6da03275-d7d3-4d3b-a2f8-2f4d79157cc3.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "src.services.facescan.plugins.insightface.insightface", "module": "insightface", "traceback": null, "build_version": "dev"}
{"severity": "INFO", "message": "200 OK", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481637.173793-njx4ci-snapshot-6da03275-d7d3-4d3b-a2f8-2f4d79157cc3.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "src.services.flask_.log_response", "module": "log_response", "traceback": null, "build_version": "dev"}
{"severity": "WARNING", "message": "400 Bad Request: No face is found in the given image", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481637.173793-njx4ci-latest-c214aa4b-82f1-4504-ac40-84e64b9d2758.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "root", "module": "error_handling", "traceback": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1950, in full_dispatch_request\n    rv = self.dispatch_request()\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1936, in dispatch_request\n    return self.view_functions[rule.endpoint](**req.view_args)\n  File \"./src/services/flask_/needs_attached_file.py\", line 32, in wrapper\n    return f(*args, **kwargs)\n  File \"./src/_endpoints.py\", line 75, in find_faces_post\n    faces = _limit(faces, request.values.get(ARG.LIMIT))\n  File \"./src/_endpoints.py\", line 121, in _limit\n    raise NoFaceFoundError\nsrc.exceptions.NoFaceFoundError: 400 Bad Request: No face is found in the given image\n", "build_version": "dev"}
{"severity": "WARNING", "message": "400 Bad Request: No face is found in the given image", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481637.173793-njx4ci-latest-d8b9cb3c-c7d1-4e23-a4aa-4ab10d195b88.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "root", "module": "error_handling", "traceback": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1950, in full_dispatch_request\n    rv = self.dispatch_request()\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1936, in dispatch_request\n    return self.view_functions[rule.endpoint](**req.view_args)\n  File \"./src/services/flask_/needs_attached_file.py\", line 32, in wrapper\n    return f(*args, **kwargs)\n  File \"./src/_endpoints.py\", line 75, in find_faces_post\n    faces = _limit(faces, request.values.get(ARG.LIMIT))\n  File \"./src/_endpoints.py\", line 121, in _limit\n    raise NoFaceFoundError\nsrc.exceptions.NoFaceFoundError: 400 Bad Request: No face is found in the given image\n", "build_version": "dev"}
{"severity": "WARNING", "message": "400 Bad Request: No face is found in the given image", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481637.173793-njx4ci-latest-10a98151-7aff-4a81-8510-deec95f75ed1.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "root", "module": "error_handling", "traceback": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1950, in full_dispatch_request\n    rv = self.dispatch_request()\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1936, in dispatch_request\n    return self.view_functions[rule.endpoint](**req.view_args)\n  File \"./src/services/flask_/needs_attached_file.py\", line 32, in wrapper\n    return f(*args, **kwargs)\n  File \"./src/_endpoints.py\", line 75, in find_faces_post\n    faces = _limit(faces, request.values.get(ARG.LIMIT))\n  File \"./src/_endpoints.py\", line 121, in _limit\n    raise NoFaceFoundError\nsrc.exceptions.NoFaceFoundError: 400 Bad Request: No face is found in the given image\n", "build_version": "dev"}
{"severity": "WARNING", "message": "400 Bad Request: No face is found in the given image", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481637.173793-njx4ci-latest-e9fa4796-a2de-464d-8b60-f547972f66e5.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "root", "module": "error_handling", "traceback": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1950, in full_dispatch_request\n    rv = self.dispatch_request()\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1936, in dispatch_request\n    return self.view_functions[rule.endpoint](**req.view_args)\n  File \"./src/services/flask_/needs_attached_file.py\", line 32, in wrapper\n    return f(*args, **kwargs)\n  File \"./src/_endpoints.py\", line 75, in find_faces_post\n    faces = _limit(faces, request.values.get(ARG.LIMIT))\n  File \"./src/_endpoints.py\", line 121, in _limit\n    raise NoFaceFoundError\nsrc.exceptions.NoFaceFoundError: 400 Bad Request: No face is found in the given image\n", "build_version": "dev"}
{"severity": "WARNING", "message": "400 Bad Request: No face is found in the given image", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481637.173793-njx4ci-latest-73bfea15-34ed-4250-ab02-8b93bb7ede97.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "root", "module": "error_handling", "traceback": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1950, in full_dispatch_request\n    rv = self.dispatch_request()\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1936, in dispatch_request\n    return self.view_functions[rule.endpoint](**req.view_args)\n  File \"./src/services/flask_/needs_attached_file.py\", line 32, in wrapper\n    return f(*args, **kwargs)\n  File \"./src/_endpoints.py\", line 75, in find_faces_post\n    faces = _limit(faces, request.values.get(ARG.LIMIT))\n  File \"./src/_endpoints.py\", line 121, in _limit\n    raise NoFaceFoundError\nsrc.exceptions.NoFaceFoundError: 400 Bad Request: No face is found in the given image\n", "build_version": "dev"}
{"severity": "WARNING", "message": "400 Bad Request: No face is found in the given image", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481637.173793-njx4ci-latest-f350d835-c6ea-4c50-869f-f515b8768f66.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "root", "module": "error_handling", "traceback": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1950, in full_dispatch_request\n    rv = self.dispatch_request()\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1936, in dispatch_request\n    return self.view_functions[rule.endpoint](**req.view_args)\n  File \"./src/services/flask_/needs_attached_file.py\", line 32, in wrapper\n    return f(*args, **kwargs)\n  File \"./src/_endpoints.py\", line 75, in find_faces_post\n    faces = _limit(faces, request.values.get(ARG.LIMIT))\n  File \"./src/_endpoints.py\", line 121, in _limit\n    raise NoFaceFoundError\nsrc.exceptions.NoFaceFoundError: 400 Bad Request: No face is found in the given image\n", "build_version": "dev"}
{"severity": "WARNING", "message": "400 Bad Request: No face is found in the given image", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481637.173793-njx4ci-latest-3add346f-130b-4e66-b186-f3d383b5bfd1.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "root", "module": "error_handling", "traceback": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1950, in full_dispatch_request\n    rv = self.dispatch_request()\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1936, in dispatch_request\n    return self.view_functions[rule.endpoint](**req.view_args)\n  File \"./src/services/flask_/needs_attached_file.py\", line 32, in wrapper\n    return f(*args, **kwargs)\n  File \"./src/_endpoints.py\", line 75, in find_faces_post\n    faces = _limit(faces, request.values.get(ARG.LIMIT))\n  File \"./src/_endpoints.py\", line 121, in _limit\n    raise NoFaceFoundError\nsrc.exceptions.NoFaceFoundError: 400 Bad Request: No face is found in the given image\n", "build_version": "dev"}
{"severity": "WARNING", "message": "400 Bad Request: No face is found in the given image", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481637.173793-njx4ci-latest-cdf24f17-b7d7-43cd-b1b5-fd77bcd4ca29.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "root", "module": "error_handling", "traceback": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1950, in full_dispatch_request\n    rv = self.dispatch_request()\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1936, in dispatch_request\n    return self.view_functions[rule.endpoint](**req.view_args)\n  File \"./src/services/flask_/needs_attached_file.py\", line 32, in wrapper\n    return f(*args, **kwargs)\n  File \"./src/_endpoints.py\", line 75, in find_faces_post\n    faces = _limit(faces, request.values.get(ARG.LIMIT))\n  File \"./src/_endpoints.py\", line 121, in _limit\n    raise NoFaceFoundError\nsrc.exceptions.NoFaceFoundError: 400 Bad Request: No face is found in the given image\n", "build_version": "dev"}
{"severity": "INFO", "message": "200 OK", "request": {"method": "GET", "path": "/status", "filename": "", "api_key": "", "remote_addr": "172.19.0.6"}, "logger": "src.services.flask_.log_response", "module": "log_response", "traceback": null, "build_version": "dev"}
{"severity": "DEBUG", "message": "Found: BoundingBoxDTO(x_min=22, y_min=91, x_max=99, y_max=175, probability=0.9725057482719421, _np_landmarks=array([[ 35.31655 , 118.04654 ],\n       [ 67.05827 , 118.37584 ],\n       [ 43.088284, 133.33997 ],\n       [ 38.198364, 151.40254 ],\n       [ 63.761257, 151.38004 ]], dtype=float32))", "request": {"method": "POST", "path": "/find_faces", "filename": "251d70d5-ffbc-4dc7-abcc-d16ab31b9ee0-mqtt-b304598c-ac4d-48b1-9a8f-af02d5a583ca.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "src.services.facescan.plugins.insightface.insightface", "module": "insightface", "traceback": null, "build_version": "dev"}
{"severity": "INFO", "message": "200 OK", "request": {"method": "POST", "path": "/find_faces", "filename": "251d70d5-ffbc-4dc7-abcc-d16ab31b9ee0-mqtt-b304598c-ac4d-48b1-9a8f-af02d5a583ca.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "src.services.flask_.log_response", "module": "log_response", "traceback": null, "build_version": "dev"}
{"severity": "DEBUG", "message": "Found: BoundingBoxDTO(x_min=410, y_min=237, x_max=543, y_max=394, probability=0.9903636574745178, _np_landmarks=array([[426.33902, 283.59744],\n       [479.6272 , 285.01675],\n       [426.9375 , 305.7049 ],\n       [422.10367, 347.48584],\n       [463.60403, 348.26828]], dtype=float32))", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481824.59661-rp4y4p-latest-fb72b1f7-cd28-498c-881d-7c9626bb6ef4.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "src.services.facescan.plugins.insightface.insightface", "module": "insightface", "traceback": null, "build_version": "dev"}
{"severity": "INFO", "message": "200 OK", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481824.59661-rp4y4p-latest-fb72b1f7-cd28-498c-881d-7c9626bb6ef4.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "src.services.flask_.log_response", "module": "log_response", "traceback": null, "build_version": "dev"}
{"severity": "DEBUG", "message": "Found: BoundingBoxDTO(x_min=37, y_min=171, x_max=176, y_max=331, probability=0.9958721995353699, _np_landmarks=array([[ 55.51998 , 225.11555 ],\n       [118.90018 , 221.54378 ],\n       [ 71.2811  , 249.07097 ],\n       [ 59.907166, 287.20132 ],\n       [112.65994 , 283.8923  ]], dtype=float32))", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481824.59661-rp4y4p-snapshot-26566bf8-3629-437f-840f-ad9fd5f41607.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "src.services.facescan.plugins.insightface.insightface", "module": "insightface", "traceback": null, "build_version": "dev"}
{"severity": "INFO", "message": "200 OK", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481824.59661-rp4y4p-snapshot-26566bf8-3629-437f-840f-ad9fd5f41607.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "src.services.flask_.log_response", "module": "log_response", "traceback": null, "build_version": "dev"}
{"severity": "WARNING", "message": "400 Bad Request: No face is found in the given image", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481824.59661-rp4y4p-latest-53ca6743-cde2-41e8-8957-a1ade815523f.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "root", "module": "error_handling", "traceback": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1950, in full_dispatch_request\n    rv = self.dispatch_request()\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1936, in dispatch_request\n    return self.view_functions[rule.endpoint](**req.view_args)\n  File \"./src/services/flask_/needs_attached_file.py\", line 32, in wrapper\n    return f(*args, **kwargs)\n  File \"./src/_endpoints.py\", line 75, in find_faces_post\n    faces = _limit(faces, request.values.get(ARG.LIMIT))\n  File \"./src/_endpoints.py\", line 121, in _limit\n    raise NoFaceFoundError\nsrc.exceptions.NoFaceFoundError: 400 Bad Request: No face is found in the given image\n", "build_version": "dev"}
{"severity": "WARNING", "message": "400 Bad Request: No face is found in the given image", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481824.59661-rp4y4p-latest-2a3b3734-df6d-44d7-93d3-2ef2b5b38dbc.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "root", "module": "error_handling", "traceback": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1950, in full_dispatch_request\n    rv = self.dispatch_request()\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1936, in dispatch_request\n    return self.view_functions[rule.endpoint](**req.view_args)\n  File \"./src/services/flask_/needs_attached_file.py\", line 32, in wrapper\n    return f(*args, **kwargs)\n  File \"./src/_endpoints.py\", line 75, in find_faces_post\n    faces = _limit(faces, request.values.get(ARG.LIMIT))\n  File \"./src/_endpoints.py\", line 121, in _limit\n    raise NoFaceFoundError\nsrc.exceptions.NoFaceFoundError: 400 Bad Request: No face is found in the given image\n", "build_version": "dev"}
{"severity": "WARNING", "message": "400 Bad Request: No face is found in the given image", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481824.59661-rp4y4p-latest-eed0619c-8a45-4c09-9d02-c540c8e647e4.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "root", "module": "error_handling", "traceback": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1950, in full_dispatch_request\n    rv = self.dispatch_request()\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1936, in dispatch_request\n    return self.view_functions[rule.endpoint](**req.view_args)\n  File \"./src/services/flask_/needs_attached_file.py\", line 32, in wrapper\n    return f(*args, **kwargs)\n  File \"./src/_endpoints.py\", line 75, in find_faces_post\n    faces = _limit(faces, request.values.get(ARG.LIMIT))\n  File \"./src/_endpoints.py\", line 121, in _limit\n    raise NoFaceFoundError\nsrc.exceptions.NoFaceFoundError: 400 Bad Request: No face is found in the given image\n", "build_version": "dev"}
{"severity": "WARNING", "message": "400 Bad Request: No face is found in the given image", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481824.59661-rp4y4p-latest-d0a08cd7-a4bf-433e-8d10-19632cbc1e17.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "root", "module": "error_handling", "traceback": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1950, in full_dispatch_request\n    rv = self.dispatch_request()\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1936, in dispatch_request\n    return self.view_functions[rule.endpoint](**req.view_args)\n  File \"./src/services/flask_/needs_attached_file.py\", line 32, in wrapper\n    return f(*args, **kwargs)\n  File \"./src/_endpoints.py\", line 75, in find_faces_post\n    faces = _limit(faces, request.values.get(ARG.LIMIT))\n  File \"./src/_endpoints.py\", line 121, in _limit\n    raise NoFaceFoundError\nsrc.exceptions.NoFaceFoundError: 400 Bad Request: No face is found in the given image\n", "build_version": "dev"}
{"severity": "WARNING", "message": "400 Bad Request: No face is found in the given image", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481824.59661-rp4y4p-latest-6cefe7a6-0fa1-4ae5-ba32-6e6f9e0b2e2b.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "root", "module": "error_handling", "traceback": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1950, in full_dispatch_request\n    rv = self.dispatch_request()\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1936, in dispatch_request\n    return self.view_functions[rule.endpoint](**req.view_args)\n  File \"./src/services/flask_/needs_attached_file.py\", line 32, in wrapper\n    return f(*args, **kwargs)\n  File \"./src/_endpoints.py\", line 75, in find_faces_post\n    faces = _limit(faces, request.values.get(ARG.LIMIT))\n  File \"./src/_endpoints.py\", line 121, in _limit\n    raise NoFaceFoundError\nsrc.exceptions.NoFaceFoundError: 400 Bad Request: No face is found in the given image\n", "build_version": "dev"}
{"severity": "WARNING", "message": "400 Bad Request: No face is found in the given image", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481824.59661-rp4y4p-latest-ad9d053c-a0de-4bdc-9c92-4b30f4d5b229.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "root", "module": "error_handling", "traceback": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1950, in full_dispatch_request\n    rv = self.dispatch_request()\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1936, in dispatch_request\n    return self.view_functions[rule.endpoint](**req.view_args)\n  File \"./src/services/flask_/needs_attached_file.py\", line 32, in wrapper\n    return f(*args, **kwargs)\n  File \"./src/_endpoints.py\", line 75, in find_faces_post\n    faces = _limit(faces, request.values.get(ARG.LIMIT))\n  File \"./src/_endpoints.py\", line 121, in _limit\n    raise NoFaceFoundError\nsrc.exceptions.NoFaceFoundError: 400 Bad Request: No face is found in the given image\n", "build_version": "dev"}
{"severity": "WARNING", "message": "400 Bad Request: No face is found in the given image", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481824.59661-rp4y4p-latest-6e6988ae-4b23-4310-add6-ed3d811be044.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "root", "module": "error_handling", "traceback": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1950, in full_dispatch_request\n    rv = self.dispatch_request()\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1936, in dispatch_request\n    return self.view_functions[rule.endpoint](**req.view_args)\n  File \"./src/services/flask_/needs_attached_file.py\", line 32, in wrapper\n    return f(*args, **kwargs)\n  File \"./src/_endpoints.py\", line 75, in find_faces_post\n    faces = _limit(faces, request.values.get(ARG.LIMIT))\n  File \"./src/_endpoints.py\", line 121, in _limit\n    raise NoFaceFoundError\nsrc.exceptions.NoFaceFoundError: 400 Bad Request: No face is found in the given image\n", "build_version": "dev"}
{"severity": "WARNING", "message": "400 Bad Request: No face is found in the given image", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481824.59661-rp4y4p-latest-ff556f46-15dd-40f0-ac96-314dcc32d57c.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "root", "module": "error_handling", "traceback": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1950, in full_dispatch_request\n    rv = self.dispatch_request()\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1936, in dispatch_request\n    return self.view_functions[rule.endpoint](**req.view_args)\n  File \"./src/services/flask_/needs_attached_file.py\", line 32, in wrapper\n    return f(*args, **kwargs)\n  File \"./src/_endpoints.py\", line 75, in find_faces_post\n    faces = _limit(faces, request.values.get(ARG.LIMIT))\n  File \"./src/_endpoints.py\", line 121, in _limit\n    raise NoFaceFoundError\nsrc.exceptions.NoFaceFoundError: 400 Bad Request: No face is found in the given image\n", "build_version": "dev"}
{"severity": "WARNING", "message": "400 Bad Request: No face is found in the given image", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481824.59661-rp4y4p-latest-5cb68b76-ecef-411c-a86a-92c0dd20cd8e.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "root", "module": "error_handling", "traceback": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1950, in full_dispatch_request\n    rv = self.dispatch_request()\n  File \"/usr/local/lib/python3.7/dist-packages/flask/app.py\", line 1936, in dispatch_request\n    return self.view_functions[rule.endpoint](**req.view_args)\n  File \"./src/services/flask_/needs_attached_file.py\", line 32, in wrapper\n    return f(*args, **kwargs)\n  File \"./src/_endpoints.py\", line 75, in find_faces_post\n    faces = _limit(faces, request.values.get(ARG.LIMIT))\n  File \"./src/_endpoints.py\", line 121, in _limit\n    raise NoFaceFoundError\nsrc.exceptions.NoFaceFoundError: 400 Bad Request: No face is found in the given image\n", "build_version": "dev"}
{"severity": "DEBUG", "message": "Found: BoundingBoxDTO(x_min=104, y_min=57, x_max=154, y_max=115, probability=0.9958778619766235, _np_landmarks=array([[112.42999 ,  76.01187 ],\n       [133.65552 ,  76.55905 ],\n       [118.15546 ,  86.784706],\n       [114.340195,  98.35726 ],\n       [131.36154 ,  98.65559 ]], dtype=float32))", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481824.59661-rp4y4p-snapshot-a78c89c6-c21e-43c4-9291-e03082991da2.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "src.services.facescan.plugins.insightface.insightface", "module": "insightface", "traceback": null, "build_version": "dev"}
{"severity": "INFO", "message": "200 OK", "request": {"method": "POST", "path": "/find_faces", "filename": "1679481824.59661-rp4y4p-snapshot-a78c89c6-c21e-43c4-9291-e03082991da2.jpg", "api_key": "", "remote_addr": "172.19.0.4"}, "logger": "src.services.flask_.log_response", "module": "log_response", "traceback": null, "build_version": "dev"}

I am unsure on how it can not find a face, I am staring into the camera. :)

@whitepail
Copy link

whitepail commented Mar 22, 2023 via email

@jurgenweber
Copy link

jurgenweber commented Mar 22, 2023

It is just spamming

192.168.1.95 - - [22/Mar/2023:21:22:37 +0000] "GET /api/v1/consistence/status HTTP/1.0" 200 94 "https://mydomain.com/login?redirect=%2F" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"

Seems like it is just trying to get that status, while return 200 the front page still gives me that picture.

going directly to /api/v1/consistence/status I get

image

I see this in the api logs

2023-03-22 19:54:54.405 ERROR 7 --- [nio-8080-exec-9] c.e.f.c.h.ResponseExceptionHandler       : Undefined exception occurred
java.lang.IllegalStateException: data[667].length=128 must be equal to number of columns 512

@pospielov
Copy link
Collaborator

data[667].length=128 must be equal to number of columns 512

Is it possible that you use the database from another CompreFace build?
Just an idea - the default CompreFace build gets embedding of 512 numbers from the face and mobilenet version 128 numbers.

@jurgenweber
Copy link

jurgenweber commented Mar 28, 2023

yeah, 100%. I started some months ago and just update with master when I see an update. I may have switched between 'dev' and non dev at some point also.

What is the best way to resolve? Are there some manual db migrations to run or somehting?

Just an idea - the default CompreFace build gets embedding of 512 numbers from the face and mobilenet version 128 numbers.

I am not sure what this means.

@jurgenweber
Copy link

jurgenweber commented Mar 28, 2023

ah, right. So, I started with just the arm build which I assume is default but then I am now using @whitepail build so I could use the GPU on my jetson nano, which is mobilenet looking at the image tag.

SO yeah, what should I do to resolve?

@pospielov
Copy link
Collaborator

We don't have official migration, so ideally, you need the following:

  1. Stop CompreFace
  2. Delete the volume (docker volume rm )
  3. Start CompreFace

But we have unofficial migration:
Empty POST request to this endpoint: http://${FRS_HOST}/api/v1/migrate
We didn't make it official, as it's not an easy process, it may fail, it would require additional UI, etc. Not sure if it even works, as we created it in the 0.6 release, and it's not a part of the regression testing process. But you can try your luck if deleting volume is not an option for you.

@jurgenweber
Copy link

Yeah, I thought you might say that. I tried the migrate thing but it failed. Lots of

2023-03-28 22:06:00.829  INFO 7 --- [         task-1] c.e.f.c.t.c.m.MigrationComponent         : Migrating embedding with id cd57fb3b-7ea7-4a63-8c05-313f9cf0da5b
2023-03-28 22:06:00.989 ERROR 7 --- [         task-1] c.e.f.c.t.c.m.MigrationComponent         : Error during processing embedding with id cd57fb3b-7ea7-4a63-8c05-313f9cf0da5b
feign.FeignException$BadRequest: [400 BAD REQUEST] during [POST] to [http://compreface-core:3000/find_faces] [FacesFeignClient#findFaces(MultipartFile,Integer,Double,String,Boolean)]: [{"message":"400 Bad Request: No face is found in the given image"}

but afterwards I still get:

2023-03-28 22:17:00.207 ERROR 7 --- [nio-8080-exec-2] c.e.f.c.h.ResponseExceptionHandler       : Undefined exception occurred
java.lang.IllegalStateException: data[5].length=128 must be equal to number of columns 512

@jurgenweber
Copy link

jurgenweber commented Mar 28, 2023

ok, so dumping the volume and starting again has got me goin, thanks!

@pospielov
Copy link
Collaborator

Yeah, I thought you might say that. I tried the migrate thing but it failed. Lots of

Such errors mean that the new model didn't find faces on the image. This is bad as you will need to reupload them somehow manually. However, it's not a fail of migration, I think you just need to wait until the end.

@Davo-Exp4
Copy link

Hi, I have followed the @pospielov guide, cloning the dev branch and building the image as indicated on a jetson xavier nx. I have a problem, the containers come up normally but when I try to open the web interface on port 8000 I get the default nginx server page.

image

Please help me to solve this problem.

I attach the logs of the container:

root@jetson:/home/jetson# docker logs 263
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: /etc/nginx/conf.d/default.conf is not a file or does not exist, exiting
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
20-envsubst-on-templates.sh: Running envsubst on /etc/nginx/templates/nginx.conf.template to /etc/nginx/conf.d/nginx.conf
/docker-entrypoint.sh: Configuration complete; ready for start up

@jurgenweber
Copy link

Hi, I have followed the @pospielov guide, cloning the dev branch and building the image as indicated on a jetson xavier nx. I have a problem, the containers come up normally but when I try to open the web interface on port 8000 I get the default nginx server page.

image

Please help me to solve this problem.

I attach the logs of the container:

root@jetson:/home/jetson# docker logs 263 /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: /etc/nginx/conf.d/default.conf is not a file or does not exist, exiting /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh 20-envsubst-on-templates.sh: Running envsubst on /etc/nginx/templates/nginx.conf.template to /etc/nginx/conf.d/nginx.conf /docker-entrypoint.sh: Configuration complete; ready for start up

Yeah, I had this problem also. It is because we started with the dev frontend bash script. Remove the dev bit out/run it manually and it works.

So, here is the dev start.sh: https://github.com/exadel-inc/CompreFace/blob/master/dev/start.sh

to start it, just run

docker-compose -f docker-compose.yml up --build &

@jurgenweber
Copy link

Yeah, I thought you might say that. I tried the migrate thing but it failed. Lots of

Such errors mean that the new model didn't find faces on the image. This is bad as you will need to reupload them somehow manually. However, it's not a fail of migration, I think you just need to wait until the end.

Ok, so.. Well I am using double take so I have a copy of every image and I can get it to retrain quite easily. What I found is, when using the CUDA stuff it only finds faces in about 10% of the old pictures that the CPU found faces in. So it is just not as good at 'finding' faces. Is there a way to tweak this more?

@whitepail

@whitepail
Copy link

whitepail commented Apr 26, 2023

Yep.
I've tested mobilenet GPU model for a month and it had lots of detection errors.
Today I rebuilt arcface-r50 and arcface-r100 versions for jetson.

They are much more accurate and also use different face detection (retinaface_r50_v1 instead of retinaface_mnet025_v1).

Two major problems:

  1. arcface-r50 uses up to 2.5 GB GPU Mem (which is RAM actually), arcface-r100 uses up to 3 GB GPU Mem. So run only 1 UWSGI process max, no parallel execution or you will get OutOfMemory and UWSGI scripts dying!!! I've adjusted docker-compose.yml for that
  2. I'm not happy with retinaface_r50_v1 model for face detection as it doesn't detect my 6-year old kid's face when he wears both glasses and a hat. For all other photos it detects quite good. Maybe will change detect model to SCRFD later.

Docker hub repo is the same.
My current run:
compreface-core:
restart: always
image: whitepail/compreface-core:arm64-arcface-r50-gpu
container_name: "compreface-core"
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
- ML_PORT=3000
- IMG_LENGTH_LIMIT=${max_detect_size}
- UWSGI_PROCESSES=1
- UWSGI_THREADS=1

@techgeek77
Copy link

Hi!
What is the current status of this issue? Im thinking of getting the B01 kit which is a nano 4GB.
What I'm trying to achieve is Frigate + Double-take + Compreface + Home Assistant. But I want to have a low profile machine to run all of this, hence considering the Nano. I will probably get the M.2 Coral and stick it in there for the object detection on Frigate's part before its sent to compreface. If i run the above docker command will it be sufficient or do i need to do some stuff like missing libraries or packages before i docker run?

Thanks!

@whitepail
Copy link

whitepail commented Aug 8, 2023 via email

@techgeek77
Copy link

ah.Its like $300+ more. Any other budget friendly boards that will handle compreface well? All others run on a RPi4+coral. My only issue is compreface...

Thanks!

@whitepail
Copy link

whitepail commented Aug 8, 2023 via email

@whitepail
Copy link

whitepail commented Aug 8, 2023 via email

@techgeek77
Copy link

Im in asia, but i still have PO box in the US so I guess that would work. Any pointers to where to look? eBay/amazon or somewhere else? Search terms on eBay doesn't bring up much but the whole kits which are pretty expensive. Even pre-owned.

I also feel like GPU based detection will do better. eGPU is another option I looked into but again the cost is not looking good for me over here... I will look into more.

The other issue is that if i get this all working well, I have few interested friends who want to set it up so i need to be able to replicate it for them....

@whitepail
Copy link

whitepail commented Aug 8, 2023 via email

@techgeek77
Copy link

Hi whitepail,
Sorry for the delayed response. eBay was showing search results for my area hence why I couldn't find what you were referring to. Once I set my region to US, I found it. I'm trying to get my hands on it, hopefully it still has some mileage on it and won't die on me as its pre-owned... Might take a while to get it through my freight forwarder. I'll update here when i have more information or have follow up questions!

Thank you for your feedback and your time!

@SeKa15
Copy link

SeKa15 commented Aug 11, 2023

Hi,
I have a Jetson Orin nano with 8 GB and a couple questions for setting it up. I would like to run on the GPU.

Do I have to overwrite or extend the compreface-core part with the the part from whitepale ?
Are any other changes needed ?

Thank you in advance.

@SeKa15
Copy link

SeKa15 commented Aug 17, 2023

| Listening for transport dt_socket at address: 5005
compreface-api | Listening for transport dt_socket at address: 5005
compreface-api |
compreface-api | . ____ _ __ _ _
compreface-api | /\ / ' __ _ () __ __ _ \ \ \
compreface-api | ( ( )_
_ | '_ | '| | ' / | \ \ \ \ compreface-api | \\/ ___)| |_)| | | | | || (_| | ) ) ) ) compreface-api | ' |____| .__|_| |_|_| |_\__, | / / / / compreface-api | =========|_|==============|___/=/_/_/_/ compreface-api | :: Spring Boot :: (v2.5.13) compreface-api | compreface-api | 2023-08-17 14:00:01.646 INFO 7 --- [kground-preinit] o.h.validator.internal.util.Version : HV000001: Hibernate Validator 6.2.3.Final compreface-api | 2023-08-17 14:00:01.705 INFO 7 --- [ main] com.exadel.frs.TrainServiceApplication : Starting TrainServiceApplication v0.0.1-SNAPSHOT using Java 11.0.8 on 93cc19fbdb8e with PID 7 (/home/app.jar started by root in /) compreface-api | 2023-08-17 14:00:01.722 INFO 7 --- [ main] com.exadel.frs.TrainServiceApplication : The following 1 profile is active: "dev" compreface-api | 2023-08-17 14:00:01.948 WARN 7 --- [ main] o.s.b.c.config.ConfigDataEnvironment : Property 'spring.profiles' imported from location 'class path resource [application.yml]' is invalid and should be replaced with 'spring.config.activate.on-profile' [origin: class path resource [application.yml] from app.jar - 94:13] compreface-admin | compreface-admin | . ____ _ __ _ _ compreface-admin | /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ compreface-admin | ( ( )\___ | '_ | '_| | '_ \/ _ | \ \ \
compreface-admin | \/ )| |)| | | | | || (| | ) ) ) )
compreface-admin | ' |
| .__|| ||| |_, | / / / /
compreface-admin | =========|
|==============|/=////
compreface-admin | :: Spring Boot :: (v2.5.13)
compreface-admin |
compreface-admin | 2023-08-17 14:00:01.744 INFO 7 --- [kground-preinit] o.h.validator.internal.util.Version : HV000001: Hibernate Validator 6.2.3.Final
compreface-admin | 2023-08-17 14:00:01.816 INFO 7 --- [ main] com.exadel.frs.FrsApplication : Starting FrsApplication v0.0.1-SNAPSHOT using Java 11.0.8 on ab5015d57c40 with PID 7 (/home/app.jar started by root in /)
compreface-admin | 2023-08-17 14:00:01.819 DEBUG 7 --- [ main] com.exadel.frs.FrsApplication : Running with Spring Boot v2.5.13, Spring v5.3.19
compreface-admin | 2023-08-17 14:00:01.821 INFO 7 --- [ main] com.exadel.frs.FrsApplication : The following 1 profile is active: "dev"
compreface-core | [uWSGI] getting INI configuration from uwsgi.ini
compreface-core | *** Starting uWSGI 2.0.19 (64bit) on [Thu Aug 17 14:00:05 2023] ***
compreface-core | compiled with version: 7.5.0 on 26 April 2023 09:09:37
compreface-core | os: Linux-5.10.120-tegra #1 SMP PREEMPT Tue Aug 1 12:32:50 PDT 2023
compreface-core | nodename: 8201bce769e9
compreface-core | machine: aarch64
compreface-core | clock source: unix
compreface-core | detected number of CPU cores: 6
compreface-core | current working directory: /app/ml
compreface-core | detected binary path: /usr/local/bin/uwsgi
compreface-core | !!! no internal routing support, rebuild with pcre support !!!
compreface-core | setgid() to 33
compreface-core | set additional group 44 (video)
compreface-core | setuid() to 33
compreface-core | your memory page size is 4096 bytes
compreface-core | detected max file descriptor number: 1048576
compreface-core | lock engine: pthread robust mutexes
compreface-core | thunder lock: disabled (you can enable it with --thunder-lock)
compreface-core | uwsgi socket 0 bound to TCP address 0.0.0.0:3000 fd 3
compreface-core | Python version: 3.7.5 (default, Dec 9 2021, 17:04:37) [GCC 8.4.0]
compreface-ui | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
compreface-ui | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
compreface-ui | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
compreface-ui | 10-listen-on-ipv6-by-default.sh: info: /etc/nginx/conf.d/default.conf is not a file or does not exist
compreface-ui | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
compreface-ui | 20-envsubst-on-templates.sh: Running envsubst on /etc/nginx/templates/nginx.conf.template to /etc/nginx/conf.d/nginx.conf
compreface-ui | /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
compreface-ui | /docker-entrypoint.sh: Configuration complete; ready for start up
compreface-postgres-db | 2023-08-17 13:59:55.603 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
compreface-postgres-db | 2023-08-17 13:59:55.603 UTC [1] LOG: listening on IPv6 address "::", port 5432
compreface-postgres-db | 2023-08-17 13:59:55.620 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
compreface-postgres-db | 2023-08-17 13:59:55.663 UTC [25] LOG: database system was shut down at 2023-08-17 13:58:32 UTC
compreface-postgres-db | 2023-08-17 13:59:55.676 UTC [1] LOG: database system is ready to accept connections
compreface-core | Python main interpreter initialized at 0xaaaae3118410
compreface-core | python threads support enabled
compreface-core | your server socket listen backlog is limited to 100 connections
compreface-core | your mercy for graceful operations on workers is 60 seconds
compreface-core | mapped 145808 bytes (142 KB) for 1 cores
compreface-core | *** Operational MODE: single process ***
compreface-api | 2023-08-17 14:00:05.915 INFO 7 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
compreface-api | 2023-08-17 14:00:06.289 INFO 7 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 340 ms. Found 8 JPA repository interfaces.
compreface-admin | 2023-08-17 14:00:06.927 INFO 7 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
compreface-admin | 2023-08-17 14:00:07.394 INFO 7 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 446 ms. Found 11 JPA repository interfaces.
compreface-admin | 2023-08-17 14:00:08.387 INFO 7 --- [ main] o.s.cloud.context.scope.GenericScope : BeanFactory id=87eecb33-b947-31b8-bbb7-8d063df92185
compreface-api | 2023-08-17 14:00:08.842 INFO 7 --- [ main] o.s.cloud.context.scope.GenericScope : BeanFactory id=9776d44d-52e1-38dc-b671-bd86977f22bf
compreface-core | {"severity": "INFO", "message": "{'BUILD_VERSION': 'dev', 'CALCULATION_PLUGIN': 'insightface.Calculator@arcface-r50-msfdrop75', 'EXTRA_PLUGINS': ['insightface.LandmarksDetector', 'insightface.GenderDetector', 'insightface.AgeDetector', 'insightface.facemask.MaskDetector', 'insightface.PoseEstimator'], 'FACE_DETECTION_PLUGIN': 'insightface.FaceDetector@retinaface_r50_v1', 'GPU_IDX': 0, 'IMG_LENGTH_LIMIT': 640, 'INTEL_OPTIMIZATION': False, 'IS_DEV_ENV': False, 'LOGGING_LEVEL_NAME': 'DEBUG', 'ML_PORT': 3000, 'RUN_MODE': True}", "request": null, "logger": "src.app", "module": "app", "traceback": null, "build_version": "dev"}
compreface-core | {"severity": "DEBUG", "message": "Creating new app for WSGI", "request": null, "logger": "src.app", "module": "app", "traceback": null, "build_version": "dev"}
compreface-core | WSGI app 0 (mountpoint='') ready in 4 seconds on interpreter 0xaaaae3118410 pid: 1 (default app)
compreface-core | *** uWSGI is running in multiple interpreter mode ***
compreface-core | spawned uWSGI master process (pid: 1)
compreface-core | spawned uWSGI worker 1 (pid: 31, cores: 1)
compreface-api | 2023-08-17 14:00:10.405 INFO 7 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'cacheConfig' of type [com.exadel.frs.core.trainservice.config.CacheConfig$$EnhancerBySpringCGLIB$$f0abbbd] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
compreface-api | 2023-08-17 14:00:11.797 INFO 7 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
compreface-api | 2023-08-17 14:00:11.824 INFO 7 --- [ main] o.a.coyote.http11.Http11NioProtocol : Initializing ProtocolHandler ["http-nio-8080"]
compreface-api | 2023-08-17 14:00:11.825 INFO 7 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
compreface-api | 2023-08-17 14:00:11.826 INFO 7 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.62]
compreface-admin | 2023-08-17 14:00:12.393 INFO 7 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
compreface-admin | 2023-08-17 14:00:12.415 INFO 7 --- [ main] o.a.coyote.http11.Http11NioProtocol : Initializing ProtocolHandler ["http-nio-8080"]
compreface-admin | 2023-08-17 14:00:12.416 INFO 7 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
compreface-admin | 2023-08-17 14:00:12.416 INFO 7 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.62]
compreface-api | 2023-08-17 14:00:12.447 INFO 7 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
compreface-api | 2023-08-17 14:00:12.447 INFO 7 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 10496 ms
compreface-admin | 2023-08-17 14:00:13.161 INFO 7 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
compreface-admin | 2023-08-17 14:00:13.162 INFO 7 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 11098 ms
compreface-api | 2023-08-17 14:00:13.670 INFO 7 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
compreface-api | 2023-08-17 14:00:13.991 INFO 7 --- [ main] org.hibernate.Version : HHH000412: Hibernate ORM core version 5.4.33
compreface-api | 2023-08-17 14:00:13.999 INFO 7 --- [ main] org.hibernate.cfg.Environment : HHH000205: Loaded properties from resource hibernate.properties: {hibernate.bytecode.use_reflection_optimizer=false, hibernate.types.print.banner=false}
compreface-api | 2023-08-17 14:00:14.538 INFO 7 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
compreface-admin | 2023-08-17 14:00:16.056 INFO 7 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
compreface-admin | 2023-08-17 14:00:16.252 INFO 7 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
compreface-admin | 2023-08-17 14:00:17.423 INFO 7 --- [ main] liquibase.database : Set default schema name to public
compreface-api | 2023-08-17 14:00:17.742 INFO 7 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
compreface-admin | 2023-08-17 14:00:17.837 INFO 7 --- [ main] liquibase.lockservice : Successfully acquired change log lock
compreface-api | 2023-08-17 14:00:18.113 INFO 7 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
compreface-api | 2023-08-17 14:00:18.248 INFO 7 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.PostgreSQL10Dialect
compreface-admin | 2023-08-17 14:00:19.060 INFO 7 --- [ main] liquibase.changelog : Reading from public.databasechangelog
compreface-admin | 2023-08-17 14:00:19.964 INFO 7 --- [ main] liquibase.lockservice : Successfully released change log lock
compreface-postgres-db | 2023-08-17 14:00:20.494 UTC [32] WARNING: there is no transaction in progress
compreface-admin | 2023-08-17 14:00:20.806 INFO 7 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
compreface-admin | 2023-08-17 14:00:21.490 INFO 7 --- [ main] org.hibernate.Version : HHH000412: Hibernate ORM core version 5.4.33
compreface-api | 2023-08-17 14:00:22.082 INFO 7 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
compreface-api | 2023-08-17 14:00:22.129 INFO 7 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
compreface-admin | 2023-08-17 14:00:22.538 INFO 7 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
compreface-admin | 2023-08-17 14:00:23.819 INFO 7 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.PostgreSQL10Dialect
compreface-admin | 2023-08-17 14:00:24.110 INFO 7 --- [ main] Hibernate Types : This framework is proudly powered by:
compreface-admin |
compreface-admin | >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
compreface-admin | _ _ _ _
compreface-admin | | | | | () | |
compreface-admin | | |__| |
_ _ __ ___ _ __ ___ _ | | ___ _ __ ___ ___
compreface-admin | | __ | | | | '
\ / _ \ '
/ | / | / _ \ ' \ / / _
compreface-admin | | | | | || | |) | / | _ \ _ \ || / | | | (| __/
compreface-admin | |
| ||_, | ./ _
|| |
/|
/___
|| ||__|
compreface-admin | / | |
compreface-admin | |
/||
compreface-admin |
compreface-admin | At Hypersistence, we only build amazing tools, like Hibernate Types, Flexy Pool, or Hypersistence Optimizer.
compreface-admin |
compreface-admin | What if there were a tool that could automatically detect JPA and Hibernate performance issues?
compreface-admin |
compreface-admin | Hypersistence Optimizer is that tool! For more details, go to:
compreface-admin |
compreface-admin | https://vladmihalcea.com/hypersistence-optimizer/
compreface-admin | <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
compreface-admin |
compreface-admin | 2023-08-17 14:00:29.548 INFO 7 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
compreface-admin | 2023-08-17 14:00:29.575 INFO 7 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
compreface-api | 2023-08-17 14:00:31.313 INFO 7 --- [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 1 endpoint(s) beneath base path '/actuator'
compreface-api | 2023-08-17 14:00:31.846 INFO 7 --- [ main] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)]
compreface-api | 2023-08-17 14:00:32.026 INFO 7 --- [ main] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor
compreface-api | 2023-08-17 14:00:32.054 INFO 7 --- [ main] org.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
compreface-api | 2023-08-17 14:00:32.054 INFO 7 --- [ main] org.quartz.core.QuartzScheduler : Quartz Scheduler v.2.3.2 created.
compreface-api | 2023-08-17 14:00:32.056 INFO 7 --- [ main] org.quartz.simpl.RAMJobStore : RAMJobStore initialized.
compreface-api | 2023-08-17 14:00:32.057 INFO 7 --- [ main] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.3.2) 'quartzScheduler' with instanceId 'NON_CLUSTERED'
compreface-api | Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
compreface-api | NOT STARTED.
compreface-api | Currently in standby mode.
compreface-api | Number of jobs executed: 0
compreface-api | Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
compreface-api | Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
compreface-api |
compreface-api | 2023-08-17 14:00:32.057 INFO 7 --- [ main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance.
compreface-api | 2023-08-17 14:00:32.058 INFO 7 --- [ main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.3.2
compreface-api | 2023-08-17 14:00:32.058 INFO 7 --- [ main] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@63eea8c4
compreface-api | 2023-08-17 14:00:32.068 INFO 7 --- [ main] org.quartz.core.QuartzScheduler : Scheduler quartzScheduler_$NON_CLUSTERED started.
compreface-api | 2023-08-17 14:00:33.500 INFO 7 --- [ main] o.a.coyote.http11.Http11NioProtocol : Starting ProtocolHandler ["http-nio-8080"]
compreface-api | 2023-08-17 14:00:33.601 INFO 7 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
compreface-api | 2023-08-17 14:00:33.607 INFO 7 --- [ main] d.s.w.p.DocumentationPluginsBootstrapper : Context refreshed
compreface-api | 2023-08-17 14:00:33.723 INFO 7 --- [ main] d.s.w.p.DocumentationPluginsBootstrapper : Found 2 custom documentation plugin(s)
compreface-api | 2023-08-17 14:00:34.184 INFO 7 --- [ main] s.d.s.w.s.ApiListingReferenceScanner : Scanning for api listing references
compreface-api | 2023-08-17 14:00:35.274 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: recognizeBase64UsingPOST_1
compreface-api | 2023-08-17 14:00:35.285 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: downloadImgUsingGET_1
compreface-api | 2023-08-17 14:00:35.561 INFO 7 --- [ main] s.d.s.w.s.ApiListingReferenceScanner : Scanning for api listing references
compreface-api | 2023-08-17 14:00:35.625 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getConfigUsingGET_1
compreface-api | 2023-08-17 14:00:35.632 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getCheckDemoUsingGET_1
compreface-api | 2023-08-17 14:00:35.690 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: detectUsingPOST_1
compreface-api | 2023-08-17 14:00:35.698 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: detectBase64UsingPOST_1
compreface-api | 2023-08-17 14:00:35.727 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addEmbeddingUsingPOST_1
compreface-api | 2023-08-17 14:00:35.736 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: addEmbeddingBase64UsingPOST_1
compreface-api | 2023-08-17 14:00:35.739 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteEmbeddingByIdUsingDELETE_1
compreface-api | 2023-08-17 14:00:35.749 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteEmbeddingsByIdUsingPOST_1
compreface-api | 2023-08-17 14:00:35.754 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: downloadImgUsingGET_2
compreface-api | 2023-08-17 14:00:35.767 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listEmbeddingsUsingGET_1
compreface-api | 2023-08-17 14:00:35.789 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: recognizeBase64UsingPOST_2
compreface-api | 2023-08-17 14:00:35.797 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: recognizeFileUsingPOST_1
compreface-api | 2023-08-17 14:00:35.801 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: removeAllSubjectEmbeddingsUsingDELETE_1
compreface-api | 2023-08-17 14:00:35.805 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: migrateUsingPOST_1
compreface-api | 2023-08-17 14:00:35.813 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: handleUsingGET_1
compreface-api | 2023-08-17 14:00:35.832 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: recognizeUsingPOST_1
compreface-api | 2023-08-17 14:00:35.839 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: recognizeBase64UsingPOST_3
compreface-api | 2023-08-17 14:00:35.844 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: downloadImgUsingGET_3
compreface-api | 2023-08-17 14:00:35.853 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: createSubjectUsingPOST_1
compreface-api | 2023-08-17 14:00:35.857 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteSubjectUsingDELETE_1
compreface-api | 2023-08-17 14:00:35.862 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteSubjectsUsingDELETE_1
compreface-api | 2023-08-17 14:00:35.866 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: listSubjectsUsingGET_1
compreface-api | 2023-08-17 14:00:35.872 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: renameSubjectUsingPUT_1
compreface-api | 2023-08-17 14:00:35.914 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: verifyUsingPOST_1
compreface-api | 2023-08-17 14:00:35.930 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: verifyBase64UsingPOST_1
compreface-api | 2023-08-17 14:00:36.017 INFO 7 --- [ main] com.exadel.frs.TrainServiceApplication : Started TrainServiceApplication in 37.03 seconds (JVM running for 39.72)
compreface-admin | 2023-08-17 14:00:39.076 INFO 7 --- [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 1 endpoint(s) beneath base path '/actuator'
compreface-admin | 2023-08-17 14:00:39.410 INFO 7 --- [ main] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)]
compreface-admin | 2023-08-17 14:00:42.544 WARN 7 --- [ main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Ant [pattern='/v2/api-docs']. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead.
compreface-admin | 2023-08-17 14:00:42.546 INFO 7 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will secure Ant [pattern='/v2/api-docs'] with []
compreface-admin | 2023-08-17 14:00:42.547 WARN 7 --- [ main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Ant [pattern='/configuration/ui']. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead.
compreface-admin | 2023-08-17 14:00:42.547 INFO 7 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will secure Ant [pattern='/configuration/ui'] with []
compreface-admin | 2023-08-17 14:00:42.547 WARN 7 --- [ main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Ant [pattern='/swagger-resources/']. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead.
compreface-admin | 2023-08-17 14:00:42.547 INFO 7 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will secure Ant [pattern='/swagger-resources/
'] with []
compreface-admin | 2023-08-17 14:00:42.547 WARN 7 --- [ main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Ant [pattern='/configuration/']. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead.
compreface-admin | 2023-08-17 14:00:42.547 INFO 7 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will secure Ant [pattern='/configuration/
'] with []
compreface-admin | 2023-08-17 14:00:42.547 WARN 7 --- [ main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Ant [pattern='/swagger-ui**']. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead.
compreface-admin | 2023-08-17 14:00:42.547 INFO 7 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will secure Ant [pattern='/swagger-ui**'] with []
compreface-admin | 2023-08-17 14:00:42.548 WARN 7 --- [ main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Ant [pattern='/webjars/']. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead.
compreface-admin | 2023-08-17 14:00:42.548 INFO 7 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will secure Ant [pattern='/webjars/
'] with []
compreface-admin | 2023-08-17 14:00:42.548 WARN 7 --- [ main] o.s.s.c.a.web.builders.WebSecurity : You are asking Spring Security to ignore Ant [pattern='/lms/']. This is not recommended -- please use permitAll via HttpSecurity#authorizeHttpRequests instead.
compreface-admin | 2023-08-17 14:00:42.548 INFO 7 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will secure Ant [pattern='/lms/
'] with []
compreface-admin | 2023-08-17 14:00:42.784 INFO 7 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will not secure Or [Ant [pattern='/oauth/token'], Ant [pattern='/oauth/token_key'], Ant [pattern='/oauth/check_token']]
compreface-admin | 2023-08-17 14:00:42.812 INFO 7 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will not secure org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfiguration$NotOAuthRequestMatcher@7ea8224b
compreface-admin | 2023-08-17 14:00:42.820 INFO 7 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will not secure any request
compreface-admin | 2023-08-17 14:00:43.881 INFO 7 --- [ main] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor
compreface-admin | 2023-08-17 14:00:44.048 INFO 7 --- [ main] org.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
compreface-admin | 2023-08-17 14:00:44.049 INFO 7 --- [ main] org.quartz.core.QuartzScheduler : Quartz Scheduler v.2.3.2 created.
compreface-admin | 2023-08-17 14:00:44.055 INFO 7 --- [ main] o.s.s.quartz.LocalDataSourceJobStore : Using db table-based data access locking (synchronization).
compreface-admin | 2023-08-17 14:00:44.060 INFO 7 --- [ main] o.s.s.quartz.LocalDataSourceJobStore : JobStoreCMT initialized.
compreface-admin | 2023-08-17 14:00:44.084 INFO 7 --- [ main] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.3.2) 'statistics scheduler' with instanceId 'NON_CLUSTERED'
compreface-admin | Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
compreface-admin | NOT STARTED.
compreface-admin | Currently in standby mode.
compreface-admin | Number of jobs executed: 0
compreface-admin | Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 1 threads.
compreface-admin | Using job-store 'org.springframework.scheduling.quartz.LocalDataSourceJobStore' - which supports persistence. and is not clustered.
compreface-admin |
compreface-admin | 2023-08-17 14:00:44.084 INFO 7 --- [ main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'statistics scheduler' initialized from an externally provided properties instance.
compreface-admin | 2023-08-17 14:00:44.084 INFO 7 --- [ main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.3.2
compreface-admin | 2023-08-17 14:00:44.084 INFO 7 --- [ main] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@509e4902
compreface-admin | 2023-08-17 14:00:44.399 INFO 7 --- [ main] o.s.s.quartz.LocalDataSourceJobStore : Freed 0 triggers from 'acquired' / 'blocked' state.
compreface-admin | 2023-08-17 14:00:44.542 INFO 7 --- [ main] o.s.s.quartz.LocalDataSourceJobStore : Recovering 0 jobs that were in-progress at the time of the last shut-down.
compreface-admin | 2023-08-17 14:00:44.543 INFO 7 --- [ main] o.s.s.quartz.LocalDataSourceJobStore : Recovery complete.
compreface-admin | 2023-08-17 14:00:44.544 INFO 7 --- [ main] o.s.s.quartz.LocalDataSourceJobStore : Removed 0 'complete' triggers.
compreface-admin | 2023-08-17 14:00:44.545 INFO 7 --- [ main] o.s.s.quartz.LocalDataSourceJobStore : Removed 0 stale fired job entries.
compreface-admin | 2023-08-17 14:00:44.547 INFO 7 --- [ main] org.quartz.core.QuartzScheduler : Scheduler statistics scheduler
$_NON_CLUSTERED started.
compreface-admin | 2023-08-17 14:00:46.158 INFO 7 --- [ main] o.a.coyote.http11.Http11NioProtocol : Starting ProtocolHandler ["http-nio-8080"]
compreface-admin | 2023-08-17 14:00:46.193 INFO 7 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
compreface-admin | 2023-08-17 14:00:46.200 INFO 7 --- [ main] d.s.w.p.DocumentationPluginsBootstrapper : Context refreshed
compreface-admin | 2023-08-17 14:00:46.394 INFO 7 --- [ main] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
compreface-admin | 2023-08-17 14:00:46.517 INFO 7 --- [ main] s.d.s.w.s.ApiListingReferenceScanner : Scanning for api listing references
compreface-admin | 2023-08-17 14:00:47.063 INFO 7 --- [ main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: regenerateApiKeyUsingPUT_1
compreface-admin | 2023-08-17 14:00:47.347 INFO 7 --- [ main] com.exadel.frs.FrsApplication : Started FrsApplication in 47.823 seconds (JVM running for 50.177)
compreface-api | 2023-08-17 14:02:02.853 INFO 7 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
compreface-api | 2023-08-17 14:02:02.854 INFO 7 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
compreface-api | 2023-08-17 14:02:02.857 INFO 7 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 3 ms
compreface-core | [14:02:11] src/nnvm/legacy_json_util.cc:209: Loading symbol saved by previous version v1.3.0. Attempting to upgrade...
compreface-core | [14:02:11] src/nnvm/legacy_json_util.cc:217: Symbol successfully upgraded!
compreface-core | [14:02:11] src/engine/engine.cc:55: MXNet start using engine: ThreadedEnginePerDevice
compreface-core | [14:02:13] src/base.cc:80: cuDNN lib mismatch: linked-against version 8201 != compiled-against version 8000. Set MXNET_CUDNN_LIB_CHECKING=0 to quiet this warning.
compreface-ui | 172.23.0.1 - - [17/Aug/2023:14:02:36 +0000] "POST /api/v1/recognition/recognize?&limit=0&det_prob_threshold=0.8&prediction_count=1&status=False HTTP/1.1" 499 0 "-" "python-requests/2.31.0"
compreface-api | 2023-08-17 14:03:05.259 ERROR 7 --- [nio-8080-exec-1] c.e.f.c.h.ResponseExceptionHandler : Defined exception occurred
compreface-api |
compreface-api | com.exadel.frs.commonservice.sdk.faces.exception.FacesServiceException: Error during synchronization between servers: Read timed out executing POST http://compreface-core:3000/find_faces
compreface-api | at com.exadel.frs.commonservice.sdk.faces.service.FacesRestApiClient.findWithCalculator(FacesRestApiClient.java:91)
compreface-api | at com.exadel.frs.commonservice.sdk.faces.service.FacesRestApiClient.findFacesWithCalculator(FacesRestApiClient.java:57)
compreface-api | at com.exadel.frs.commonservice.sdk.faces.service.FacesRestApiClient$$FastClassBySpringCGLIB$$517e8caf.invoke()
compreface-api | at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
compreface-api | at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386)
compreface-api | at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85)
compreface-api | at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704)
compreface-api | at com.exadel.frs.commonservice.sdk.faces.service.FacesRestApiClient$$EnhancerBySpringCGLIB$$4b8fe41.findFacesWithCalculator()
compreface-api | at com.exadel.frs.core.trainservice.service.FaceRecognizeProcessServiceImpl.processImage(FaceRecognizeProcessServiceImpl.java:49)
compreface-api | at com.exadel.frs.core.trainservice.service.FaceRecognizeProcessServiceImpl.processImage(FaceRecognizeProcessServiceImpl.java:26)
compreface-api | at com.exadel.frs.core.trainservice.controller.RecognizeController.recognize(RecognizeController.java:75)
compreface-api | at com.exadel.frs.core.trainservice.controller.RecognizeController$$FastClassBySpringCGLIB$$52b4c4f5.invoke()
compreface-api | at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
compreface-api | at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
compreface-api | at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
compreface-api | at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
compreface-api | at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)
compreface-api | at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
compreface-api | at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
compreface-api | at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
compreface-api | at com.exadel.frs.core.trainservice.controller.RecognizeController$$EnhancerBySpringCGLIB$$c6baf4.recognize()
compreface-api | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
compreface-api | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
compreface-api | at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
compreface-api | at java.base/java.lang.reflect.Method.invoke(Unknown Source)
compreface-api | at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
compreface-api | at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
compreface-api | at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
compreface-api | at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
compreface-api | at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
compreface-api | at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
compreface-api | at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)
compreface-api | at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
compreface-api | at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
compreface-api | at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
compreface-api | at javax.servlet.http.HttpServlet.service(HttpServlet.java:681)
compreface-api | at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
compreface-api | at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
compreface-api | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
compreface-api | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
compreface-api | at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
compreface-api | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
compreface-api | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
compreface-api | at com.exadel.frs.core.trainservice.filter.SecurityValidationFilter.doFilter(SecurityValidationFilter.java:134)
compreface-api | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
compreface-api | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
compreface-api | at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
compreface-api | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
compreface-api | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
compreface-api | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
compreface-api | at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
compreface-api | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
compreface-api | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
compreface-api | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
compreface-api | at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)
compreface-api | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
compreface-api | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
compreface-api | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
compreface-api | at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
compreface-api | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
compreface-api | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
compreface-api | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
compreface-api | at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
compreface-api | at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
compreface-api | at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
compreface-api | at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
compreface-api | at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
compreface-api | at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
compreface-api | at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)
compreface-api | at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
compreface-api | at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
compreface-api | at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890)
compreface-api | at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743)
compreface-api | at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
compreface-api | at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
compreface-api | at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
compreface-api | at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
compreface-api | at java.base/java.lang.Thread.run(Unknown Source)

Any idea why it does not work ? Could it be because of the cudnn lib being a different version ?

@whitepail
Copy link

whitepail commented Aug 17, 2023 via email

@SeKa15
Copy link

SeKa15 commented Aug 18, 2023

Thank you for your reply.

Waiting unfortunately did not help.

Currently I try to build it for jetpack 5, but I encounter the following error:

Failed to build imagecodecs

This error appears even without any changes. Do you have an idea why ? Log has been attached : log.txt.

@SeKa15
Copy link

SeKa15 commented Aug 29, 2023

Hi @whitepail,

It seems to be that mxnet is the culprit. It has to be built for jetson orin. Simply adding the arch in the config for the jetson build should do the trick. https://github.com/apache/mxnet/issues/21166#issuecomment-1376556547. I was able to build it but currently fighting with building wheel for imagecodecs.

@LordNex
Copy link

LordNex commented Oct 24, 2023

Im in asia, but i still have PO box in the US so I guess that would work. Any pointers to where to look? eBay/amazon or somewhere else? Search terms on eBay doesn't bring up much but the whole kits which are pretty expensive. Even pre-owned.

I also feel like GPU based detection will do better. eGPU is another option I looked into but again the cost is not looking good for me over here... I will look into more.

The other issue is that if i get this all working well, I have few interested friends who want to set it up so i need to be able to replicate it for them....

I was one of the original requesters of this. So I was wondering how it was going. I've been swamped with other RL events so I was wondering.

Has anyone been able to successfully install CompreFace on a 4gb Jetson Nano or is that pretty much dead. If so I'm really trying to figure out a use for my Nano. Thanks for everything everyone has been trying to get this to work!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

10 participants