├── Azure_ModeloPreditivo
├── complementos
│ ├── experimento.png
│ ├── modelo.java
│ ├── teste.java
│ └── prog.java
└── ReadME.md
├── Azure_Fala_C++
├── AcademIA_SC_Fala
│ ├── AcademIA_SC_Fala.exe
│ ├── config_voz.xml
│ ├── Debug
│ │ ├── AcademIA_SC_Fala.tlog
│ │ │ ├── CL.command.1.tlog
│ │ │ └── AcademIA_SC_Fala.lastbuildstate
│ │ └── AcademIA_SC_Fala.log
│ ├── AcademIA_SC_Fala.vcxproj.user
│ ├── AcademIA_SC_Fala.vcxproj.filters
│ ├── AcademIA_SC_Fala.cpp
│ └── AcademIA_SC_Fala.vcxproj
└── README.md
├── README.md
├── Azure_DeteccaoFaces_C#
└── README.md
├── Azure_ReconhecimentoFaces_C#
├── README.md
└── Program.cs
├── Azure_DeteccaoFaces_JavaScript
├── README.md
├── detectFaces.html
└── detectFacesAttributes.html
└── Azure_Classificacao_Java
├── README.md
└── Main.java
/Azure_ModeloPreditivo/complementos/experimento.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icei-pucminas/Sistemas-Inteligentes/HEAD/Azure_ModeloPreditivo/complementos/experimento.png
--------------------------------------------------------------------------------
/Azure_Fala_C++/AcademIA_SC_Fala/AcademIA_SC_Fala.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icei-pucminas/Sistemas-Inteligentes/HEAD/Azure_Fala_C++/AcademIA_SC_Fala/AcademIA_SC_Fala.exe
--------------------------------------------------------------------------------
/Azure_Fala_C++/AcademIA_SC_Fala/config_voz.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | default
4 |
5 |
--------------------------------------------------------------------------------
/Azure_Fala_C++/AcademIA_SC_Fala/Debug/AcademIA_SC_Fala.tlog/CL.command.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/icei-pucminas/Sistemas-Inteligentes/HEAD/Azure_Fala_C++/AcademIA_SC_Fala/Debug/AcademIA_SC_Fala.tlog/CL.command.1.tlog
--------------------------------------------------------------------------------
/Azure_Fala_C++/AcademIA_SC_Fala/AcademIA_SC_Fala.vcxproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Azure_Fala_C++/AcademIA_SC_Fala/Debug/AcademIA_SC_Fala.tlog/AcademIA_SC_Fala.lastbuildstate:
--------------------------------------------------------------------------------
1 | PlatformToolSet=v142:VCToolArchitecture=Native32Bit:VCToolsVersion=14.27.29110:TargetPlatformVersion=10.0.18362.0:
2 | Debug|Win32|C:\Users\Arthur_2\Desktop\Arthur\AcademIA\AcademIA_SC_Fala\|
3 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Sistemas Inteligentes
2 |
3 | Este repositório tem por objetivo reunir projetos acadêmicos relacionados ao aprendizado de sistemas inteligentes. Foca principalmente em projetos que envolvem programação e Inteligência Artificial.
4 |
5 | Cada uma das pastas possui um projeto simples implementados em uma linguagem de programação.
6 |
--------------------------------------------------------------------------------
/Azure_DeteccaoFaces_C#/README.md:
--------------------------------------------------------------------------------
1 | # Descrição
2 | Este demo ilustra o uso de API de detecção Facial do serviço cognitivo da Microsoft (Azure). O demo utiliza a linguagem de programação C#.
3 |
4 | Veja como conseguir a chave e a URL da sua aplicação azure: https://youtu.be/nw0GMx687Ew
5 |
6 | Veja o vídeo explicativo em: https://www.youtube.com/watch?v=XWIo6KLWNSU
7 |
8 | Autor: Arthur Bernardo Moura, aluno da PUC Minas, Embaixador do programa AcademIA Microsoft e Monitor dos cursos de Computação
9 | Orientação: Prof. Sandro Jerônimo de Almeida
10 |
--------------------------------------------------------------------------------
/Azure_ModeloPreditivo/ReadME.md:
--------------------------------------------------------------------------------
1 |
2 | # Descrição
3 | Esse projeto mostra o desenvolvimento e aplicação de um modelo classificador de senhas.Desenvolvido para ser utilizado em uma plataforma WEB para a matéria de TI-II,
4 | requisição feita em Java, construção do serviço web a partir da plataforma de machine learning da Azure: https://studio.azureml.net/ .
5 |
6 | Autor: João Victor Amorim Vieira, aluno da PUC Minas, Ciência da Computação.
7 |
8 | Orientação: Prof. Sandro Jerônimo de Almeida
9 | # Vídeo explicativo
10 |
11 | https://youtu.be/hPVQxh9J7eI
12 |
--------------------------------------------------------------------------------
/Azure_Fala_C++/README.md:
--------------------------------------------------------------------------------
1 | # Descrição
2 | Este projeto ilustra o funcionamento da API de serviços inteligentes da Microsoft para transformação de fala em texto e vice-versa. Foi desenvolvido na linguagem de programação C++.
3 |
4 | Autor: Arthur Bernardo Moura, aluno da PUC Minas, Embaixador do programa AcademIA Microsoft e Monitor dos cursos de Computação.
5 | Orientação: Prof. Sandro Jerônimo de Almeida
6 | # Vídeo explicativo
7 | https://www.youtube.com/watch?v=v0sEQvWLRTs
8 |
9 | Veja também como conseguir a chave e a URL da sua aplicação azure: https://youtu.be/nw0GMx687Ew
10 |
--------------------------------------------------------------------------------
/Azure_Fala_C++/AcademIA_SC_Fala/Debug/AcademIA_SC_Fala.log:
--------------------------------------------------------------------------------
1 | AcademIA_SC_Fala.cpp
2 | C:\Users\Arthur_2\Desktop\Arthur\AcademIA\AcademIA_SC_Fala\AcademIA_SC_Fala\AcademIA_SC_Fala.cpp(14,9): error C3861: 'synthesizeSpeech': identificador não encontrado
3 | C:\Users\Arthur_2\Desktop\Arthur\AcademIA\AcademIA_SC_Fala\AcademIA_SC_Fala\AcademIA_SC_Fala.cpp(28,6): error C2084: função 'void synthesizeSpeech(void)' já possui um corpo
4 | C:\Users\Arthur_2\Desktop\Arthur\AcademIA\AcademIA_SC_Fala\AcademIA_SC_Fala\AcademIA_SC_Fala.cpp(23): message : consulte a definição anterior de 'synthesizeSpeech'
5 |
--------------------------------------------------------------------------------
/Azure_ReconhecimentoFaces_C#/README.md:
--------------------------------------------------------------------------------
1 | # Descrição
2 | Este projeto ilustra o funcionamento da API de serviços inteligentes da Microsoft para reconhecimento de rostos semelhantes. Foi desenvolvido em C#.
3 |
4 | Veja como conseguir a chave e a URL da sua aplicação azure: https://youtu.be/nw0GMx687Ew
5 |
6 | Um video com detalhes do projeto está disponível em: https://www.youtube.com/watch?v=z4jq610aOoM
7 |
8 | Autor: Frederico Prado Marques, aluno da PUC Minas, Embaixador do programa AcademIA Microsoft e Monitor dos cursos de Computação.
9 | Orientação: Prof. Sandro Jerônimo de Almeida
10 |
--------------------------------------------------------------------------------
/Azure_DeteccaoFaces_JavaScript/README.md:
--------------------------------------------------------------------------------
1 | # Descrição
2 | Este projeto ilustra o funcionamento da API de serviços inteligentes da Microsoft para detecção de rostos. Foi desenvolvido em JavaScript.
3 |
4 |
5 | Veja como conseguir a chave e a URL da sua aplicação azure: https://youtu.be/nw0GMx687Ew
6 |
7 | Um video com detalhes do projeto está disponível em: https://www.youtube.com/watch?v=H-tAR-TmcO4&feature=youtu.be
8 |
9 | Autor: Frederico Prado Marques, aluno da PUC Minas, Embaixador do programa AcademIA Microsoft e Monitor dos cursos de Computação.
10 | Orientação: Prof. Sandro Jerônimo de Almeida
11 |
12 |
--------------------------------------------------------------------------------
/Azure_ModeloPreditivo/complementos/modelo.java:
--------------------------------------------------------------------------------
1 | import java.net.http.*;
2 | import java.util.*;
3 | import java.net.*;
4 |
5 | public class modelo{
6 |
7 |
8 | public static void main(String[] Args)throws Exception{
9 |
10 | /**
11 | Importante lembrar de entregar dados em modelo JSON, em java necessario usar caracteres de escape, como ' \" ' para imprimir uma aspas
12 |
13 | **/
14 | String body = "elementos a serem enviados para a API";
15 |
16 |
17 |
18 | String url = "Sua URL";//encontrada na pagina de detalhes da API criada
19 |
20 | HttpClient client = HttpClient.newHttpClient();
21 | HttpRequest req = HttpRequest.newBuilder()
22 | .uri(URI.create(url)).header("Content-Type","application/json").header("Authorization","Bearer *CODIGO DE AUTORIZACAO*")//Nao esquecer do espaço apos o bearer
23 | .header("Accept","application/json")
24 | .POST(HttpRequest.BodyPublishers.ofString(body))
25 | .build();
26 |
27 | HttpResponse resp = client.send(req,HttpResponse.BodyHandlers.ofString());
28 |
29 | MyIO.println(resp.body());//usando MyIO do Max, caso nao possua pode ser alterado para System.out.println()
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Azure_ModeloPreditivo/complementos/teste.java:
--------------------------------------------------------------------------------
1 | import java.net.http.*;
2 | import java.util.*;
3 | import java.net.*;
4 |
5 | public class teste{
6 |
7 |
8 | public static void main(String[] Args)throws Exception{
9 |
10 | String body = "{\"Inputs\": {\"input1\": [{\"senha\": \"kzde5577\",\"special character\": 0,\"uppercase\": 0,\">=8\": 1,\"number\": 1,\"strength\": 1}]},\"GlobalParameters\": {}}";
11 |
12 | String url = "https://ussouthcentral.services.azureml.net/workspaces/34c27db996a549be84d8289e923d4da0/services/6cf1f6cbd1a64b2ca1125c5cffc91f4a/execute?api-version=2.0&format=swagger";
13 |
14 | HttpClient client = HttpClient.newHttpClient();
15 | HttpRequest req = HttpRequest.newBuilder()
16 | .uri(URI.create(url)).header("Content-Type","application/json").header("Authorization","Bearer KFMY5hDLlxtxNlL9mzGh/1TLkoe/xx2KkmFb5taAyrOtSOaCuRutrHc7G0+aaePmLshfT5XlEt6jBaWCx+8cEA==").header("Accept","application/json")
17 | .POST(HttpRequest.BodyPublishers.ofString(body))
18 | .build();
19 | HttpResponse resp = client.send(req,HttpResponse.BodyHandlers.ofString());
20 | System.out.println(resp.body());
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | }
30 |
31 |
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/Azure_Fala_C++/AcademIA_SC_Fala/AcademIA_SC_Fala.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 | Arquivos de Origem
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/Azure_ModeloPreditivo/complementos/prog.java:
--------------------------------------------------------------------------------
1 | public class prog{
2 |
3 | public static boolean temMaiuscula(String senha){
4 |
5 | boolean resp = false;
6 | for(int i = 0;i < senha.length() && !resp;i++){
7 |
8 | if(senha.charAt(i)>='A' && senha.charAt(i)<='Z')
9 | resp = true;
10 |
11 | }
12 | return resp;
13 |
14 | }
15 | public static boolean temNumero(String senha){
16 |
17 | boolean resp =false;
18 | for(int i = 0;i < senha.length() && !resp;i++){
19 |
20 | if(senha.charAt(i)>='0' && senha.charAt(i)<='9')
21 | resp = true;
22 | }
23 |
24 | return resp;
25 | }
26 |
27 | public static boolean temEspecial(String senha){
28 |
29 | boolean resp =false;
30 | for(int i = 0;i < senha.length() && !resp;i++){
31 |
32 | if((senha.charAt(i)>='!' && senha.charAt(i)<='/')||(senha.charAt(i)>=':' && senha.charAt(i)<='@') )
33 | resp = true;
34 | }
35 |
36 | return resp;
37 |
38 | }
39 |
40 |
41 | public static void main(String[] Args){
42 |
43 | String senha = MyIO.readString();
44 |
45 |
46 |
47 | for(int i = 0 ;i < 6680 ; i++){
48 |
49 | boolean tamanho = false;
50 | if(senha.length() >= 8)
51 | tamanho = true;
52 |
53 |
54 | int a,b,c,d;
55 | a = (temEspecial(senha)) ? 1 : 0;
56 | b = (temMaiuscula(senha)) ? 1 : 0;
57 | c = (tamanho) ? 1 : 0;
58 | d = (temNumero(senha)) ? 1 : 0;
59 |
60 | MyIO.println( senha +","+a + "," + b + "," + c + "," +d);
61 | senha = MyIO.readString();
62 |
63 | }
64 |
65 | }
66 |
67 |
68 |
69 |
70 | }
71 |
--------------------------------------------------------------------------------
/Azure_Fala_C++/AcademIA_SC_Fala/AcademIA_SC_Fala.cpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include
4 | #include
5 |
6 |
7 | using namespace std;
8 | using namespace Microsoft::CognitiveServices::Speech;
9 | using namespace Microsoft::CognitiveServices::Speech::Audio;
10 |
11 | // PROCEDIMENTO QUE REQUISITA DA API A TRANSFORMAÇÃO DE UM TEXTO EM FALA
12 | void texto_em_fala(std::shared_ptr requisicao_textofala, string Texto)
13 | {
14 | cout << Texto + "\n";
15 | requisicao_textofala->SpeakTextAsync(Texto).get(); // REQUISIÇÃO DA SINTETIZAÇÃO DE TEXTO EM FALA
16 | }
17 | // FUNÇÃO QUE REQUISITA DA API O RECONHECIMENTO DE UMA FALA E A TRANSFORMAÇÃO DESSA FALA EM UM TEXTO
18 | string fala_em_texto(std::shared_ptr requisicao_falatexto) {
19 | auto resultado = requisicao_falatexto->RecognizeOnceAsync().get();// REQUISIÇÃO DO RECONHEIMENTO DE FALA EM TEXTO
20 | cout << resultado->Text + "\n";
21 | return resultado->Text; //CONVERSÃO DO RESULTADO DO RECONHECIMENTO EM TEXTO
22 | }
23 |
24 | int main()
25 | {
26 | auto autenticacao = SpeechConfig::FromSubscription("", ""); // DECLARAÇÃO DA AUTENTICAÇÃO DO RECURSO
27 | autenticacao->SetSpeechRecognitionLanguage("pt-BR"); // CONFIGURAÇÃO DA AUTENTICAÇÃO PARA O RECONHECIMENTO DE FALA EM PORTUGUÊS
28 | autenticacao->SetSpeechSynthesisLanguage("pt-BR"); // CONFIGURAÇÃO DA AUTENTICAÇÃO PARA A SINTETIZAÇÃO DE FALA EM PORTUGUÊS
29 | autenticacao->SetSpeechSynthesisVoiceName("pt-BR-FranciscaNeural"); // CONFIGURAÇÃO DE UMA VOZ ESPECÍFICA: pt-BR-AntonioNeural, pt-BR-FranciscaNeural
30 | // OBS: A PERSONALIZAÇÃO DA VOZ NÃO É OBRIGATÓRIA. SE A LINHA ACIMA FOR COMENTADA, O SERVIÇO ASSUMIRÁ UMA VOZ POR DEFAULT.
31 | // O NOME DAS VOZES PODEM SER ALTERADOS COM O TEMPO. CASO SEU PROGRAMA NÃO ESTEJA SINTETIZANDO A VOZ ESCOLHIDA, TENTE COMENTAR A CONFIGURAÇÃO
32 | // OU PESQUISE NA DOCUMENTAÇÃO DA MICROSOFT POR VOZES DISPONÍVEIS: https://docs.microsoft.com/pt-br/azure/cognitive-services/speech-service/language-support
33 | auto audio_config = AudioConfig::FromDefaultMicrophoneInput(); // DECLARAÇÃO DA ENTRADA DO MICROFONE
34 | auto requisicao_textofala = SpeechSynthesizer::FromConfig(autenticacao); // DEFINIÇÃO DO OBJETO REQUISICAO_TEXTOFALA
35 | auto requisicao_falatexto = SpeechRecognizer::FromConfig(autenticacao, audio_config); // REDEFINIÇÃO DO OBJETO REQUISICAO_FALATEXTO COM AS NOVAS CONFIGURAÇÕES
36 |
37 | try
38 | {
39 | texto_em_fala(requisicao_textofala,"SISTEMA LIGADO");
40 | texto_em_fala(requisicao_textofala,"Qual e o seu nome?");
41 | string nome = fala_em_texto(requisicao_falatexto);
42 | texto_em_fala(requisicao_textofala,"Ola " + nome + "! Informe a sua senha: ");
43 | string senha = fala_em_texto(requisicao_falatexto);
44 | texto_em_fala(requisicao_textofala, "Verificando. . .");
45 |
46 | if (senha == ("123456.")) {
47 | texto_em_fala(requisicao_textofala, "ACESSO CONCEDIDO");
48 | }
49 | else {
50 | texto_em_fala(requisicao_textofala, "ACESSO NEGADO");
51 | }
52 | }
53 | catch (exception e)
54 | {
55 | cout << e.what();
56 | }
57 | return 0;
58 | }
59 |
--------------------------------------------------------------------------------
/Azure_ReconhecimentoFaces_C#/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using System.Threading;
6 | using System.Threading.Tasks;
7 |
8 | using Microsoft.Azure.CognitiveServices.Vision.Face;
9 | using Microsoft.Azure.CognitiveServices.Vision.Face.Models;
10 | namespace ConsoleApp1
11 | {
12 | class Program
13 | {
14 | // Recognition model 3 was released in 2020 May
15 | const string RECOGNITION_MODEL3 = RecognitionModel.Recognition03;
16 | public static IFaceClient Authenticate(string endpoint, string key)
17 | {
18 | return new FaceClient(new ApiKeyServiceClientCredentials(key)) { Endpoint = endpoint };
19 | }
20 | private static async Task> DetectFaceRecognize(IFaceClient faceClient, string url, string recognition_model)
21 | {
22 | // Detect faces from image URL. Since only recognizing, use the recognition model 1.
23 | // We use detection model 2 because we are not retrieving attributes.
24 | IList detectedFaces = await faceClient.Face.DetectWithUrlAsync(url, recognitionModel: recognition_model, detectionModel: DetectionModel.Detection02);
25 | Console.WriteLine($"{detectedFaces.Count} face(s) detectada(s) na imagem `{Path.GetFileName(url)}`");
26 | return detectedFaces.ToList();
27 | }
28 | public static async Task FindSimilar(IFaceClient client, string recognition_model)
29 | {
30 | Console.WriteLine("========Achar Similares========");
31 | Console.WriteLine();
32 | Console.WriteLine("Insira o link da face base(links muito grandes podem causar erros):\n");
33 | string sourceImageFileName = Console.ReadLine();
34 | Console.WriteLine("Insira o link das possiveis faces similares e digite FIM quando acabar (links muito grandes podem causar erros):\n");
35 | List targetImageFileNames = new List();
36 | string aux = "";
37 | int i = 1;
38 | do
39 | {
40 | Console.WriteLine($"Imagem {i}:\n");
41 | aux = Console.ReadLine();
42 | if (aux != "FIM")
43 | {
44 | targetImageFileNames.Add(aux);
45 | }
46 | i++;
47 | } while (aux != "FIM");
48 |
49 |
50 | IList targetFaceIds = new List();
51 | foreach (var targetImageFileName in targetImageFileNames)
52 | {
53 | // Detect faces from target image url.
54 | var faces = await DetectFaceRecognize(client, $"{targetImageFileName}", recognition_model);
55 | // Add detected faceId to list of GUIDs.
56 | targetFaceIds.Add(faces[0].FaceId.Value);
57 | }
58 |
59 | // Detect faces from source image url.
60 | IList detectedFaces = await DetectFaceRecognize(client, $"{sourceImageFileName}", recognition_model);
61 | Console.WriteLine();
62 |
63 | // Find a similar face(s) in the list of IDs. Comapring only the first in list for testing purposes.
64 | IList similarResults = await client.Face.FindSimilarAsync(detectedFaces[0].FaceId.Value, null, null, targetFaceIds);
65 | i = 1;
66 | foreach (var similarResult in similarResults)
67 | {
68 | Console.WriteLine($"A imagem {i} com o FaceID:{similarResult.FaceId} é similar a imagem base com a confiança: {similarResult.Confidence}.");
69 | i++;
70 | }
71 | Console.WriteLine();
72 | }
73 | static void Main(string[] args)
74 | {
75 | // From your Face subscription in the Azure portal, get your subscription key and endpoint.
76 | Console.WriteLine("Insira a URL da sua aplicação no Azure:\n");
77 | string urlServico = Console.ReadLine();
78 | Console.WriteLine("Insira a chave da sua aplicação no Azure:\n");
79 | string chaveServico = Console.ReadLine();
80 |
81 | // Authenticate.
82 | IFaceClient client = Authenticate(urlServico, chaveServico);
83 | FindSimilar(client, RECOGNITION_MODEL3).Wait();
84 | }
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/Azure_Classificacao_Java/README.md:
--------------------------------------------------------------------------------
1 | # Azure | Classificação Multiclasse em Java
2 |
3 | Aqui aprenderemos como treinar um modelo de classificação multiclasse (Rede Neural Multiclasse) na Azure, como implantar e depois consumir o modelo utilizando novos dados.
4 |
5 | ## Contexto
6 |
7 | Na Azure, os algoritmos de classificação suportados podem ser encontrados nesse [link](https://docs.microsoft.com/pt-br/azure/machine-learning/how-to-select-algorithms#comparison-of-machine-learning-algorithms). Aqui iremos focar somente nos de multiclasse, e, em específico, a Rede Neural Multiclasse.
8 |
9 | Uma Rede Neural Multiclasse pode ser utilizada em tarefas de pesquisa visual computacional complexas, como reconhecimento de letra ou dígitos, classificação de documentos e reconhecimento de padrões ([Módulo Rede Neural Multiclasse, Azure](https://docs.microsoft.com/pt-br/azure/machine-learning/algorithm-module-reference/multiclass-neural-network?WT.mc_id=docs-article-lazzeri#about-neural-networks))
10 |
11 | ## Problema
12 |
13 | Tendo algumas classes existentes, como dormir, correr e focar, classificar músicas do Spotify em sua classe mais apropriada dada as suas características de áudio.
14 |
15 | Iremos treinar o algoritmo com diversas músicas e sua respectiva classe. Playlists com temas pré-estabelecidos foram pesquisadas e as suas músicas obtidas, então, por exemplo, as músicas de uma playlist triste foram utilizadas para treinar o algoritmo sobre o que seria uma música triste.
16 |
17 | A entidade música é na verdade um set de características de áudio e um identificador. Essas características são explicadas mais na seção de Dados abaixo.
18 |
19 | ## Dados
20 |
21 | Todas as músicas do Spotify contêm características de áudio. As que iremos utilizar nesse exemplo são as seguintes:
22 |
23 | - acousticness
24 | - danceability
25 | - energy
26 | - instrumentalness
27 | - liveness
28 | - loudness
29 | - speechiness
30 | - tempo
31 | - valence
32 |
33 | O significado de cada característica pode ser encontrado na [documentação do Spotify](https://developer.spotify.com/documentation/web-api/reference/#object-audiofeaturesobject).
34 |
35 | O dataset utilizado está presente no seguinte [link](https://gist.github.com/danielSbastos/9a57551c883ded195e9e1be6c967ccda) e foi gerado por um [script em Python](https://github.com/danielSbastos/vibe-fi/blob/master/scripts/requests-spotify.py)
36 |
37 | Com as características de áudio e qual classe cada uma pertence, podemos agora treinar o modelo.
38 |
39 | ## Passos
40 |
41 | 1. Criar um Workspace na Microsoft Azure Machine Learning
42 | 2. Importar um dataset
43 | 3. Criar um pipeline e treinar um modelo
44 | 4. Publicar o modelo em um serviço web
45 | 5. Baixar os arquivos para o serviço web
46 | 6. Testar o modelo
47 | 7. Programando em Java para realizar as chamadas
48 |
49 | ### 1. Criar um Workspace na Microsoft Azure Machine Learning
50 |
51 | Seguir o [tutorial da própria Microsoft](https://docs.microsoft.com/pt-br/azure/machine-learning/how-to-manage-workspace?tabs=azure-portal).
52 |
53 | ### 2. Importar um dataset
54 |
55 | [Vídeo](https://youtu.be/8RP4Gp5VZAM)
56 |
57 | ### 3. Criar um pipeline e treinar um modelo
58 |
59 | [Vídeo](https://youtu.be/iZs0rBS2gFk)
60 |
61 | ### 4. Publicar o modelo em um serviço web
62 |
63 | [Vídeo](https://youtu.be/gluOhQOVV3E)
64 |
65 | ### 5. Baixar os arquivos para o serviço web
66 |
67 | O arquivos no vídeo podem ser acessados em [`score.py`](https://github.com/danielSbastos/vibe-fi/blob/master/scripts/score2.py)
68 | e [`conda_env.yaml`](https://github.com/danielSbastos/vibe-fi/blob/master/scripts/conda_env2.yaml)
69 |
70 | [Vídeo](https://youtu.be/8JgRNa9Golw)
71 |
72 | ### 6. Testar o modelo
73 |
74 | [Vídeo](https://youtu.be/jTUvOlWBuVw)
75 |
76 | ### 7. Programando em Java para realizar as chamadas
77 |
78 | Obs: se você utilizar algum IDE que já baixe o `.jar`, configure o CLASSPATH, compile e rode programas em Java, como o Eclipse,
79 | pode ignorar todos os passos abaixo, menos o de configurar as constantes.
80 |
81 | - Você deve baixar antes o `.jar` do pacote `org.json.simple` e o deixar nessa pasta. Link para download: [http://www.java2s.com/Code/Jar/j/Downloadjsonsimple11jar.htm](http://www.java2s.com/Code/Jar/j/Downloadjsonsimple11jar.htm)
82 | - Altere as constantes `MODEL_URL` e `API_KEY` em `Main.java` com os valores do seu serviço
83 | - Executar o código [`Main.java`](https://github.com/icei-pucminas/Sistemas-Inteligentes/blob/main/Azure_Classificacao_Java/Main.java) com o seguinte comando:
84 |
85 | `javac -cp json-simple-1.1.jar Main.java && java -cp .:json-simple-1.1.jar Main`
86 |
87 | O resultado deve ser algo similar com o exemplo abaixo:
88 |
89 | ```bash
90 | [{Scored Probabilities_feliz=2.0532116841698607E-6, Scored Probabilities_dormir=9.48652830187802E-28, Scored Probabilities_foco=2.0256458418315827E-14, Scored Probabilities_correr=0.9982468202418197, liveness=1.0, Scored Probabilities_gaming=0.001751024180401978, tempo=150.0, Scored Probabilities_energetico=1.9553258735535537E-11, valence=3.9394, instrumentalness=1.0, danceability=8.393, Scored Probabilities_triste=6.480293395209065E-16, speechiness=1.0, Scored Probabilities_calmo=1.0234652002373781E-7, Scored Labels=correr, acousticness=0.992, class=, energy=1.0}]
91 | ```
92 |
--------------------------------------------------------------------------------
/Azure_DeteccaoFaces_JavaScript/detectFaces.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Detecção Facial
5 |
6 |
7 |
59 |
60 |
132 |
133 |
134 |
135 |
Detecção facial
136 |
137 | Entre com a URL de uma imagem que contenha uma(s) face(s), então clique no botão Analisar face.
137 | Entre com a URL de uma imagem que contenha uma(s) face(s), então clique no botão Analisar face.
138 |
139 |
140 |
URL da aplicação no Azure:
141 |
142 |
143 |
144 |
Chave da aplicação:
145 |
146 |
147 |
148 |
URL da Imagem para ser analisada:
149 |
150 |
151 |
152 |
153 |
154 |
155 | Resposta:
156 |
158 |
159 |
160 | Imagem fonte:
161 |
162 |
163 |
164 |
165 |
166 |
167 |
--------------------------------------------------------------------------------
/Azure_Classificacao_Java/Main.java:
--------------------------------------------------------------------------------
1 | import org.json.simple.JSONArray;
2 | import org.json.simple.JSONObject;
3 | import org.json.simple.JSONValue;
4 |
5 | import java.io.IOException;
6 | import java.net.URI;
7 | import java.net.http.HttpClient;
8 | import java.net.http.HttpRequest;
9 | import java.net.http.HttpResponse;
10 | import java.util.List;
11 | import java.util.ArrayList;
12 | import java.util.Map;
13 | import java.util.HashMap;
14 |
15 | /*
16 | Esse código é responsável por enviar as características de áudio de uma música (valence, energy, etc)
17 | e obter de volta a classe prevista (triste, alegre, etc). O serviço que receberá esses dados é o que foi
18 | feito deploy nos vídeos - o serviço web do nosso modelo na Azure.
19 |
20 | Funciona em 4 passos principais:
21 |
22 | 1) Constrói o objeto da chamada HTTP a ser enviado ao serviço web do modelo
23 | 2) Coloca como o `body` da chamada HTTP as características de áudio que são classificados
24 | 3) Envia a requisição ao serviço
25 | 4) Recebe a resposta em JSON e a converte para uma List de HashMaps. O retorno do modelo
26 | contém as características de cada áudio enviadas, a probabilidade de cada set de características
27 | pertencer a uma classe e a classe prevista.
28 | */
29 |
30 | public class Main {
31 | // Endpoint do modelo. Para mais informações, ver o seguinte
32 | // vídeo no tempo já marcado: https://youtu.be/jTUvOlWBuVw?t=188.
33 | // O endpoint está presente no campo "REST Endpoint" no serviço web do modelo.
34 | private static final String MODEL_URL = "";
35 |
36 | // Chave de API do seu serviço na Azure. Para mais informações assistir o seguinte
37 | // vídeo no tempo já marcado: https://youtu.be/jTUvOlWBuVw?t=188
38 | // A chave está presente no campo "Primary Key" no serviço web do modelo.
39 | private static final String API_KEY = "";
40 |
41 | public static void main(String[] Args) throws Exception {
42 | // Construímos a nosso objeto HTTP que será enviado ao servidor do modelo.
43 | // O `API_KEY` é utilizado nos headers e os dados enviados são atribuídos ao objeto
44 | // na linha 43 por meio da função `.sampleData`
45 | HttpClient client = HttpClient.newHttpClient();
46 | HttpRequest request = HttpRequest.newBuilder().uri(URI.create(MODEL_URL))
47 | .headers("Content-Type", "application/json", "Authorization", "Bearer " + API_KEY)
48 | .POST(HttpRequest.BodyPublishers.ofString(sampleData()))
49 | .build();
50 |
51 | try {
52 | // Realiza-se a chamada HTTP para o servidor do modelo. O objeto `client` definido na linha 40
53 | // chama o método `#send` passando o request da linha 41, que é quem contém as informações da URL,
54 | // autenticação com a API_KEY e os dados a serem classificados.
55 | HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
56 |
57 | // Convertemos a reposta para uma List de objetos de HashMap. Nas linhas 86-111 há um exemplo de retorno
58 | // da função `.responseMapBody`.
59 | List