README.md 7.42 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
# Título: Pynovisao
## Autor: Alessandro dos Santos Ferreira
## Autor: Hemerson Pistori

## Resumo:

Pacote de Visão Computacional do Inovisão.

## Como Usar

- A partir da pasta raiz, execute os seguintes comandos:

  ```
  $ cd src
  ```
  
  ```
18
  $ python main.py
19 20
  ```

21
- Uma imagem como a mostrada abaixo deve ser apresentada:
22

23 24 25 26 27 28 29
    ![pynovisao](data/pynovisao.png)
    
## Outras Opções

- Mostra todas as opções disponíveis

  ```
30
  $ python main.py --help
31 32 33 34
  ```
- Executa o programa inicializando o banco de imagens em *../data/soja*

  ```
35
  $ python main.py --dataset ../data/soja
36 37 38 39
  ```
- Executa o programa definindo as classes e suas respectivas cores (X11 color names)

  ```
40
  $ python main.py --classes "Solo Soja Gramineas FolhasLargas" --colors "Orange SpringGreen RebeccaPurple Snow"
41 42
  ```

43 44 45 46 47 48 49 50

## Dependências - Aplicação base - Python

### Linux
- kubuntu trusty 14.04.2 TLS
- Python 2.7.6 
- scikit-image
- Opencv 2.7
51
- tk/tk-dev
52
- python-weka-wrapper ( Classification )
53 54 55 56

### Windows

- Instale o [Anaconda](http://continuum.io/downloads) que contém todas dependências, inclusive o Python. Basta fazer o download do arquivo .exe e executá-lo.
57 58
- Opencv 2.7
- python-weka-wrapper ( Classification )
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96

## Como instalar o OpenCV 

### Linux
  Seguir as instruções disponíveis em [OpenCV-Linux](http://docs.opencv.org/doc/tutorials/introduction/linux_install/linux_install.html#linux-installation). Lí em algum lugar que dá para instalar com o comando abaixo, não testei mas pode funcionar:
  ```
  $ sudo apt-get install python-opencv
  ```

  Pode ser que seja necessário instalar também uma versão mais antiga do opencv (2.4*) caso apareça um erro com o comando import cv (que sumiu na versão 3.0.0 do opencv). Neste caso, tente seguir estes passos: [Instalando opencv 2.4] (https://sites.google.com/a/computacao.ufcg.edu.br/lvc/aprendizado/opencv).

### Windows
 - [OpenCV-Python](https://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_setup/py_setup_in_windows/py_setup_in_windows.html#install-opencv-python-in-windows).
	1. Baixe o [Opencv](https://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_setup/py_setup_in_windows/py_setup_in_windows.html#install-opencv-python-in-windows)
	2. Extraia os arquivos no local desejado.
	3. Vá para a pasta opencv/build/python/2.7.
	4. Cipie o arquivo cv2.pyd para C:/Python27/lib/site-packeges.
	5. Abra o terminal e digite python para executar o interpretador.
	6. Digite:
    	
      ```
        >>> import cv2
        >>> print cv2.__version__
      ```

## Como instalar scikit-image e arff
```
  $ sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose python-pip python-networkx libfreetype6-dev
 
  $ sudo pip install -U scikit-image
```

  Em uma das máquinas em que tentei instalar deu um erro que resolvi rodando o comando abaixo antes de executar a linha acima:
  ```
  $ sudo apt-get build-dep python-matplotlib
  $ sudo pip install cycler
  ```

97
## Como instalar o tk/tk-dev
98 99 100

### Ubuntu 

101 102 103
```
$ sudo apt-get install tk tk-dev
```
104
    
105
    Na ocorrência do erro 'cannot import name _tkagg', tentar os seguintes comandos:
106 107 108 109 110 111
    
    ```
    $ sudo apt-get install tk tk-dev
    $ sudo pip uninstall matplotlib
    $ sudo pip install matplotlib
    ```
112

113 114 115 116
    Se der erro na reinstalação do matplotlib (depois que desinstalar), tente desinstalar também pelo apt-get:
    $ sudo apt-get remove python-matplotlib


117 118 119
## Mais informações
    
- http://www.tkdocs.com/tutorial/install.html
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179


## Como instalar o python-weka-wrapper ( Opcional )

### Ubuntu 

    Primeiro você precisa compilar os código C/C+ e os módulos Python:
    $ sudo apt-get install build-essential python-dev
    
    Agora você pode instalar os vários pacotes que precisamos para instalar o python-weka-wrapper:
    $ sudo apt-get install python-pip python-numpy
    
    Os seguintes pacotes são opcionais mas necessários se você deseja uma representação gráfica:
    $ sudo apt-get install python-imaging python-matplotlib python-pygraphviz
    
    Instale OpenJDK para obter todos os cabeçalhos que javabridge compila:
    $ sudo apt-get install default-jdk

    No meu ubuntu 14.04 tive problemas com dependência, acabei instalando o java da oracle seguindo as orientações deste site: [instalando java da oracle](http://askubuntu.com/questions/521145/how-to-install-oracle-java-on-ubuntu-14-04)
    
    Finalmente você pode usar pip para instalar os pacotes Python que não estão disponíveis no repositório:
    $ sudo pip install javabridge
    $ sudo pip install python-weka-wrapper
    
### Windows

    Por favor note: você precisa certificar-se que os bits do seu ambiente é consistente. Isto é, se você instalar uma versão de Python 32-bit você deve instalar um JDK 32-bit e numpy 32-bit ( ou então todos eles devem ser 64-bit ).

    Realize os seguintes passos:

    Instale Python, esteja certo que você checou Add python.exe to path durante a instalação
    Adicione os scripts Python eu sua variável de ambiente PATH, por exemplo, :\\Python27\\Scripts
    Instale pip com os seguintes passos:
        * baixe daqui https://bootstrap.pypa.io/get-pip.py
        * instale usando python get-pip.py
    
    Instale numpy
        * baixe numpy 1.9.x MKL ( ou superior ) para Python 2.7 (cp27) e sua configuração de bit  (32 ou 64 bit)
        * instale o arquivo .whl usando pip: pip install numpy-X.Y.Z.whl
    
    Instale .Net 4.0 (se já não estiver instalado)

    Instale Windows SDK 7.1

    Abra o prompt de comando do Windows SDK (não o prompt de comando convencional!) e instale javabridge e python-weka-wrapper
        > set MSSdk=1
        > set DISTUTILS_USE_SDK=1
        > pip install javabridge
        > pip install python-weka-wrapper

    Agora você pode executar python-weka-wrapper usando o prompt de comando convencional também.

    Se você deseja as funcionalidades gráficas você precisa instalar matplotlib também:
        * baixe matplotlib para Python 2.7 (cp27) e sua configuração de bit (32 or 64 bit)
        * instale o arquivo .whl usando pip: pip install matplotlib-X.Y.Z.whl
    
## Mais informações

- http://pythonhosted.org/python-weka-wrapper/install.html
- http://pythonhosted.org/python-weka-wrapper/troubleshooting.html
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196


## Como instalar o caffe ( Opcional )

    Para poder utilizar o classificador CNNCaffe, uma ConvNet baseada na topologia AlexNet, é necessário instalar o software Caffe.
    
    A instalação do software Caffe é mais complexa que as instalações descritas anteriormente e pode ser encontrada detalhada no link abaixo:
    -  http://caffe.berkeleyvision.org/installation.html
    
    Após realizar a instalação do software Caffe, para realizar a classificação, você precisa realizar o treinamento da sua rede no software, pois não há interface no Pynovisao para o treinamento da ConvNet.
    O tutorial para o treinamento pode ser encontrado no link abaixo:
    - http://caffe.berkeleyvision.org/gathered/examples/imagenet.html
    
    Por fim será necessário configurar sua CNNCaffe.
    Para os campos ModelDef, ModelWeights e MeanImage, você deverá fornecer os caminhos relativos ao seu treinamento realizado no passo anterior.
    Para o campo LabelsFile você deve fornecer o caminho de um arquivo que descrava nominalmente as classes na ordem 0, 1, ..., n-1, onde n é o número de classes que você treinou. 
    Um arquivo de exemplo pode ser encontrado em examples/labels.txt.