Hobby project with facial recognition

not quite a “how do I program” question, but I think it’s related.

Basically I want to write a system that thats a bunch of photos at one end, and spits out an ordered collection of photos all grouped by faces in those photos. I.e, I give it 10 photos, and it shows me which faces are in those 10, and which photos each face is in (lets you find yourself in a large album of photos).

But, if I ever want this thing to be a useable product, I need to answer the question around legality. Is that kind of application of facial recognition legal? (I’m in the UK btw).

Are my (hobby) dev and production environements adapted to my needs?

I’m on an open source project that will make use of Wikidata API. It will provide some small tools based on forms and SPARQL queries made on Wikidata and will also run a blog.

1/ The website

  • The blog’s trafic is currently 500~1000 visits/day the days after an article is published. I don’t except that the tools will generate way more trafic.
  • The tools will rarely have to deal with query sets of more than 100 wikidata items and will probably don’t post more than 100 statements at once.
  • The database will contain something like 20 tables and 10 000 lines
  • The site will be based on Django CMS and entirely written in Python.

2/ My personal needs

  • An easy to manage environnement, as I want to focus on the tools devlopment.
  • Stable, as I can’t monitor the server each day.
  • Economic, as it is a hobby project.

3/ My current production environment

  • Cloud VPS SSD 1 form OVH :
    • 1 vCore > 2GHz
    • 2 Gb of RAM
    • 20 Gb of SSD
    • 3€/mounth ($ 3.4)
  • Ubuntu server
  • Vesta CP control panel
    • NGINX as a proxy
    • Apache for backend
    • MySQL database

4/ My dev environement

  • Cloud based desktop from Shadow (due to 2 korrigans it is way safest than buying a physical PC with this type of configuration)
    • Core i7 eqivalent, 12GB RAM and latest NVIDIA GPU (I also need 3D softwares to run)
    • Only run on Windows 10 for the moment
    • I tested VMs (VMWare and VirtualBox) but these can’t run on this cloud PC
    • 30€/mounth ($ 34)
  • PyCharm IDE with VirtualEnv
  • Code hosted to GitHub

I’m not that happy to run the dev environnent on Windows because the environment management is different from what I learn for the dev server. However it seems to work nicely for the moment.

5/ Other options so far

  • Digital Ocean provide Django Droplets. It seems to be an easy way to have a clean production environment out of the box. Not to say that Digital Ocean documentation is best in class. However it is $ 5/mounth for only 1Gb of RAM instead of 2 currently.
  • The other good thing with droplets is that I could also use a pay per hour droplet as a dev environment with exactly the same setup as the production environment.
  • Daniel suggested to run Docker (without a VM) to ensure compatibility between the dev environment (Windows) and the production environement (Ubuntu).
  • I was also thinking on having the dev and production environement on the same cloud VPS but separated by docker. I don’t really know if this is adapted for such a small configuration.
  • I had a look on Google Cloud and Microsoft Azure. It is more costly for a small webserver. However I was thinking into installing a cloud desktop on Google Cloud (best GPU offers) an replacing my Shadow PC.
  • I had a look to cloud IDEs (CodeAnywhere and GitPod) that propose containers. It seems to be another interesting approach.