rmayormartins commited on
Commit
3b6f551
1 Parent(s): 39a93df

Adiciona projeto do classificador de imagens

Browse files
Files changed (6) hide show
  1. README.md +16 -13
  2. app.py +53 -0
  3. meu_modelo.h5 +3 -0
  4. requirements.txt +4 -0
  5. vangoghai.jpg +0 -0
  6. vangoghhuman.jpg +0 -0
README.md CHANGED
@@ -1,13 +1,16 @@
1
- ---
2
- title: Image Classifier
3
- emoji: 🐠
4
- colorFrom: green
5
- colorTo: purple
6
- sdk: gradio
7
- sdk_version: 4.12.0
8
- app_file: app.py
9
- pinned: false
10
- license: ecl-2.0
11
- ---
12
-
13
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
1
+ # Meu Projeto de IA
2
+
3
+ Este projeto utiliza um modelo de deep learning para classificar imagens.
4
+ TensorFlow e MobileNetV2
5
+
6
+ ## Como usar
7
+
8
+ 1. Carregue uma imagem usando a interface.
9
+ 2. O modelo irá prever se a imagem foi gerada por IA ou por humanos.
10
+
11
+ ## Mais informações
12
+
13
+ rmayormartins@gmail.com
14
+
15
+ ## Para mim
16
+ 1. Eu atualizo o modelo pelo image-classifier3 no Colab, salvo no Drive o modelo em MODEL, e carrego localmente na pasta Documents para o git
app.py ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import tensorflow as tf
3
+ import numpy as np
4
+ from PIL import Image
5
+
6
+ # Carregar o modelo treinado
7
+ # O modelo deve estar na mesma pasta que este script
8
+ model = tf.keras.models.load_model('meu_modelo.h5')
9
+
10
+ def predict_image(img):
11
+ # Converter a imagem PIL para um array NumPy
12
+ img = np.array(img)
13
+
14
+ # Redimensionar a imagem para o tamanho esperado pelo modelo (224, 224)
15
+ img = tf.image.resize(img, (224, 224))
16
+
17
+ # Pré-processamento manual para MobileNetV2:
18
+ # Escalar os valores de pixel para o intervalo [-1, 1]
19
+ img = img / 127.5 - 1
20
+
21
+ # Adicionar uma dimensão de batch
22
+ img = np.expand_dims(img, axis=0)
23
+
24
+ prediction = model.predict(img)
25
+
26
+ # Interpretar o resultado da predição e criar um dicionário para a saída
27
+ if prediction < 0.5:
28
+ result = {"ai": float(1 - prediction[0][0]), "human": float(prediction[0][0])}
29
+ else:
30
+ result = {"human": float(prediction[0][0]), "ai": float(1 - prediction[0][0])}
31
+
32
+ return result
33
+
34
+ # Lista de exemplos
35
+ # As imagens de exemplo devem estar na mesma pasta que este script
36
+ exemplos = [
37
+ 'vangoghai.jpg',
38
+ 'vangoghhuman.jpg'
39
+ ]
40
+
41
+ # Criar a interface do gradio
42
+ image_input = gr.Image()
43
+ label_output = gr.Label()
44
+
45
+ interface = gr.Interface(
46
+ fn=predict_image,
47
+ inputs=image_input,
48
+ outputs=label_output,
49
+ examples=exemplos
50
+ )
51
+
52
+ # Lançar a interface
53
+ interface.launch()
meu_modelo.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cd71875d2a7c97aca4990678813a89a6c3996c450d25f9d89ce0dc58517c1079
3
+ size 9549048
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ tensorflow
2
+ gradio
3
+ numpy
4
+ Pillow
vangoghai.jpg ADDED
vangoghhuman.jpg ADDED