construc˘ao de uma base de dados para~...
TRANSCRIPT
CONSTRUCAO DE UMA BASE DE DADOS PARA
RECONHECIMENTO DE EVENTOS EM VIDEOS
Olavo Argolo Batista Sampaio
Projeto de Graduacao apresentado ao Curso
de Engenharia Eletronica e de Computacao
da Escola Politecnica, Universidade Federal
do Rio de Janeiro, como parte dos requisitos
necessarios a obtencao do tıtulo de Enge-
nheiro.
Orientadores: Jose Gabriel R. C. Gomes,
Roberto de Moura Estevao Filho
Rio de Janeiro
Marco de 2018
UNIVERSIDADE FEDERAL DO RIO DE JANEIRO
Escola Politecnica - Departamento de Eletronica e de Computacao
Centro de Tecnologia, bloco H, sala H-217, Cidade Universitaria
Rio de Janeiro - RJ CEP 21949-900
Este exemplar e de propriedade da Universidade Federal do Rio de Janeiro, que
podera incluı-lo em base de dados, armazenar em computador, microfilmar ou adotar
qualquer forma de arquivamento.
E permitida a mencao, reproducao parcial ou integral e a transmissao entre bibli-
otecas deste trabalho, sem modificacao de seu texto, em qualquer meio que esteja
ou venha a ser fixado, para pesquisa academica, comentarios e citacoes, desde que
sem finalidade comercial e que seja feita a referencia bibliografica completa.
Os conceitos expressos neste trabalho sao de responsabilidade do(s) autor(es).
iv
DEDICATORIA
Dedico esse trabalho a Lucineia, Juarez, Maria Julia e Gustavo.
v
AGRADECIMENTO
Agradeco a minha famılia, meus amigos, orientadores e a todos que ofereceram
apoio ou conselhos durante a realizacao desse trabalho. Agradeco especialmente a
Fernanda, que sempre me incentiva e nunca duvidou que tudo daria certo. Sem
voces, isso nao teria sido possıvel.
vi
RESUMO
Inspecao de tubulacoes envolve a analise visual de longos trechos de vıdeos de
tubulacoes a procura de danos, fraturas ou outros eventos de interesse. Um processo
automatico de analise auxiliaria enormemente nessa tarefa. Para tal, propoe-se usar
um classificador baseado em algoritmos de aprendizado de maquina. E necessario
treina-lo em uma base de dados com imagens dos padroes desejados nos vıdeos.
Esse trabalho visa, portanto, propor uma metodologia de criacao de base de dados
de imagens a partir de vıdeos de forma, pelo menos parcialmente, automatizada.
Palavras-Chave: base de dados, inspecao de tubulacoes, visao computacional,
reconhecimento de imagem, redes neurais.
vii
ABSTRACT
Pipeline inspection requires visual analysis of many hours of video recordings of
pipes in the search of breaches, damage or other features of interest. An automatic
analysis of the visual data would help greatly in this task. The classifier used in
this task is a deep neural network, which requires training with a dataset containing
features and patterns of interest found in the recordings. This project proposes a
method of building an image dataset from videos that is, at least partially, automa-
tized.
Keywords: dataset, pipeline inspection, computer vision, image recognition, neu-
ral networks.
viii
SIGLAS
UFRJ - Universidade Federal do Rio de Janeiro
COPPE - Instituto Alberto Luiz Coimbra de Pos-Graduacao e Pesquisa de Enge-
nharia, da Universidade Federal do Rio de Janeiro
MSE - Mean Squared Error
ROV - Remotely Operated Vehicle
DVD - Digital Video Disc
GB - Gigabyte
CSV - Comma Separated Values
WMV - Windows Media Video
AVI - Audio Video Interleaved
MPG - refere-se a compressao de audio e vıdeo do tipo MPEG-1 ou MPEG-2
VOB - Video Object
SSIM - Structural Similarity Index
ix
Sumario
Lista de Figuras xi
Lista de Tabelas xii
1 Introducao 1
1.1 Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Delimitacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.6 Descricao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Fundamentacao Teorica 6
2.1 Aprendizado de Maquina . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Redes Neurais Artificiais . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.1 Modelo do Neuronio . . . . . . . . . . . . . . . . . . . . . . . 7
2.2.2 Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.3 Treinamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 Redes Neurais Convolucionais . . . . . . . . . . . . . . . . . . . . . . 15
2.3.1 Camada Convolucional . . . . . . . . . . . . . . . . . . . . . . 15
3 Metodologia 18
3.1 Caracterısticas da Base de Vıdeos . . . . . . . . . . . . . . . . . . . . 19
3.2 Classificacao dos Vıdeos . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.3 Captura de Imagens . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.3.1 Perıodo de Captura Fixo . . . . . . . . . . . . . . . . . . . . . 28
x
3.3.2 Perıodo de Captura Variavel . . . . . . . . . . . . . . . . . . . 29
3.4 Ajuste da Base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4.1 Filtragem Manual . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4.2 Filtragem por Similaridade . . . . . . . . . . . . . . . . . . . . 33
3.5 Teste da Base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4 Resultados 39
4.1 Base de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2 Resultados dos Testes . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5 Conclusoes 48
Bibliografia 51
xi
Lista de Figuras
3.1 Primeiros frames de um vıdeo da base . . . . . . . . . . . . . . . . . 20
3.2 Exemplos de imagens da classe Duto . . . . . . . . . . . . . . . . . . 21
3.3 Exemplos de imagens da classe Nada . . . . . . . . . . . . . . . . . . 22
3.4 Exemplos de imagens da classe Confuso . . . . . . . . . . . . . . . . 22
3.5 Arquivo CSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.1 Nove imagens da base C . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.2 Matriz de Confusao da Base A . . . . . . . . . . . . . . . . . . . . . . 45
4.3 Matriz de Confusao da Base B . . . . . . . . . . . . . . . . . . . . . . 46
4.4 Matriz de Confusao da Base C . . . . . . . . . . . . . . . . . . . . . . 46
4.5 Matriz de Confusao da Base D . . . . . . . . . . . . . . . . . . . . . . 47
xii
Lista de Tabelas
3.1 Caracterısticas da base de vıdeos . . . . . . . . . . . . . . . . . . . . 19
3.2 Codigos de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Comparacao SSIM em frames sequenciais . . . . . . . . . . . . . . . . 33
3.4 Distribuicao das imagens da Base B antes e depois da remocao de
vıdeos prejudiciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.1 Base A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2 Base B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.3 Base C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.4 Base D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.5 Sumario das Bases . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.6 Comparacao entre o numero de imagens por conjunto por base . . . . 43
4.7 F1 medio por classe. . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
xiii
Capıtulo 1
Introducao
Neste capıtulo, serao explicados alguns conceitos iniciais do trabalho, sua contex-
tualizacao, limites, objetivos e brevemente a metodologia utilizada.
1.1 Tema
O contexto deste trabalho e a construcao de um sistema de classificacao de imagens
para inspecao de tubulacoes. Pela grande quantidade de dados a serem classificados,
essa tarefa deve ser realizada por um sistema automatico que requer uma base de
dados para treinamento.
O trabalho consiste na construcao de uma base de dados de imagens cujo fim
e o treinamento de sistemas de classificacao e processamento de imagem, especial-
mente redes neurais. Os sistemas treinados utilizando essa base devem apresentar
bom desempenho de classificacao quando comparados com outras bases convenci-
onalmente utilizadas para esse mesmo fim. Alternativamente, caso nao haja bases
previamente disponıveis para fazer a comparacao, o desempenho deve ser avaliado
segundo criterios a serem desenvolvidos.
1.2 Delimitacao
A motivacao para o trabalho e a classificacao de eventos em gravacoes em vıdeo
de tubulacoes. A base de dados a ser montada e de imagens. Assim, as imagens que
1
formarao a base serao provenientes desses vıdeos, e os sistemas treinados terao como
foco identificar e classificar esses eventos. Fazem parte do escopo deste trabalho:
1. criar um procedimento que permita montar uma base de dados, cuidadosa-
mente, para aplicacao em inspecao de tubulacoes;
2. alterar esta base de dados conforme resultados de treino e teste com redes
neurais;
3. documentar o procedimento para que ele possa ser executado por outras pes-
soas no futuro.
A enfase do trabalho esta na construcao da base de dados da melhor maneira
possıvel e a avaliacao dos processos usados para tal. Os procedimentos e tecnicas
usados para o treinamento dos sistemas de classificacao usados nos testes das bases
de dados estao fora do escopo deste trabalho.
1.3 Justificativa
Esse projeto foi pensado para apoiar uma aplicacao de inspecao automatica de
tubulacoes. Ela deve identificar diversos eventos em vıdeos desses dutos para ma-
nutencao. Para executar essa tarefa em larga escala, sera utilizado um sistema
automatico para identificar os trechos de classificacao das gravacoes.
Sistemas de classificacao de imagens podem operar segundo diversos princıpios e
algoritmos. Atualmente, sistemas incorporando redes neurais de aprendizado pro-
fundo estao entre os com melhor desempenho, portanto entende-se que eles teriam
melhor chance de obter um bom desempenho na tarefa em questao. Foi escolhido
usar um sistema desse tipo para o teste das bases de dados produzidas.
Uma rede neural e um modelo computacional baseado na estrutura do cerebro
humano, formado por diversas camadas de neuronios artificiais conectados. Um
neuronio opera fazendo uma soma ponderada, com pesos ajustaveis, de suas entradas
e aplica sobre ela uma funcao nao-linear. O resultado dessa operacao e sua saıda.
Uma rede possui uma ou mais camadas de neuronios realizando esse processo e a
2
saıda da ultima dessas camadas e o resultado da rede. Para determinar os pesos dessa
rede, entre outros parametros, ela precisa passar por um processo de treinamento,
onde sao feitas atualizacoes sucessivas desses parametros de acordo com exemplos
de entrada recebidos. No caso do aprendizado dito supervisionado, cada exemplo
de entrada tem um rotulo que diz qual e a saıda esperada para esta entrada. Entao,
a cada iteracao, os resultados da rede sao comparados com os esperados e essas
diferencas sao usadas para atualizar os parametros da rede.
Em sistemas modernos, as bases de dados comumente utilizadas para esse tipo de
treinamento sao extensas. Uma estimativa aproximada e que redes profundas com
algoritmos de aprendizado supervisionado atingem desempenho aceitavel com bases
de dados de 5 mil exemplos e desempenho humano, ou superior, com bases de 10
milhoes de exemplos [1]. Por isso, esse trabalho visa a criacao de uma base de dados
grande o bastante para realizar o treinamento desse tipo de sistema classificador e
a obtencao de um desempenho aceitavel.
1.4 Objetivos
O trabalho visa construir uma base de dados de imagens a partir de uma outra
base com 90 horas de vıdeos, nos formatos avi, mpg, wmv e vob, ja selecionados para
o problema em questao. Tambem se faz necessaria a criacao de programas auxiliares
para manipulacao dos vıdeos e outras tarefas. A base deve servir de insumo para o
treinamento de um sistema de classificacao de imagens utilizando redes neurais.
Portanto, os objetivos operacionais sao:
1. identificar e rotular os vıdeos a serem usados como insumo para a criacao da
base, criando uma relacao dos trechos dos vıdeos com as classes de interesse;
2. criar um programa que permita a selecao e obtencao automatica de imagens
rotuladas a partir de um conjunto de vıdeos e seus respectivos rotulos, obtidos
no Objetivo 1;
3. extrair desses vıdeos uma quantidade suficiente de imagens automaticamente
rotuladas;
3
4. garantir que essas imagens representem estatisticamente o problema de clas-
sificacao abordado e permitam que o algoritmo de classificacao atinja um de-
sempenho aceitavel.
1.5 Metodologia
Para este projeto, o processo de classificacao se restringe a distinguir cada trecho
dos vıdeos entre tres classes: Duto, Confuso e Nada. Duto e a classe de interesse e
indica a presenca de uma tubulacao; Confuso indica a presenca de outros objetos
que nao sejam parte de um duto; e Nada indica a ausencia de objetos no trecho, de
forma geral. Essas classes representam os atores dominantes em cada um. Podem
haver trechos que contenham elementos de mais de uma classe, mas eles devem ser
classificado apenas em uma delas. Ao longo do texto, essas classes serao grafadas
em italico e com a inicial maiuscula.
Um determinado conjunto de dados e uma amostra limitada do comportamento
de um sistema real e pode ser uma representacao estatıstica mais ou menos fiel,
dependendo de diversos fatores. Se esse conjunto nao for representativo, um classifi-
cador treinado nele nao ira obter bom desempenho ao prever processos reais. Assim,
dependendo do objetivo desejado, pode ser necessario balancear o numero de ima-
gens em cada classe da amostra, para evitar que o classificador aprenda padroes
que desfavorecam uma classe sub-representada. Ao melhorar esses aspectos da base,
pretende-se facilitar o treinamento da rede e, em ultima instancia, melhorar seu
desempenho.
Para obter as imagens etiquetadas e necessario classificar cada trecho dos vıdeos
de forma manual e, em seguida, utilizar um programa que extraia de cada trecho
imagens com os rotulos correspondentes. Esse processo de classificacao manual
consiste em uma inspecao visual dos vıdeos e, em seguida, uma listagem da relacao
entre cada trecho e uma classe do problema. Esse registro e feito em um arquivo que
sera usado como referencia pelo software de extracao. O programa le esse arquivo de
referencia e extrai uma certa quantidade de imagens de cada trecho. Essa quantidade
pode ser variavel, buscando evitar que nenhum trecho ou classe seja representado
4
em excesso ou de forma deficiente.
Durante a extracao, as imagens sao organizadas de forma a facilitar seu acesso.
Uma etapa adicional de inspecao manual dos dados visa encontrar eventuais erros
no processo e corrigi-los, se necessario. O sistema de classificacao, entao, e treinado
com os dados da base criada para verificar sua qualidade. O projeto pode ser dado
como concluıdo quando novos vıdeos, que nao foram usados para treinar a rede,
puderem ser corretamente classificados com bom desempenho por esse sistema.
1.6 Descricao
No Capıtulo 2, sera apresentada a fundamentacao teorica dos conceitos mais im-
portantes de redes neurais classicas e convolucionais, usadas durante o projeto.
O Capıtulo 3 contem a descricao detalhada da metodologia de classificacao, criacao
e teste das bases de dados. Sao descritos processos de anotacao, captura de imagens
a partir dos vıdeos, ajuste e teste das bases resultantes.
No Capıtulo 4, sao apresentados os detalhes e as caracterısticas das bases de
dados produzidas, bem como os resultados dos testes obtidos a partir delas. Sao
comparadas estatısticas das bases e medidas obtidas quando elas sao usadas para o
treinamento e teste de implementacoes da ResNet-152.
No Capıtulo 5, ha a discussao dos resultados obtidos e propostas de trabalhos
futuros.
5
Capıtulo 2
Fundamentacao Teorica
Nesse capıtulo serao expostos brevemente conceitos posteriormente utilizados no
trabalho. Para um estudo mais aprofundado desses conceitos, e sugerido consultar
as referencias. Um bom ponto de partida e [2].
2.1 Aprendizado de Maquina
Aprendizado de maquina e o processo de programar um computador, ou uma
maquina, para aprender a otimizar uma funcao custo para solucionar um problema,
a partir de um conjunto de dados. Ele pode ser um processo preditivo, se faz
previsoes do futuro; ou descritivo, se produz conhecimento a partir dos dados; ou
ambos. A essencia da tarefa realizada e uma inferencia a partir de uma amostra
dos dados, que representam apenas uma parte pequena das possibilidades para uma
dada classe de problemas. Assim, e necessario criar um modelo para representar o
fenomeno gerador da populacao estudada para, a partir dele, obter informacoes dos
dados.
2.2 Redes Neurais Artificiais
Redes neurais artificiais sao modelos computacionais baseados na estrutura do
cerebro humano, onde diversas camadas de neuronios se comunicam, recebem, pro-
cessam informacoes e geram saıdas a partir dessas entradas. Para modelar esse fun-
cionamento, uma rede neural usa um elemento computacional simples, o neuronio,
6
como base de uma estrutura interconectada para processar informacao.
A estrutura de uma rede neural consiste em diversas camadas de neuronios, onde
cada uma esta ligada as vizinhas por conexoes com pesos variaveis. Cada peso dita
a relevancia de sua conexao, sendo atualizados por um processo de aprendizado.
Ele permite que uma rede modifique os pesos de suas conexoes para definir um
mapeamento entrada-saıda que minimize uma funcao custo pre-determinada. O
objetivo disso e permitir que a rede aprenda um modelo suficientemente consistente
com o mundo real para solucionar a classe de problemas de interesse. A partir de
um conjunto pequeno de exemplos dessa classe, a rede deve aprender a resolver de
forma geral e com bom desempenho uma grande parte dos demais problemas. Essa
capacidade e chamada poder de generalizacao da rede.
2.2.1 Modelo do Neuronio
Um neuronio consiste em uma unidade computacional que realiza um soma pon-
derada e aplica sobre ela uma funcao nao-linear pre-determinada. Ele foi inspirado
no neuronio biologico, que realiza conexoes com outros neuronios e processa as in-
formacoes recebidas, modificando a forca de cada conexao de acordo com estımulos
externos. Da mesma forma, os neuronios artificiais realizam conexoes com outros
elementos, ponderando-as por meio de pesos sinapticos. Cada peso esta associado
a uma conexao e multiplica os sinais recebidos por ela, aumentando ou diminuindo
sua relevancia. A soma dessas entradas ponderadas forma o sinal de entrada do
neuronio. Ele e sujeito a uma funcao nao-linear chamada funcao de ativacao do
neuronio. Ela deve ser linear para que rede possa aproximar de forma eficiente
funcoes complexas [3]. O resultado e a saıda do neuronio, cuja natureza depende do
tipo de problema abordado.
No processo de aprendizado supervisionado, a rede recebe um conjunto de M
amostras n-dimensionais e seus rotulos, onde cada dimensao corresponde a um atri-
buto, ou feature, dessas. Cada dado, ou exemplo, de entrada pode ser representado
na forma de um vetor x = [x1, x2, . . . , xn]T . Cada dado xi e acompanhado de um
rotulo, ou alvo, ti, que indica o resultado desejado para essa entrada e cuja dimensao
7
depende do tipo de problema. Juntos, eles formam um par entrada-saıda. Para re-
presentar um conjunto deM pares, tem-se as matrizes X = [x1,x2, . . . ,xM ] ∈ Rn×M
e T = [t1, t2, . . . , tM ]. Os pesos de um dado neuronio k sao representados como
wk = [wk1, wk2, . . . , wkm]T , onde m e o numero de conexoes de entrada que ele
possui.
Dada uma entrada x ∈ Rn, o neuronio k realiza uma soma ponderada da forma:
vk =n∑
i=1
(wki × xi) + bk, (2.1)
onde bk e seu nıvel de polarizacao, ou bias. Em seguida, ele aplica sobre esse resultado
a funcao de ativacao, obtendo sua saıda yk = f(vk). Logo,
yk = f(n∑
i=1
wki × xi + bk). (2.2)
A funcao de ativacao do neuronio deve ser uma funcao nao-linear. Sao comumente
usadas as funcoes tangente hiperbolica f(x) = tanh(x) e sigmoide f(x) = 11+e−x , com
resultados equivalentes. Para redes neurais profundas modernas, a funcao mais po-
pular e de melhores resultados e a Rectified Linear Unit (ReLU), f(x) = max(0, x).
E comum simplificar a notacao representando o bias atraves de um vetor de entra-
das estendido, x = [x0, x1, . . . , xn]T ∈ Rn+1, x0 = 1, e incorporando bk como wk0 ao
vetor de pesos, wk = [wk0, wk1, . . . , wkn]T ∈ Rn+1. Outra simplificacao e trabalhar
com as formas vetoriais das equacoes. Representando um exemplo de entrada como
x ∈ Rn+1 e os pesos sinapticos como wk, obtem-se o sinal de entrada do neuronio
por uma multiplicacao de vetores
vk = wTk · x (2.3)
e yk = f(wTk · x).
2.2.2 Arquitetura
Em uma rede neural, os neuronios sao organizados em camadas, que por sua
vez sao organizadas de forma sequencial. Sempre ha pelo menos uma camada de
8
entrada e uma de saıda. A primeira consiste apenas dos nos de entrada da rede e nao
realiza trabalho computacional, a segunda recebe a informacao do restante da rede e
calcula as saıdas. Essa e a forma mais simples de rede neural, chamada rede de uma
camada. Em uma rede dita multicamadas, ha uma ou mais camadas escondidas entre
as camadas de entrada e de saıda, que adicionam poder computacional a rede e que
lhe permitem realizar tarefas que nao seriam possıveis apenas com uma camada.
Os neuronios das camadas escondidas sao chamados unidades escondidas (hidden
units) e, juntamente com o numero dessas camadas, sao um parametro importante
no projeto da arquitetura da rede.
Em redes feedfoward, o fluxo de informacao tem origem na camada de entrada e
flui para a de saıda, uma camada por vez e apenas nesse sentido. Uma camada com-
pletamente conectada (fully connected) tem cada um de seus neuronios conectados
a todos os neuronios da camada anterior.
O dimensionamento correto das camadas escondidas e um desafio na escolha da
arquitetura da rede. Caso esta tenha poucos neuronios, nao tera capacidade com-
putacional suficiente para aproximar a funcao de forma satisfatoria. Caso tenha
neuronios demais, ela pode apresentar overfitting, onde a rede mapeia de forma
precisa demais o conjunto de dados, perdendo a capacidade de generalizacao para
entradas futuras. Segundo o Teorema da Aproximacao Universal [3] uma rede neural
feedforward pode aproximar uma funcao com apenas uma camada escondida com
um numero finito de neuronios. No entanto, essa abordagem nao e pratica para pro-
blemas complexos, pois o numero de neuronios pode aumentar exponencialmente
usando apenas uma camada, alem do que, essa arquitetura ter maior tendencia a
apresentar overfitting. O melhor, nesses casos, e satisfazer os requisitos computaci-
onais da rede neural com mais de uma camada escondida.
Uma rede neural pode ser usada para muitos tipos diferentes de tarefa. Nesse
trabalho, o foco sera a classificacao. Ela e uma parte de reconhecimento de padroes,
processo no qual um padrao ou sinal recebido e atribuıdo a uma classe dentre um
conjunto pre-definido, [2]. A rede neural realiza essa tarefa passando por um trei-
namento em que ela recebe exemplos de entradas, juntamente com suas respectivas
9
classes alvo, obtidos de um conjunto determinado e aprende a reconhece-los. De-
pois disso, ao receber exemplos de fora desse conjunto, que contenham os mesmos
padroes, ela deve conseguir classifica-los corretamente. Isso ocorre porque a rede
consegue aprender a identificar os padroes subjacentes da populacao de exemplos
na qual ela foi treinada. Ela e capaz de classificar exemplos nao vistos durante o
treino porque eles possuem os mesmos padroes aprendidos pela rede, que permitem
diferenciar cada classe.
2.2.3 Treinamento
De forma geral, a rede tenta aproximar uma funcao f(x) implementando F (x,Θ),
onde x sao as entradas recebidas e Θ, os parametros dessa rede. Isso e feito atraves de
um algoritmo de aprendizado que soluciona um problema de otimizacao para deter-
minar os melhores valores para Θ. Esse algoritmo recebe os exemplos de treino, que
sao pontos de uma funcao ruidosa de f(x). A partir disso, ele ajusta os parametros
de forma iterativa ate atingir uma solucao dada boa o bastante. No caso das redes
discutidas ate aqui, os parametros a ajustar sao os pesos w da rede. Para que o
algoritmo de aprendizado possa aproximar f(x), e definida uma funcao custo depen-
dente dos pares entrada-saıda alimentados a rede, ou do erro entre a saıda obtida e
a desejada. Uma funcao custo comum e o erro medio quadratico (minimum squared
error , MSE), definida como
J(w) =1
P
P∑i=1
ε2i , (2.4)
onde ε2i = |yi − ti|2 e o erro quadratico para o par i e P e o numero de pares
usado no treinamento. Tem-se entao um problema de otimizacao, escolher os pesos
sinapticos de forma a minimizar a funcao custo. Para isso, a rede recebe, de forma
sucessiva, pares de uma base de dados relevante a tarefa em questao. A partir disso,
ela atualiza seus pesos para melhor satisfazer o objetivo da otimizacao. O resultado
ideal do treino seria zerar a funcao custo, mas nem sempre isso e viavel ou leva ao
melhor classificador. Resultados suficientemente bons, proximos de um mınimo, sao
o fim mais comum desse processo.
10
2.2.3.1 Algoritmo Error Backpropagation
O processo de treino abordado sera o de retropropagacao (backpropagation). Ele
pode ser dividido em duas fases: propagacao (forward) e retropropagacao (backward).
Na fase de propagacao, os pesos das redes sao fixados e os sinais de entrada sao pro-
pagados camada por camada ate sua saıda. Na fase de retropropagacao, e obtido
uma medida do erro entre a saıda encontrada na fase anterior e a saıda esperada.
Esse sinal e propagado de forma reversa, a partir da saıda, e, em cada camada,
usado para ajustar os pesos sinapticos dessa camada.
O algoritmo sera detalhado a seguir. Assumindo um dado neuronio j com m
entradas x = [x0, . . . , xi, . . . , xm]T , incluindo o bias, e funcao de ativacao f(v). Seus
pesos sinapticos sao wj = [wj0, . . . , wji, . . . , wjm]T . Dado que a saıda desejada, ou
rotulo, para essa entrada e t, seu sinal de erro sera ej = yj− tj e ele sera usado para
compor uma funcao custo (loss function) J(wji) escolhida de acordo com a tarefa
em questao. O sinal de entrada sera vj =∑m
i=1 xiwji + bj e sua saıda, yj = f(vj).
Deseja-se realizar uma correcao ∆wji em cada peso sinaptico do neuronio de modo
a minimizar sua funcao erro. Ela deve ser
∆wji = −η∂J(wji)
∂wji
. (2.5)
Desenvolvendo, tem-se
∆wji = −η∂J(wji)
∂vjxi = −η ejf ′(vj)xi, (2.6)
que representa a otimizacao da funcao custo pelo metodo do gradiente descendente,
onde o gradiente da funcao representa sua direcao de maior aumento no espaco dos
pesos wj e η e um parametro chamado taxa de aprendizagem, ou learning rate.
Modificar os pesos proporcionalmente ao negativo do gradiente garante que o vetor
de pesos se desloque na direcao que minimiza localmente a funcao custo. No entanto,
como essa minimizacao considera apenas o entorno de w a cada iteracao, ela pode
levar a um mınimo local caso a funcao custo nao seja convexa. Uma solucao no caso
de redes pequenas e inicializar os pesos da rede de forma aleatoria, o que introduz
um elemento nao-determinıstico no processo, e realizar o treino multiplas vezes para
obter um resultado mais proximo do mınimo global. Redes profundas modernas
11
tem na inicializacao adequada de seus parametros uma condicao importante para
convergencia e nao sao tao susceptıveis ao problema dos mınimos locais.
O algoritmo completo e o seguinte:
1. Fase forward :
(a) a partir das entradas xi, calcular os sinais de entrada dos neuronios da
primeira camada, vj =∑m
i=1 wijxi + bj
(b) calcular as saıdas de cada neuronio, uj = f(vj)
(c) usar uj como entradas para a proxima camada e repetir o processo ate a
ultima camada. Suas saıdas serao as saıdas da rede, yj;
2. Fase backward :
(a) calcular o sinal de erro ej = yj − tj;
(b) inverter o sentido do fluxo do sinal, de modo a fluir da ultima camada
para a primeira;
(c) usando ej como entrada, calcular vj para a camada de saıda e calcular
f ′(vj);
(d) calcular ∆wji = −η ejf ′(vj)xi para cada peso de cada neuronio da camada
atual;
(e) modificar os pesos wjinovo= wjiantigo
+ ∆wji;
(f) continuar propagando o sinal de forma reversa, modificando os pesos a
cada camada.
Diagramas ilustrativos e uma explicacao mais detalhada podem ser encontradas em
[2], Cap. 4 .
2.2.3.2 Treino On-line e em Lotes
Esse treino deve ser feito com um certa quantidade de exemplos da base de dados
para cada atualizacao de pesos. Ela caracteriza metodos de treino diferentes e dois
deles serao abordados aqui: treino on-line e treino em lotes. O treinamento on-
line consiste em realizar a atualizacao dos pesos sinapticos a cada novo exemplo
12
recebido. Cada novo dado recebido de uma base com M exemplos gera uma nova
iteracao do algoritmo de treino e a atualizacao dos pesos da rede, o que significa que
serao calculados M sinais de erro ej e cada um gera uma atualizacao dos pesos da
rede. O treinamento em lotes (ou batch) consiste em atualizar os pesos apenas apos
N ≤ M exemplos da base serem apresentados a rede. O sinal de erro de um lote
sera a media do erro para cada entrada desse. Para um lote de tamanho N ,
e =1
N
N∑k=1
e(xk), (2.7)
onde xk e a k-esima entrada do lote. Esse metodo tem diversas vantagens sobre o
treino on-line, como maior estabilidade no processo de otimizacao e facilidade de
paralelizar o treinamento. A desvantagem e que ele requer poder de processamento
e espaco de armazenamento muito maiores, pois necessita carregar e processar N
exemplos da base e resultados simultaneamente, enquanto o metodo on-line, apenas
um. Isso restringe o tamanho dos lotes a valores que gerem requisitos mais praticos.
Esse algoritmo deve ser executado muitas vezes durante o treino. Cada execucao
completa ou seja, cada vez que ele apresenta todos os exemplos da base para a rede,
e chamada de epoca. Cada epoca altera ligeiramente o valor dos pesos da rede e
se aproxima (espera-se) de um mınimo na otimizacao. A velocidade com a qual
isso ocorre depende da taxa de aprendizado escolhida, no caso do aprendizado por
gradiente descendente. Quanto mais alta ela for, mais rapida sera a convergencia,
mas maior sera a chance que esta nao ocorra e o algoritmo divirja, ou pelo menos que
nao atinja um ponto proximo de um mınimo. Quanto menor ela for, mais lentamente
o algoritmo convergira, mas o processo sera mais estavel e tendera a encontrar uma
solucao mais proxima do mınimo.
2.2.3.3 Outras Consideracoes
O objetivo da rede e aprender a reconhecer os padroes presentes nos exemplos
apresentados a ela de forma robusta e generica. Ela deve ser capaz de reconhecer
esses padroes em exemplos futuros, nunca antes vistos. Por isso, medir apenas o
valor da funcao custo (tambem chamada loss, perda ou erro) durante o treino nao e
uma boa forma de avaliar seu desempenho. A rede pode aprender os padroes apenas
13
dos exemplos vistos no treino, ao inves de aprender as caracterısticas comuns a os
exemplos da classe de interesse como um todo.
A solucao e usar diversos conjuntos para o processo de treino da rede. Dada uma
base de dados limitada, pode-se separar uma parte dela para auxiliar na avaliacao
do treinamento. A base e dividida, entao, em dois conjuntos: conjunto de treino e
conjunto de teste. O conjunto de treino deve conter a maior parte dos exemplos da
base e deve ser usado durante a otimizacao dos pesos, o treinamento propriamente
dito. O conjunto de teste deve ter uma parte menor dos dados e deve refletir
estatisticamente as caracterısticas da base como um todo. Ele deve ser usado para
realizar a avaliacao da rede apos o treino, minimizando a funcao custo como ja
mostrado. Como a rede nao teve acesso a esse conjunto durante seu treinamento, ela
so obtera um valor baixo de erro se tiver, de fato, aprendido os padroes da populacao
de exemplos de interesse. Caso ela tenha aprendido apenas as caracterısticas dos
exemplos de treino, nao sera capaz de classificar corretamente os exemplos de teste e
a perda nesse conjunto, dito erro de teste, sera alta. O valor da funcao custo obtida
durante o treino e chamado erro de treino. Ao receber os exemplos de teste, a rede
nao deve ser treinada com eles, apenas usada para realizar predicoes, que devem,
entao, ser comparadas com os respectivos rotulos e usadas para calcular o erro de
teste.
Alem dos conjuntos de treino e teste, e frequente a utilizacao de um terceiro con-
junto dito de validacao. Uma rede neural possui parametros que devem ser ajustados
fora do algoritmo de aprendizado para que ela obtenha um bom desempenho. Eles
sao chamados hiperparametros e incluem, por exemplo, configuracoes do algoritmo
de otimizacao, tamanho do lote e constantes da funcao de ativacao. Esses hiper-
parametros influenciam no desempenho da rede e podem se relacionar entre si. Eles
devem ser ajustados na base de dados antes do treino da rede, mas isso nao pode ser
feito no conjunto de teste, pois pode gerar um vies no aprendizado da rede. Assim,
uma pequena parte da base, chamada conjunto de validacao, deve ser usada para
testar qual combinacao de parametros produz o melhor desempenho de teste. De
fato, ele deve ser usado quando se mostrar necessario avaliar qualquer modificacao
na rede, seja de treinamento, arquitetura, distribuicao de dados ou outro aspecto. O
14
conjunto de treino deve ser usado apenas para treinar a rede, enquanto o de teste so
deve ser usado para realizar a avaliacao de desempenho homonima, ao final de todo
ajuste e treino. A divisao da base ao utilizar os conjuntos citados deve reservar uma
grande parte dos exemplos para o treino e dividir o restante entre os dois outros
conjuntos. Um exemplo de divisao dos dados e 60%, 20% e 20% para treino, teste
e validacao, respectivamente, mas a proporcao depende do problema e da base de
dados.
O valor da funcao custo e apenas uma das medidas que pode ser usada para
avaliar o desempenho de uma rede neural. Sao comumente usadas: taxa de acerto,
MSE, divergencias, precisao, sensibilidade, entre outras. A melhor medida a ser
usada depende do problema e da avaliacao desejada. O detalhamento de metodos
de avaliacao de desempenho em aprendizado de maquina e abordado em [4].
2.3 Redes Neurais Convolucionais
Redes neurais convolucionais sao um tipo de rede neural especializada que apre-
senta vantagens no processamento de alguns tipos de dados, principalmente imagens.
A diferenca delas para as redes convencionais e a utilizacao de uma operacao de con-
volucao em pelo menos uma camada, normalmente chamada camada convolucional.
Redes convolucionais tem obtido grande popularidade na ultima decada por permitir
solucoes praticas para problemas antes custosos e difıceis de serem abordados. Nessa
secao, seus elementos basicos serao abordados, para informacoes mais detalhadas, e
recomendavel consultar a bibliografia citada, como [1].
2.3.1 Camada Convolucional
Uma camada completamente conectada relaciona suas entradas e saıdas atraves
de uma multiplicacao da matriz de entradas por uma matriz de pesos. No caso de
uma camada convolucional, a relacao entrada-saıda e feita atraves de uma operacao
de convolucao entre as entradas e uma funcao de pesos. Essa operacao nao e exata-
mente como uma convolucao convencional, mas compartilha muitas caracterısticas.
A convolucao discreta entre duas funcoes f(t) e w(t) unidimensionais pode ser defi-
15
nida como
s(t) = f(t) ? w(t) =+∞∑
a=−∞
f(a)w(t− a), (2.8)
ou seja, o resultado e a soma de diversas instancias da funcao w(t), a medida que
ela e deslocada no espaco de referencia, multiplicada por f(t). No contexto de redes
neurais, f(t) e chamada funcao de entrada e w(t), funcao nucleo, ou kernel. A
funcao kernel e composta por pesos ajustaveis e tipicamente e muito menor que a
de entrada. Em implementacoes praticas, ela e definida como uma matriz esparsa
de mesmo tamanho da entrada e apenas uma pequena parte possui valores nao-
nulos. A convolucao entre a entrada e o kernel consiste em multiplicar f(t) por w(t)
repetidas vezes, a medida que a segunda e deslocada ao longo da primeira e cada
multiplicacao resulta em um componente do resultado.
Para o caso unidimensional, com uma entrada I consistindo de M exemplos de
dimensao 1 e um kernel W de tamanho K, o resultado sera S = (I?W) ∈ R(M+K−1),
podendo ter dimensoes diferentes a depender da escolha de parametros como step e
padding. Da mesma forma que uma camada convencional possui diversos neuronios,
uma convolucional pode ter mais de uma funcao kernel, onde cada uma tera seu
conjunto de parametros treinados individualmente e resulta em saıdas diferentes.
Cada conjunto de saıdas de uma funcao kernel e chamada mapa de caracterısticas
(feature map) ou filtro.
Para o caso de duas dimensoes, como uma imagem, tem-se uma entrada I ∈ RM×N
e um kernel tambem bidimensional W ∈ RK×K . Nesse caso, S = (I ? W) ∈
R(M+K−1)×(N+K−1). A convolucao bidimensional discreta e definida como
S(i, j) = I(i, j) ? W (i, j) =M∑
m=1
N∑n=1
I(m,n)W (i−m, j − n). (2.9)
Da mesma forma que no caso unidimensional, a funcao kernel “varre”a imagem em
ambos eixos, realizando uma multiplicacao e armazenando o resultado a cada passo
para formar a matriz S. Uma figura que ajuda a visualizar esse conceito encontra-se
em [1] p.330.
16
Ha diversas vantagens de realizar uma operacao de convolucao. Em redes neurais
convencionais, a operacao implementada e a multiplicacao das entradas por uma
matriz de pesos, na qual todos os pesos sao multiplicados por todas as entradas.
Uma camada convolucional permite apenas uma interacao esparsa entre as entradas
e saıdas, na qual cada matriz de pesos se relaciona com apenas parte das entradas.
Isso ocorre porque o kernel utilizado e menor que a entrada, o que requer menos
espaco de armazenamento e um numero menor de operacoes matematicas, ja que e
possıvel utilizar um kernel varias ordens de grandeza menor que a entrada e ainda
obter bom desempenho. Outra consequencia dessa conectividade esparsa e que cada
entrada de uma camada convolucional afeta poucas unidades escondidas. No caso
de redes profundas, isso obriga a rede a usar essas relacoes simples para construir
estruturas mais complexas, o que beneficia sua capacidade de generalizacao.
Outra vantagem e o compartilhamento de parametros. Cada kernel possui para-
metros ajustaveis de forma similar aos pesos de um neuronio em redes convencionais.
A diferenca entre eles e que no conjunto de parametros usado pelo kernel, cada
um multiplica uma entrada por vez e, ao longo da convolucao, eventualmente tera
multiplicado todos (ou quase todos) os elementos da entrada. Um neuronio possui
um parametro para cada elemento da entrada e cada um multiplica apenas ele.
Portanto, uma camada convolucional possui muito menos parametros do que uma
completamente conectada. Isso reduz ainda mais os requisitos de armazenamento
de uma camada convolucional, alem de permitir que o mesmo conjunto de pesos
seja treinado para todas as posicoes da entrada, o que ajuda a evitar uma alta
especializacao de conjuntos de parametros e aumenta a eficiencia estatıstica da rede
neural.
A terceira vantagem das camadas convolucionais e a robustez a determinadas
transformacoes feitas na entrada. Gracas ao compartilhamento de parametros, ela
apresenta a propriedade de equivariancia a translacao, que significa a saıda sera a
mesma se uma transformacao de translacao for aplicada a entrada antes ou depois
da convolucao, desde que seja aplicada da mesma forma em todos os elementos. Isso
significa que a rede e capaz de reconhecer um mesmo padrao, inclusive apos ele ter
sofrido uma dessas transformacoes.
17
Capıtulo 3
Metodologia
O objetivo desse trabalho e criar uma base de dados de imagens que permita o
treinamento de um classificador automatico e documentar os processos usados para
isso. Ele deve ser capaz de discriminar trechos de vıdeos de inspecao de tubulacoes,
ou imagens obtidas a partir deles, para identificar se dado trecho contem um duto
ou nao.
O processo de criacao da base de imagens consiste de tres partes: classificacao
dos trechos dos vıdeos, captura de frames e filtragem. Um frame, ou quadro, e
um elemento fundamental de um vıdeo, pois este e uma apresentacao sequencial de
frames de forma a criar a ilusao de movimento. A Fig. 3.1 contem os nove primeiros
frames de um vıdeo da base, que sao reproduzidos no espaco de 0, 36 s. O trabalho
visa gerar um conjunto de imagens amplo, diverso e balanceado.
A base deve ser ampla porque quanto mais exemplos para o treinamento do clas-
sificador, melhor seu desempenho tende a ser. Suas imagens devem ser diversas
porque isso aumenta o numero de padroes diferentes disponıveis, o que permite um
aprendizado mais geral. Essa preocupacao e especialmente importante porque, como
a fonte das imagens sao vıdeos, frames sequenciais tendem a ser muito parecidos.
Ter muitas imagens parecidas nao contribui para a qualidade da base, pois elas nao
oferecem padroes novos para treinar um classificador e diminuem o efeito de ima-
gens com padroes diferentes que ocorram em menor quantidade. As imagens devem
ser balanceadas em termos de distribuicao entre as classes. Algumas classes tem
ocorrencias maior do que outras na base de vıdeos original. Assim, uma base de-
18
rivada naturalmente vai refletir esse desequilıbrio. No entanto, devem ser tomadas
medidas que mitiguem esse efeito, pois isso prejudica o treinamento do classificador.
O codigo usado para os programas descritos e rotinas auxiliares estao disponıveis
no repositorio http://www.github.com/olavosamp/database-maker.
3.1 Caracterısticas da Base de Vıdeos
A base de vıdeos usada neste trabalho e composta por filmagens de procedimentos
de inspecao de tubulacoes feitas por veıculos operados remotamente (remotely ope-
rated vehicle, ROV). Os vıdeos refletem diversas atividades de inspecao e condicoes
de operacao do ROV em diferentes trechos de dutos. A base original contem 126
vıdeos nos formatos avi, mpg, wmv, e vob. Eles tem duracao total de 90 horas,
21 minutos e 42 segundos, divididos entre vıdeos de diferentes formatos, segundo a
Tabela 3.1.
Tabela 3.1: Caracterısticas da base de vıdeos.
Formato No de Vıdeos Duracao Total
mpg 3 05h 26m 41s
wmv 46 20h 43m 50s
avi 1 03h 45m 58s
vob 76 60h 25m 13s
Total 126 90h 21m 42s
Os vıdeos tambem possuem diferentes caracterısticas e alguns apresentam pro-
blemas que impossibilitam sua utilizacao em um primeiro momento. Como cada
um gera imagens na sua resolucao de reproducao, imagens capturadas de vıdeos
diferentes podem ter resolucoes diferentes. Em geral, isso nao e o ideal para a cons-
trucao de uma base de dados, pois resulta em dados nao padronizados. No entanto,
nesse trabalho, as imagens foram adicionadas a base sem redimensionamento, para
permitir maior liberdade no pre-processamento das imagens durante o treinamento
do classificador, que ja padroniza as imagens.
19
Figura 3.1: Nove primeiros frames de um vıdeo da base.
No total, 41 vıdeos foram classificados. Dentre esses, 24 compuseram bases que
foram testadas, sendo que os demais nao foram incluıdos nas bases a tempo de
serem testados, mas podem ser usados no futuro. Tres vıdeos estao corrompidos ou
apresentam problemas, como artefatos na imagem, impossibilidade de realizar busca
no vıdeo ou erros de reproducao. Eles nao foram utilizados neste trabalho, embora,
no futuro, alguma solucao possa ser estudada que permita seu uso. Dentre os vıdeos
com formato vob, 14 sao apenas ındices de DVD. Portanto, ainda restam 68 vıdeos
da base para, possivelmente, serem classificados no futuro.
3.2 Classificacao dos Vıdeos
A base consiste de imagens extraıdas a partir dos vıdeos originais. Cada imagem
deve ter um rotulo que identifique a classe a qual ela pertence. A partir desses
insumos, pode-se realizar um treinamento supervisionado de uma rede neural.
A partir da observacao do material, foram escolhidas tres classes para classificacao,
em um primeiro momento: Duto, Nada e Confuso. Cada classe identifica quais
objetos ou padroes estao presentes de forma predominante em cada imagem. A
20
classe Duto representa um trecho que contem um duto ou parte de um; Confuso
representa um trecho com um objeto que nao seja um duto, como uma parte do
ROV; e Nada representa um trecho sem nenhum objeto relevante, apenas com areia
ou agua, por exemplo. As Figs. 3.2, 3.3 e 3.4 mostram exemplos de imagens de cada
classe. Os vıdeos, entao, sao divididos em eventos, onde um evento e definido como
um trecho com inıcio e fim, classificado em apenas uma classe. Isso visa facilitar o
processo de captura de imagens do vıdeo.
Figura 3.2: Exemplos de imagens da classe Duto.
A presenca de trechos e imagens de difıcil classificacao e inevitavel. Imagens
em trechos com transicao de classes, ou seja, partes do vıdeo proximas ao inıcio e
termino de um evento, podem ter presenca de elementos de mais de uma classe.
Isso exige uma decisao subjetiva de classificacao e pode gerar um erro de anotacao:
quando um trecho e identificado com uma classe, mas deveria pertencer a outra. No
entanto, espera-se que esse tipo de problema esteja restrito a apenas uma pequena
parte das imagens da base, sendo estatisticamente insignificante quando comparada
com seu restante.
21
Figura 3.3: Exemplos de imagens da classe Nada.
Figura 3.4: Exemplos de imagens da classe Confuso.
22
Para obter os rotulos das imagens, e necessario realizar um processo de anotacao
dos vıdeos. Deve-se registrar a qual classe cada trecho de cada vıdeo pertence.
Isso e feito de forma manual: uma pessoa assiste ao vıdeo, identifica seus trechos
relevantes e registra o rotulo de cada um em um arquivo. Esse registro e feito em um
arquivo no formato comma separated values (CSV), onde cada linha contem uma
entrada cujos dados sao separados por vırgulas e, neste projeto, tambem segue uma
formatacao pre-determinada. Esta visa facilitar tanto o processo de classificacao e
registro para um agente humano, quanto a leitura desse arquivo por um programa,
posteriormente. Cada arquivo CSV trata de um vıdeo e cada uma de suas linhas,
exceto a primeira, corresponde a um evento. Um evento e definido como um trecho
de um vıdeo que seja contınuo, unico e contenha apenas uma classe. O arquivo
CSV deve ser preenchido de acordo com as convencoes a seguir. A primeira linha
do arquivo deve ser:
VideoName,Class,StartTime,EndTime,Id
Ela corresponde aos cabecalhos do arquivo, indicando o que cada campo deve conter.
Cada linha seguinte deve ter, em ordem: o nome do vıdeo, a classe do trecho, o
tempo de inıcio do trecho, o tempo de termino do trecho, o numero identificador
desse evento. Cada coluna deve ser separada por uma vırgula, sem espacos antes ou
depois dela.
• Nome do vıdeo: nome do vıdeo processado, sem extensao.
• Classe: codigo da classe do evento, segundo a Tabela 3.2. Normalmente res-
trito a quatro caracteres para facilitar a leitura do arquivo.
• Tempo de Inıcio: instante do vıdeo em que o evento comeca. Deve ser regis-
trado no formato HHMMSS, sempre com 6 dıgitos numericos.
• Tempo de Termino: instante do vıdeo em que o evento termina, normal-
mente quando ocorre uma mudanca de classe. Deve ser registrado no formato
HHMMSS, sempre com 6 dıgitos numericos.
• Numero do evento: numero identificador do evento, como registrado no arquivo
CSV.
23
Tabela 3.2: Codigos de classe para os arquivos CSV correspondentes as tres classes
usadas no projeto.
Classe Codigo
Duto tubo
Nada nada
Confuso conf
Figura 3.5: Exemplo de arquivo CSV para o vıdeo “20161101215100437@DVR-
SPARE Ch1.wmv”. Cada linha apos a primeira representa um evento distinto e
contem: o nome do arquivo, o codigo da classe, tempo de inıcio, tempo de termino
e codigo identificador do evento.
O registro de quais vıdeos ja foram classificados e feito atraves de um arquivo de
controle. Ele contem uma lista com todos os vıdeos a serem usados no projeto e
mantem um registro de quais ja foram classificados e quais ainda nao. Portanto,
cada vıdeo que for classificado deve ter um arquivo CSV correspondente e deve ser
anotado no arquivo de controle.
Tendo isto em vista, o processo de classificacao e registro e realizado de acordo
com os seguintes passos:
1. Criar o arquivo de controle, caso ainda nao exista, e nele listar os vıdeos a
serem processados;
2. Escolher um vıdeo para classificar;
3. Criar o arquivo CSV correspondente a esse vıdeo;
4. Identificar e anotar a classe do primeiro trecho do vıdeo e seu tempo de inıcio,
normalmente o comeco do vıdeo;
24
5. Identificar e anotar o tempo de termino desse trecho do vıdeo, caracterizado
pela presenca de outra classe;
6. Repetir os passos 4) e 5) ate haver percorrido todo o vıdeo;
7. Registrar a classificacao do vıdeo no arquivo de controle e armazenar o arquivo
CSV.
Apos um numero suficiente de vıdeos ter sido classificados, pode-se gerar a base a
partir deles. Para cada novo vıdeo anotado, a base pode ser gerada novamente para
incorporar os novos dados, se o processo de construcao for determinıstico e o mesmo
usado anteriormente. Caso contrario, a base deve ser excluıda e reconstruıda para
incorporar o novo vıdeo.
3.3 Captura de Imagens
Apos um vıdeo ser classificado, ele pode ser usado para criar imagens da base. Os
quadros do vıdeo sao avaliados e alguns sao escolhidos para serem salvos e comporem
a base de dados. Esse processo e chamado captura ou extracao de frames. Isso e
feito atraves de um programa desenvolvido em Python, usando a biblioteca Opencv.
Para cada evento de classificacao, sao extraıdas imagens do vıdeo e rotuladas com
sua classe. A escolha das imagens a serem salvas pode ser feita de varias formas, cada
uma com vantagens e desvantagens. Os metodos foram avaliados com o objetivo de
determinar sua capacidade de gerar a base mais adequada.
Um vıdeo possui caracterısticas que devem ser consideradas durante o processo
de captura de imagens. Elas sao: taxa de quadros, duracao e resolucao. Elas sao
obtidas pelo programa, para cada vıdeo, e usadas no processo de captura.
• Taxa de Quadros: taxa na qual novas imagens, quadros ou frames, sao mostra-
das durante a reproducao de um vıdeo. Ela e medida em frames por segundo
ou, quando expressa como frequencia, em Hertz. Tem valor entre 25 e 30
frames/s para os vıdeos da base.
• Duracao: tempo total de execucao do vıdeo. Quanto maior for a duracao de
um vıdeo, em geral, mais frames ele possui. Sera medida em segundos, exceto
25
quando indicado. Na base usada neste trabalho, o vıdeo mais curto tem 30min
de duracao, enquanto o mais longo tem 3h 45min 58s.
• Resolucao: tamanho de cada frame do vıdeo, representado como largura ×
altura da imagem, em pixels. Os vıdeos disponıveis para o trabalho apresentam
as resolucoes: 640×480, 720×480, 352×480, 352×240 e 704×576. A resolucao
depende de como foi realizada e de quem realizou a gravacao do vıdeo.
A captura de frames do vıdeo foi feita por um programa que usa a biblioteca
Opencv. Ele le o arquivo CSV e lista todos os eventos, suas classes e duracao de
cada um. A partir dessas informacoes, ele determina o perıodo de captura para cada
evento. A captura de imagens propriamente dita comeca a partir desse ponto: para
cada evento, o programa se posiciona no instante de inıcio e captura um frame. Em
seguida, avanca um perıodo de captura e salva mais um frame. Entao, ele repete o
processo de avanco e captura ate o final do evento. Ao atingir o final, ele recomeca o
processo para o proximo evento do arquivo CSV. Isso e feito para todos os eventos.
Quando todos tiverem sido percorridos, as imagens desse terao sido capturadas e
salvas.
O programa salva cada imagem com uma convencao de nomenclatura e em um
pasta separada para cada vıdeo. Ao comecar a captura de imagens para um vıdeo,
ele cria uma pasta cujo nome e o nome do vıdeo. Em seguida, ao salvar cada frame, o
programa registra informacoes sobre ele no nome da imagem, segundo a formatacao,
com espacos entre os atributos:
<Nome do vıdeo> ID<Numero do evento> FRAME<Numero do frame> <Classe>
onde as caracterısticas entre <> sao substituıdas por seus valores correspondentes
para a imagem. Cada uma e descrita brevemente abaixo.
• Nome do vıdeo: nome do vıdeo do qual o frame foi capturado.
• Numero do evento: numero identificador do evento do qual o frame foi captu-
rado.
26
• Numero do frame: posicao do frame no conjunto de imagens extraıdas desse
evento especıfico. Cada evento tem uma numeracao propria para seus frames,
iniciada pelo frame 0.
• Classe: classe associada ao evento.
Com essas informacoes salvas junto a cada imagem capturada, e possıvel identificar
a classe e a posicao do vıdeo de onde cada uma delas foi extraıda. Isso pode ser
obtido com o processamento do nome dos arquivos de imagem e comparacao com
as informacoes do arquivo CSV correspondente.
A diferenca entre os metodos de captura dos frames do vıdeo reside na forma de
escolher quais deles devem ser capturados e quais, ignorados. Foram explorados dois
metodos de escolha do perıodo de captura dos frames, descritos mais a frente.
O perıodo maximo entre captura de frames esta relacionado com a taxa de quadros
fo do vıdeo, da forma
Tmax =1
fos. (3.1)
Assim, o numero maximo de frames F que pode ser capturado de um vıdeo de
duracao D segundos sera
F = fo ×D. (3.2)
Capturar o numero maximo de frames de um vıdeo nao e um bom metodo de
construir a base. Como um vıdeo e uma sequencia de imagens com uma relacao
semantica e temporal entre si, frames proximos apresentam alta correlacao entre si.
Capturar muitos frames similares nao e uma boa estrategia para construir uma base
de qualidade, pois aumenta seu tamanho e complexidade sem melhorar a qualidade
ou diversidade das imagens, o que dificulta o treinamento de um algoritmo de clas-
sificacao. A presenca de muitas imagens similares na base tambem pode prejudicar
o equilıbrio das classes, aumentando o tamanho de algumas em detrimento das de-
mais e fazendo o treinamento ser enviesado para os maiores conjuntos de imagens,
impedindo que padroes pouco representados, mas importantes, sejam aprendidos
27
corretamente. Assim, uma solucao mais eficiente e capturar apenas poucos frames
do total presente em um dado trecho, de modo a representar os padroes presentes
nele de forma suficiente e evitando redundancias.
3.3.1 Perıodo de Captura Fixo
A maneira mais simples de escolher o perıodo de captura de frames e fixar um
valor para todos os trechos do vıdeo. Isso leva a captura de um total de frames
menor que o disponıvel nele. Esse metodo e uma vantagem em relacao a apenas
capturar todos os frames do vıdeo, mas permite que trechos muito longos sejam
representados de forma desproporcional, o que nao e ideal. O proximo metodo
estudado visa mitigar esse problema.
Tfixo =K
fo(3.3)
Onde K e um parametro que determina a fracao do total de frames que sera
extraıda do vıdeo,
Ffrac =F
K. (3.4)
A escolha de K e empırica e dependente de caracterısticas do vıdeo usado e do que se
deseja para a base a ser construıda. Note que, para K = 1, o metodo degenera para
a captura de todos os frames disponıveis, o que impoes uma restricao na escolha
desse parametro.
A vantagem desse metodo e que ele mantem o intervalo entre capturas de frames
constante, o que permite compreender mais facilmente qual sera o conjunto de ima-
gens resultantes de um determinado vıdeo. No entanto, usar o mesmo perıodo de
captura para o vıdeo inteiro resulta em uma base que pode sobre-representar classes
presentes em eventos longos e sub-representar as presentes em eventos curtos.
Isso se da porque os eventos dos vıdeos da base podem ter duracoes muito dife-
rentes, uns tendo pouco segundos enquanto outros chegam a 20 minutos ou mais.
O que determina essa distribuicao de classes e o conteudo do vıdeo. Alguns sao
28
filmagens diversas e equilibradas de cada classe, ja outros contem apenas um evento
de uma unica classe. Assim, usar a mesma taxa de captura para eventos de duracao
diferente resulta em numeros muito dıspares de imagens extraıdas de cada evento,
o que causa um desequilıbrio na distribuicao de classes na base.
3.3.2 Perıodo de Captura Variavel
Uma forma de reduzir o desequilıbrio no numero de imagens obtida no metodo
de perıodo fixo e usar um perıodo de captura variavel com a duracao dos eventos.
Para isso, ele e recalculado para cada novo evento do vıdeo, de forma proporcional
a sua duracao. Dado um vıdeo com N eventos, i = 1, . . . , N , cada um com duracao
Di, o perıodo de captura usado no trecho do evento i sera:
Ti =K ×Di ×N
F(3.5)
E o numero de frames extraıdos de cada evento sera constante, a menos de erros
de aproximacao, sera
Fi = fi ×Di =Di
Ti=
F
K ×N, (3.6)
onde e esperado que fi = 1Ti
frames/s. Tem-se tambem que
N∑i=1
Fi = F (3.7)
Esse metodo permite que, para um evento muito longo, o perıodo de captura seja
maior e poucos frames sejam extraıdos. Da mesma forma, um perıodo curto tera
um perıodo de captura menor, e mais frames serao extraıdos. Entao, trechos do
vıdeo de maior atividade, onde ha mudancas frequentes de classe, sao representados
por mais imagens. Trechos de pouca atividade, com a presenca de uma mesma
classe por longos perıodos de tempo, necessitam de menos imagens para serem bem
representados e, assim, contribuem menos frames para a base.
No entanto, deve-se notar que usar esse metodo sem restricoes pode gerar valores
inadequados para Ti em algumas circunstancias. Eventos e, portanto, perıodos de
captura muito curtos produzem imagens similares demais, especialmente se Ti <1fo
.
29
Nesse caso, o intervalo de um perıodo nao muda o frame do vıdeo a ser capturado,
o que causa a adicao de multiplas copias do mesmo frame na base. Mesmo quando
isso nao ocorre, a Eq. (3.5) faz todos os eventos gerarem um mesmo numero de
imagens. No caso de eventos curtos, por exemplo, Di < 10 s, os frames capturados
se tornam muito similares, o que nao e desejavel na construcao da base.
Tmax > Ti > Tmın (3.8)
A solucao e limitar os valores que Ti pode assumir, de acordo com a Eq. 3.8
. Escolhendo Tmax e Tmın de forma adequada podemos evitar esses problemas. E
importante notar que as Eqs. (3.7) e (3.6) so sao validas para Ti sem limite de
valores. A forma de limitacao mais branda que deve ser implementada e Tmın >= 1fo
,
para evitar duplicatas de imagens na base, mas limites mais altos, que permitam
perıodos de captura mais longos, podem ser usados. Ha uma relacao entre o numero
de frames capturados por vıdeo e o quanto os parametros de captura sao altos. Na
pratica, Tmın limita o perıodo de eventos de curta duracao, enquanto Tmax limita os de
longa duracao. Quanto maior for Tmın, menos frames serao usados para representar
eventos curtos, sendo que pelo menos um frame sera sempre capturado de cada
evento. Por outro lado, quanto maior for Tmax, menos frames serao capturados em
eventos longos. No entanto, se esse limite for muito elevado, o perıodo escolhido pode
ser grande demais, aumentando a probabilidade de perder informacoes importantes
nesse evento, mesmo sem mudanca de classe.
Entao, deve-se permitir que Ti seja pequeno apenas quando necessario, mas isso
deve ser feito de forma indireta, atraves da escolha dos parametros. Essa escolha
e empırica e dependente da natureza dos vıdeos em questao e das caracterısticas
desejadas para a base. Como os vıdeos da base tem taxa de quadro entre 25 e
30 frames/s, deve-se, pelo menos, respeitar Tmın >= 0, 04 s. Durante este trabalho,
a escolha precisa desses parametros nao foi priorizada.
30
3.4 Ajuste da Base
Apos a construcao inicial da base por meio do processo de captura de frames,
quase sempre ha imagens classificadas de modo incorreto ou imagens redundantes.
O primeiro caso e uma imagem que foi atribuıda a uma classe incorreta e, por isso,
tem o rotulo errado. O segundo caso ocorre quando muitos frames sao capturados
de um mesmo trecho do vıdeo, resultado de um perıodo de captura curto demais
ou uma peculiaridade do vıdeo, que poderia ser representado por uma fracao dessas
imagens. Em ambos os casos, corrigir essas discrepancias tende a aumentar o desem-
penho de classificacao, com a desvantagem do custo em tempo e esforco necessario
para realizar essa filtragem. Elas podem ser feitas por alguns metodos e dois serao
discutidos neste trabalho, dos quais apenas a filtragem manual foi usada na base
final.
3.4.1 Filtragem Manual
O metodo de ajuste mais simples e mais eficaz e a filtragem manual dos dados,
ou seja, uma pessoa observa todas as imagens e escolhe quais devem fazer parte da
base ou nao. Isso sempre e feito em menor ou maior escala pelo menos em partes
da base para verificar o funcionamento correto do algoritmo e refinar o processo de
anotacao, mas pode ser aplicado a base completa para remover imagens com erros e
redundancias. De forma geral, a filtragem busca remover dois tipos de imagem: as
com rotulos incorretos e as redundantes. Ambos serao detalhados a seguir.
Remover imagens com rotulos errados consiste em verificar se a classe presente na
imagem condiz com o rotulo a ela atribuıdo, requerendo pouca arbitragem por parte
do responsavel. Esse tipo de erro ocorre porque os vıdeos contem trechos ambıguos,
que nao podem ser prontamente atribuıdos a uma classe e requerem uma avaliacao
subjetiva do responsavel pela classificacao. Por exemplo, casos de imagens proximos
a fronteiras entre classes, onde ha mais de uma classe presente em um mesmo frame.
Esta ocorrencia e a maior fonte de erros de classificacao mas, alem disso, outros
fatores podem levar imagens a serem rotuladas incorretamente. Retirar esses erros
da base aumenta o desempenho de classificacao. Por vezes, o mais apropriado e nao
usar essas imagens ambıguas na base, para evitar prejudicar o algoritmo.
31
Identificar imagens redundantes pode ser menos objetivo e depende do nıvel de
concisao desejada para a base. Escolher menos frames para representar um determi-
nado evento de um vıdeo torna a base mais compacta, o que facilita o treinamento
do algoritmo. Por outro lado, pode levar a perda de informacao caso algum trecho
importante nao seja registrado. Escolher mais frames reduz a chance de ignorar tre-
chos relevantes e aumenta a quantidade de dados disponıveis, mas se muitas imagens
forem parecidas, isso nao se traduzira em maior desempenho, apenas aumentara o
tamanho da base e complexidade do treino desnecessariamente.
O processo de filtragem, entao, consiste em inspecionar cada imagem da base e
verificar se ela se enquadra em algum caso de discrepancia, ou se ela e indesejavel de
alguma forma, remove-la. O objetivo final e melhorar a qualidade da base e facilitar
o treinamento do algoritmo de classificacao. A partir disso, devem ser estabelecidos
criterios e definicoes para a filtragem, definindo em linhas gerais os tipos de imagens
que serao removidos e os que serao mantidos. Isso e necessario para promover
uma padronizacao do processo. Entretanto, como em toda atividade que envolve
o elemento humano, cada avaliador insere elementos subjetivos nos criterios, o que
gera uma variabilidade da selecao de imagens que a serem removidas. Alem disso, ha
casos em que os criterios estabelecidos nao sao suficientes e o avaliador precisa tomar
decisoes subjetivas como, por exemplo, decidir quantas imagens sao necessarias para
representar determinado evento.
Na maior parte dos casos, a filtragem manual e um processo que aprimora a
qualidade da base e deve ser feita, no mınimo, para remover dados espurios e se ter
uma percepcao do que esta sendo incorporado a ela. Nenhum metodo de construcao
de uma base de dados e livre de falhas ou consegue captar perfeitamente a intencao
do pesquisador, e isso e ainda mais valido para metodos automatizados. A montagem
das bases ate hoje tem sido largamente um esforco manual e por um bom motivo:
dessa forma se tem um controle completo sobre quais dados serao utilizados e quais
serao descartados, melhor capturando as intencoes do responsavel. A desvantagem
desse processo e o grande custo em tempo e esforco necessario, que cresce com o
tamanho da base e o numero de classes envolvidas.
32
3.4.2 Filtragem por Similaridade
Um metodo menos dependente do julgamento humano e a filtragem por simila-
ridade. Ele consiste em calcular uma medida de similaridade de um frame com os
seguintes e, caso essa medida exceda um limite determinado, remover a imagem
da base. Ou, por uma abordagem inversa, manter apenas as imagens que tem a
medida em relacao as vizinhas dentro de um limite aceitavel e remover as demais.
Esse metodo pode ser utilizado porque os frames sao salvos em ordem a medida
que sao extraıdos dos vıdeos, gerando uma base com elementos que mantem uma
relacao temporal e semantica entre si: frames proximos tendem a ser similares entre
si, enquanto frames distantes, nao. A medida de similaridade abordada foi o Struc-
tural Similarity Index (SSIM), que oferece melhor avaliacao de similaridade entre
imagens, so que e mais custosa do que outras medidas mais simples. Por causa disso,
esse metodo nao foi usado nas bases testadas.
Tabela 3.3: Media dos valores das comparacoes SSIM, por classe, entre cada frame
i um vıdeo da base e cada um dos i + n frames seguintes, individualmente.
n Tubo Nada Conf
1 0,713 0,726 0,720
2 0,681 0,697 0,620
3 0,669 0,686 0,561
4 0,663 0,681 0,523
5 0,658 0,677 0,498
6 0,655 0,674 0,480
7 0,652 0,672 0,468
8 0,650 0,671 0,459
9 0,649 0,670 0,451
10 0,647 0,668 0,445
A vantagem desse metodo e a utilizacao de um criterio mais objetivo para de-
terminar se frames proximos sao redundantes ou nao, o que pode ser uma tarefa
muito subjetiva se realizada por um ser humano. A desvantagem e que ele re-
quer, no mınimo, uma comparacao entre cada imagem e sua seguinte, ou seja, uma
33
comparacao para cada elemento da base, o que pode ser muito custoso computaci-
onalmente dependendo do seu tamanho.
O processo de filtragem deve ser executado para cada vıdeo na base individual-
mente, mantendo a relacao temporal entre frames. Para um determinado vıdeo e
para um limiar de decisao L:
1. Escolher o frame inicial i como referencia
2. Salvar o frame i
3. Calcular a similaridade S entre os frames i e i+ t
4. Se S < L:
(a) Salvar o frame i+ t
(b) Fazer i = i+ t
(c) Fazer t = 1
Caso contrario:
(a) Fazer t = t+1
(b) Voltar para o passo 3
O limiar de decisao L deve ser determinado de forma empırica, pois depende do
conteudo dos vıdeos, da aplicacao e dos objetivos para construcao da base. Assim,
foram feitos experimentos para determinar as caracterısticas de alguns vıdeos. Neles,
todos os frames desses vıdeos foram extraıdos e foi calculada a similaridade entre
cada frame e os dez seguintes, para trechos de cada classe. Esse experimento pode
ser usado para determinar L. A Tabela 3.3 contem essa analise para um conjunto
de 3 mil frames de um vıdeo, divididos em mil por classe. Para cada valor de n, o
valor medio das comparacoes foi obtido segundo
1
M
M∑i=1
SSIM(Ii, Ii+n), (3.9)
onde SSIM(Ii, Ij) indica a comparacao SSIM entre os frames i e j do conjunto de
imagens do vıdeo. Isso foi feito com M = 1000 frames consecutivos por classe.
34
3.5 Teste da Base
Os testes da base foram feitos para determinar se ela permite o treinamento ade-
quado de um algoritmo de classificacao. O objetivo foi atingir um desempenho
de teste aceitavel. Para isso, foi usada uma implementacao da ResNet152 [5] pre-
treinada na base de dados ImageNet [6]. Os testes foram feitos, ao longo da ela-
boracao da base de dados, em colaboracao com Roberto de Moura Estevao Filho,
aluno de Doutorado da COPPE, um dos orientadores do projeto.
Como a rede ja foi treinada para classificar a base ImageNet, ela tem seus parametros
ajustados para identificar os padroes dessa base. A maior vantagem disso e a reducao
do esforco de treino necessario, pois e mais simples adaptar a rede para novas clas-
ses do que treina-la do zero. Assim, espera-se que as classes Duto, Nada e Confuso
tenham alguma similaridade cada uma com uma classe da ImageNet, permitindo
que os padroes ja aprendidos possam ser aproveitados para a tarefa atual. Foram
realizados testes com e sem retreino da rede. No ultimo caso, a rede pre-treinada
foi usada como extrator de caracterısticas, substituindo apenas sua camada de saıda
por uma outra adequada a tarefa de classificacao em questao. Essa nova camada foi
treinada enquanto o restante da rede teve seus pesos mantidos fixos. Treinar apenas
a camada de saıda exige menos esforco computacional, mas tende a ter resultados
piores do que treinar a rede completa. No caso com retreino, todas as camadas da
rede foram treinadas, o que permite que a rede utilize os padroes ja aprendidos como
base, incorporando os novos a partir dos antigos. Embora esse processo seja mais
complexo do que o anterior, ele tende a resultar em uma rede mais apta a identificar
novas classes.
Para a realizacao dos testes, varias bases candidatas foram geradas. Elas diferem
na quantidade de vıdeos usados, metodo de extracao de frames e realizacao de
filtragem ou nao. Cada uma foi usada para treinar e testar uma implementacao
distinta da rede e os resultados foram comparados. O objetivo foi verificar quais
fatores influenciam na qualidade da base.
As imagens das bases foram organizadas por vıdeo, onde as originarias de um
mesmo vıdeo pertencem a um mesmo conjunto, o que permitiu um melhor controle
35
sobre a origem de cada uma. Cada base foi dividida em um conjunto de treino e um
de validacao. A escolha dos conjuntos de treino e validacao foi fundamental para
a avaliacao correta dos resultados. Como o interesse da base de dados e permitir
que a rede classifique corretamente imagens nunca antes vistas, um vıdeo cujas
imagens foram usadas no treino nao deve ser usado na validacao. Caso isso nao seja
possıvel, o mınimo a ser feito e garantir que imagens de um mesmo evento sejam
sempre atribuıdas a um mesmo conjunto. Nao tomar essa precaucao invalidaria
os resultados dos testes. A rede apresentaria um vies alto em relacao a imagens
ja vistas no treino e tera um resultado melhor em testes nessas circunstancias do
que em casos de uso real, nao tendo sua capacidade de generalizacao corretamente
avaliada.
Devido a natureza dos vıdeos de origem, as bases deles derivadas tendem a ter um
desbalanco entre as classes. As gravacoes tem como objetivo registrar a inspecao
das tubulacoes, entao a maior parte da sua duracao envolve dutos, que tende a
ser a classe com mais imagens. As demais possuem menos imagens e sao sub-
representadas. Tal desbalanco pode prejudicar o treino e desempenho da rede e
deve ser evitado. Esse efeito e bem explicado em [7] p. 237. As bases usadas para
treinamento devem buscar ter um mesmo numero de imagens para cada classe ou o
mais proximo disso quanto possıvel. Embora esse desequilıbrio possa ser compensado
durante o treinamento, a pouca disponibilidade de padroes de uma classe limita o
aprendizado do classificador e aumenta a chance de overfitting, sendo desejavel que
a base tenha o mesmo numero de exemplos em cada. Essa e a motivacao por tras
dos metodos de captura de frames usados para construir as bases, mas eles apenas
mitigam o problema. Na pratica, algumas imagens devem ser deixadas de lado
durante o treinamento, nao sendo usadas, para melhorar o equilıbrio entre classes.
Isso e feito descartando as imagens de alguns vıdeos, em conjunto, ao inves de
descartar imagens ao longo de toda a base, o que, na realidade, seria um processo de
filtragem manual. Alguns vıdeos com uma quantidade muito grande de imagens da
classe Duto e poucas ou nenhuma das demais classes foram descartados para manter
o equilıbrio entre classes, como pode ser observado na Tabela 3.4 no caso da Base
B, detalhada no Cap. 4. Embora isso diminua a diversidade de dados disponıveis
para essa classe, a reducao do desequilıbrio entre classes e benefica, e o resultado e
36
Tabela 3.4: Detalhamento da distribuicao das imagens no treino da Base B antes e
depois da remocao de vıdeos prejudiciais. Numero de imagens e percentual do total,
por classe.
Antes Depois
Imagens Percentual Imagens Percentual
Duto 22.771 73,7% 14.635 64,4%
Nada 5.841 18,9% 5.787 25,5%
Confuso 2.295 7,4% 2.295 10,1%
Total 28.819 100% 23.017 100%
um aumento de desempenho da rede neural.
As imagens das bases sao pre-processadas antes de serem usadas para o treina-
mento. Como as imagens podem ter resolucoes diferentes, primeiro sao redimen-
sionadas para o tamanho 255 × 255 pixels. Em seguida, e utilizada uma tecnica
de data augmentation, que consiste em realizar transformacoes sobre as imagens da
base para gerar mais dados disponıveis para a rede. As transformacoes utilizadas
sao cropping e flipping : o primeiro consiste em realizar cortes das imagens, onde
a area de cada um corresponde a, aproximadamente, 80% da area original da ima-
gem; o segundo consiste em espelhar as imagens ja cortadas. A medida que cada
imagem e carregada pelo programa, e decidido de forma aleatoria qual fracao da
imagem sera cortada e isso gera uma nova imagem que e usada para o treino da
rede durante essa epoca e, em seguida, ela e descartada. Os cortes tem dimensoes
244 × 244 pixels, para atender aos requisitos da ResNet. Esse processo se repete
para cada epoca de treinamento. Em cada uma, a rede recebe imagens diferentes,
oriundas das mesmas imagens, que sao as imagens da base. O processo de cortar e
redimensionar partes de imagens corresponde a um aumento de uma parte especıfica
de cada uma, o que evita, por exemplo, que um padrao seja sempre visto em uma
mesma parte das imagens. No conjunto de validacao, as imagens da base sao redi-
mensionadas para 255×255 e sofrem um corte centralizado de dimensoes 224×224,
sem fatores aleatorios. Data augmentation e um processo ja estabelecido [8] que
tende a melhorar a capacidade de generalizacao da rede, torna-la mais invariante a
37
transformacoes dos padroes e, assim, aumentar seu desempenho de teste.
38
Capıtulo 4
Resultados
Nesse capıtulo sao descritas as bases criadas e os resultados dos testes feitos sobre
elas. O objetivo do trabalho foi criar uma base de qualidade para o treinamento
de algoritmos de classificacao, permitindo que novos vıdeos possam ser classificados
automaticamente. Tao importante quanto isso, foi determinar os melhores processos
de construcao de uma base para essa aplicacao. Com isso, novas bases podem ser
criadas a medida mais vıdeos sao disponibilizados ou os processo sao aperfeicoados.
Assim, foi necessario testar todas as bases candidatas e escolher a que foi classificada
com maior desempenho de teste pela rede neural, assim como os processos usados
para cria-la.
4.1 Base de Dados
A partir da base de vıdeos original, foram geradas 4 bases de imagens, todas
construıdas atraves da captura de frames com perıodo variavel. Cada uma usou
parametros diferentes e foi baseada em um determinado conjunto de vıdeos. A
motivacao foi determinar o melhor metodo de construcao, tendo como criterio o
desempenho de classificacao no conjunto de teste. Algumas bases sao derivadas
de conjuntos diferentes de vıdeos porque os testes foram sendo realizados ao longo
do processo de classificacao, assim, os testes mais antigos foram feitos sobre bases
menores.
39
Figura 4.1: Nove imagens amostradas aleatoriamente da base C. Comecando do
canto superior esquerdo, da esquerda para a direita, de cima para baixo, suas classes
sao: Duto, Duto, Confuso, Confuso, Duto, Duto, Nada, Confuso, Duto.
A Base A foi gerada a partir de 4 vıdeos, com um total de 5h 06m. Foi usado o
metodo de extracao com perıodo variavel com parametros: Tmax = 5 s, Tmin = 0, 6 s,
que corresponde a, no mınimo, uma captura a cada 125 frames e, no maximo, uma
captura a cada 15 frames, para uma taxa de quadros de 25 frames/s. Como ela foi
criada a partir de muito menos vıdeos que as outras, e esperado que seus resultados
sejam piores. Suas caracterısticas podem ser observadas na Tabela 4.1.
As Bases B e C foram geradas praticamente a partir dos mesmo vıdeos. A base C e
fruto de 23 vıdeos, com um total de 18h 15m 47s, enquanto a Base B foi construıda a
partir de um vıdeo a mais, de 3h 45m 58s. A diferenca principal esta nos parametros
usados para sua construcao. Na base B, foi usado o metodo de extracao com perıodo
variavel com parametros: Tmax = 20 s, Tmin = 0,8 s, que corresponde a, no mınimo,
uma captura a cada 500 frames e, no maximo, uma captura a cada 20 frames. Na
base C, foi usado o mesmo metodo, mas com parametros: Tmax = 20 s, Tmin = 1,2 s,
que corresponde a, no mınimo, uma captura a cada 500 frames e, no maximo, uma
captura a cada 30 frames. Suas caracterısticas podem ser observadas nas Tabelas
40
Tabela 4.1: Caracterısticas da Base A: Numero de vıdeos e parametros usados para
construcao, contagem de imagens de cada classe e tamanho em disco da base.
Vıdeos 4
Tmax (s) 5
Tmın (s) 0,6
Duto 8.890
Nada 2.914
Confuso 4.147
Total 15.951
Tamanho 1,6 GB
Tabela 4.2: Caracterısticas da Base B
Vıdeos 24
Tmax (s) 20
Tmın (s) 0,8
Duto 27.152
Nada 7.906
Confuso 4.444
Total 39.502
Tamanho 4,0 GB
4.2 e 4.3. A Fig. 4.1 contem exemplos de imagens capturadas da Base C e suas
classes.
A Base D foi gerada a partir da filtragem manual da Base B. Procurou-se se-
lecionar apenas as imagens da base que fossem representativas de cada trecho do
vıdeo, evitando imagens redundantes. Isso diminuiu significativamente o tamanho
e complexidade da base. Os criterios usados para realizar a filtragem se basea-
ram em remover imagens similares entre si, especialmente de um mesmo evento.
O processo de captura automatico salva muitas imagens parecidas na base, o que
nao contribui para a diversidade de padroes necessaria para treinar um algoritmo
de classificacao e promove o aumento do seu tamanho e complexidade, assim como
o desbalanco das classes. Portanto, a filtragem manual foi utilizada para atenuar
41
Tabela 4.3: Caracterısticas da Base C
Vıdeos 23
Tmax (s) 20
Tmın (s) 1,2
Duto 19.166
Nada 3.858
Confuso 3.194
Total 26.218
Tamanho 2,9 GB
Tabela 4.4: Caracterısticas da Base D. Note que essa e uma base derivada da Base B
e os parametros Tmax e Tmin indicados referem-se ao processo usado para construı-la.
Vıdeos 24
Tmax (s) 20
Tmın (s) 0,8
Duto 1.265
Nada 348
Confuso 215
Total 1.889
Tamanho 0,2 GB
essas deficiencias. Ela foi feita a partir da Base B, ao inves da Base C, porque essa
possui Tmin = 0, 8 s, o que tende a gerar uma base com mais imagens, enquanto a
Base C e mais compacta. Ter mais imagens significa mais trabalho para realizar a
filtragem, mas, tambem, aumenta as imagens disponıveis para montagem dessa nova
base, uma troca benefica. Suas caracterısticas podem ser observadas na Tabela 4.4.
4.2 Resultados dos Testes
A partir das bases candidatas, foram realizados os testes descritos na secao 3.5.
A seguir, sao expostos seus resultados, comparando o desempenho de cada base.
42
Tabela 4.5: Caracterısticas e desempenho de todas as bases
Base de Dados No de Vıdeos Tam. da Base Acuracia F1
Base A 4 15.951 55,7% 0,51
Base B 24 39.502 78,6% 0,75
Base C 23 26.218 78,4% 0,74
Base D 24 1.889 81,7% 0,82
Na Tabela 4.5 estao resumidas as informacoes sobre as bases e seus desempenho
nos testes. Os valores de acuracia e F1 sao medias das medidas de 5 testes, cada
um correspondente a um treino e avaliacao de uma rede independente. Como ha
fatores aleatorios no treinamento de redes neurais, essas estatısticas dao uma visao
mais precisa do desempenho. A acuracia foi medida como a razao entre exemplos
previstos corretamente e o total de exemplos no conjunto de validacao. A medida
F1 e calculada a partir da matriz de confusao obtida pela rede, o que permite uma
analise mais ampla para problemas com classes desbalanceadas. Em cada base,
alguns vıdeos foram descartados por prejudicar muito o equilıbrio entre o tamanho
das classes. Assim, o numero de imagens usados de fato no treino e menor que o
total disponıvel. A Tabela 4.6 tem uma relacao do numero de imagens usados no
treino e validacao em cada base.
Tabela 4.6: Comparacao entre o numero de imagens usadas no treino e acuracia ob-
tida em cada base. Imagens/vıdeo refere-se ao numero medio de imagens capturadas
de cada vıdeo para compor a base.
Vıdeos Treino Validacao Imagens/Vıdeo Acuracia
Base A 4 14.390 1.561 3.987 55,7%
Base B 18 22.717 8.595 1.262 78,6%
Base C 19 12.047 7.174 634 78,4%
Base D 19 1.335 493 70 81,7%
A Base A foi construıda com apenas 4 vıdeos, entao era esperado que seu de-
sempenho fosse pior que as outras. A captura de frames no seu caso foi feita com
parametros mais baixos que nas Bases B e C, o que levou a um perıodo medio de
captura baixo, a inclusao de muitas imagens similares para cada vıdeo e a uma
43
Tabela 4.7: F1 medio por classe.
F1 \ Base A B C D
Duto 0,579 0,858 0,883 0,842
Nada 0,840 0,710 0,656 0,727
Confuso 0,107 0,695 0,672 0,895
Medio 0,509 0,754 0,737 0,821
razao de frames capturados por vıdeo mais alta do que nas demais. A Base B foi
construıda usando parametros mais altos que a Base A, mas mais baixos que a Base
C. Portanto, ela contem menos frames por vıdeo que a Base A e mais que a Base
C. As diferencas entre as acuracias e medidas F1 das Bases B e C sao pequenas
(menor que 0,5% e 0,02, respectivamente), embora a primeira tenha mais de 13 mil
imagens a mais que a segunda. A base que obteve o melhor desempenho foi a Base
D, que tem o menor numero de dados. Uma possıvel explicacao e que isso ocorre
pois suas imagens foram selecionadas de modo a mitigar o desequilıbrio no numero
de imagens por classe e utilizar somente as melhores imagens de cada evento: as
mais claras e com menos ambiguidade quanto a classificacao. Isso facilita o treino
e, em ultima instancia, melhora o desempenho.
As Figs. 4.2, 4.3, 4.4 e 4.5 mostram as matrizes de confusao media para cada
base e a Tabela 4.7, as medidas F1 por classe de cada base. As matrizes de confusao
mostram a distribuicao dos resultados dos testes, as previsoes corretas e incorretas
feitas pela rede em cada caso. Elas permitem analisar qual tipo de erro esta sendo
cometido pelo classificador. O cenario ideal e quando todas as previsoes condizem
com as classes reais, ou seja, estao na diagonal principal da matriz. Observando
a matriz de confusao da Base B, pode-se ver que a classe com maior numero de
previsoes corretas foi a classe Duto, que e a classe de interesse do trabalho. Isso e
bom, mas foi feito priorizando a deteccao dessa classe em detrimento das demais,
embora o numero de falsos positivos seja pequeno em comparacao com os verdadeiros
positivos e precisao da classe Duto se mantenha alta. Uma explicacao para esse
fenomeno e o desequilıbrio entre as classes, pois a base possui muito mais exemplos
de dutos no conjunto de treino do que das demais, como pode ser visto na Tabela
44
Figura 4.2: Matriz de confusao media da Base A. Na matriz da esquerda, os valores
indicados sao media e desvio-padrao para cada par “classe predita / classe verda-
deira”, no formato Media ± Desvio-Padrao, dos dados do conjunto de validacao. Na
matriz da direita, os valores foram normalizados por linha, indicando o percentual
em relacao ao total dos rotulos verdadeiros por classe. As estatısticas foram obtidas
ao longo de 5 testes. A escala de cores indica a diferenca relativa entre as medias.
3.4. Tambem se nota a alta taxa de erro na classe Confuso, que e confundida com
as outras em muitos casos. Isso pode ocorrer pelo fato de ela ter poucos exemplos
disponıveis, pela qualidade dos exemplos ser baixa ou pelos exemplos dessa classe,
nesta base, serem mais difıceis de discriminar do que os das outras classes. A matriz
da Base C e parecida com a da Base B, sendo que as maiores diferencas sao que o
classificador tem uma maior taxa de acerto na classe Duto, mas ela e ligeiramente
menor nas demais. De modo geral, os resultados das Bases B e C sao similares. A
Base D apresenta melhores resultados do que as demais, tendo F1 por classe maior
que as Bases B e C, exceto na classe Duto, onde a Base C a supera. A maior
fonte de erros dessa base e a confusao entre as classes Duto e Nada, que pode ser
possivelmente explicada pelo grande numero de imagens ambıguas de dutos nessa
base. Embora elas tambem estivessem presentes na Base B, elas podem compor
uma proporcao maior das imagens dessa classe na Base D.
45
Figura 4.3: Matriz de confusao media da Base B. Na esquerda com valores absolutos
e na direita, percentuais.
Figura 4.4: Matriz de confusao media da Base C. Na esquerda com valores absolutos
e na direita, percentuais.
46
Figura 4.5: Matriz de confusao media da Base D. Na esquerda com valores absolutos
e na direita, percentuais.
47
Capıtulo 5
Conclusoes
O trabalho resultou em quatro bases de dados e um procedimento de construcao.
Dentre as bases, as que obtiveram melhores resultados foram as que utilizaram mais
vıdeos, evitaram a captura redundante de imagens e passaram por um processo de
filtragem das imagens. Assim, o processo recomendado para construcao de uma
base de dados para a aplicacao e a anotacao cuidadosa do maior numero de vıdeos
possıvel, seguido pela captura de frames com perıodo variavel e a selecao das me-
lhores imagens obtidas. Esse processo deve visar uma divisao igual dos exemplos
entre as classes do problema e a diversidade das imagens, cuidados que facilitam o
treinamento do classificador. A seguir, serao discutidas conclusoes mais especıficas.
As bases B e C obtiveram resultados similares. Como elas foram construıdas a
partir do mesmo conjunto de vıdeos, exceto um, isso nao era inesperado. A diferenca
entre elas e que a Base B possui 13 mil exemplos e 1 GB a mais do que a Base C, o
que torna esta mais facil de armazenar, treinar e manipular. A Base B tem muitas
imagens redundantes, que sao diferentes, mas muito parecidas. Elas nao contribuem
muito para o treino da rede, apenas reforcam padroes que ela ja aprenderia das outras
imagens similares, o que nem sempre e bom. Deve-se evitar construir uma base com
muitas imagens com essa relacao. Por outro lado, a busca por reduzir o numero de
imagens redundantes pode levar a nao adicao de imagens relevantes na base, o que
seria ainda pior. Uma base com imagens demais pode ser filtrada, mas uma com
imagens a menos, nao.
48
A Base D e derivada da Base B. As imagens da primeira pertencem a um subcon-
junto das imagens da segunda. Assim, pode-se verificar que seus resultados foram
um pouco melhores que os das Bases B e C, mas sua maior virtude e atingir esse
desempenho apenas com uma fracao do tamanho das outras bases. Esse efeito pode
ser observado ao comparar o desempenho das bases B e C, enquanto a Base D o
demonstra de forma ainda mais intensa, tendo a mesma explicacao. Ela possui 1.889
imagens, que correspondem a 7,2% do tamanho da Base C e 4,8% da Base B. A
Base D foi construıda por meio da filtragem da Base B, onde foram mantidas apenas
as melhores imagens: as mais distintas e menos ambıguas. Esse procedimento reduz
tanto quanto possıvel o numero de redundancias na base, embora possa acarretar
alguma perda de informacao, caso a filtragem nao seja feita de forma cuidadosa. Ela
e um processo humano e subjetivo, pois envolve decidir quais imagens sao diferen-
tes o bastante apenas com o julgamento do responsavel pela filtragem. Portanto, e
difıcil garantir que o melhor resultado possıvel sera atingido.
Os resultados parecem mostrar que o melhor processo dentre os testados e a cap-
tura de frames usando perıodo variavel, com parametros minimamente bem ajus-
tados para a aplicacao, seguida pela filtragem manual da base. Outras estrategias
tambem podem se mostrar bem sucedidas, como, por exemplo, capturar todos os
frames de um vıdeo e realizar a filtragem sobre essas imagens, para reduzir o risco
de permitir um perıodo de captura longo demais durante algum evento e perder
frames relevantes. No entanto, uma base desse tipo requereria um esforco muito
grande para filtragem, ja que seria ordens de grandeza maior do que a usada. Um
vıdeo de 30 min de duracao com taxa de quadros de 30 frames/s possui 54.000
frames, ou seja, seria maior que a Base B inteira, construıda a partir de mais de
22 horas de vıdeo. O processo de captura de frames proposto funciona como uma
pre-filtragem, reduzindo muito o esforco necessario posteriormente, oferecendo uma
relacao atraente entre perda de informacao e reducao de esforco.
Ainda restam 68 vıdeos a classificar e incluir na base, o que seria uma maneira
segura de aumentar o desempenho de um classificador nela treinado. Porem, um
padrao verificado durante o trabalho e que um aumento da quantidade de imagens na
base nao e garantia de aumento de desempenho. Este tem relacao com a diversidade
49
de imagens e padroes usados para treinar o classificador. Capturar menos imagens
de um numero maior de vıdeos tem resultado melhor que capturar muitas imagens
de poucos vıdeos.
Uma vertente que ainda pode ser melhor explorada e o uso de medidas de simi-
laridade como auxılio a filtragem manual ou como avaliacao da qualidade de uma
base. Isso se fundamenta nas suposicoes de que imagens muito parecidas tem me-
dida de similaridade alta, o que e razoavel, e que uma base de dados com imagens
pouco similares e melhor do que o inverso, o que nao necessariamente e verdade e
precisa ser explorado com mais cuidado. Entretanto, caso essas se sustentem, as
medidas poderiam ser ferramentas uteis para auxiliar na construcao de bases de
dados. Realizar uma pre-filtragem juntamente com a selecao manual das imagens
poderia indicar as que sao mais parecidas e candidatas mais fortes para remocao. O
valor medio de similaridade entre imagens vizinhas de uma base de vıdeos poderia
fornecer uma indicacao mais objetiva da qualidade desta, sem necessitar treinar e
testar um classificador para obter uma medida de desempenho, processo que pode
ser custoso e demorado, especialmente para bases muito grandes.
Um passo alem para esse projeto, seria classificar tambem danos, avarias e outros
eventos de interesse que ocorrem nos dutos. Esse e o objetivo e o contexto da
aplicacao de inspecao de tubulacoes, sendo a progressao natural desse trabalho.
Como e esperado que esses eventos sejam raros ou incomuns durante a inspecao de
uma tubulacao, a quantidade de exemplos disponıveis para treinar um classificador
seria um desafio.
50
Referencias Bibliograficas
[1] GOODFELLOW, I., BENGIO, Y., COURVILLE, A., Deep Learning. Cam-
bridge, MA, EUA, MIT Press, 2016. http://www.deeplearningbook.org.
[2] HAYKIN, S., Neural Networks and Learning Machines. Upper Saddle River, NJ,
EUA, Pearson Education, 2009.
[3] CYBENKO, G., “Approximation by Superpositions of a Sigmoidal Function”,
Mathematics of Control, Signals, and Systems, v. 2, pp. 303–314, 2002.
[4] JAPKOWICZ, N., SHAH, M., Evaluating Learning Algorithms A Classification
Perspective. New York, NY, EUA, Cambridge University Press, 2011.
[5] HE, K., ZHANG, X., REN, S., et al., “Deep Residual Learning for Image Re-
cognition”, CoRR, v. abs/1512.03385, 2015.
[6] DENG, J., DONG, W., SOCHER, R., et al., “Imagenet: A large-scale hierarchi-
cal image database”. In: CVPR, 2009.
[7] KOUTROUMBAS, S. T. K., Pattern Recognition. 4 ed. Burlington, MA, EUA,
Academic Press, 2009.
[8] SZEGEDY, C., LIU, W., JIA, Y., et al., “Going Deeper with Convolutions”,
CoRR, v. abs/1409.4842, 2014.
51