Neste estudo procuro classificar os comportamentos ('alerta', 'bravo', 'brincar', 'tranquilo') através de uma estratégia de computação visual, utilizando modelos para identificar padrões de comportamento pré-definidos. Esses aspectos classificados foram definidos de acordo com alguns padrões de comportamento comuns entre cães veja exemplo figura abaixo.
Particularmente meu cachorro OZZY foi minha inspiração para iniciar esse estudo, pois era um cão adotado já adulto e que apresentava muitos problemas de saúde como cinomose, doença do carrapato entre outros, ficou com sequelas dessas doenças e isso nos levou a sempre ter um cuidado especial com ele e sempre precisamos vigiá-lo. Aí surgiu a ideia de montar esse modelo no keras que se chamava LOLA (homenagem ao meu outro cachorro) para iniciar essa brincadeira de previsão.
Disponibilizarei neste post um código simplificado para rodar o modelo treinado que fiz e verificar seus resultados. Foi um modelo treinado há alguns anos com mais de 5mil imagens. Eu fiz isso em 2019.
Mas iniciarei uma série de posts passo a passo como fiz o modelo, definição e tratamentos para imagens, bibliotecas utilizadas e irei treinar e criar um novo modelo desde o início.
Criarei vários posts para esses estudos.....
Chega de conversa e mãos no código.. vamos rodar essa bagaça
obs: arquivos do projeto no link https://drive.google.com/file/d/1BxaqU0VWc7WJ2B3DlFzdNrKfWeP24_1W/view?usp=drive_link.
Importa as bibliotecas necessárias
import numpy as np # Para operações numéricas
from keras.applications.inception_v3 import decode_predictions # Para decodificar previsões
import matplotlib.pyplot as plt # Para visualização
import os # Para operações relacionadas ao sistema operacional
from keras.models import load_model # Para carregar o modelo de classificação
from PIL import Image # Para trabalhar com imagens
import cv2 # Para operações de processamento de imagem
Define a função para converter uma imagem de BGR para RGB
def cvtRGB(img):
return cv2.cvtColor(img.copy(), cv2.COLOR_BGR2RGB)
Define as dimensões desejadas para as imagens
img_width, img_height = 256, 256
Define as categorias possíveis para classificação
categories = ['alerta', 'bravo', 'brincar', 'tranquilo']
Carrega o modelo pré-treinado ResNet50 a partir do arquivo 'lola_classification.h5'
model_ResNet50 = load_model('lola_classification.h5')
Define a função para fazer previsões em uma única imagem usando o modelo carregado
def predict_one_image(img, model):
img = cv2.resize(img, (img_width, img_height), interpolation=cv2.INTER_CUBIC) # Redimensiona a imagem
img = np.reshape(img, (1, img_width, img_height, 3)) # Reformata a imagem
img = img/255. # Normaliza a imagem
pred = model.predict(img) # Faz a previsão
class_num = np.argmax(pred) # Obtém a classe com maior probabilidade
return class_num, np.max(pred) # Retorna a classe e a probabilidade
Carrega a imagem de teste
test_img = cv2.imread('dog3.jpg')
Faz a previsão na imagem de teste
pred, probability = predict_one_image(test_img, model_ResNet50)
Imprime a classe prevista e a probabilidade associada
print('%s %d%%' % (categories[pred], round(probability, 2) * 100))
Plotar a imagem de teste
plt.imshow(cvtRGB(test_img)) # Mostra a imagem de teste
plt.axis('off') # Desliga os eixos
plt.show() # Mostra a imagem
No teste abaixo essa braveza deu 100% rsrsrs...
see you folks!
Top comments (2)
Business health plans are crucial for organizations seeking to provide employees with comprehensive healthcare coverage. Just as these plans prioritize employee well-being, understanding dogs' behavior classification using visual computing with Keras can enhance pet care. By leveraging technology to analyze canine behavior, businesses can ensure a healthier work environment by promoting pet-friendly policies. Integrating insights from dog behavior studies can improve employee satisfaction and mental health, fostering a culture that values both human and animal well-being in the workplace.
Show Marco!! Muito bom!