Escolar Documentos
Profissional Documentos
Cultura Documentos
NITERÓI
2022
LEANDRO PEREIRA BERNARDO
Orientador (a):
Prof. D.Sc. Ivanovich Lache Salcedo
Niterói
2022
LEANDRO PEREIRA BERNARDO
BANCA EXAMINADORA
DEDICATÓRIA
I refuse to sink.
AGRADECIMENTO
Aos meus diversos amigos que eu fiz ao longo da vida; que me proporcionaram
bons momentos juntos, de troca e de risos; de conselho e de aprendizado; de
força e de afeto. Mesmo não sendo possível nomear todos aqui, eu gostaria de
agradecer à Isabella Bernardo, Vinicius Gomes, Carolina Vianna, Lilyane Fuzii,
Caroline Mantovani, Thiago Napoli, Jóice Azeredo, Raiane Lima por tudo. Em
especial, Luiz Felippe, por me ajudar a ser uma pessoa melhor a cada dia e por
me mostrar que irmandade está além dos laços sanguíneos; e sim ligado aos
elos de apoio, afinidade e sinceridade.
Ao João Vitor Bessa Ventura, por ter me feito crescer como indivíduo, por ter me
ensinado o que é verdadeiramente amar alguém e por ter me mostrado que a
maior prova de amor não é segurar, mas sim deixar partir.
Mesmo não estando mais presente, você será sempre lembrado com carinho.
Por fim, agradecimento especial, com todo o meu coração, para minha avó,
Maria de Lourdes Alves Bernardo e minha mãe, Christiane Lopes Pereira.
Mesmo não estando mais presentes nesse plano, eu sei que vocês irão continuar
me amando e cuidando de mim do outro lado. Eu, Leandro, sempre serei o
querido e amado filho e neto; nessa vida ou na próxima; para todo o sempre.
Por amor a vocês, eu me recusei a afundar.
“ Here is a child; … See it raising itself for the first
time, fearfully and bravely, to a vertical dignity; why should
it long so to stand and walk? Why should it tremble with
perpetual curiosity, with perilous and insatiable ambition,
touching and tasting, watching and listening, manipulating
and experimenting, observing and pondering, growing—till
it weighs the Earth and charts and measures the stars?…”
1. INTRODUÇÃO 14
2. OBJETIVOS 17
3. FUNDAMENTAÇÃO TEÓRICA E REVISÃO DA LITERATURA 18
3.1. DESASTRES AMBIENTAIS 18
3.2. INCÊNDIO 19
3.3. SISTEMAS AMBIENTAIS 20
3.4. PYTHON 22
3.5. CIÊNCIA DE DADOS 24
3.6. MACHINE LEARNING 26
3.7. REDES NEURAIS 29
3.8. REDE NEURAL CONVOLUCIONAL (CNN) 39
3.9. REDE NEURAL CONVOLUCIONAL APLICADA À DETECÇÃO DE INCÊNDIO 44
3.10. TENSORFLOW 46
4. METODOLOGIA 50
4.1. ESTUDO INICIAL 51
4.2. BANCO DE DADOS 51
4.2.1. BANCO DE DADOS DO TREINAMENTO 51
4.2.2. BANCO DE DADOS DOS TESTES DE VALIDAÇÃO E TESTE 52
4.3. MODELOS 53
4.3.1. ANÁLISES PROPOSTAS 54
4.3.2. HIPERPARÂMETROS 54
4.4. ETAPAS 56
4.4.1. PRIMEIRA ETAPA 56
4.4.2. SEGUNDA ETAPA 56
4.4.3. VALIDAÇÃO 57
4.4.4. TESTE Error! Bookmark not defined.
5. RESULTADOS 58
5.1. PRIMEIRA ETAPA 58
5.2. SEGUNDA ETAPA 68
5.3. VALIDAÇÃO 73
5.4. TESTE 74
6. CONCLUSÃO 79
7. REFERÊNCIAS BIBLIOGRÁFICAS 80
8. ANEXOS 85
1. INTRODUÇÃO
3.4. PYTHON
Python foi criado no começo dos anos 90 por Guido van Rossun no
Stichting Mathematisch Centrum (Centrum Wiskunde & Informatica, CWI), na
Holanda, como sucessor da linguagem de programação ABC. (VAN ROSSUM,
1995). É uma linguagem de programação de Alto Nível e de propósito geral. Sua
filosofia de design enfatiza a legibilidade do código, com o uso de identação
(espaçamento). Sua linguagem de construção e abordagem orientada a objetos
visa ajudar os programadores a escreverem um código claro e lógico, sendo para
projetos de pequena ou grande escala (VAN ROSSUM,2007).
Fonte: Coursera
Sendo inicialmente uma idealização da Ciência da Computação, quando
Alan Turing idealizou ser possível que um computador pensasse, no século
passado, o Machine Learning tornou-se um artifício necessário nos tempos
atuais. O Machine Learning trata do design de programas que podem aprender
regras a partir de dados, adaptar-se às mudanças e melhorar o desempenho
com a experiência (BLUM, 2007); sendo esperado que os computadores
resolvam problemas cada vez mais complexos e que se tornem mais integrados
em nosso cotidiano.
Fonte: Google
IV. Paralelismo: Um imenso número de neurônios está ativo ao mesmo tempo. Não
existe a restrição de um processador que obrigatoriamente trabalhe uma
instrução após a outra.
O processamento local de informação no cérebro ocorre em uma rede de
neurônios cujos quais têm uma estrutura relativamente simples. Sendo o
neurônio uma célula com núcleo e corpo (soma), o processamento de
informação provém de reações químicas e elétricas entre diferentes neurônios.
A ligação com outros neurônios é realizada através de sinapses que estão
conectadas a um dendrito do neurônio receptor. Esses dendritos recebem
informações dos neurônios antecessores e, em seguida, o núcleo avalia as
informações recebidas e, por fim, o núcleo determina o tipo de saída (excitação
ou inibição). A saída da informação do soma é realizada por impulsos elétricos
que se propagam através do axônio. No final do axônio existem inúmeras
ramificações que distribuem a informação para os neurônios seguintes. A
sinapse dispara uma substância química quando for excitada pelo impulso do
axônio. A substância se transmite entre a sinapse e o dendrito, realizando a
conexão entre neurônios vizinhos. A Figura 3 apresenta o modelo simplificado
de um único neurônio real.
Onde:
𝑋𝑛 é o input recebido pelo n-ésimo dendrito;
𝑊𝑛 é o peso da informação do n-ésimo dendrito;
𝑓 é a função de ativação
Onde:
𝜇 é o limiar de ativação (Threshold) daquele neurônio.
3.7.3. PERCEPTRON
No campo do aprendizado, de acordo com Rosenblatt (1958), três
questões são fundamentais:
Portanto, funções não lineares são mais utilizadas nas Redes Neurais.
Algumas das funções de ativações são:
1
𝑓(𝑥) = (5)
1 + 𝑒 −𝑥
Essa função é infinitamente diferenciável e possui um formato S suave,
como é mostrado na figura 8.
Para este trabalho, essa função foi utilizada pois ela apresenta os
melhores resultados para classificações binárias (COURSERA, 2022).
ReLU
ReLU também é uma das funções de ativação mais utilizadas nas Redes
Neurais. Seu nome significa Rectified Linear Unit (unidade linear retificada) e
também é uma função não-linear (SHARMA et al, 2020) Sua fórmula é mostrada
na Equação 6.
∞
𝑓 ∗ 𝑔(𝑡) = ⅀𝑓(𝑢) ⋅ 𝑔(𝑡 − 𝑢) 𝑑𝑢 = ∫ 𝑓(𝑢) ⋅ 𝑔(𝑡 − 𝑢) 𝑑𝑢 (7)
−∞
No estágio final (de uma única camada), geralmente é feito o pool. Nessa
camada é realizada a substituição de pixels próximos entre si, por outros valores
e localmente, decorrentes de uma estatística. As estatísticas mais comuns são
o valor máximo (de uma vizinhança retangular), o valor médio (de uma
vizinhança retangular) ou a média ponderada da distância até o pixel central
(GOODFELLOW et al, 2015).
O objetivo principal do pool é tornar o output invariável à pequenas
translações do input, além de ajudar a realçar informações (MUHAMMAD, 2018).
A invariância pode ser uma propriedade útil, caso seja mais importante detectar
se uma característica está presente do que determinar onde exatamente ela está
presente (GOODFELLOW et al, 2015); por exemplo: ao determinar se uma
imagem contém um rosto, não precisamos saber a localização dos olhos com
precisão perfeita dos pixels, só precisamos saber que há um olho no lado
esquerdo da face e um olho no lado direito da face; contudo, se quisermos
encontrar um canto definido por duas arestas que se encontram em uma
orientação específica, precisamos preservar a localização das bordas bem o
suficiente para verificar o ponto de encontro. A aplicação do pool é demonstrada
pela Figura 14, onde um filtro 2x2 faz o Max Pool na imagem original (input).
3.10.1. MODELO
Para criar uma camada densa (Hidden Layer), foi utilizada a função
tf.keras.layers.Dense( units, activation ), onde
3.10.4. TREINAMENTO
IV. Loss: o algoritmo utilizado para calcular a diferença entre o valor real e o valor
obtido no treinamento.
onde:
3.10.5. VALIDAÇÃO
Para fazer o teste de validação da Rede Neural verificar sua eficiência, foi
adicionado o parâmetro validation_data na função Model.fit() e, com isso,
ao longo dos treinamentos, o modelo é avaliado com outra parte do banco de
dados não vista durante o treinamento.
3.10.6. TESTE
Primeira Etapa
Para o desenvolvimento das redes, foram extraídas imagens de parte do
vídeo “20090409 ManavgatTEst”, gerando uma imagem a cada 20 frames,
totalizando 224 imagens. Essas imagens foram redimensionadas para o
tamanho de 300 × 300 pixels (COURSERA, 2022). Em seguida, essas imagens
foram manualmente qualificadas como “Fumaça” ou “Não Fumaça”, sendo uma
classificação binária.
Segunda Etapa
4.3. MODELOS
4.3.2. HIPERPARÂMETROS
Função de Ativação ReLU ReLU ReLU ReLU ReLU ReLU ReLU ReLU ReLU ReLU
1ª Hidden Layers 512 512 512 512 512 256 256 512 256 512
(Neurônios)
Função de Ativação ReLU ReLU ReLU ReLU ReLU ReLU ReLU ReLU ReLU ReLU
Sigmoid Sigmoid Sigmoid Sigmoid Sigmoid Sigmoid Sigmoid Sigmoid Sigmoid Sigmoid
Função de Ativação
Epochs 15 15 15 15 15 15 16 10 27 15
Learning Rate 0.01 0.01 0.01 0.02 0.002 0.002 0.001 0.001 0.001 0.001
Por fim, modelos que tiveram bom desempenho nessa etapa foram
selecionados para a Segunda Etapa.
4.4.4. TESTE
Segundo Modelo
Terceiro Modelo
Quinto Modelo
Sexto Modelo
Sétimo Modelo
O resultado do Modelo 7 é mostrado na Figura 27.
Figura 27: Gráfico Accuracy x Epoch do Modelo 7
Sétimo Modelo
5.4. TESTE
Validação
Acertos Falsos Positivos Falsos Negativos
Modelo 9 91 0 4
Modelo 10 92 0 3
Fonte: Autoria própria
O segundo cenário é tal que, uma vez que o banco de dados seja
ampliado, alcançando milhares de imagens, a Rede poderá treinar com imagens
mais diversificadas. Com isso, evita-se que o banco de dados seja monótono e,
portanto, os modelos poderão ser aplicados para monitorar incêndio em lugares
diversos, sem precisar ter prévio acesso às imagens do local. Portanto, ambas
soluções são adequadas para usos específicos.
NG, A. (Deep Learning AI) . C4W1L02 Edge Detection Examples. YouTube, 7 de nov. de 2017.
Disponível em :
https://www.youtube.com/playlist?list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF.
Acesso em: 15 de set. de 2022.
BENGIO, Y. et al. Learning deep architectures for AI. Foundations and trends® in Machine
Learning, v. 2, n. 1, p. 1-127, 2009.
BENGIO, Y. ; GOODFELLOW, I.; COURVILLE, A. Deep learning. Cambridge, MA, USA: MIT
press, 2017.
BERTALANFFY, L. V. (org.) Teoria Geral dos Sistemas. Rio de Janeiro: Editora da Fundação
Getulio Vargas, 1976.
BLUM, A. Machine learning theory. Carnegie Melon Universit, School of Computer Science,
v. 26, 2007.
FRAMPTON, D.et al. Demystifying magic: high-level low-level programming. In: Proceedings of
the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution
environments. 2009. p. 81-90.
FRIZZI, S. et al. Convolutional neural network for video fire and smoke detection. In: IECON 2016-
42nd Annual Conference of the IEEE Industrial Electronics Society. IEEE, 2016. p. 877-882.
GHOSH, A. et al. A comprehensive review of tools for exploratory analysis of tabular industrial
datasets. Visual Informatics, v. 2, n. 4, p. 235-253, 2018.
GRUS, J. Data science from scratch: first principles with python. O'Reilly Media, 2019
HAYMAN, S. The mcculloch-pitts model. In: IJCNN'99. International Joint Conference on
Neural Networks. Proceedings (Cat. No. 99CH36339). IEEE, 1999. p. 4438-4439.
JARRETT, K. et al. What is the best multi-stage architecture for object recognition?. In: 2009 IEEE
12th international conference on computer vision. IEEE, 2009. p. 2146-2153.
LEMENKOVA, P. Computing and Plotting Correlograms by Python and R Libraries for Correlation
Analysis of the Environmental Data in Marine Geomorphology. Jeomorfolojik Araştırmalar
Dergisi, n. 3, p. 1-16, 2019.
MCCULLOCH, W. S.; PITTS, W. A logical calculus of the ideas immanent in nervous activity. The
bulletin of mathematical biophysics, v. 5, n. 4, p. 115-133, 1943.
MOREIRA, R. . Para Onde Vai o Pensamento Geográfico. 1a.. ed. São Paulo: Contexto, 2008.
191 p.
PH, D. G.-S.; WALLEMACQ, P.; BELOW, R. Annual disaster statistical review 2016: the numbers
and trends. Centre for Research on the Epidemiology of Disasters, 2017.
QUORA. Why do people tend to use powers of 2 when specifying the number of nodes in
a layer of a neural net, and for the size of mini-batches?.
Disponível em: < https://www.quora.com/Why-do-people-tend-to-use-powers-of-2-when-
specifying-the-number-of-nodes-in-a-layer-of-a-neural-net-and-for-the-size-of-mini-batches >.
Acesso em: 25 de set, 2022.
QUORA. Why should I choose a mini-batch size of 32, 64, 128, 256, etc. (i.e., a power of
two) and not a size of 50, 100, 500, 1000? Is there any benefit of choosing power of two
mini-batch sizes?
Disponível em: < https://www.quora.com/Why-should-I-choose-a-mini-batch-size-of-32-64-128-
256-etc-i-e-a-power-of-two-and-not-a-size-of-50-100-500-1000-Is-there-any-benefit-of-choosing-
power-of-two-mini-batch-sizes >.
Acesso em: 25 de set, 2022.
RAUBER, T. W. Redes neurais artificiais. Universidade Federal do Espírito Santo, v. 29, 2005.
ROSENBLATT, F. The perceptron: a probabilistic model for information storage and organization
in the brain. Psychological review, v. 65, n. 6, p. 386, 1958.
RUSHKOFF, D. As 10 questões essenciais da era digital: programa seu futuro para não
ser programado por ele. São Paulo: Saraiva, 2012.
SAEED, F. et al. Convolutional neural network based early fire detection. Multimedia Tools and
Applications, v. 79, n. 13, p. 9083-9099, 2020.
SAHOO, K. et al. Exploratory data analysis using Python. International Journal of Innovative
Technology and Exploring Engineering (IJITEE), v. 8, n. 12, p. 2019, 2019.
SPRUSTON, N. Pyramidal neurons: dendritic structure and synaptic integration. Nature Reviews
Neuroscience, v. 9, n. 3, p. 206-221, 2008.
TANIGUCHI, H.; SATO, H.; SHIRAKAWA, T. A machine learning model with human cognitive
biases capable of learning from small and biased datasets. Scientific reports, v. 8, n. 1, p. 1-13,
2018.
TANSLEY, A. G. The use and abuse of vegetational concept and terms. Ecology. n. 16: 284-
307p., 1935.
TÖREYIN, B. Uğur et al. Computer vision based method for real-time fire and flame
detection. Pattern recognition letters, v. 27, n. 1, p. 49-58, 2006. Disponível em:
http://signal.ee.bilkent.edu.tr/VisiFire/. Acesso em 10 de Set. de 2022.
VAN AALST, M. K. The impacts of climate change on the risk of natural disasters. Disasters, v.
30, n. 1, p. 5-18, 2006.
VAN DER AALST, W.; DAMIANI, E. Processes meet big data: Connecting data science with
process science. IEEE Transactions on Services Computing, v. 8, n. 6, p. 810-819, 2015.
VAN ROSSUM, G. ; DRAKE JR, F. L. Python tutorial. Amsterdam, The Netherlands: Centrum
voor Wiskunde en Informatica, 1995.
VAN ROSSUM, G. et al. Python Programming language. In: USENIX annual technical
conference. 2007. p. 1-36.
WEBER, M. G.; WAGNER, CE Van; HUMMEL, Monte. Selected parameters of fire behavior and
Pinus banksiana Lamb. regeneration in eastern Ontario. The Forestry Chronicle, v. 63, n. 5, p.
340-346, 1987.
ZHANG, Q. et al. Deep convolutional neural networks for forest fire detection. In: 2016
International Forum on Management, Education and Information Technology Application.
Atlantis Press, 2016. p. 568-575.
8. ANEXOS
import os
try:
os.mkdir(path=drive)
except:
pass
print('\nDiretório já existe')
else:
os.mkdir(f'/content/drive/My Drive/TCC/Videos/Imagens/{nome_video}/Frames')
os.mkdir(f'/content/drive/My Drive/TCC/Videos/Imagens/{nome_video}/Cortes')
#### Frames
import cv2
# https://techtutorialsx.com/2021/04/29/python-opencv-splitting-video-frames/
if success:
if (frame_atual % passo == 0): # para poder decidir quantos o intervalo de prints entre os
frames ( cv2.imwrite() tira print por frames)
cv2.imwrite(f'/content/drive/MyDrive/TCC/Videos/Imagens/{nome_video}/Frames/frame_{frame
Nr}.jpg',imagem_frame)
frameNr +=1
else:
pass
else:
break
frame_atual +=1
frameNr=0
#### Recortes
# https://pillow.readthedocs.io/en/stable/handbook/tutorial.html
imagens = os.listdir(f'/content/drive/MyDrive/TCC/Videos/Imagens/{nome_video}/Frames/') #
os.listdir() mostra os arquivos contidos no diretorio
imagens[-1] # mostra a quantidade de fotos
teste =
Image.open(f'/content/drive/MyDrive/TCC/Videos/Imagens/{nome_video}/Frames/{imagens[0]}')
print(teste.format, teste.size, teste.mode)
teste
box = (x_inicial, y_inicial, x_final, y_final ) # coordinates are (left, upper, right, lower)
teste.crop(box)
val = str(input('Usar recorte atual? ').lower())
if 's' in val:
for i,j in enumerate(imagens):
# abre a imagem
im = Image.open(f'/content/drive/MyDrive/TCC/Videos/Imagens/{nome_video}/Frames/{j}')
#To load an image from a file, use the open() function in the Image module
#### Drive
import os
dir = list(os.listdir(local))
dir
amostras = int(size/8)
amostras
#### Modelos
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.optimizers import RMSprop
class CustomCallback(keras.callbacks.Callback): #
https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/Callback
def on_epoch_end(self, epoch, logs=None):
keys = list(logs.values())
# print("Epoch {} ; accuracy: {}".format(epoch, keys[1]))
##### Modelo 1
def modelo_1(): # 15 epochs, learning rate 0.01 , 5 layers de convolução
rede = tf.keras.models.Sequential([
rede.compile(loss='binary_crossentropy',
optimizer=RMSprop(learning_rate=0.01),
metrics=['accuracy'])
return rede
##### Modelo 2
rede.compile(loss='binary_crossentropy',
optimizer=RMSprop(learning_rate=0.01),
metrics=['accuracy'])
return rede
##### Modelo 3
rede.compile(loss='binary_crossentropy',
optimizer=RMSprop(learning_rate=0.01),
metrics=['accuracy'])
return rede
##### Modelo 4
rede.compile(loss='binary_crossentropy',
optimizer=RMSprop(learning_rate=0.02),
metrics=['accuracy'])
return rede
##### Modelo 5
rede.compile(loss='binary_crossentropy',
optimizer=RMSprop(learning_rate=0.002),
metrics=['accuracy'])
return rede
##### Modelo 6
rede.compile(loss='binary_crossentropy',
optimizer=RMSprop(learning_rate=0.002),
metrics=['accuracy'])
return rede
##### Modelo 7
rede.compile(loss='binary_crossentropy',
optimizer=RMSprop(learning_rate=0.001),
metrics=['accuracy'])
return rede
##### Modelo 8
rede.compile(loss='binary_crossentropy',
optimizer=RMSprop(learning_rate=0.001),
metrics=['accuracy'])
return rede
rede.compile(loss='binary_crossentropy',
optimizer=RMSprop(learning_rate=0.001),
metrics=['accuracy'])
return rede
return rede
##### Modelo 10
def modelo_8(): # modelo 8 com 15 epochs, learning rate 0.001 , 5 layers de convolução
rede = tf.keras.models.Sequential([
rede.compile(loss='binary_crossentropy',
optimizer=RMSprop(learning_rate=0.001),
metrics=['accuracy'])
return rede
class CustomCallback(keras.callbacks.Callback): #
https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/Callback
def on_epoch_end(self, epoch, logs=None):
keys = list(logs.values())
# print("Epoch {} ; accuracy: {}".format(epoch, keys[1]))
import shutil
%cd '/content/drive/MyDrive/TCC/Videos'
##### Modelo 1
acc1 = list(range(n))
nome = f'model1({n})(Acc*Epoch)'
epoch = 15
try:
assert f'{nome}.txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se existe o
arquivo no drive
except:
print(f'{nome}.txt já existe em /content/drive/MyDrive/TCC/Videos')
else:
with open(f'{nome}.txt', 'w') as m: # 'w' cria o arquivo para receber os valores caso ele não
exista
for i in range(1,epoch+1):
m.write(f'{i},')
for i in range(n):
print(f'\n treinamento {i+1} \n')
model1 = modelo_1()
report1 = model1.fit(imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=epoch,
verbose=1,
callbacks= [CustomCallback()])
try:
shutil.move(f'/content/drive/MyDrive/TCC/Videos/{nome}.txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
except:
print('modelo nao foi movido')
##### Modelo 2
acc2 = list(range(n))
nome = f'model2({n})(Acc*Epoch)'
epoch = 15
try:
assert f'{nome}.txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se existe o
arquivo no drive
except:
print(f'{nome}.txt já existe em /content/drive/MyDrive/TCC/Videos')
else:
with open(f'{nome}.txt', 'w') as m: # 'w' cria o arquivo para receber os valores caso ele não
exista
for i in range(1,epoch+1):
m.write(f'{i},')
for i in range(n):
print(f'\n treinamento {i+1} \n')
model2 = modelo_2()
report2 = model2.fit(imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=epoch,
verbose=1,
callbacks= [CustomCallback()])
try:
shutil.move(f'/content/drive/MyDrive/TCC/Videos/{nome}.txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
except:
print('modelo nao foi movido')
##### Modelo 3
acc3 = list(range(n))
nome = f'model3({n})(AccxEpoch)'
epoch = 15
try:
assert f'{nome}.txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se existe o
arquivo no drive
except:
print(f'{nome}.txt já existe em /content/drive/MyDrive/TCC/Videos')
else:
with open(f'{nome}.txt', 'w') as m: # 'w' cria o arquivo para receber os valores caso ele não
exista
for i in range(1,epoch+1):
m.write(f'{i},')
for i in range(n):
print(f'\n treinamento {i+1} \n')
model3 = modelo_3()
report3 = model3.fit(imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=epoch,
verbose=1,
callbacks= [CustomCallback()])
try:
shutil.move(f'/content/drive/MyDrive/TCC/Videos/{nome}.txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
except:
print('modelo nao foi movido')
##### Modelo 4
acc4 = list(range(n))
nome = f'model1({n})(AccxEpoch)'
epoch = 15
try:
assert f'{nome}.txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se existe o
arquivo no drive
except:
print(f'{nome}.txt já existe em /content/drive/MyDrive/TCC/Videos')
else:
with open(f'{nome}.txt', 'w') as m: # 'w' cria o arquivo para receber os valores caso ele não
exista
for i in range(1,epoch+1):
m.write(f'{i},')
for i in range(n):
print(f'\n treinamento {i+1} \n')
model4 = modelo_4()
report4 = model4.fit(imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=epoch,
verbose=1,
callbacks= [CustomCallback()])
try:
shutil.move(f'/content/drive/MyDrive/TCC/Videos/{nome}.txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
except:
print('modelo nao foi movido')
##### Modelo 5
acc5 = list(range(n))
nome = f'model5({n})(AccxEpoch)'
epoch = 15
try:
assert f'{nome}.txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se existe o
arquivo no drive
except:
print(f'{nome}.txt já existe em /content/drive/MyDrive/TCC/Videos')
else:
with open(f'{nome}.txt', 'w') as m: # 'w' cria o arquivo para receber os valores caso ele não
exista
for i in range(1,epoch+1):
m.write(f'{i},')
for i in range(n):
print(f'\n treinamento {i+1} \n')
model5 = modelo_5()
report5 = model5.fit(imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=epoch,
verbose=1,
callbacks= [CustomCallback()])
try:
shutil.move(f'/content/drive/MyDrive/TCC/Videos/{nome}.txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
except:
print('modelo nao foi movido')
##### Modelo 6
acc6 = list(range(n))
nome = f'model6({n})(AccxEpoch)'
epoch = 15
try:
assert f'{nome}.txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se existe o
arquivo no drive
except:
print(f'{nome}.txt já existe em /content/drive/MyDrive/TCC/Videos')
else:
with open(f'{nome}.txt', 'w') as m: # 'w' cria o arquivo para receber os valores caso ele não
exista
for i in range(1,epoch+1):
m.write(f'{i},')
for i in range(n):
print(f'\n treinamento {i+1} \n')
model6 = modelo_6()
report6 = model6.fit(imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=epoch,
verbose=1,
callbacks= [CustomCallback()])
try:
shutil.move(f'/content/drive/MyDrive/TCC/Videos/{nome}.txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
except:
print('modelo nao foi movido')
##### Modelo 7
acc7 = list(range(n))
nome = f'model7({n})(AccxEpoch).treinamento_novo(664imagens)'
epoch = 16
try:
assert f'{nome}.txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se existe o
arquivo no drive
except:
print(f'{nome}.txt já existe em /content/drive/MyDrive/TCC/Videos')
else:
with open(f'{nome}.txt', 'w') as m: # 'w' cria o arquivo para receber os valores caso ele não
exista
for i in range(1,epoch+1):
m.write(f'{i},')
for i in range(n):
print(f'\n treinamento {i+1} \n')
model7 = modelo_7()
report7 = model7.fit(imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=epoch,
verbose=1,
callbacks= [CustomCallback()])
try:
shutil.move(f'/content/drive/MyDrive/TCC/Videos/{nome}.txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
except:
print('modelo nao foi movido')
##### Modelo 8
acc8 = list(range(n))
nome = f'model8({n})(AccxEpoch)(664)'
epoch = 15
try:
assert f'{nome}.txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se existe o
arquivo no drive
except:
print(f'{nome}.txt já existe em /content/drive/MyDrive/TCC/Videos')
else:
with open(f'{nome}.txt', 'w') as m: # 'w' cria o arquivo para receber os valores caso ele não
exista
for i in range(1,epoch+1):
m.write(f'{i},')
for i in range(n):
print(f'\n treinamento {i+1} \n')
model8 = modelo_8()
report8 = model8.fit(imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=epoch,
verbose=1,
callbacks= [CustomCallback()])
try:
shutil.move(f'/content/drive/MyDrive/TCC/Videos/{nome}.txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
except:
print('modelo nao foi movido')
##### Modelo 9
acc9 = list(range(n))
nome = f'model7({n})(AccxEpoch)'
epoch = 35
try:
assert f'{nome}.txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se existe o
arquivo no drive
except:
print(f'{nome}.txt já existe em /content/drive/MyDrive/TCC/Videos')
else:
with open(f'{nome}.txt', 'w') as m: # 'w' cria o arquivo para receber os valores caso ele não
exista
for i in range(1,epoch+1):
m.write(f'{i},')
for i in range(n):
print(f'\n treinamento {i+1} \n')
model9 = modelo_9()
report9 = model9.fit(imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=epoch,
verbose=1,
callbacks= [CustomCallback()])
try:
shutil.move(f'/content/drive/MyDrive/TCC/Videos/{nome}.txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
except:
print('modelo nao foi movido')
##### Modelo 10
acc10 = list(range(n))
nome = f'model7({n})(AccxEpoch)'
epoch = 27
try:
assert f'{nome}.txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se existe o
arquivo no drive
except:
print(f'{nome}.txt já existe em /content/drive/MyDrive/TCC/Videos')
else:
with open(f'{nome}.txt', 'w') as m: # 'w' cria o arquivo para receber os valores caso ele não
exista
for i in range(1,epoch+1):
m.write(f'{i},')
for i in range(n):
print(f'\n treinamento {i+1} \n')
model10 = modelo_10()
report10 = model10.fit(imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=epoch,
verbose=1,
callbacks= [CustomCallback()])
try:
shutil.move(f'/content/drive/MyDrive/TCC/Videos/{nome}.txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
except:
print('modelo nao foi movido')
import shutil
%cd '/content/drive/MyDrive/TCC/Videos'
acc1 = list(range(n))
try:
assert f'model1({n})t.txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se
existe o arquivo no drive
except:
print(f'model1({n}) já existe em /content/drive/MyDrive/TCC/Videos')
else:
with open(f'model1({n})t.txt', 'w') as m: # 'w' cria o arquivo para receber os valores caso ele
não exista
m.write('Treinamento,Accuracy\n')
for i in range(n):
print(f'\n treinamento {i+1} \n')
model1 = modelo_1()
report1 = model1.fit(imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=15,
verbose=0,
callbacks= [CustomCallback()])
acc1[i] = report1.history['accuracy'][-1]
try:
shutil.move(f'/content/drive/MyDrive/TCC/Videos/model1({n})t.txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
except:
print('modelo nao foi movido')
acc2 = list(range(n))
try:
assert f'model2({n})t.txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se
existe o arquivo no drive
except:
print(f'model2({n}) já existe em /content/drive/MyDrive/TCC/Videos')
else:
with open(f'model2({n})t.txt', 'w') as m: # cria o arquivo para receber os valores
m.write('Treinamento,Accuracy\n')
for i in range(n):
print(f'\n treinamento {i+1} \n')
model2 = modelo_2()
report2 = model2.fit(imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=15,
verbose=0,
callbacks= [CustomCallback()])
acc2[i] = report2.history['accuracy'][-1]
try:
shutil.move(f'/content/drive/MyDrive/TCC/Videos/model2({n})t.txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
except:
pass
print('modelo 2 nao foi movido')
acc3 = list(range(n))
try:
assert f'model3({n})t.txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se
existe o arquivo no drive
except:
print(f'model3({n})t já existe em /content/drive/MyDrive/TCC/Videos')
else:
with open(f'model3({n})t.txt', 'w') as m: # cria o arquivo para receber os valores
m.write('Treinamento,Accuracy\n')
for i in range(n):
print(f'\n treinamento {i} \n')
model3 = modelo_3()
report3 = model3.fit(imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=15,
verbose=0,
callbacks= [CustomCallback()])
acc3[i] = report3.history['accuracy'][-1]
with open(f'model3({n})t.txt', 'a+') as m: # 'a+' adiciona ao arquivo existente os valores
m.write(f'{i+1}, {acc3[i]} \n')
try:
shutil.move(f'/content/drive/MyDrive/TCC/Videos/model3({n})t.txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
except:
pass
print('modelo 3 nao foi movido')
acc4 = list(range(n))
try:
assert f'model4({n})t.txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se
existe o arquivo no drive
except:
print(f'model4({n})t já existe em /content/drive/MyDrive/TCC/Videos')
else:
with open(f'model4({n})t.txt', 'w') as m: # cria o arquivo para receber os valores
m.write('Treinamento,Accuracy\n')
for i in range(n):
print(f'\n treinamento {i} \n')
model4 = modelo_4()
report4 = model4.fit(imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=15,
verbose=0,
callbacks= [CustomCallback()])
acc4[i] = report4.history['accuracy'][-1]
with open(f'model4({n})t.txt', 'a+') as m: # 'a+' adiciona ao arquivo existente os valores
m.write(f'{i+896}, {acc4[i]} \n')
try:
shutil.move(f'/content/drive/MyDrive/TCC/Videos/model4({n})t.txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
except:
pass
print('modelo 4 nao foi movido')
acc5 = list(range(n))
try:
assert f'model5({n})t.txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se
existe o arquivo no drive
except:
print(f'model5({n}) já existe em /content/drive/MyDrive/TCC/Videos')
else:
with open(f'model5({n})t.txt', 'w') as m: # cria o arquivo para receber os valores
m.write('Treinamento,Accuracy\n')
for i in range(n):
print(f'\n treinamento {i+1} \n')
model5 = modelo_5()
report5 = model5.fit(imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=15,
verbose=0,
callbacks= [CustomCallback()])
acc5[i] = report5.history['accuracy'][-1]
try:
shutil.move(f'/content/drive/MyDrive/TCC/Videos/model5({n})t.txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
except:
pass
print('modelo 5 nao foi movido')
acc6 = list(range(n))
try:
assert f'model6({n})t.txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se
existe o arquivo no drive
except:
print(f'model6({n}) já existe em /content/drive/MyDrive/TCC/Videos')
else:
with open(f'model6({n})t.txt', 'w') as m: # cria o arquivo para receber os valores
m.write('Treinamento,Accuracy\n')
for i in range(n):
print(f'\n treinamento {i+1} \n')
model6 = modelo_6()
report6 = model6.fit(imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=15,
verbose=0,
callbacks= [CustomCallback()])
acc6[i] = report6.history['accuracy'][-1]
try:
shutil.move(f'/content/drive/MyDrive/TCC/Videos/model6({n})t.txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
except:
pass
print('modelo 6 nao foi movido')
acc7 = list(range(n))
try:
assert f'model7({n})t.txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se
existe o arquivo no drive
except:
print(f'model7({n}) já existe em /content/drive/MyDrive/TCC/Videos')
else:
with open(f'model7({n})t.txt', 'w') as m: # cria o arquivo para receber os valores
m.write('Treinamento,Accuracy\n')
for i in range(n):
print(f'\n treinamento {i+1} \n')
model7 = modelo_7()
report7 = model7.fit(imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=16,
verbose=0,
callbacks= [CustomCallback()])
acc7[i] = report2.history['accuracy'][-1]
try:
shutil.move(f'/content/drive/MyDrive/TCC/Videos/model7({n})t.txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
except:
pass
print('modelo 7 nao foi movido')
acc8 = list(range(n))
try:
assert f'model8({n})t.txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se
existe o arquivo no drive
except:
print(f'model8({n}) já existe em /content/drive/MyDrive/TCC/Videos')
else:
with open(f'model8({n})t.txt', 'w') as m: # 'w' cria o arquivo para receber os valores caso ele
não exista
m.write('Treinamento,Accuracy\n')
for i in range(n):
print(f'\n treinamento {i+1} \n')
model8 = modelo_8()
report8 = model8.fit(imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=15,
verbose=1,
callbacks= [CustomCallback()])
acc8[i] = report8.history['accuracy'][-1]
try:
shutil.move(f'/content/drive/MyDrive/TCC/Videos/model5({n})t.txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
except:
print('modelo nao foi movido')
# acc9 = list(range(n))
# try:
# assert f'model9({n})t.txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se
existe o arquivo no drive
# except:
# print(f'model9({n}) já existe em /content/drive/MyDrive/TCC/Videos')
# else:
# with open(f'model9({n})t.txt', 'w') as m: # 'w' cria o arquivo para receber os valores caso ele
não exista
# m.write('Treinamento,Accuracy\n')
# for i in range(n):
# print(f'\n treinamento {i+1} \n')
# model9 = modelo_9()
# report9 = model9.fit(imagens_treinamento,
# steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o
passo será x/y
# epochs=35,
# verbose=0,
# callbacks= [CustomCallback()])
# acc9[i] = report9.history['accuracy'][-1]
# try:
# shutil.move(f'/content/drive/MyDrive/TCC/Videos/model9({n})t.txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
# except:
# print('modelo 9 nao foi movido')
# acc10 = list(range(n))
# try:
# assert f'model10({n})t.txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se
existe o arquivo no drive
# except:
# print(f'model10({n}) já existe em /content/drive/MyDrive/TCC/Videos')
# else:
# with open(f'model10({n})t.txt', 'w') as m: # 'w' cria o arquivo para receber os valores caso
ele não exista
# m.write('Treinamento,Accuracy\n')
# for i in range(n):
# print(f'\n treinamento {i+1} \n')
# model10 = modelo_10()
# report10 = model10.fit(imagens_treinamento,
# steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o
passo será x/y
# epochs=27,
# verbose=0,
# callbacks= [CustomCallback()])
# acc10[i] = report10.history['accuracy'][-1]
# try:
# shutil.move(f'/content/drive/MyDrive/TCC/Videos/model10({n})t.txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
# except:
# print('modelo 10 nao foi movido')
#### Drive
import pandas as pd
import plotly.graph_objects as go
%cd '/content/drive/MyDrive/TCC/Scripts/Modelos'
!ls '/content/drive/MyDrive/TCC/Scripts/Modelos'
##### Modelo 1
media1 = dados1.transpose().mean()
medias1 = list(media1.values)
medias1
fig.show()
fig = go.Figure()
for i in range(1,16):
fig.add_trace(go.Scatter(x = list(range(1,36)),
y = dados1[i],
mode ='markers', opacity = 0.3)) # .add_trace() adiciona UM plot em fig (for
adiciona cada grafico)
fig.show()
##### Modelo 2
media2 = dados2.transpose().mean()
medias2 = list(media2.values)
medias2
fig.show()
fig = go.Figure()
for i in range(1,16):
fig.add_trace(go.Scatter(x = list(range(1,16)),
y = dados2[i],
mode ='markers', opacity = 0.3)) # .add_trace() adiciona UM plot em fig (for
adiciona cada grafico)
fig.show()
##### Modelo 3
media3 = dados3.transpose().mean()
medias3 = list(media3.values)
medias3
fig.show()
fig = go.Figure()
for i in range(1,16):
fig.add_trace(go.Scatter(x = list(range(1,16)),
y = dados3[i],
mode ='markers', opacity = 0.3)) # .add_trace() adiciona UM plot em fig (for
adiciona cada grafico)
fig.show()
##### Modelo 4
#dado = input('Qual dado?\n')
dado = 'model4(100)(Acc_Epoch).txt'
media4 = dados4.transpose().mean()
medias4 = list(media4.values)
medias4
fig.show()
fig = go.Figure()
for i in range(1,16):
fig.add_trace(go.Scatter(x = list(range(1,16)),
y = dados4[i],
mode ='markers', opacity = 0.3)) # .add_trace() adiciona UM plot em fig (for
adiciona cada grafico)
fig.show()
##### Modelo 5
fig.show()
fig = go.Figure()
for i in range(1,16):
fig.add_trace(go.Scatter(x = list(range(1,16)),
y = dados5[i],
mode ='markers', opacity = 0.3)) # .add_trace() adiciona UM plot em fig (for
adiciona cada grafico)
fig.show()
##### Modelo 6
media6 = dados6.transpose().mean()
medias6 = list(media6.values)
medias6
fig= px.scatter(dados6 ,template = 'plotly_white', title= 'Accuracy x Epoch',
width=1350, height=600)
#fig.add_trace(medias)
fig.show()
fig = go.Figure()
for i in range(1,100):
fig.add_trace(go.Scatter(x = list(range(1,100)),
y = dados6[i],
mode ='markers', opacity = 0.3)) # .add_trace() adiciona UM plot em fig (for
adiciona cada grafico)
fig.show()
##### Modelo 7
!ls '/content/drive/MyDrive/TCC/Scripts/Modelos'
media7 = dados7.transpose().mean()
medias7 = list(media7.values)
#medias7.remove(0.9696234438730322)
medias7
fig.show()
fig = go.Figure()
for i in range(1,100):
fig.add_trace(go.Scatter(x = list(range(1,100)),
y = dados7[i],
mode ='markers', opacity = 0.3)) # .add_trace() adiciona UM plot em fig (for
adiciona cada grafico)
fig.show()
##### Modelo 8
! ls
media8 = dados8.transpose().mean()
medias8 = list(media8.values)
medias8
fig.show()
fig = go.Figure()
for i in range(1,16):
fig.add_trace(go.Scatter(x = list(range(1,16)),
y = dados8[i],
mode ='markers', opacity = 0.3)) # .add_trace() adiciona UM plot em fig (for
adiciona cada grafico)
fig.show()
##### Modelo 9
!ls '/content/drive/MyDrive/TCC/Scripts/Modelos'
dados9 *=100
dados9
dados9val *=100
dados9val
media9 = dados9.transpose().mean()
medias9 = list(media9.values)
medias9
# para validacao
media9val = dados9val.transpose().mean()
medias9val = list(media9val.values)
medias9val
modelo9 = pd.DataFrame((medias9,medias9val)).rename({1:'treinamento',
0:'validação'}).transpose().rename({0:'1',1:'2',2:'3',3:'4',4:'5',5:'6',6:'7',7:'8',8:'9',9:'10',10:'11',11:'1
2',12:'13',13:'14',14:'15',15:'16',16:'17',17:'18',18:'19',19:'20',20:'21',21:'22',22:'23',23:'24',24:'25',
25:'26',26:'27'})
modelo9
modelo9 = modelo9.transpose()
modelo9
fig.show()
fig = go.Figure()
for i in range(1,36):
fig.add_trace(go.Scatter(x = list(range(1,36)),
y = dados9[i],
mode ='markers', opacity = 0.3)) # .add_trace() adiciona UM plot em fig (for
adiciona cada grafico)
fig.show()
!ls '/content/drive/MyDrive/TCC/Scripts/Modelos'
dados10*=100
dados10
dados10val *=100
dados10val
media10 = dados10.transpose().mean()
medias10 = list(media10.values)
medias10
media10val = dados10val.transpose().mean()
medias10val = list(media10val.values)
medias10val
modelo10 = pd.DataFrame((medias10val,medias10)).rename({0:'treinamento',
1:'validação'}).transpose().rename({0:'1',1:'2',2:'3',3:'4',4:'5',5:'6',6:'7',7:'8',8:'9',9:'10',10:'11',11:'1
2',12:'13',13:'14',14:'15'})
modelo10
fig.show()
fig = go.Figure()
for i in range(1,28):
fig.add_trace(go.Scatter(x = list(range(1,28)),
y = dados10[i],
mode ='markers', opacity = 0.3)) # .add_trace() adiciona UM plot em fig (for
adiciona cada grafico)
fig.show()
y=
pd.DataFrame([medias1,medias2,medias3,medias4,medias5,medias6,medias7,medias8]).trans
pose().rename(columns={0:'modelo 1',1:'modelo 2',2:'modelo 3',3:'modelo 4',4:'modelo
5',5:'modelo 6',6:'modelo 7',7:'modelo 8'}).rename(index =
{0:1,1:2,2:3,3:4,4:5,5:6,6:7,7:8,8:9,9:10,10:11,11:12,12:13,13:14,14:15})
y
y=
pd.DataFrame([medias7,medias8,medias9,medias10]).transpose().rename(columns={0:'modelo
7',1:'modelo 8',2:'modelo 9',3:'modelo 10'}).rename(index =
{0:1,1:2,2:3,3:4,4:5,5:6,6:7,7:8,8:9,9:10,10:11,11:12,12:13,13:14,14:15,15:16,16:17,17:18,18:19
,19:20,20:21,21:22,22:23,23:24,24:25,25:26,26:27,27:28})
y
y = y.transpose()
y.iloc[1]
#### Drive
%cd '/content/drive/MyDrive/TCC/Scripts/Modelos'
!pwd
#### Dados
epochs = list(range(1001))
epochs.remove(0)
import os
os.listdir('/content/drive/MyDrive/TCC/Scripts/Modelos')
import pandas as pd
#!pwd
import pandas as pd
import pandas as pd
# modelo_3.transpose()
os.listdir('/content/drive/MyDrive/TCC/Scripts/Modelos')
import pandas as pd
os.listdir('/content/drive/MyDrive/TCC/Scripts/Modelos')
import pandas as pd
modelo_7[modelo_7.index.duplicated()]
#fig= px.scatter(modelo_1,x=modelo_1['Accuracy'] ,template = 'plotly_white', title= 'Modelo
1',width=800, height=500, color_discrete_sequence=['light blue'])
#fig.show()
import pandas as pd
import pandas as pd
modelo_5 = pd.read_csv('model5(1000)t.txt')
modelo_5
import pandas as pd
modelo_4 = pd.read_csv('model4(1000)t.txt')
modelo_4
modelos = pd.DataFrame()
# # transformando em percentual
modelos['Modelo 8'] = modelo_8['Accuracy']*100
modelos['Modelo 7'] = modelo_7['Accuracy']*100
modelos['Modelo 6'] = modelo_6['Accuracy']*100
modelos['Modelo 5'] = modelo_5['Accuracy']*100
modelos['Modelo 4'] = modelo_4['Accuracy']*100
modelos
fig.show()
#modelos = pd.DataFrame()
#modelos['Modelo 1'] , modelos['Modelo 2'] , modelos['Modelo 3'] = modelo_1['Accuracy'],
modelo_2['Accuracy'], modelo_3['Accuracy']
media_m1 = modelo_1['Accuracy'].mean()
media_m2 = modelo_2['Accuracy'].mean()
media_m3 = modelo_3['Accuracy'].mean()
media_m4 = modelo_4['Accuracy'].mean()
media_m5 = modelo_5['Accuracy'].mean()
# count = 0
# for i,j in enumerate(open('/content/drive/MyDrive/TCC/Scripts/Modelos/model5(500)t.txt')):
# splited = j.split(', ')
# splited[0] = count+501
# count+=1
# print(splited)
# with open('/content/drive/MyDrive/TCC/Scripts/Modelos/model5novo','a+') as m:
# m.write(f'{splited[0]}, {splited[1]}')
Modelo 7 e 9
#### Drive
dir = list(os.listdir('/content/drive/MyDrive/TCC/Videos/Treinamento/'))
dir
%cd '/content/drive/MyDrive/TCC/Videos'
size = sum([len(os.listdir(f'/content/drive/MyDrive/TCC/Videos/Treinamento/{dir[0]}'))
,len(os.listdir(f'/content/drive/MyDrive/TCC/Videos/Treinamento/{dir[1]}'))])
print('Total:', size)
amostras = int(size/8)
amostras
#### Modelos
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.optimizers import RMSprop
rede.compile(loss='binary_crossentropy',
optimizer=RMSprop(learning_rate=0.001),
metrics=['accuracy'])
return rede
class CustomCallback(keras.callbacks.Callback): #
https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/Callback
def on_epoch_end(self, epoch, logs=None):
keys = list(logs.values())
#### Treinamento
import shutil
%cd '/content/drive/MyDrive/TCC/Videos'
acc1 = list(range(n))
try:
assert f'{nome}' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se existe o
arquivo no drive
except:
print(f'{nome} já existe em /content/drive/MyDrive/TCC/Videos')
else:
with open(f'{nome}.txt', 'w') as m: # 'w' cria o arquivo para receber os valores caso ele não
exista
for i in range(1,epoch):
m.write(f'{i},')
for i in range(n):
print(f'\n treinamento {i+1} \n')
model1 = modelo_1()
report1 = model1.fit(imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=epoch,
verbose=1,
callbacks= [CustomCallback()])
try:
shutil.move(f'/content/drive/MyDrive/TCC/Videos/{nome}.txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
except:
print('modelo nao foi movido')
#original :
# acc1 = list(range(n))
# try:
# assert f'model1({n})t(Acc*Epoch).txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') #
verifica se existe o arquivo no drive
# except:
# print(f'model1({n})t(Acc*Epoch).txt já existe em /content/drive/MyDrive/TCC/Videos')
# else:
# with open(f'model1({n})t(Acc*Epoch).txt', 'w') as m: # 'w' cria o arquivo para receber os
valores caso ele não exista
# m.write('1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,')
# for i in range(n):
# print(f'\n treinamento {i+1} \n')
# model1 = modelo_1()
# report1 = model1.fit(imagens_treinamento,
# steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o
passo será x/y
# epochs=35,
# verbose=0,
# callbacks= [CustomCallback()])
# try:
# shutil.move(f'/content/drive/MyDrive/TCC/Videos/model1({n})t(Acc*Epoch).txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
# except:
# print('modelo nao foi movido')
#### Grafico
%cd '/content/drive/MyDrive/TCC/Scripts/Modelos'
import pandas as pd
coluna = {}
epochs = range(1,36)
for i in epochs:
coluna[f'{i}']= f'epochs {i}'
!ls '/content/drive/MyDrive/TCC/Scripts/Modelos'
media = dados.transpose().mean()
media
medias = list(media.values)
medias
fig.show()
import plotly.graph_objects as go
fig = go.Figure()
for i in range(1,27):
fig.add_trace(go.Scatter(x = list(range(1,36)),
y = dados[i],
mode ='markers', opacity = 0.3)) # .add_trace() adiciona UM plot em fig (for
adiciona cada grafico)
fig.show()
Modelo 8 e 10
#### Drive
import os
caminho = '/content/drive/MyDrive/TCC/Videos/Treinamento_Original'
dir = list(os.listdir(caminho))
dir
%cd '/content/drive/MyDrive/TCC/Videos'
amostras = int(size/8)
amostras
#### Modelos
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.optimizers import RMSprop
rede.compile(loss='binary_crossentropy',
optimizer=RMSprop(learning_rate=0.001),
metrics=['accuracy'])
return rede
class CustomCallback(keras.callbacks.Callback): #
https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/Callback
def on_epoch_end(self, epoch, logs=None):
keys = list(logs.values())
#### Treinamento
import shutil
%cd '/content/drive/MyDrive/TCC/Videos'
acc1 = list(range(n))
try:
assert f'{nome}' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se existe o arquivo no
drive
except:
print(f'{nome} já existe em /content/drive/MyDrive/TCC/Videos')
else:
with open(f'{nome}.txt', 'w') as m: # 'w' cria o arquivo para receber os valores caso ele não exista
for i in range(1,epoch):
m.write(f'{i},')
for i in range(n):
print(f'\n treinamento {i+1} \n')
model1 = modelo_1()
report1 = model1.fit(imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo será x/y
epochs=epoch,
verbose=1,
callbacks= [CustomCallback()])
try:
shutil.move(f'/content/drive/MyDrive/TCC/Videos/{nome}.txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
except:
print('modelo nao foi movido')
#original :
# acc1 = list(range(n))
# try:
# assert f'model1({n})t(Acc*Epoch).txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica
se existe o arquivo no drive
# except:
# print(f'model1({n})t(Acc*Epoch).txt já existe em /content/drive/MyDrive/TCC/Videos')
# else:
# with open(f'model1({n})t(Acc*Epoch).txt', 'w') as m: # 'w' cria o arquivo para receber os valores
caso ele não exista
# m.write('1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,')
# for i in range(n):
# print(f'\n treinamento {i+1} \n')
# model1 = modelo_1()
# report1 = model1.fit(imagens_treinamento,
# steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo será x/y
# epochs=35,
# verbose=0,
# callbacks= [CustomCallback()])
# try:
# shutil.move(f'/content/drive/MyDrive/TCC/Videos/model1({n})t(Acc*Epoch).txt',
'/content/drive/MyDrive/TCC/Scripts/Modelos')
# except:
# print('modelo nao foi movido')
#### Grafico
%cd '/content/drive/MyDrive/TCC/Scripts/Modelos'
import pandas as pd
coluna = {1:'epoch 1', 2:'epoch 2',3:'epoch 3',4:'epoch 4',5:'epoch 5',6:'epoch 6',7:'epoch 7',8:'epoch
8',9:'epoch 9',10:'epoch 10',11:'epoch 11',12:'epoch 12',13:'epoch 13',14:'epoch 14',15:'epoch 15'}
coluna = {}
epochs = range(1,36)
for i in epochs:
coluna[f'{i}']= f'epochs {i}'
!ls '/content/drive/MyDrive/TCC/Scripts/Modelos'
#### Histograma
media = dados.transpose().mean()
media
medias = list(media.values)
medias
fig.show()
import plotly.graph_objects as go
fig = go.Figure()
for i in range(1,27):
fig.add_trace(go.Scatter(x = list(range(1,36)),
y = dados[i],
mode ='markers', opacity = 0.3)) # .add_trace() adiciona UM plot em fig (for adiciona
cada grafico)
fig.show()
#### Drive
import os
%cd '/content/drive/MyDrive/TCC/Videos'
#import shutil
#for i,j in enumerate(os.listdir('/content/drive/MyDrive/TCC/Videos/Treinamento/Fumaca')):
#usado para mover as fotos de treinamento para validacao
# if (i+1) % 5 ==0:
#
shutil.move(f'/content/drive/MyDrive/TCC/Videos/Treinamento/Fumaca/{j}',f'/content/drive/MyDri
ve/TCC/Videos/Validação/Fumaca/{j}')
# if (i+1) % 5 ==0:
#
shutil.move(f'/content/drive/MyDrive/TCC/Videos/Treinamento/Nao_Fumaca/{j}',f'/content/drive/
MyDrive/TCC/Videos/Validação/Nao_Fumaca/{j}')
size = sum([len(os.listdir('/content/drive/MyDrive/TCC/Videos/Treinamento/Fumaca'))
,len(os.listdir('/content/drive/MyDrive/TCC/Videos/Treinamento/Nao_Fumaca'))])
print('Total:', size)
size1 = sum([len(os.listdir('/content/drive/MyDrive/TCC/Videos/Validação/Nao_Fumaca'))
,len(os.listdir('/content/drive/MyDrive/TCC/Videos/Validação/Fumaca'))])
print('Total:', size1)
imagens_validacao = reescala.flow_from_directory(
'./Validação/', # This is the source directory for training images
target_size=(300, 300), # All images will be resized to 300x300
batch_size= amostras1,
# Since we use binary_crossentropy loss, we need binary labels
class_mode='binary')
#### Modelos
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.optimizers import RMSprop
rede.compile(loss='binary_crossentropy',
optimizer=RMSprop(learning_rate=0.001),
metrics=['accuracy'])
return rede
def modelo_10():
rede = tf.keras.models.Sequential([
rede.compile(loss='binary_crossentropy',
optimizer=RMSprop(learning_rate=0.001),
metrics=['accuracy'])
return rede
class CustomCallback(keras.callbacks.Callback): #
https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/Callback
def on_epoch_end(self, epoch, logs=None):
keys = list(logs.values())
#### Treinamento
%cd '/content/drive/MyDrive/TCC/Videos/'
model9 = modelo_9()
report9 = model9.fit(imagens_treinamento, # treina o modelo
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=27,
verbose=2,
validation_data = imagens_validacao,
validation_steps = 4,
callbacks= [CustomCallback()])
model10 = modelo_10()
report10 = model10.fit(imagens_treinamento, # treina o modelo
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=15,
verbose=2,
validation_data = imagens_validacao,
validation_steps = 4,
callbacks= [CustomCallback()])
#### Validamento
n = 125
import os
# %cd '/content/'
# for i in os.listdir('/content'):
# if 'images' in i:
# os.remove(f'/content/{i}')
acc9 = list(range(n))
nome = f'model9({n})(Val_AccxEpoch)'
epoch = 27
try:
assert f'{nome}.txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se existe o
arquivo no drive
except:
print(f'{nome}.txt já existe em /content/drive/MyDrive/TCC/Videos')
else:
with open(f'{nome}.txt', 'w') as m: # 'w' cria o arquivo para receber os valores caso ele não
exista
for i in range(1,epoch+1):
m.write(f'{i},')
for i in range(n):
print(f'\n treinamento {i+1} \n')
model9 = modelo_9()
report9 = model9.fit(imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=epoch,
verbose=1,
validation_data = imagens_validacao,
validation_steps = 8,
callbacks= [CustomCallback()])
acc10 = list(range(n))
nome = f'model10({n})(Val_AccxEpoch)'
epoch = 15
try:
assert f'{nome}.txt' not in os.listdir('/content/drive/MyDrive/TCC/Videos') # verifica se existe o
arquivo no drive
except:
print(f'{nome}.txt já existe em /content/drive/MyDrive/TCC/Videos')
else:
with open(f'{nome}.txt', 'w') as m: # 'w' cria o arquivo para receber os valores caso ele não
exista
for i in range(1,epoch+1):
m.write(f'{i},')
for i in range(n):
print(f'\n treinamento {i+1} \n')
model10 = modelo_10()
report10 = model10.fit(imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=epoch,
verbose=1,
validation_data = imagens_validacao,
validation_steps = 8,
callbacks= [CustomCallback()])
##### Histograma
acc9 = list(range(n))
val9 = list(range(n))
for i in range(n):
print(f'\n treinamento {i+1} \n')
model9 = modelo_9()
report9 = model9.fit(imagens_treinamento, # treina o modelo
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=27,
verbose=2,
validation_data = imagens_validacao,
validation_steps = 8,
callbacks= [CustomCallback()])
acc9[i] = report9.history['accuracy'][-1]
val9[i] = report9.history['val_accuracy'][-1]
with open(f'model9({n})va.txt', 'a+') as m: # 'a+' adiciona ao arquivo existente os valores
m.write(f'{i+1}, {acc9[i]}, {val9[i]} \n')
acc10 = list(range(n))
val10 = list(range(n))
for i in range(n):
print(f'\n treinamento {i+1} \n')
model10 = modelo_10()
report10 = model10.fit(imagens_treinamento, # treina o modelo
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo
será x/y
epochs=15,
verbose=2,
validation_data = imagens_validacao,
validation_steps = 8,
callbacks= [CustomCallback()])
acc10[i] = report10.history['accuracy'][-1])
val10[i] = report10.history['val_accuracy'][-1])
with open(f'model10({n})va.txt', 'a+') as m: # 'a+' adiciona ao arquivo existente os valores
m.write(f'{i+1}, {acc10[i]}, {val10[i]} \n')
uploaded = files.upload()
for fn in uploaded.keys():
# predicting images
path = '/content/' + fn
img = load_img(path, target_size=(300, 300))
x = img_to_array(img)
x /= 255
x = np.expand_dims(x, axis=0)
images = np.vstack([x])
classes_m9 = model9.predict(images)
print(classes_m9)
if classes_m9[0]<0.5:
print(fn + " é fumaça")
else:
print(fn + " não é fumaça ")
#### Drive
import os
dir = list(os.listdir(local))
dir
amostras = int(size/8)
amostras
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.optimizers import RMSprop
rede.compile(loss='binary_crossentropy',
optimizer=RMSprop(learning_rate=0.001),
metrics=['accuracy'])
return rede
##### Modelo 10
def modelo_10(): # modelo 8 com 15 epochs, learning rate 0.001 , 5 layers de convolução
rede = tf.keras.models.Sequential([
model9 = modelo_9()
model9.fit(
imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo será
x/y
epochs=27,
verbose=1)
model10 = modelo_10()
model10.fit(
imagens_treinamento,
steps_per_epoch=8, # total de x imagens e cada batch com y imagens , logo o passo será
x/y
epochs=15,
verbose=1)
#### Estatísticas
##### Modelo 9
#%cd '/content/drive/MyDrive/TCC/Videos/Validação'
import os
import numpy as np
from tensorflow.keras.utils import load_img, img_to_array
import random
for i in range(n):
n_aleatorio = random.choice(dir) # escolhe aleatoriamente fumaca ou nao fumaca
if n_aleatorio == 0:
path =
os.path.join('/content/drive/MyDrive/TCC/Videos/Validação/Fumaca',random.choice(fumaca)) #
usa uma foto aleatoria do diretorio fumaca
#path = os.path.join('/content/drive/MyDrive/TCC/Videos/Validação
Inedito/Fumaca_internet',random.choice(fumaca))
else:
path =
os.path.join('/content/drive/MyDrive/TCC/Videos/Validação/Nao_Fumaca',random.choice(nao_f
umaca)) # usa uma foto aleatoria do diretorio nao fumaca
#path = os.path.join('/content/drive/MyDrive/TCC/Videos/Validação
Inedito/Nao_Fumaca_internet',random.choice(nao_fumaca))
img = load_img(path, target_size=(300, 300))
x = img_to_array(img)
x /= 255
x = np.expand_dims(x, axis=0)
images = np.vstack([x])
classes = model9.predict(images, batch_size=10)
elif classes[0] > 0.5 and n_aleatorio == 1: # se a rede classificou certo como nao fumaca
negativo += 1
elif classes[0] > 0.5 and n_aleatorio == 0: # se a rede classificou errado como fumaca:
falso_positivo += 1
elif classes[0] < 0.5 and n_aleatorio == 1: # se a rede classificou errado como nao fumaca
falso_negativo += 1
if classes[0]>0.5:
print(path + " não é fumaça")
else:
print(path + " é fumaça ")
with open('Teste de Validação inedito (banco de dados) (1000 testes) (modelo 9)', 'w+') as m:
m.write(f'Resultados do teste de validação:\n')
m.write(f'positivos: {positivo}\n')
m.write(f'negativos: {negativo}\n')
m.write(f'falto positivo: {falso_positivo}\n')
m.write(f'falso negativo: {falso_negativo}\n')
!pwd
##### Modelo 10
#%cd '/content/drive/MyDrive/TCC/Videos/Validação'
import os
import numpy as np
from tensorflow.keras.utils import load_img, img_to_array
import random
dir = [0,1]
for i in range(n):
n_aleatorio = random.choice(dir) # escolhe aleatoriamente fumaca ou nao fumaca
if n_aleatorio == 0:
path =
os.path.join('/content/drive/MyDrive/TCC/Videos/Validação/Fumaca',random.choice(fumaca)) #
usa uma foto aleatoria do diretorio fumaca
#path = os.path.join('/content/drive/MyDrive/TCC/Videos/Validação
Inedito/Fumaca_internet',random.choice(fumaca))
else:
path =
os.path.join('/content/drive/MyDrive/TCC/Videos/Validação/Nao_Fumaca',random.choice(nao_f
umaca)) # usa uma foto aleatoria do diretorio nao fumaca
#path = os.path.join('/content/drive/MyDrive/TCC/Videos/Validação
Inedito/Nao_Fumaca_internet',random.choice(nao_fumaca))
img = load_img(path, target_size=(300, 300))
x = img_to_array(img)
x /= 255
x = np.expand_dims(x, axis=0)
images = np.vstack([x])
classes = model10.predict(images, batch_size=10)
if classes[0] < 0.5 and n_aleatorio == 0: # se a rede classificou certo fumaca:
positivo += 1
elif classes[0] > 0.5 and n_aleatorio == 1: # se a rede classificou certo como nao fumaca
negativo += 1
elif classes[0] > 0.5 and n_aleatorio == 0: # se a rede classificou errado como fumaca:
falso_positivo += 1
elif classes[0] < 0.5 and n_aleatorio == 1: # se a rede classificou errado como nao fumaca
falso_negativo += 1
if classes[0]>0.5:
print(path + " não é fumaça")
else:
print(path + " é fumaça ")
with open('Teste de Validação inedito 4 (banco de dados) (1000 testes) (modelo 10)', 'w+') as
m:
m.write(f'Resultados do teste de validação:\n')
m.write(f'positivos: {positivo}\n')
m.write(f'negativos: {negativo}\n')
m.write(f'falto positivo: {falso_positivo}\n')
m.write(f'falso negativo: {falso_negativo}\n')
!pwd