8
respostas

Streamlit dados do desafio mão na massa

Como ficaria o código do streamlit para o desafio mão na massa?

8 respostas

Olá, Felipe! Tudo bem?

Não entendi a qual desafio está se referindo, mas vou deixar aqui o que suponho que seja:

Caso se trate de outro, peço que traga mais informações para que possa te ajudar da melhor forma.

Espero que tenha te ajudado. Conte sempre com o apoio do fórum em sua jornada!

Um abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Olá Rafa, tudo bem?

Seria sobre construir a aplicação no streamlit com o modelo criado com os dados da catarata (desafio mão na massa).

No caso, o link com o gabarito da streamlit está para o modelo da 'Classifica videira'.

Obrigado pelo retorno.

Oi Felipe, por aqui tudo bem, obrigada por perguntar :)

Se for o mão na massa da aula 04, disponibilizamos a solução nesse link.

Na aula seguinte, que é a aula 05, o instrutor trabalha apenas com a aplicação da classificação das folhas de videira, a qual você pode encontrar o código aqui.

A aplicação para a classificação com os dados de glaucoma não foi feita, há apenas uma sugestão para que você pratique a criação de aplicação. Daí vai de você optar por construir sobre folhas de videira ou glaucoma. Lembrando que deve usar como base o projeto da aula 05 que mandei o link acima. Como foi comentado na atividade "Faça como eu fiz: criando a sua própria aplicação":

Tente construir a aplicação da classificação das folhas de videira que foi construída nos vídeos dessa aula. Como alternativa, você pode construir uma aplicação para a classificação com os dados de glaucoma trabalhados nas atividades de mão na massa desse curso.

Caso tenha mais dúvidas ou precise de algum auxílio, fico à disposição!

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Olá Rafaela, estou com o mesmo problema do Felipe. Querendo rodar o app do mão na massa, porém as previsões do app são incorretas. Acredito que o modelo criado na aula 4 esteja incorreto... Como o projeto catarata se trata de 2 outputs não teria que ser :

  • sigmoid ao inves de x = tf.keras.layers.Dense(4, activation=tf.nn.softmax)(x)
  • loss = 'sparse_categorical_crossentropy', não deveria ser loss='binary_crossentropy', ?

Outra coisa acredito que toda aula 4 do mão na massa precisa ser revista pois parece uma copia do curso (winery) das folhas.

Esse ultimo modelo não está rodando corretamente e prevendo com eficiência se a catarata esta immature ou mature. Se possível nos passar o modelo final. Pois estou tentado fazer conforme as orientações mas ele sofre overfiting e não está prevendo corretamente

Oi pessoal,

Peço desculpas porque assim como o Viktor notou, havia um erro na parte 4 do Mão na massa. Eu estava usando o número de classes igual a 4. Para corrigir isso eu substituí a função de ativação final e a de loss. Além disso, eu atualizei o código para adicionar previsões de exemplo usando os dados de validação mesmo.

Quanto à aplicação de Streamlit, não foi construída uma aplicação para o problema das cataratas. Porém, a ideia é a mesma. Vocês podem tentar baixar uma versão mais leve do modelo e fazer a chamada do modelo dentro da aplicação. Tenham em mente que ao tentar baixar essa versão mais leve pode ocorrer perda de precisão na resposta. Eu também reparei que mesmo na versão completa o modelo está favorecendo a resposta zero. Isso pode significar que os dados estão desbalanceados. Eu não fiz esse tipo de verificação porque o objetivo do mão na massa era apenas que vocês conseguissem reproduzir o mesmo fluxo para um dataset diferente.

https://github.com/alura-cursos/curso-tensorflow-convolucao/blob/main/mao_na_massa_catarata-Aula4.ipynb

Fico à disposição caso ainda tenham dúvidas.

Legal Allan, obrigado pelo retorno.

Gostaria muito de colocar esse modelo pra roda de forma correta, pois publiquei ele. Aqui, segui a novas atualizações, coloquei exatamente igual ao sugerido no seu link, mas aqui também favorece a resposta zero, errando as previsões. Caso alguém do curso ou da assistência da Alura puder ajudar a encontrar as correções do modelo para que ele rode corretamente, pois já tentei várias vezes e não consegui, provável overfiting. Segue resultados:

Epoch 1/10 6/6 ━━━━70s 7s/step - accuracy: 0.5755 - loss: 20.1420 - val_accuracy: 0.5244 - val_loss: 35.3178

Epoch 2/10 6/6 ━━━━3s 459ms/step - accuracy: 0.6867 - loss: 15.7063 - val_accuracy: 0.8293 - val_loss: 2.6564

Epoch 3/10 6/6 ━━━━4s 622ms/step - accuracy: 0.9307 - loss: 0.8780 - val_accuracy: 0.9024 - val_loss: 2.4800

Epoch 4/10 6/6 ━━━━3s 464ms/step - accuracy: 0.9316 - loss: 1.5572 - val_accuracy: 1.0000 - val_loss: 1.7676e-10

Epoch 5/10 6/6 ━━━━5s 457ms/step - accuracy: 1.0000 - loss: 0.0016 - val_accuracy: 0.9390 - val_loss: 0.7835

Epoch 6/10 6/6 ━━━━6s 512ms/step - accuracy: 0.9606 - loss: 0.3914 - val_accuracy: 1.0000 - val_loss: 1.1671e-14

Epoch 7/10 6/6 ━━━━5s 455ms/step - accuracy: 0.9981 - loss: 0.0061 - val_accuracy: 0.9878 - val_loss: 0.1113

Epoch 8/10 6/6 ━━━━3s 461ms/step - accuracy: 0.9974 - loss: 0.0258 - val_accuracy: 0.9878 - val_loss: 0.2587

Epoch 9/10 6/6 ━━━━4s 592ms/step - accuracy: 0.9940 - loss: 0.0699 - val_accuracy: 0.9878 - val_loss: 0.2015

Epoch 10/10 6/6 ━━━━3s 488ms/step - accuracy: 0.9944 - loss: 0.0569 - val_accuracy: 0.9878 - val_loss: 0.0282

CONFERENCIA DAS PREVISOES

2/2 ━━━━━━━━━━━━━1s 295ms/step

Imagem 1: Previsão: 0, Rótulo real: 0

Imagem 2: Previsão: 0, Rótulo real: 0

Imagem 3: Previsão: 1, Rótulo real: 0

Imagem 4: Previsão: 1, Rótulo real: 0

Imagem 5: Previsão: 1, Rótulo real: 0

Oi Viktor,

Eu aprofundei a investigação desse dataset e testei outro caminho, utilizando um modelo pré-treinado diferente como base. Você pode conferir o código que usei aqui:Modelo no GitHub

Os resultados melhoraram um pouco em relação ao modelo anterior. Como pode ver na matriz de confusão, ele já não está classificando tudo em uma única classe. No entanto, ainda não atingimos o melhor desempenho possível. Ao analisar o dataset original no Kaggle, parece que outros usuários também não conseguiram ir além desse ponto.

Além disso, não observei nenhum problema significativo de desbalanceamento de classes, que é algo comum em problemas desse tipo. Por isso, acredito que a limitação esteja no próprio conjunto de dados. Se você estiver construindo um portfólio, sugiro considerar outro dataset para obter resultados mais expressivos.

Caso queira se inspirar, você pode consultar o trabalho de outras pessoas na aba "Code" vinculada a esses dados:Kaggle Cataract Classification Dataset - Code

Beleza Allan, obrigado pela ajuda.