Projeto para as análises de imagens para o projeto (OUTRA) 33ª Bienal de São Paulo
Setup da aplicação
Esse é um projeto Django clásscio, então o processo é o tradicional:
# Clonar o repositório:
git clone git@github.com:outra-bienal/bienal-art-analyser.git
# Criar um virtualenv:
mkvirtualenv bienal-art-analyser -p /usr/bin/python3.6.5
# Criar containers e ativar o virtualenv
cd bienal-art-analyser
cp env.example .env # você precisará editar o .env de acordo com suas configurações
# Instalar dependências
pip install -r dev-requirements.txt
Setup da Infra
Certifique-se de que você tem o Docker instalado na sua máquina. O projeto utiliza o Docker Compose para configurar as dependências de infraestrutura. Atualmente as depedências são o Postgres como banco de dados e o Redis para processamento assíncrono.
Para levantar os serviços basta executar:
cd bienal-art-analyser
docker-compose up -d
Além disso, há também a dependência com o YOLO para conseguir executar o algorimo de detecção das imagens.
Siga estes passos para instalar o Darknet e depois lembre-se de atualizar a variável de ambiente DARKNET_DIR
dentro do seu .env
.
Configure o vhost do rabbitmq com seus valores:
$ docker exec bienalartanalyser_art_analyser_rabbitmq_1 rabbitmqctl add_vhost bienal
$ docker exec bienalartanalyser_art_analyser_rabbitmq_1 rabbitmqctl add_user bienal bienal
$ docker exec bienalartanalyser_art_analyser_rabbitmq_1 rabbitmqctl set_user_tags bienal bienal
$ docker exec bienalartanalyser_art_analyser_rabbitmq_1 rabbitmqctl set_permissions -p bienal bienal ".*" ".*" ".*"
Criar schema e popular base de dados
Com a infra de pé, execute o seguinte comando para criar e preparar o banco:
python project/manage.py migrate
Executando a aplicação
Para acessar a aplicação, será necessário criar um usuário administrativo com o comando:
python project/manage.py createsuperuser
Depois disso, você pode rodar a apicação e acessá-la em http://localhost:8000 com o comando:
python project/manage.py runserver
Rodando as análises e detecções
Como a parte de processamento das imagens é assíncrona, é necessário deixarmos rodando um worker do DjangoRQ para que ele consuma as mensagens que foram disparadas. Para isso, basta executar:
python project/manage.py rqworker