C.I.I.A. Centro de Investigação Inteligência Artificial
é uma iniciativa conjunta entre profissionais de diferentes Universidades, Escolas Públicas, Associações sem fins lucrativos e o L.I.A.C.C.
O objetivo principal do Centro é o de construir um projeto de investigação aplicada concentrado no modo de envolver todos os jovens (e não só) na ciência da computação e disciplinas associadas, nomeadamente a inteligência artificial. Participamos no trabalho colaborativo com escolas e educadores para garantir que a investigação aplicada possa informar, melhorar devidamente a prática de quem nos procura.
LOGÓTIPO
versão 19out24
Cada Projeto tem uma História
A inteligência artificial (IA) é um campo tecnológico amplo e em rápido desenvolvimento e há um interesse significativo e crescente nas formas como pode influenciar o modo como educamos os jovens (e não só). No Centro de Investigação em Inteligência Artificial, IA e a literacia em ciência de dados são um dos nossos principais temas de investigação. Já publicámos uma revisão sistemática da literatura, um inquérito piloto a professores e desenvolvemos um quadro para categorizar recursos de ensino, desenvolvimento profissional e investigação em IA. Estamos, portanto, entusiasmados por trabalhar com diferentes aplicativos (software) desenvolvidos por empresas líder em investigação de inteligência artificial, para realizar uma avaliação independente do programa de educação escolar em IA de cada um dos nossos amigos.
Embora o estudo da IA e da ciência de dados não tenha sido significativamente incorporado nos currículos escolares Europeus, há uma procura crescente para informar e educar os jovens (e não só) para serem consumidores e utilizadores críticos destas ferramentas. É também necessário aumentar a participação de grupos sub-representados na IA, uma vez que persiste uma falta de diversidade na computação no âmbito do ensino escolar. É importante que os grupos sub-representados possam ter acesso à IA e a disciplinas e planos de curso que permitam a ‘penetração’ da IA, pois isso terá impacto na diversidade daqueles que concebem sistemas de IA para serem justos e equitativos. Estão atualmente em curso muitas iniciativas para preparar os jovens (e não só) para um futuro assente na IA. Compreender o impacto que estas “coisas” têm nos alunos e nos professores é crucial para preparar as diversas comunidades para um cenário em rápida mudança.
Referência:
Artificial Intelligence: A Modern Approach, 4th US ed.
by Stuart Russell and Peter Norvig
Artificial Intelligence: A Modern Approach, 4th US ed.
by Stuart Russell and Peter Norvig
A equipa da C.I.I.A. é formada por profissionais capacitados e consagrados nas suas disciplinas. Muitos dos nossos docentes também têm formação complementar em estratégias alternativas de aprendizagem.
Um assistente virtual é um trabalhador autónomo especializado em oferecer serviços administrativos a clientes de um local remoto, geralmente um serviço público cujos clientes são os habitantes da cidade, por exemplo.
As tarefas típicas que um assistente virtual pode realizar incluem agendar compromissos, fazer ligações, organizar roteiros, prestar informações sobre projetos em curso e gerir contas de e-mail.
Alguns assistentes virtuais são especializados em oferecer serviços de design gráfico, redação de blogs, contabilidade, redes sociais e marketing.
Para uma organização pública ou privada, uma vantagem de contratar um assistente virtual é a flexibilidade de contratar apenas os serviços de que necessita.
TAGLINE
CIÊNCIA de DADOS
A ciência de dados pode ser descrita como um campo interdisciplinar que combina métodos científicos, técnicas estatísticas, habilidades de programação e experiência no domínio, para extrair sugestões e
conhecimento acerca dos dados. Abrange vários processos, incluindo recolha de dados, limpeza, análise, interpretação e visualização. O objetivo principal da ciência de dados é descobrir informações valiosas que possam impulsionar a tomada de decisões informadas, a modelagem com previsão incorporada e a otimização de processos.
Big Data e Analytics – uma introdução possível
▶▶Definir Big Data e Analytics
▶▶Sugestões sobre a prática de análise
▶▶Aprender sobre fornecedores estabelecidos no mercado de big data
Definição de Big Data e Analytics
Às vezes, uma mudança quantitativa leva a uma mudança qualitativa. Com mais dados, nós precisamos de um processamento de dados mais eficiente. Este fenómeno é evidente na gestão da informação, onde o crescente volume e variedade de tipos de dados exigem mudanças fundamentais na forma como gerimos os dados. Além das fontes de dados tradicionais, como ferramentas de gestão financeira e gestão de relacionamento com o cliente, agora temos disponíveis dados de:
✓ Atividades de navegação online e análise de fluxo de cliques
✓ Logs do sistema que capturam informações sobre eventos em redes, dispositivos e aplicativos executados na infraestrutura de TI
✓ Sentimento e atividade nas redes sociais
✓ Um fluxo constante de feedback sobre o produto na forma de análises online
✓ Informações de dispositivos móveis, incluindo dados de localização e atividades de biliões de utilizadores de celulares
✓ Fornecedores – terceira parte - que estão a construir conjuntos de dados melhores e mais complexos sobre indivíduos e organizações
Os métodos tradicionais de recolha, filtragem, integração e análise de dados são insuficientes para a escala e a complexidade dos dados disponíveis para as empresas de hoje. Big data exige um novo tipo de infraestrutura.
Big Data e Analytics implicam não apenas uma mudança no volume de dados, mas também uma mudança na forma como trabalhamos com os dados.
“Um Olhar” para o surgimento de big data e analytics
É razoável perguntar por que os relatórios tradicionais do tipo business intelligence (BI) não são suficientes para extrair o máximo valor do big data. Afinal, BI é um domínio bem estabelecido com melhores práticas e um histórico de mais de 20 anos de fornecimento de valor em diversos sectores.
Os sistemas de relatórios de BI fazem bem várias coisas. Respondem a consultas ad hoc em dados estruturados. Por exemplo, se um analista de vendas precisar saber os volumes de vendas do trimestre atual de uma linha de produtos em comparação com as vendas do ano passado no mesmo trimestre, poderá facilmente obter os dados de um “data warehouse” ou de uma ferramenta de relatórios de “data mart”.
Da mesma forma, se um gestor regional quisesse aprofundar - saber -dados de desempenho para identificar lojas com baixo desempenho, poderia trabalhar com um cubo de processamento analítico online (OLAP) ou um relatório dimensional de “data warehouse” para encontrar esses dados. Cada um desses cenários exige o isolamento de um subconjunto de dados, como vendas por trimestre ou desempenho por loja, e depois a agregação desse subconjunto de dados, como a soma das vendas ao longo do tempo ou a média das margens entre as lojas.
Certamente, podemos gerar relatórios como esses em conjuntos de big data. No entanto, não iríamos descobrir correlação e conexão dentro desses conjuntos de dados. Para extrair mais valor, é necessário implantar dois tipos adicionais de análise: estatística e aprendizagem automática (ML).
Podemos recorrer a ferramentas de business intelligence existentes com big data, mas não perceberemos todo o potencial do big data sem ferramentas que explorem as propriedades exclusivas do big data.
Descrever e prever com estatísticas
A estatística é um ramo da matemática que se concentra na descrição de populações de dados e na utilização de dados para fazer previsões sobre eventos futuros. As estatísticas descritivas são amplamente utilizadas nos relatórios tradicionais de BI. Sempre que executamos um relatório que mostra mínimos, máximos, médias ou desvios padrão, estaremos a trabalhar com estatísticas descritivas. Alguns exemplos incluem:
✓ Recomendações personalizadas em vendas a retalho, seguros e outros sectores, oferecendo uma variedade de opções para os clientes escolherem
✓ Manutenção preditiva, como estimar o tempo provável até acontecer falha de um componente crítico de uma máquina industrial
O outro tipo de estatística são as estatísticas preditivas. Esses métodos usam dados para construir modelos, que são fórmulas matemáticas para fazer previsões com base num conjunto de dados.
A estatística descritiva ajuda a compreender as características dos conjuntos de dados, enquanto a estatística preditiva utiliza conjuntos de dados para fazer inferências sobre novas instâncias de populações semelhantes. Descrever o tamanho dos segmentos de clientes e a sua receita marginal média, é um tipo de estatística descritiva. Prever o impacto de diferentes ofertas de vendas nas mudanças nas vendas de produtos é um exemplo de estatística preditiva.
Encontrar padrões com aprendizagem automática (ML)
A aprendizagem automática é um campo da ciência da computação dedicado ao desenvolvimento de algoritmos que podem identificar uma ampla gama de padrões em dados. Esses padrões vêm em muitas formas e incluem o seguinte:
✓ Detetar produtos frequentemente comprados em ajuntamento, por grupo...
✓ Classificação de transações fraudulentas
✓ Fazer recomendações a um cliente com base nas escolhas de clientes semelhantes
✓ Discernir subgrupos, ou clusters, de clientes, transações, eventos ou outras entidades semelhantes dentro de uma grande população
O campo emergente de big data e analytics emprega técnicas adicionais às encontradas nas plataformas de business intelligence, e isso significa que são necessárias novas ferramentas.
Trabalhar com novas ferramentas para big data e analytics
Em posts (secções) posteriores, iremos detalhar diferentes ferramentas de big data e analytics, mas por enquanto é suficiente destacar diferentes tipos de ferramentas de big data e respetivos usos,
✓ Hadoop: Uma plataforma de armazenamento e processamento de big data que é quase sinônimo de big data. O termo Hadoop também é usado para descrever o amplo ecossistema de projetos de gestão, processamento e visualização de dados que funcionam com a plataforma central do “Hadoop”.
✓ NoSQL: Um banco de dados NoSQL (originalmente referindo-se a “não-SQL” ou “não relacional”) proporciona um mecanismo para armazenamento e recuperação de dados que é modelado por outros meios além das relações tabulares usadas em bancos de dados relacionais.
O campo de big data e analytics está a mudar rapidamente e novas ferramentas são lançadas com frequência. Fiquemos atentos a ferramentas especializadas que podem ajudar a resolver os nossos problemas específicos.
IA está a ser adoptada de forma ampla e rápida, inclusive no domínio da aviação. Embora o conceito de IA seja existente desde a década de 1950, o seu desenvolvimento foi acelerado significativamente na última década devido a três factores simultâneos:
• Capacidade de recolher e armazenar grandes quantidades de dados;
• Aumento do poder computacional; e
• Desenvolvimento de algoritmos e arquiteturas cada vez mais poderosas.
Os sistemas de IA já estão integrados em tecnologias quotidianas, como smartphones e assistentes virtuais, e podemos constatar que o sistema de aviação já está afetado por esta revolução tecnológica.
No que diz respeito ao sector da aviação, a IA não afeta apenas os produtos e serviços fornecidos pela indústria; também desencadeia o aparecimento de novos modelos de negócios. Isto afecta a maioria dos domínios sob o mandato da Aviation Safety Agency (EASA), e processos principais (certificação, regulamentação, aprovações de organizações e padronização) são afetados pelo seu impacto. Isto, por sua vez, afecta o quadro de competências do pessoal da Agência.
Além disso, a responsabilidade e a dimensão ética, social e societal da IA também devem ser consideradas.
Em outubro de 2018, a Agência criou um grupo de trabalho interno sobre IA, com vista a desenvolver um AI Roadmap 1.0 [1] que identificou, tudo quanto possível, para todos os domínios afetados da Agência:
• as principais oportunidades e desafios criados pela introdução da IA na aviação;
• como isso pode impactar a Agência em termos de organização, processos e regulamentos; e
• as ações que a Agência deverá empreender para enfrentar esses desafios.
A implementação do plano inicial gerou dois resultados principais:
Documento Conceptual
‘Primeira orientação utilizável para aplicações de ML de nível 1’ [2] em dezembro de 2021, e a nova revisão proposta desse documento, nomeadamente o 'Guidance for Level 1 & 2 ML Applications' [3] que foi divulgado ao público para consulta em fevereiro de 2023.
A atividade de IA evoluiu agora para um programa de IA entre domínios, no qual numerosos especialistas em todo o mundo
trabalham no envolvimento da Agência. Esta estrutura aumenta a capacidade da AESA para desenvolver uma abordagem da estratégia - abrangente - em relação à IA focada no âmbito ampliado por este Roteiro atualizado.
O âmbito e o plano desenvolvidos na versão 1.0 permaneceram válidos pelos 3 anos decorridos. Agora estão numa atualização com base no impulso do desenvolvimento tecnológico no campo da IA e nas perspectivas atualizadas da indústria da aviação.
Referência:
https://www.easa.europa.eu/en/official-publication
ChatGPT Prompts - Pilotos
ChatGPT, um poderoso modelo de linguagem de IA, já provou a sua utilidade em vários campos, desde chatbots de atendimento ao cliente (assistentes virtuais) até à geração de conteúdo.
As suas capacidades de compreensão de linguagem natural tornam-no numa ferramenta valiosa na aviação. A seguir estão algumas áreas principais onde o ChatGPT tem vindo a causar um impacto significativo:
· Planeamento pré-voo:
ChatGPT pode auxiliar os pilotos na fase de planeamento pré-voo, respondendo a perguntas, fornecendo atualizações meteorológicas e oferecendo recomendações com base na rota e no tipo de aeronave. Isto não só economiza tempo, mas também melhora a preparação geral do voo.
· Assistência em voo:
Durante o voo, os pilotos encontram uma série de cenários, desde a resolução de pequenos problemas técnicos até à tomada de decisões críticas. O ChatGPT pode fornecer conselhos e informações em tempo real, ajudando os pilotos a navegar nessas situações com confiança.
· Tradução de idiomas:
Num mundo cada vez mais globalizado, as barreiras linguísticas podem representar desafios. O ChatGPT pode traduzir rapidamente mensagens e instruções entre pilotos e controladores de tráfego aéreo, garantindo que informações cruciais sejam compreendidas com precisão.
· Resposta de Emergência:
Em caso de emergência, o ChatGPT pode fornecer orientação passo a passo para diversas situações, como falha de motor, problemas médicos ou condições climáticas incomuns. A sua capacidade de gerar respostas imediatas pode ser uma tábua de salvação em situações de crise.
Melhorar a tomada de decisões
A tomada de decisões eficaz é crucial na aviação.
ChatGPT também proporciona ajuda neste aspecto:
1. Análise de dados: ChatGPT pode processar grandes quantidades de dados em tempo real, ajudando os pilotos a tomar decisões informadas, fornecendo sugestões baseadas em dados, incluindo condições meteorológicas, opções de rota e gestão de combustível.
2. Consciência Situacional: O modelo pode monitorizar e avaliar continuamente a situação de voo. Se detectar alguma anomalia, poderá fornecer avisos antecipados e sugestões de ações corretivas.
3. Checklists e Procedimentos: ChatGPT pode auxiliar no cumprimento de checklists e procedimentos, garantindo que os pilotos não percam etapas críticas durante as diversas fases do voo.
4.Treino e Simulação: O ChatGPT pode ser usado em simulações de treino para expor os pilotos a diferentes cenários, ajudando-os a aprimorar as suas habilidades de tomada de decisão num ambiente seguro e controlado.
Desafios e Considerações
Embora as solicitações do ChatGPT ofereçam inúmeros benefícios à aviação, existem algumas considerações e desafios:
· Segurança de dados: proteger dados confidenciais de voo é fundamental. São necessárias medidas robustas de cibersegurança para salvaguardar as comunicações que envolvem sistemas de IA.
· Supervisão Humana: Embora o ChatGPT seja uma ferramenta poderosa, não deve substituir o papel crítico do julgamento humano e da tomada de decisões. Os pilotos devem sempre manter a autoridade final.
· Confiabilidade e Redundância: Os sistemas de IA devem ser altamente confiáveis. Devem existir medidas de redundância e sistemas de comunicação de backup em caso de falhas de IA.
Conclusão
As solicitações do ChatGPT para pilotos têm o potencial de revolucionar a comunicação e a tomada de decisões na aviação. Com a sua capacidade de aumentar a clareza da comunicação, reduzir a carga de trabalho e melhorar a tomada de decisões, estes avisos oferecem um apoio valioso numa indústria onde a segurança é fundamental. No entanto, a sua implementação deve ser feita com a devida diligência, garantindo a segurança dos dados e mantendo o elemento humano nos processos críticos de tomada de decisão. À medida que a tecnologia continua a avançar, é claro que a IA, tal como o ChatGPT, desempenhará um papel cada vez mais significativo na indústria da aviação, contribuindo em última análise para voos mais seguros e eficientes.
Os mecânicos de aeronaves diagnosticam problemas mecânicos ou elétricos.
Os mecânicos/técnicos de aeronaves normalmente fazem o seguinte:
· Diagnosticar problemas mecânicos ou elétricos
· Reparar asas, freios, sistemas elétricos e outros componentes da aeronave
· Substituir peças defeituosas usando ferramentas manuais ou elétricas
· Examinar as peças de reposição da aeronave em busca de defeitos
· Ler manuais de manutenção para identificar os procedimentos de reparação/manutenção
· Testar peças de aeronaves com medidores e outros equipamentos de diagnóstico
· Inspecionar o trabalho concluído para garantir que ele atenda aos padrões de desempenho
· Manter registos dos trabalhos de manutenção e reparo
Os técnicos de eletrónica aplicada à Aviação, à Astronáutica ou à Engenharia Aerospacial normalmente fazem o seguinte:
· Testar instrumentos eletrónicos, usando equipamentos de teste de circuito, osciloscópios e voltímetros
Interpretar dados de testes de voo para diagnosticar mau funcionamento e problemas de desempenho
Montar componentes, como controlos elétricos e caixas de junção, e instalar software
Instalar painéis de instrumentos, usando ferramentas manuais, ferramentas elétricas e ferros de solda
Reparar ou substituir componentes com defeito
Manter registos dos trabalhos de manutenção e reparação
A seguir estão exemplos de tipos de mecânicos e técnicos de aeronaves e equipamentos eletrónica aplicada à Aviação, à Astronáutica ou à Engenharia Aerospacial reparam e realizam manutenção programada em aeronaves:
Os mecânicos de fuselagem e motor (A&P) são mecânicos generalistas certificados que podem realizar de forma independente muitas tarefas de manutenção e alteração em aeronaves. Os mecânicos da A&P reparam e mantêm a maior parte das peças de uma aeronave, incluindo motores, trem de pouso, freios e sistema de ar condicionado. Algumas atividades especializadas requerem experiência e certificação adicionais.
Os mecânicos usam instrumentos de precisão para medir o desgaste e identificar defeitos. Podem usar raios X ou equipamentos de inspeção magnética ou ultrassônica para descobrir fissuras que não podem ser vistas no exterior de um avião. Verificam corrosão, distorção e ranhuras no corpo principal, nas asas e na cauda da aeronave. Em seguidales, reparam o metal, tecido, madeira ou materiais compostos que compõem a fuselagem e o revestimento.
Depois de concluir todos as reparações, os mecânicos testam o equipamento para garantir que tudo funciona corretamente e registam as manutenções realizadas na aeronave.
Os técnicos de aviónica (eletrónica aplicada à Aviação, à Astronáutica ou à Engenharia Aerospacial) reparam e realizam manutenção programada em aeronaves.
São especialistas que reparam e mantêm os instrumentos eletrónicos de um avião, como dispositivos e equipamentos de comunicação de rádio, sistemas de radar e auxílios à navegação. À medida que o uso da tecnologia digital aumenta, mais tempo é gasto na manutenção de sistemas de computador. A capacidade de reparar e manter muitos sistemas aviónicos e de instrumentos de voo é concedida através da qualificação de fuselagem, mas outras licenças ou certificações também podem ser necessárias.
Engenheiros de Operações de Voo
Os Engenheiros de Operações de Voo são responsáveis pelo planeamento de voo, análise meteorológica, monitorização e desempenho da aeronave, gestão de crises e colaboração com as tripulações de voo e pessoal de terra.
Uma carreira em engenharia aeronáutica abre um mundo de possibilidades ilimitadas, onde convergem a paixão pelo voo e a experiência em engenharia.
Entre as diversas funções da engenharia aeronáutica, os Engenheiros de Operações de Voo desempenham um papel crucial para garantir a operação perfeita das aeronaves e a segurança dos voos. Observemos o que acontece numa jornada esclarecedora acerca do domínio da Engenharia de Operações de Voo. Dos fundamentos das operações de voo aos mais recentes avanços na tecnologia da aviação, os candidatos a estudantes obterão informações valiosas para alimentar o seu interesse pela engenharia aeronáutica e definir parte do seu rumo para uma carreira gratificante como Engenheiros de Operações de Voo.
1. Engenharia de Operações de Voo:
Engenharia de Operações de Voo é uma área especializada da engenharia aeronáutica que se concentra no planeamento, gestão e otimização de operações de voo. Os engenheiros de operações de voo estão na vanguarda para garantir a operação segura, eficiente e tranquila das aeronaves durante toda a viagem.
2. Papel e responsabilidades de um engenheiro de operações de voo:
Os Engenheiros de Operações de Voo assumem responsabilidades vitais para garantir o sucesso das operações de voo:
a. Planeamento e navegação de voo: planeamento de rotas de voo, cálculo de necessidades de combustível e garantia de navegação ideal para voos.
b. Análise Meteorológica e Avaliação de Riscos potenciais para os voos.
c. Monitorização do Desempenho da Aeronave durante o voo para garantir o cumprimento dos padrões de segurança.
d. Análise e Otimização de Dados de Voo para identificar áreas de melhoria e otimizar as operações de voo.
e. Despacho e Comunicação de Voo eficaz com as tripulações de voo.
f. Gestão de Crises e Planeamento de Contingência, situações de crise ou emergências durante as operações de voo.
3. Princípios Fundamentais em Engenharia de Operações de Voo:
Para se destacar em Engenharia de Operações de Voo, é essencial compreender os princípios-chave:
a. Regulamentos e Padrões de Aviação: Os Engenheiros de Operações de Voo devem ser versados em regulamentos de aviação e padrões da indústria.
b. Software e ferramentas de planeamento de voo, ferramentas de navegação para gestão eficiente de voo.
c. Gestão de Segurança e Mitigação de Riscos,implementando estratégias de mitigação de riscos.
d. Colaboração e trabalho em equipa: A colaboração eficaz com tripulações de voo, controladores de tráfego aéreo e pessoal de terra é crucial para operações de voo tranquilas.
e. Tomada de decisões e pensamento crítico: Habilidades de tomada de decisões rápidas e eficazes são vitais em cenários dinâmicos de operações de voo.
4. Caminho educacional para se tornar um engenheiro de operações de voo:
Os aspirantes a Engenheiros de Operações de Voo devem seguir um caminho educacional específico:
a. Frequência do Ensino Superior em Engenharia Aeronáutica ou Gestão de Aviação: O diploma de formação em engenharia aeronáutica ou gestão de aviação serve de base para uma óptima carreira em Engenharia de Operações de Voo.
b. Treino e Certificações em Operações de Voo: Concluir treino especializado e obter certificações relevantes em operações de voo.
O Plano Estratégico é uma publicação com mandato federal que estabelece a Visão e Missão da NASA, os seus Valores Fundamentais e as suas Metas e Objetivos Estratégicos que devem ser alcançados para cumprir a Missão.
Referência:
https://www.nasa.gov/ocfo/strategic-plan/
(Novo prazo) Agência Espacial Portuguesa lança concurso para exploração de comando e controlo de satélites em Santa Maria (AÇORES)
Localizada na Ilha de Santa Maria, a antena TT&C de 15 metros da Agência Espacial Portuguesa representa uma capacidade adicional instalada no Teleporto de Santa Maria, nos Açores, que permitirá posicionar Portugal nas operações de missões espaciais internacionais, devido às suas características e desempenho excecionais.
A Agência Espacial Portuguesa lançou no dia 20 de janeiro, o concurso para a exploração de uma antena de 15 metros dedicada ao comando e controlo de satélites, instalada no Teleporto da ilha de Santa Maria, no Arquipélago dos Açores.
Os interessados deverão garantir a exploração comercial da antena com o objetivo de capacitar o ecossistema espacial nacional, promovendo o desenvolvimento das ciências e tecnologias do Espaço e a promoção da inovação e do emprego científico, nomeadamente na ilha de Santa Maria, contribuindo assim para alavancar o ecossistema espacial de Santa Maria.
Esta antena de 15 metros, de elevado desempenho, destina-se ao controlo e comando de satélites e missões espaciais nas bandas S e de banda X, com um desempenho semelhante às estações terrestres ESTRACK de 15 metros da Agência Espacial Europeia, e com capacidade para missões fora das órbitas terrestres.
“Esta infraestrutura tem como principal objetivo alavancar o Teleporto de Santa Maria, com novas capacidades, únicas em Portugal, permitindo assim a sua utilização em novas missões, em particular nas missões científicas da Agência Espacial Europeia, como por exemplo a missão para o estudo do SOL, Proba 3. Devido às suas características e desempenho, esta estação permitirá ainda posicionar Portugal nas redes internacionais dos operadores de estações terrestres ”, disse Ricardo Conde, presidente da Agência Espacial Portuguesa.
O concurso engloba os terrenos onde a antena se encontra instalada, a torre de suporte e as infraestruturas adjacentes e de suporte e prevê a assinatura de um contrato por um período de dez anos.
Para mais informações consulte a página de concursos do website da Agência Espacial Portuguesa.
https://ptspace.pt/pt/home/
Agência Espacial Portuguesa quer levar para a ilha de Santa Maria o Space Rider, um vaivém europeu que faz experiências com microgravidade, aproveitando o aeroporto daquela ilha.
“O Space Rider é um laboratório de microgravidade”, que permite “desenvolver novos produtos e sistemas”.
As experiências feitas com este vaivém vão, por exemplo, “transformar completamente a indústria farmacêutica”, já que permitem “fazer novos produtos de uma forma mais rápida”.
“Isso exige que, onde o Space Rider aterra, tem de haver laboratórios das empresas farmacêuticas”, acrescenta o responsável pela tutela; “trazer o Space Rider não é apenas usar um aeroporto magnífico e uma localização magnífica, é também trazer novas pessoas e criar empregos aqui em Santa Maria”.
Na página na internet da Portugal Space, esclarece-se que se trata de um veículo que permite “o acesso e retorno de cargas úteis para e do Espaço, possibilitando a investigação e desenvolvimento de novos produtos em ambiente de microgravidade”.
Este é, por isso, um projeto que “depende, em grande medida, da capacidade de ligar os sectores espaciais e não espaciais”.
Santa Maria surge como um local de desembarque para este sistema da Agência Espacial Europeia, “que permitirá à Europa ter um transporte viável para operações espaciais para e do Espaço, garantido à indústria europeia a capacidade de abrir novos mercados”, lê-se no ‘site’ da agência espacial portuguesa.
Industrialização Aeroespacial:
Direções Atuais e Futuras
A tecnologia aeroespacial está entre os campos mais inovadores, altamente integrados e inovadores da ciência e tecnologia modernas. Encontra amplas aplicações no campo da exploração e comunicações interplanetárias, com a tecnologia de navegação, orientação e controlo desempenhando um papel crítico no voo seguro e estável das aeronaves. Ao mesmo tempo, a indústria aeroespacial representa as proezas económicas e tecnológicas de um país e serve como um indicador significativo da sua dinâmica nacional abrangente e das suas capacidades de investigação, tornando-a uma prioridade máxima para o desenvolvimento em todo o mundo.
As principais áreas da industrialização aeroespacial compreendem estruturas de aeronaves, materiais e design dinâmico, juntamente com várias tecnologias e teorias científicas. O desenvolvimento de tecnologia de fabricação inteligente, equipamentos avançados e tecnologia de controlo inteligente autónomo promoverá o processo de industrialização aeroespacial e orientará a indústria aeroespacial em direção à inteligência, segurança, eficiência e sustentabilidade.
Com o rápido desenvolvimento da tecnologia de inteligência artificial (IA), a indústria aeroespacial civil e comercial enfrenta muitos desafios e problemas, por exemplo:
• como pode ser garantida a segurança dos dados e partilhada a informação?
• como podem ser alcançados o design de processos digitais e a produção inteligente?
• como a IA pode ser aplicada para alcançar baixo consumo de energia e controlo de alta eficiência?
Este Tópico de Investigação concentra-se em destacar as direções atuais e futuras na industrialização aeroespacial, sendo de particular interesse os avanços em diferentes técnicas, métodos e produtos específicos para este campo. O objetivo é mostrar os desenvolvimentos académicos, incluindo aplicações diretas para a indústria, e esperamos que esta recolha de ideias (e dados) reúna especialistas com visão de futuro de áreas interdisciplinares para destacar os avanços recentes e identificar objetivos futuros.
Os tópicos de interesse particular incluem, mas não estão limitados a coisas, tal como o seguinte:
• Tecnologias inteligentes de design e fabricação
• Segurança de dados e tecnologias de partilha de informações
• Diagnóstico de falhas e controlo tolerante a falhas de veículos aeroespaciais
• Controlo cooperativo de veículos aeroespaciais
• Partilha/Fusão de dados
• Tecnologias baseadas em aprendizagem na indústria aeroespacial
O QUE OS ENGENHEIROS AEROESPACIAIS FAZEM...
Engenheiros aeroespaciais projetam, desenvolvem e testam aeronaves, naves espaciais, satélites e mísseis. Além disso, criam e testam protótipos para garantir que funcionam de acordo com o design (projeto).
COMPROMISSOS
Os engenheiros aeroespaciais normalmente fazem o seguinte:
• Coordenar e dirigir o projeto, fabricação e testes de aeronaves e produtos aeroespaciais
• Avaliar propostas de projetos para determinar se são técnica e financeiramente viáveis
• Determinar se os projetos propostos serão seguros e atenderão às metas definidas
• Avaliar projetos para garantir que os produtos atendam aos princípios de engenharia, requisitos do cliente e regulamentações ambientais
• Desenvolver critérios para design, qualidade, conclusão e sustentação após a entrega
• Garantir que os projetos atendam aos padrões exigidos
• Inspecionar produtos com defeito ou danificados para identificar fontes de problemas e possíveis soluções.
Engenheiros aeroespaciais desenvolvem tecnologias para uso em aviação, sistemas de defesa e naves espaciais. Podem-se concentrar em áreas como fluxo aerodinâmico de fluidos; projeto estrutural; orientação, navegação e controlo; instrumentação e comunicação; robótica; ou propulsão e combustão.
Os engenheiros aeroespaciais podem projetar produtos específicos, como aviões e helicópteros comerciais e militares; aeronaves e helicópteros pilotados remotamente; naves espaciais, incluindo veículos de lançamento e satélites; e mísseis e foguetes militares.
A seguir mostramos os dois tipos comuns de engenheiros aeroespaciais:
(i) Engenheiros aeronáuticos trabalham com aeronaves. Estão envolvidos principalmente no projeto de aeronaves e sistemas de propulsão e no estudo do desempenho aerodinâmico de aeronaves e materiais de construção. Trabalham com a teoria, a tecnologia e a prática do voo na atmosfera terrestre.
(ii) Os engenheiros astronáuticos trabalham com a ciência e a tecnologia das naves espaciais e com o seu desempenho dentro e fora da atmosfera da Terra. Isso inclui trabalhar em pequenos satélites, como 'cubesats', e grandes satélites tradicionais.
Nota Técnica: Nanossatélite português Aeros MH-1
comunica com a Terra. Posicionado a 510 quilómetros de altitude, ligeiramente acima da Estação Espacial Internacional, MH-1 vai observar durante três anos o oceano Atlântico em particular. Esta posição privilegiada permitirá uma análise aprofundada dos fenómenos oceânicos", refere a empresa Thales Edisoft Portugal.
IA em ciência espacial e física solar: ter dados prontos para resolver problemas
No domínio da ciência espacial, numerosos dados terrestres e espaciais de vários fenómenos acumulam-se rapidamente, tornando a análise e a interpretação científica um desafio. No entanto, as tendências recentes na aplicação da inteligência artificial (IA) têm-se mostrado promissoras na extração de informações ou na descoberta de conhecimento a partir destes extensos conjuntos de dados. Coincidentemente, preparar estes dados para utilização como entradas para os algoritmos de IA, referidos como “prontidão para IA”, é um dos desafios pendentes no aproveitamento da IA na ciência espacial. A preparação de “dados prontos” para IA inclui, entre outros aspectos:
1) recolha (acesso e download) de dados apropriados representando os vários parâmetros físicos associados aos fenómenos em estudo a partir de diferentes repositórios;
2) abordar formatos de dados, como conversão de um formato para outro, lacunas de dados, sinalizadores de qualidade e rotulagem;
3) padronização de metadados e palavras-chave de acordo com os requisitos de arquivo da NASA ou outros padrões definidos;
4) processamento de dados brutos, como normalização de dados, eliminação de tendências e modelagem de dados; e
5) documentação de aspectos técnicos, como etapas de processamento, suposições operacionais, incertezas e perfis de instrumentos.
Tornar todos os dados existentes prontos para IA no prazo de uma década é impraticável e os dados de futuras missões e investigações agravam esta situação. Isto revela a urgência de definir os padrões e começar a implementá-los quanto antes.
Apresentamos (resumidamente) a nossa perspectiva sobre a prontidão para IA de dados científicos espaciais e estratégias de mitigação, incluindo a definição de prontidão para aplicações de IA; priorização de conjuntos de dados, armazenamento e acessibilidade; e identificar a entidade responsável (agências, sector privado ou indivíduos financiados) para realizar a tal tarefa urgente.
A ciência espacial é caracterizada pela abundância de dados observacionais adquiridos por naves espaciais e instrumentos terrestres. Durante décadas, os métodos estatísticos foram indispensáveis para a análise e interpretação destes dados. Com o avanço da tecnologia, estes dados estão cada vez mais disponíveis, em volume e diversidade, e está a tornar-se impraticável extrair informação científica útil destes ‘arquivos’ (terabytes e petabytes) de dados com métodos tradicionais. No entanto, a implementação da inteligência artificial (IA) nas ciências espaciais tem demonstrado ser uma ferramenta poderosa para análise e mineração de dados com capacidade preditiva. Métodos de IA, como aprendizagem automática (ML) e redes neuronais, são baseados em métodos estatísticos avançados e ciência de dados e provaram ser bem-sucedidos no aumento da modelação empírica e baseada na física e na análise de dados.
Isto inclui, mas não está limitado a, métodos como análise de séries temporais, segmentação, métodos bayesianos, inferência probabilística, teoria da informação e modelagem substituta. Esses métodos são críticos para futuras descobertas e descobertas científicas. Embora a interpretabilidade e a explicabilidade dos modelos de IA construídos com base em várias técnicas ainda estejam a ser exploradas e estabelecidas, IA e Science Data estão a revolucionar a forma como os problemas científicos na física espacial são conceptualizados e abordados.
Uma revisão desses métodos aplicados às ciências espaciais foi realizada na forma de uma conferência internacional virtual, “Applications of Statistical Methods and Machine Learning in the Space Sciences, organizada pelo Space Science Institute (2021) (http://spacescience.org/workshops/mlconference2021.php).
Esta conferência multidisciplinar reuniu especialistas em vários campos para comparar e contrastar métodos estatísticos e de IA e avaliar as necessidades de diferentes subcampos da ciência espacial. Os anais da conferência foram publicados como uma coleção temática Frontiers (Poduval et al., 2023).
Os investigadores das ciências espaciais que implementam métodos de IA encontraram várias dificuldades com os conjuntos de dados existentes. Conforme tem vindo a se discutido em várias conferências online sobre ciência espacial, organizar, padronizar e tornar facilmente acessíveis os dados existentes para a implementação de métodos de IA é um grande desafio. Argumentamos que, embora estes dados estejam disponíveis publicamente, a sua utilização para aplicações de IA exige um esforço considerável por parte de investigadores individuais que perseguem uma questão científica específica. Nesta seção, chamamos a atenção para a compilação dos problemas comuns encontrados ao usar esses dados para implementar métodos de IA. Problemas e limitações semelhantes existem em dados terrestres e em dados de outros domínios, como ciências atmosféricas, astronomia e cosmologia. Estes e outros problemas relacionados exigem estudos centrados nas barreiras existentes à utilização destes dados, bem como o desenvolvimento de um conjunto de dados consistente e bem documentado, facilmente acessível à comunidade científica num futuro próximo.
A engenharia aeroespacial é um campo complexo e dinâmico que requer um conhecimento profundo de aerodinâmica, ciência dos materiais, sistemas de propulsão e muito mais. Engenheiros e investigadores nesta área, muitas vezes precisam de informações rápidas e precisas para resolver problemas, projetar novas tecnologias ou explorar conceitos de ponta.
Neste 'post', tentamos explorar como os prompts do ChatGPT podem ser adaptados para auxiliar os engenheiros aeroespaciais no seu trabalho.
1. Resolução de problemas
Os engenheiros podem fornecer ao ChatGPT detalhes sobre um problema específico que estão a enfrentar.
Por exemplo, uma solicitação como:
“Preciso calcular o ângulo de ataque ideal para um veículo hipersónico viajando a Mach 5” pode levar a uma resposta detalhada com as equações e considerações necessárias.
2. Design e Otimização
ChatGPT pode ajudar os engenheiros a otimizar projetos, fornecendo sugestões com base nos parâmetros fornecidos. Por exemplo, um engenheiro pode questionar o modelo:
“Que materiais devo considerar para uma estrutura de nave espacial leve, mas robusta, para uma missão a Marte?”
A IA pode então sugerir materiais, discutir as suas propriedades e oferecer prós e contras.
3. Análise de dados
Os engenheiros aeroespaciais geralmente trabalham com grandes conjuntos de dados, como dados experimentais ou simulações. ChatGPT pode auxiliar na análise de dados gerando blocos de código Python para realizar cálculos ou visualizações específicas, facilitando a interpretação e a tomada de decisões dos engenheiros com base nos seus dados.
4. Exploração de conceito
Quando os engenheiros estão a debater novas ideias ou explorando novos conceitos, o ChatGPT pode ser um colaborador valioso.
Fazer perguntas como: “Quais são as vantagens potenciais de usar um motor 'scramjet' para propulsão de aviões espaciais?” pode levar a respostas informativas que ajudam os engenheiros a refinar os seus conceitos.
5. Documentação e Comunicação
ChatGPT pode auxiliar na elaboração de documentos técnicos, relatórios ou até mesmo apresentações. Os engenheiros podem fornecer ao modelo uma breve descrição do tópico e solicitar assistência na criação de conteúdo estruturado, equações ou diagramas.
Solicitações de adaptação para engenharia aeroespacial
Para aproveitar ao máximo o ChatGPT para tarefas de engenharia aeroespacial, é essencial saber elaborar prompts de maneira eficaz:
1.Seja específico:
defina claramente o problema ou questão que deseja abordar no seu prompt. Inclua detalhes relevantes, como parâmetros, condições ou restrições.
2.Usar linguagem técnica:
ChatGPT entende a terminologia técnica. Incorporar jargões e siglas da engenharia aeroespacial para melhorar a comunicação.
3.Pedir esclarecimentos:
Se a resposta inicial não for suficientemente detalhada, poderá fazer perguntas complementares ou solicitar informações mais específicas.
4.ChatGPT pode gerar respostas de forma conversacional.
Iterar e experimentar:
experimentar diferentes frases e instruções para ver qual delas produz as respostas mais precisas ou esclarecedoras.
This is the text area for this paragraph. To change it, simply click and start typing. Once you've added your content, you can customize its design.
Planeamento da Força de Trabalho
O Planeamento da Força de Trabalho (WFP) tornou-se um processo crítico para empresas baseadas em projectos, entendidas como empresas cujas actividades internas e externas são organizadas em projectos. Comparando a procura potencial de força de trabalho e a capacidade da força de trabalho, o planeamento desempenha um papel fundamental na orientação das decisões sobre a gestão de recursos humanos, contribuindo, se bem executado, para o sucesso da empresa. Portanto, as realizações dos projetos dependem fortemente do planeamento da força de trabalho. Na verdade, a escassez de mão de obra qualificada devido à gestão ineficaz da mão de obra é apresentada como uma das principais causas de atrasos nas obras. O planeamento e a programação inadequados revelaram-se como resultado da atribuição de obras a um empreiteiro principal e aos seus subcontratados que executam tarefas sem ter em conta a disponibilidade de trabalhadores onde há procura. Apesar da relevância do planeamento da força de trabalho, no que diz respeito à experiência multifacetada e ao conhecimento de diferentes autores – que trabalham como académicos, consultores e profissionais em contextos internacionais orientados para projetos – tem havido pouco esforço para fornecer às empresas orientadas para projetos uma visão clara. do processo tanto descritiva como operativamente, resultando numa falta de padronização do conhecimento e num potencial desalinhamento profundo entre diferentes organizações. Com base nisto, uma melhor compreensão dos factores-chave do planeamento da força de trabalho em contextos orientados para projectos seria útil tanto para profissionais como para investigadores. Com base numa revisão preliminar da literatura destinada a destacar qualquer possível lacuna na teoria e nas práticas provenientes de pesquisas anteriores sobre o WFP em empresas baseadas em projetos, esta chamada de atenção pretende responder a duas questões principais sobre quem está envolvido no processo de planeamento da força de trabalho em organizações orientadas por projetos:
1. quais são as ferramentas utilizadas para planeamento de mão de obra nessas empresas e,
2. com que frequência o planeamento de mão de obra é atualizado.
As respostas, integradas com os resultados de uma investigação realizada por dez empresas baseadas em projetos, qualificam a relevância académica e prática da publicação, onde são propostas algumas diretrizes gerais para desenvolver e melhorar um processo do WFP em empresas baseadas em projetos.
O impacto de promover situações colaborativas
A indústria está a introduzir massivamente tecnologias emergentes nos processos industriais, principalmente para aumentar a produtividade e a flexibilidade na produção. Esses processos industriais fazem muitas promessas e estão a mudar e a causar impacto nas organizações e naves industriais.
As indústrias modernas sublinham a importância do “factor humano” (HF) e da interação humano-tecnologia. Estão a surgir propostas para uma indústria “5.0” que enfatizam a importância de considerar o HF e a interação humano-tecnologia. É bastante comum investir numa tecnologia para “clarificar possibilidades tecnológicas” sem estudar as condições de implementação. Estas motivações para a introdução de mais HF podem ser insuficientemente precisas para orientar a concepção da situação de utilização. Sendo o operador o foco destas inovações, é importante questionar a melhoria das condições de trabalho para que o operador deixe de ser uma variável de ajustamento e possa aumentar a sua responsabilidade e autonomia. O operador deve ser capaz de desenvolver as suas capacidades de ação e sustentá-las ao longo do tempo.
Estes são pontos sobre os quais os ergonomistas da atividade, são particularmente sensíveis. Infelizmente, é típico que os operadores sejam pouco considerados, especialmente o ambiente social, tal como o ambiente de implementação. O método “technopush” ainda é amplamente utilizado. A forma como estas mudanças tecnológicas são implementadas pode ter um efeito importante na sua aceitação no local de trabalho. Portanto, seria interessante permitir que os operadores evoluíssem numa situação facilitadora, para que possam ter controlo sobre a situação e utilizar as suas capacidades. As condições que poderiam satisfazer tais objectivos foram definidas através da concepção de "Situações Colaborativas Facilitadoras" (ECS).
O trabalho de investigação (em particular, a análise da literatura), permite-nos abordar a questão de como ter em conta o HF na implementação de uma tecnologia emergente. Foi o contacto com este trabalho de investigação que nos permitiu extrair os fundamentos teóricos da ECS que temos em mente. O ECS é uma proposta teórica para facilitar a implantação da atividade do operador durante a implementação de uma tecnologia emergente. Para isso, propomos três critérios:
i) “aprender uma forma nova e mais eficiente de fazer as coisas”,
ii) “aumentar as possibilidades e formas disponíveis de fazer as coisas” e
iii) “ajustar os atributos homem-máquina de acordo com a evolução das situações ao longo do tempo”.
Após uma apresentação detalhada do ECS e dos seus critérios, o objetivo é verificar os critérios de desempenho visados no quadro de uma situação de trabalho que melhor possa respeitar os critérios do ECS.
O impacto das ferramentas de IA na experiência dos participantes em workshops de programação:
Ferramentas de IA como o ChatGPT têm benefícios significativos para os participantes: permitem que se trabalhe de forma construtiva de acordo com a sua própria programação e fornecem uma maneira fácil de pedir ajuda. No entanto, antes que estas ferramentas possam ser introduzidas de forma que exprima com clareza, expressiva, eloquente, num seminário ou workshop, o seu impacto na capacidade de aprendizagem do aluno, cada um deve ser avaliado e serem abordadas as preocupações que conduzam a menores competências de programação.
Realizamos um estudo preliminar para compreender as experiências de estudantes do ensino superior ao aprender a programar usando ferramentas de IA.
Os participantes são solicitados a realizar tarefas de programação sob uma das três condições:
· Sem ajuda externa
· Com a ajuda de um chatbot de IA
· Com a ajuda de uma ferramenta generativa de IA como GitHub Copilot
A nossa série de workshops de 2024 tem como tema o ensino de programação (com ou sem IA). Nesta atividade, exploramos as pesquisas mais recentes sobre como os professores podem apoiar melhor os alunos em idade escolar (ou não) no desenvolvimento das suas habilidades de programação.
Atualmente, tem havido muito interesse acerca do recurso ao ChatGPT (inteligência artificial generativa). Na engenharia de “prompt,” escolhemos os formatos, frases, palavras e símbolos mais adequados para orientar a IA a interagir com os seus utilizadores de forma mais significativa.
Podemos imaginar que o ano é 2025 e que o mundo passou por uma mudança de paradigma na forma como a inteligência artificial é utilizada no local de trabalho. O lançamento do ChatGPT da OpenAI e de outras plataformas criativas de IA marcou o início de uma revolução que transformou o cenário de competências, com a capacidade de fazer com que a IA se tornasse um ativo altamente valioso para os trabalhadores intelectuais, funcionários públicos, médicos, professores, governantes.
Vimos o surgimento da inteligência artificial como uma competência fundamental no local de trabalho, com o seu impacto na produtividade e na qualidade do trabalho a tornar-se cada vez mais evidente. Os especialistas em IA tornaram-se ativos inestimáveis nas grandes organizações, aproveitando o poder dos seus conjuntos personalizados de avisos para desbloquear todo o potencial da IA e impulsionar a inovação em vários sectores.
Inteligência Artificial – Caminho das pedras e livre arbítrio
A tinta mal havia secado no excelente artigo de Alan Turing, “Computing Machinery and Intelligence”, quando escritores de ficção científica e futurólogos começaram a brincar com a perspectiva de máquinas que pensam. Às vezes, imaginavam essas máquinas como figuras benignas ou mesmo nobres, como os agitados e alegres -estranhamente britânicos - andróides dos Star Wars. Outras vezes as máquinas são muito mais sinistras, tramando a destruição da espécie humana, como nos filmes Terminator, ou escravizando humanos numa realidade virtual, como em Matrix.
Em todos esses casos, as IAs dizem mais sobre as ansiedades dos guionistas ou sobre as capacidades do departamento de efeitos especiais do filme do que sobre a investigação real em inteligência artificial.
A inteligência artificial revelou-se um objectivo mais ilusório do que Turing alguma vez suspeitara, embora o enorme poder computacional das máquinas atuais tenha, sem dúvida, excedido as suas expectativas.
Algumass vezes temos escrito (falado) sobre várias razões deste lento progresso. Na década de 1970 e no início da década de 1980, a investigação em inteligência artificial foi dificultada pelo seu foco em sistemas baseados em regras... porque os sistemas baseados em regras revelaram-se no caminho errado. Eram muito frágeis. Qualquer ligeira alteração nas suas premissas de trabalho exigia que tudo fosse reescrito. Não conseguiam lidar bem com a incerteza ou com dados contraditórios. Finalmente, não eram cientificamente transparentes; não era possível provar matematicamente que eles se comportariam de determinada maneira e não era possível identificar exatamente o que precisava de reparação quando isso não acontecia. Nem todos os investigadores de IA se opuseram à falta de transparência. A área na época estava dividida em “limpos” (que queriam sistemas transparentes com garantias de comportamento) e “scruffies” (que queriam apenas algo que funcionasse). Nós sempre fizemos parte dos “legais”.
Tivemos a sorte de aparecer num momento em que o campo estava pronto para uma nova abordagem. As redes bayesianas, as redes neuronais eram probabilísticas; poderiam lidar com um mundo cheio de dados conflituosos e incertos. Ao contrário dos sistemas baseados em regras, eram modulares e facilmente implementados numa plataforma de computação distribuída, o que os tornava rápidos. Finalmente, como era importante para nós (e para outros “legais”), as redes bayesianas e redes neuronais lidavam com probabilidades de uma forma matematicamente sólida. Isso garantiu que, se algo desse errado, o bug estava na programação, e não no nosso pensamento.
Apresentamos em 1990 o nosso primeiro resultado de investigação aplicada: “Applying Neural Networks to Financial Data”
10 páginas mostradas na Universidade de Karlsruhe, com efeito e resultado de convites para trabalhar no “daimler-benz statistics laboratory institute” e posteriormente na Lyonnaise des Eaux France Compiègne onde se davam os primeiros passos (temerosos) em direção às redes neuronais na companhia da L'université de technologie de Compiègne (UTC).
Grande aventura com a construção do software suportado em 220 linhas de linguagem FoxBase.
Adiante! Esta aventura gerou o nosso rompimento com o LIACC – Laboratório de Inteligência Artificial e Ciência da Computação (U.P.); Grupos de Economia, Engenharia, Ciências.
Por definição, numa rede Bayesiana, a informação flui em ambas as direções, causal e diagnóstica: a fumaça aumenta a probabilidade de incêndio e o fogo aumenta a probabilidade de fumaça. Na verdade, uma rede bayesiana nem consegue dizer qual é a “direção causal”. A busca por essa anomalia — essa anomalia maravilhosa, como sentimos na pele — manteve-nos afastados do campo da aprendizagem automática (ML), onde regressamos apenas em 2008 com a aceitação do convite da Tecnalia Research & Innovation (Bilbao).
Nos últimos anos, o progresso mais notável na IA ocorreu numa área chamada “aprendizagem profunda”, que utiliza métodos como redes neuronais convolucionais. Estas redes não seguem as regras da probabilidade; não lidam com a incerteza de forma rigorosa ou transparente. Menos ainda incorporam qualquer representação explícita do ambiente em que operam. Em vez disso, a arquitetura da rede fica livre para evoluir por conta própria. Ao terminar de treinar uma nova rede, o programador não tem ideia de quais sejam os cálculos que estão a ser realizados ou por que raio funcionam. Se a rede falhar, ela não tem ideia de como se auto-reparar.
Talvez o exemplo prototípico seja o AlphaGo, um programa convolucional baseado em redes neuronais que joga o antigo jogo asiático Go, desenvolvido pela DeepMind, uma subsidiária do Google. Entre os jogos humanos de informação perfeita, Go sempre foi considerado o maluco mais duro da IA. Embora os computadores tenham conquistado o desafio aos humanos no xadrez em 1997, não eram considerados de bom nível nem mesmo para os jogadores profissionais de Go de nível mais baixo em 2015. A comunidade Go pensava que os computadores ainda estavam a uma década ou mais de distância de proporcionar aos humanos uma batalha real.
Recentemente, figuras públicas como Elon Musk e Stephen Hawking (enquanto viveu) foram dizendo publicamente que deveríamos estar preocupados.
No Twitter, Musk disse que as IAs eram “potencialmente mais perigosas que as armas nucleares”. Em 2015, o site Edge.org de John Brockman apresentou como sendo a sua pergunta anual, naquele ano: “O que acham das máquinas que pensam?”
Obteve 186 respostas ponderadas e provocativas (já publicadas num livro intitulado “What to Think About Machines That Think”.
A pergunta intencionalmente vaga de Brockman pode ser subdividida em pelo menos cinco perguntas relacionadas:
1. Já fabricamos máquinas que pensam?
2. Podemos fabricar máquinas que pensem?
3. Faremos algum dia máquinas que pensam?
4. Deveríamos fabricar máquinas que pensassem?
E, finalmente, a questão não formulada que está no cerne das nossas ansiedades:
5. Podemos fabricar máquinas capazes de distinguir o bem do mal?
A resposta à primeira pergunta é não, mas cremos que a resposta a todas as outras é sim. Certamente ainda não fabricamos máquinas que consigam pensar em qualquer interpretação humana da palavra. Até agora, só podemos simular o pensamento humano em domínios estritamente definidos que possuem apenas as estruturas causais mais primitivas. Podemos realmente fabricar máquinas que superam os humanos, mas isso não deveria ser surpresa porque esses domínios recompensam a única coisa que os computadores fazem bem: computar.
A resposta à segunda questão é quase certamente sim, se definirmos o pensamento como "sendo capaz de passar no teste de Turing. Dizemos isso com base no que aprendemos com o mini-teste de Turing. A capacidade de responder a perguntas em todos os três níveis da Gráfico de Causalidade proporciona as sementes do software de “agência” para que a máquina possa pensar sobre as suas próprias intenções e refletir sobre os seus próprios erros. Os algoritmos para responder a causas estão apenas a esperar que investigadores mais diligentes de IA as implementem.
A terceira questão depende, claro, de acontecimentos humanos que são difíceis de prever. Mas, historicamente, os humanos raramente se abstiveram de fabricar ou fazer coisas de que são tecnologicamente capazes. Em parte, isto acontece porque não sabemos se somos ou não tecnologicamente capazes de fazer algo até o fazermos realmente, seja clonar animais ou enviar astronautas à Lua.
A detonação da bomba atómica, contudo, foi um ponto de viragem: muitas pessoas pensam que esta tecnologia não deveria - nunca - ter sido desenvolvida.
Desde a Segunda Guerra Mundial, um bom exemplo de cientistas que se afastaram do viável foi a conferência de Asilomar, em 1975, sobre a recombinação do ADN, uma nova tecnologia vista pelos meios de comunicação em termos algo apocalípticos.
Os cientistas que trabalham neste campo conseguiram chegar a um consenso sobre práticas de segurança sensatas, e o acordo a que chegaram então, manteve-se durante as quatro décadas seguintes. O DNA recombinatório é agora uma tecnologia comum e madura.
Em 2017, o Instituto “Future of Life” convocou uma conferência semelhante em Asilomar sobre inteligência artificial e concordou num conjunto de vinte e três princípios para futuras investigações em “IA benéfica”. Embora a maioria das diretrizes não seja relevante para os tópicos discutidos aqui, as recomendações sobre ética e valores são definitivamente dignas de atenção. Por exemplo, as recomendações 6: “Os sistemas de IA devem ser seguros e protegidos durante toda a sua vida operacional, e de forma verificável”, e 7: “Se um sistema de IA causar danos, deve ser possível determinar porquê”, falam claramente da importância de transparência. A Recomendação 10: “Sistemas de IA altamente autónomos devem ser projetados para que os seus objetivos e comportamentos possam estar alinhados com os valores humanos ao longo de sua operação”, é bastante vaga conforme declarado, mas poderia receber significado operacional se esses sistemas fossem obrigados a ser capazes de declarar as suas próprias intenções e comunicarem com os humanos sobre causas e efeitos.
A nossa resposta à quarta pergunta também é sim, com base na resposta à quinta. Acreditamos que seremos capazes de fabricar máquinas capazes de distinguir o bem do mal, pelo menos de forma tão confiável quanto os humanos e, esperançosamente, de forma mais confiável. O primeiro requisito de uma máquina moral é a capacidade de refletir sobre as suas próprias ações, o que se enquadra na análise contrafactual. Uma vez que programamos a autoconsciência, por mais limitada que seja, seguem-se a empatia e a justiça, pois ela baseia-se nos mesmos princípios computacionais, com outro agente adicionado à equação.
Há uma grande diferença de espírito entre a abordagem causal para a construção do robô moral e uma abordagem que tem sido estudada repetidamente na ficção científica desde a década de 1950: as leis da robótica de Asimov.
Isaac Asimov propôs três leis absolutas, começando com “Um robô não pode ferir um ser humano ou, por inação, permitir que um ser humano sofra algum mal”.
Mas, como a ficção científica tem demonstrado repetidamente, as leis de Asimov conduzem sempre a contradições. Para os cientistas da IA, isto não é nenhuma surpresa: os sistemas baseados em regras nunca funcionam bem. Mas isso não significa que construir um robô moral seja impossível. Isso quer dizer que a abordagem não pode ser prescritiva e baseada em regras. Significa que devemos equipar as máquinas 'pensadoras' com as mesmas capacidades cognitivas que temos, que incluem empatia, previsão a longo prazo e auto-controlo... e depois permitir-lhes tomar as suas próprias decisões.
Depois de construirmos um robô moral, muitas visões apocalípticas começam a tornar-se irrelevantes. Não há razão para nos abstermos de construir máquinas que sejam mais capazes de distinguir o bem do mal do que nós, mais capazes de resistir à tentação, mais capazes de atribuir culpa e crédito. Neste ponto, tal como os jogadores de Xadrez e de Go, podemos até começar a aprender com a nossa própria criação. Seremos capazes de depender das nossas máquinas para ter um senso de justiça lúcido e sólido em termos de “causas”. Poderemos aprender como funciona o nosso software de livre arbítrio e como ele consegue esconder de nós os seus segredos. Tal máquina 'pensadora' seria (será) uma companheira maravilhosa para a nossa espécie e qualificar-se-á verdadeiramente como o primeiro e melhor presente da IA para a humanidade.
Referência:
Computing Machinery and Intelligence
https://link.springer.com/chapter/10.1007/978-1-4020-6710-5_3
Uma das características de um(a) engenheiro(a) é a capacidade para resolver problemas técnicos. A resolução deste tipo de problemas envolve uma combinação de arte e ciência. Por ciência entende-se um conhecimento dos princípios matemáticos, físicos e dos aspetos técnicos que têm de ser bem compreendidos, para que sejam aplicados corretamente. Por arte entende-se a avaliação correta, a experiência, o bom senso e o conhecimento que permitem representar um problema do mundo real por um modelo ao qual o conhecimento técnico pode ser aplicado para produzir uma solução.
A engenharia da computação utiliza os fundamentos da engenharia eletrotécnica e aplica-os especificamente aos computadores, concentrado-se no projeto de componentes de hardware e software. A engenharia computacional tem por objetivo formar profissionais com sólida preparação em física, matemática e informática, capazes de desenvolver e utilizar software que estude, modele e simule fenómenos naturais. A engenharia informática difere das engenharias tradicionais, no sentido em que trabalha com entidades imateriais. Ao passo que as engenharias tradicionais lidam com forças físicas, diretamente mensuráveis (por exemplo, a gravidade, os campos elétricos e magnéticos) e com objetos materiais que interagem com essas forças (por exemplo rodas dentadas, vigas, circuitos), a engenharia informática lida com entidades intangíveis que apenas podem ser observadas indiretamente através dos efeitos que produzem.
A engenharia informática tem como finalidade a concepção e realização de abstrações ou modelos de entidadesabstratas que, quando utilizadas por um computador, fazem com que este apresente um comportamento que corresponde à solução de um dado problema.
Por informação entende-se qualquer coisa que pode ser transmitida ou registada e que tem um significado associado à sua representação simbólica. Uma das características que distinguem o computador de outras máquinas que lidam com informação é o facto de este poder manipular a informação, para além de a armazenar e transmitir. A manipulação da informação levada a cabo pelo computador segue uma sequência de instruções a que se chama um programa.
Um dos objetivos da informática corresponde ao estudo e desenvolvimento de entidades abstratas durante a execução de programas - os processos computacionais.
Um processo computacional é um ente imaterial pode afetar objetos existentes no mundo real (por exemplo, guiar a aterragem de um avião, distribuir dinheiro em caixas MB, comprar e vender ações na bolsa), pode responder a perguntas num "assistente virtual" existente no átrio da Câmara Municipal, responder à nossa pergunta colocada num motor de busca da internet, etc.etc.etc.
A programação é uma atividade intelectual fascinante, que não é tão difícil como alguns apregoam, mas que requer muita disciplina. Utiliza muitas atividades e técnicas que são comuns em projetos de vários ramos de engenharia e ciências sociais:
· a compreensão do problema;
· a separação entre a informação essencial ao problema e a informação acessória;
· a criação de especificação pormenorizadas para o resolver;
· a verificação e os testes.
A tarefa de programação corresponde a dividir um problema grande e complexo em vários sub-problemas, cada vez mais simples e mais concentrados que podem ser expressos em termos de operações elementares.
A análise do sistema é uma revisão de um sistema tecnológico, como um pacote de software, para fins de encontrar solução de problemas, desenvolvimento ou melhoria. Através de análises aprofundadas, os analistas podem descobrir erros no código, problemas de acessibilidade para os utilizadores finais ou incompatibilidades de design/projeto.
O que é um algoritmo?
Um algoritmo é um procedimento usado para resolver um problema ou realizar um cálculo. Os algoritmos atuam como uma lista exata de instruções que conduzem diversas ações específicas passo a passo em rotinas baseadas em hardware ou software.
Algoritmos são amplamente utilizados em todas as áreas de computação/informática. Em matemática, programação de computadores e ciência da computação, um algoritmo geralmente refere-se a um pequeno procedimento que resolve um problema recorrente. Algoritmos também são usados como especificações para realizar o processamento de dados e desempenham um papel importante em sistemas automatizados.
Um algoritmo pode ser usado para classificar conjuntos de números ou para tarefas mais complicadas, como recomendar o conteúdo de um utilizador nas redes sociais. Os algoritmos normalmente começam com entradas iniciais e instruções que descrevem um cálculo específico. Quando a computação é executada, o processo produz uma saída.
Como funcionam os algoritmos?
Os algoritmos funcionam seguindo um conjunto de instruções ou regras para concluir uma tarefa ou resolver um problema. Podem ser expressos como linguagens naturais, linguagens de programação, pseudocódigo, fluxogramas e tabelas de controlo. Expressões em linguagem natural são raras, pois são mais ambíguas. Linguagens de programação são normalmente usadas para expressar algoritmos executados por um computador.
Os algoritmos usam uma entrada inicial junto com um conjunto de instruções. A entrada são os dados iniciais necessários para a tomada de decisões e podem ser representados na forma de números ou palavras. Os dados de entrada são submetidos a um conjunto de instruções, ou cálculos, que podem incluir processos aritméticos e de tomada de decisão. A saída é a última etapa de um algoritmo e normalmente é expressa como "mais dados".
Por exemplo, um algoritmo de pesquisa agarra numa consulta de pesquisa como entrada e executa essa pesquisa por meio de um conjunto de instruções para pesquisar numa base de dados, itens relevantes para a consulta. O software de automação atua como outro exemplo de algoritmos, pois a automação segue um conjunto de regras para concluir tarefas. Muitos algoritmos constituem softwares de automação e todos funcionam para automatizar um determinado processo.
Quais são os diferentes tipos de algoritmos?
Existem vários tipos de algoritmos, todos projetados para realizar tarefas diferentes:
· Algoritmo do mecanismo de pesquisa. Este algoritmo usa sequências de pesquisa de palavras-chave e operadores como entrada, pesquisa na sua base de dados associada páginas da web relevantes e retorna resultados.
· Algoritmo de criptografia. Este algoritmo de computação transforma os dados de acordo com ações específicas para protegê-los. Um algoritmo de chave simétrica, como o Data Encryption Standard, por exemplo, usa a mesma chave para criptografar e descriptografar dados. Se o algoritmo for suficientemente sofisticado, ninguém sem a chave poderá descriptografar os dados.
· Algoritmo ganancioso. Este algoritmo resolve problemas de otimização encontrando a solução localmente ótima, esperando que seja a solução ótima em nível global. No entanto, não garante a solução ideal.
· Algoritmo recursivo. Este algoritmo chama a si mesmo repetidamente até resolver um problema. Algoritmos recursivos chamam a si mesmos com um valor menor toda vez que uma função recursiva é invocada.
· Algoritmo de retrocesso. Este algoritmo encontra uma solução para um determinado problema em abordagens incrementais e resolve-o (uma parte de cada vez).
· Algoritmo de dividir e conquistar. Este algoritmo comum é dividido em duas partes. Uma parte divide um problema em subproblemas menores. A segunda parte resolve esses problemas e depois vai combina-los para produzir uma solução.
· Algoritmo de programação dinâmica. Este algoritmo resolve problemas dividindo-os em subproblemas. Os resultados são então armazenados para serem aplicados em futuros problemas correspondentes.
· Algoritmo de força bruta. Este algoritmo vai faze iterações cegamente, na procura de todas as soluções possíveis para um problema, procurando uma ou mais soluções para uma função.
· Algoritmo de classificação. Algoritmos de classificação são usados para reorganizar estruturas de dados com base num operador de comparação, que é usado para decidir uma nova ordem para os dados.
· Algoritmo aleatório. Este algoritmo reduz os tempos de execução e as complexidades baseadas no tempo. Usa elementos aleatórios como parte de sua lógica.
· Algoritmo de hash. Este algoritmo pega nos dados e converte-os numa mensagem uniforme com hash.
Para que serve o hash?
Recuperação de dados - Hashing usa funções ou algoritmos para mapear dados de objetos para um valor inteiro representativo. Um hash pode então ser usado para restringir pesquisas ao localizar esses itens no mapa de dados do objeto.
Por exemplo, em tabelas hash, os desenvolvedores armazenam dados – que pode ser um registo de cliente – na forma de pares de chave e valor. A chave ajuda a identificar os dados e funciona como uma entrada para a função hash, enquanto o código hash ou o inteiro é então mapeado para um tamanho fixo.
As tabelas hash suportam funções que incluem o seguinte:
inserir (chave, valor)
pegar (chave)
excluir (chave)
Exemplos de algoritmos?
A aprendizagem automática (ML) é um bom exemplo de algoritmo, pois usa vários algoritmos para prever resultados sem ter sido explicitamente programado para o fazer.
A aprendizagem automática usa aprendizagem supervisionada ou aprendizagem não supervisionada. Na aprendizagem supervisionada, os cientistas de dados fornecem algoritmos complexos com dados de treino rotulados e definem as variáveis que desejam que o algoritmo seja capaz de avaliar em busca de correlações. Tanto a entrada quanto a saída do algoritmo são especificadas.
A aprendizagem automática não supervisionada envolve algoritmos que treinam com dados não rotulados e os examinam em busca de padrões que possam ser usados para agrupar pontos de dados em subconjuntos. A maioria dos tipos de aprendizagem profunda, incluindo redes neuronais, são algoritmos não supervisionados.
A aprendizagem automática usada na inteligência artificial também depende de algoritmos. No entanto, os sistemas baseados em aprendizagem automática podem ter preconceitos inerentes aos dados que alimentam o algoritmo de aprendizagem automática. Isso pode resultar em sistemas não confiáveis e potencialmente prejudiciais.
Embora os algoritmos sejam amplamente usados em cenários de ciência da computação, IA e aprendizagem automática (ML), também são empregados com frequência na vida cotidiana.
A seguir estão alguns exemplos de algoritmos usados na vida real:
· Seguindo uma receita. As receitas fornecem uma série de etapas para atingir um objetivo específico, como preparar pudins de mirtilo ou fazer molho de espaguete a partir do zero. As receitas visam produzir resultados consistentes e ajudar os indivíduos - independentemente da sua formação - a criar um prato específico seguindo instruções detalhadas. Dessa forma, as receitas refletem algoritmos da ciência da computação, que descrevem etapas para gerar resultados reprodutíveis.
· Atar cordões é outro exemplo de como seguir um algoritmo. Por exemplo, há um número finito de etapas que levam a um nó de cordão tradicional devidamente amarrado, que é frequentemente chamado de nó ou "laçar, mergulhar e puxar".
· Reconhecimento facial. O reconhecimento facial é amplamente utilizado em logins do iPhone, bem como em filtros do Snapchat e Instagram. Funciona projetando traços faciais de uma foto ou vídeo num mapa biométrico usando um algoritmo.
O programa então procura uma correspondência entre este mapa e uma base de dados de rostos para confirmar a identificação do utilizador. Se o reconhecimento facial for usado para filtros do Snapchat ou Instagram, não há necessidade de pesquisar na base de dados porque o algoritmo simplesmente constrói um mapa do rosto e aplica-lhe o filtro.
· Sinais de trânsito. Os sinais de trânsito usam algoritmos inteligentes para gerir o fluxo de tráfego. Esses algoritmos agrupam diferentes algoritmos ou movimentos, como seguir em frente ou virar à direita, em fases, o que ajuda a garantir segurança e eficiência. Por exemplo, quando um motorista se aproxima de um sinal vermelho, o semáforo passa por essas fases. Ao avaliar o volume de tráfego, um algoritmo decide quando é seguro para o veículo avançar.
· Separação de documentos e papéis. Este é um ótimo exemplo de como algoritmos podem ser usados para diversas tarefas e propósitos, como classificar arquivos por ordem alfabética, por contagem de palavras, por data ou por quaisquer outras especificações. Quando alguém organiza os seus documentos pessoais ou profissionais de acordo com um conjunto de instruções, está a aplicar o pensamento algorítmico para simplificar o processo de organização por meio de pequenas tarefas.
· Procurar um livro na biblioteca. Encontrar um livro na biblioteca é como seguir um algoritmo ou um plano passo a passo. Por exemplo, existem diferentes formas de fazer isso, como utilizar o sistema de informática da biblioteca ou procurar nas estantes etiquetas que indiquem o género, assunto ou autor do livro. Não importa qual método escolher, se puder ser explicado e feito por outros, então pode ser classificado como um algoritmo.
Python é o quê ?
Python é uma linguagem de programação popular. Foi criado por Guido van Rossum e lançado em 1991.
É usado para:
· desenvolvimento web (lado do servidor),
· desenvolvimento de software,
· matemática,
· script do sistema.
O que pode fazer o Python ?
· Python pode ser usado num servidor para criar aplicativos web.
· Python pode ser usado junto com outro software para criar fluxos de trabalho.
· Python pode-se conectar a sistemas de banco (base) de dados. Também pode ler e modificar arquivos.
· Python pode ser usado para lidar com big data e realizar operações de matemática complexa.
· Python pode ser usado para prototipagem rápida ou para desenvolvimento de software pronto para produção.
Python Porquê ?
· Python funciona em diferentes plataformas (Windows, Mac, Linux, Raspberry Pi, etc).
· Python possui uma sintaxe simples semelhante à da língua inglesa.
· Python possui sintaxe que permite aos desenvolvedores escrever programas com menos linhas do que algumas outras linguagens de programação.
· Python é executado num sistema interpretador, o que significa que o código pode ser executado assim que for escrito. Isso significa que a prototipagem pode ser muito rápida.
· Python pode ser tratado de forma processual, orientada a objetos ou funcional.
É bom saber que:
A versão principal mais recente do Python é o Python 3, que usaremos neste tutorial. No entanto, o Python 2, embora não seja atualizado para além de atualizações de segurança, ainda é bastante popular.
INSTALAR a linguagem PYTHON (1)
------------------------------------------------------------------------------------------------------------------------------------------------------------
Instalação
Normalmente, o pip é instalado automaticamente se o programador:
trabalhar num ambiente virtual e estiver a usar Python que foi baixado de python.org
Métodos Suportados
Se o seu ambiente Python não tiver o pip instalado, existem 2 mecanismos para instalar o pip suportados diretamente pela equipa de manutenção do pip (pip é um sistema de gestão de pacotes padrão de facto, usado para instalar e gerir pacotes de software escritos em Python. Muitos pacotes podem ser encontrados na fonte padrão para pacotes e suas dependências - Python Package Index. A maioria das distribuições do Python vem com o pip pré-instalado):
[pip =
garantir pip
get-pip.py
garantir pip
Python vem com um módulo securepip[1], que pode instalar o pip num ambiente Python.
Mac OS
Windows
Mais detalhes sobre como o assegurar que
pip funciona e como ele pode ser usado estão disponíveis na documentação da biblioteca padrão.
get-pip.py
Este é um script Python que usa alguma lógica de inicialização para instalar o pip.
Baixar o script em https://bootstrap.pypa.io/get-pip.py.
Abrir um terminal/prompt de comando, fazer cd para a pasta que contém o arquivo get-pip.py e executar:
Mac OS
Windows
Mais detalhes sobre este script podem ser encontrados no README do pypa/get-pip.
Além de instalar o pip no seu ambiente, o pip está disponível como um aplicativo zip independente. Isso pode ser baixado em https://bootstrap.pypa.io/pip/pip.pyz. Existem também aplicativos zip para versões específicas do pip, chamados pip-X.Y.Z.pyz.
O aplicativo zip pode ser executado usando qualquer versão suportada do Python:
Mac OS
Windows
Se executado diretamente:
Mac OS
Windows
então o interpretador Python atualmente ativo será usado.
How to install pip in macOS ?
Before we start with how to install pip for Python on macOS, let’s first go through the basic introduction to Python.
Python is a widely-used general-purpose, high-level programming language. Python is a programming language that lets you work quickly and integrate systems more efficiently. PIP is a package management system used to install and manage software packages/libraries written in Python. These files are stored in a large “on-line repository” termed as Python Package Index (PyPI). pip uses PyPI as the default source for packages and their dependencies. In this article, we will see How to Install PIP on a Mac. Using pip you can install any package using the following syntax:
Syntax of pip
pip install package_name
Download and Install Pip on macOS
pip can be downloaded and installed usingthe command line by going through the following steps:
Step 1: Download the get-pip.py(https://bootstrap.pypa.io/get-pip.py) file and store it in the same directory as python is installed. or Use the following command to download pip directly
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
Step 2: Now execute the downloaded file using the below command
python3 get-pip.py
Step 3: Wait through the installation process.
Voila! pip is now installed on your system.
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
Step 2: Now execute the downloaded file using the below command
python3 get-pip.py
Step 3: Wait through the installation process.
Voila! pip is now installed on your system.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
.pkg
installer.$ brew install wget
/opt/homebrew
(on Apple Silicon).$ cd /opt/homebrew
$ find Cellar
Cellar/wget/1.16.1
Cellar/wget/1.16.1/bin/wget
Cellar/wget/1.16.1/share/man/man1/wget.1
$ ls -l bin
bin/wget -> ../Cellar/wget/1.16.1/bin/wget
$ brew create https://foo.com/foo-1.0.tgz
Created /opt/homebrew/Library/Taps/homebrew/homebrew-core/Formula/foo.rb
$ brew edit wget # opens in $EDITOR!
class Wget < Formula
homepage "https://www.gnu.org/software/wget/"
url "https://ftp.gnu.org/gnu/wget/wget-1.15.tar.gz"
sha256 "52126be8cf1bddd7536886e74c053ad7d0ed2aa89b4b630f76785bac21695fcd"
def install
system "./configure", "--prefix=#{prefix}"
system "make", "install"
end
end
gem
and their dependencies with brew
.$ brew install --cask firefox
$ brew create --cask https://foo.com/foo-1.0.dmg
Editing /opt/homebrew/Library/Taps/homebrew/homebrew-cask/Casks/foo.rb
brew
command documentationINSTALAR/TRABALHAR com Jupyter (2)
------------------------------------------------------------------------------------------------------------------------------------------------------------
As ferramentas do Projeto Jupyter estão disponíveis para instalação por meio do Python Package Index, o principal repositório de software criado para a linguagem de programação Python.
Esta página usa instruções com pip, a ferramenta de instalação recomendada para Python. Se precisar de gerir o ambiente em vez de apenas "instalação", <<look into conda, mamba, pipenv, and Homebrew>>
consultar conda, mamba, pipenv e Homebrew.
Install JupyterLab with
pip
:
pip install jupyterlab
Note: If you install JupyterLab with conda or mamba, we recommend using the conda-forge channel.
Once installed, launch JupyterLab with:
jupyter lab
Install the classic Jupyter Notebook with:
pip install notebook
To run the notebook:
jupyter notebook
Install Voilà with:
pip install voila
Once installed, launch Voilà with:
voila
Homebrew is a package manager for macOS and Linux. You can use it to install Jupyter by running:
brew install jupyterlab
https://jupyter.org/
...................................
JupyterLab is the latest web-based interactive development environment for notebooks, code, and data. Its flexible interface allows users to configure and arrange workflows in data science, scientific computing, computational journalism, and machine learning. A modular design invites extensions to expand and enrich functionality.
INSTALAR/TRABALHAR com COLAB (3)
------------------------------------------------------------------------------------------------------------------------------------------------------------
Ensinar a trabalhar com Colab (Parte 2 de 2)
https://colab.research.google.com/
+ Código + Texto Copiar para o Drive
Nota Técnica: Deve ter ativado o seu Google Drive
<<Acesso fácil e seguro ao seu conteúdo
Armazenar, partilhar e colaborar em ficheiros e pastas a partir do seu dispositivo móvel, tablet ou computador
Experimentar o Drive para o trabalho
Aceder ao Drive
Não tem uma conta? Inscreva-se sem qualquer custo>>
Files... código... dados são arquivados na CLOUD (Google Drive)
Vamos começar... https://colab.research.google.com/
https://medium.com/google-colab/teaching-with-colab-part-2-841c4de526e9
Na Parte 1, explicamos por que o Colab é ótimo para ensinar programação Python.
Neste blog entraremos em detalhes - mostraremos alguns exemplos específicos de como o Colab pode melhorar o seu kit de ferramentas de ensino linguagem Python.
Notas de aula interativas
Muitos professores partilham as suas anotações de aula como slides ou documentos, o que é bom, mas esses são decididamente artefactos somente de leitura. Não seria bom se as suas anotações de aula pudessem ser interativas, como este exemplo:
Exemplo de notas de aula interativas
Os alunos também podem verificar sua compreensão, como no exemplo a seguir:
We can also do arithmetic with variables right inside the print function:
> Print (“weight in pounds:”, 2.2 * weight_kg
Note that the above function call did not change the value of weight_kg:
[ ] print (weight_kg)
<<Também podemos praticar aritmética com variáveis dentro da função de impressão
> imprimir ("peso em libras: ", 2.2 * peso_kg)
Observar que a chamada de função acima não alterou o valor>>
Os alunos também podem verificar a sua compreensão, como no exemplo a seguir:
§ Verificar a sua compreensão
Que valores têm as variáveis massa e idade após cada uma das afirmações a seguir?
Adivinhe antes de executar as linhas abaixo…
[ ] massa = 47.5
print(“massa é”, massa)
print(“idade é”, idade)
As notas de aula interativas oferecem múltiplas vantagens sobre as suas partes contrárias:
Durante a aula, em vez de apenas afirmar que algo é verdade, podemos provar isso executando o código incorporado diretamente nas nossas anotações.
Depois da aula, os alunos podem rever ativamente as suas anotações executando o caderno e vendo como funcionam por si próprios.
Os alunos podem experimentar, fazer alterações no código e ver os resultados.
Os alunos podem fazer anotações, tudo numa cópia digital.
Com esta abordagem, as notas da aula ganham vida, o que leva à aprendizagem ativa – proporcionando aos alunos um campo interativo onde podem experimentar e aprender fazendo.
Certifique-se de que os alunos começam do zero - desejamos que cada aluno comece com a sua própria cópia de um determinado "bloco de notas" da aula para que possam alterar, anotar e experimentar livremente sem afetar a sua cópia oficial. Para encorajar essa abordagem, todos os nossos cadernos começam com as seguintes orientações:
Lição 1 - Variáveis e Tipos
Link para este notebook (bloco de notas) mco.fyi/py1 <<https://mco.fyi/py1>>
Deve fazer a sua própria cópia deste notebook selecionando Arquivo > Salvar uma cópia no Drive na barra de menu acima
Lição de casa digital
Os cadernos interativos são ótimos para tarefas de casa, porque pode sempre:
· Dispor a meta da tarefa e as instruções em células de marcação (blocos de programação).
· Incluir todas as etapas de configuração (por exemplo, instalação dos pacotes necessários) numa célula de código.
· Fornecer quaisquer funções auxiliares necessárias ou outro código utilitário.
· Incluir sugestões de código e blocos de construção.
Aqui está um exemplo de pergunta do trabalho de casa:
Questão 1
Escrever uma função chamada total que retorne a soma de um intervalo de inteiros começando com o primeiro valor passado e terminando com um a menos que o segundo valor passado.
Por exemplo, total(4, 7) retorna 15 (4 + 5 + 6).
[ ] # Adicionar o seu código aqui
def total(a,b):
Variáveis
Qualquer interpretador Python pode ser usado como calculadora:
[ ]
print(3 + 5 * 4)
Isso é ótimo, mas não muito interessante. Para fazer algo útil com os dados, precisamos atribuir o seu valor a uma variável.
Em Python, podemos atribuir um valor a uma variável usando o sinal de igual =.
Se uma variável ainda não existir, quando lhe atríbuímos um valor, o Python vai criá-la instantaneamente. Se atribuir um valor a uma variável que já existe, o Python substituirá o seu valor atual por um novo valor.
Exemplos
instructor = "marc" # valor da sequência (string)
instructor = "my evil twin" # mesmo nome, valor de string diferente
instructor = 42 # mesmo nome, valor inteiro
todays_high_temp = 71.3 # nome diff, valor de ponto flutuante
Podemos rastrear o peso de um paciente que pesa 60 quilos atribuindo o valor 60 a uma variável peso_kg:
[ ]
peso_kg = 60
print(peso_kg)
A partir de agora, sempre que usarmos
peso_kg, o Python substituirá o valor que lhe atribuímos. Em termos mais simples, "uma variável é uma referência a um valor".
Em Python, nomes de variáveis:
· pode incluir letras, dígitos e sublinhados
· não é possível começar com um dígito
· distinguem maiúsculas de minúsculas
Isto significa que, por exemplo:
· peso0 é um nome válido de variável, enquanto 0peso não é
· peso e Peso são variáveis diferentes
Palavras reservadas
As palavras a seguir têm um significado especial em Python. Nós chamamos-lhe "palavras-chave" ou "palavras reservadas" e não podemos usar esses nomes para variáveis do nosso programa.
and, as, assert, break, class, continue, def, del, elif, else, except, False, finally, for, from, global, if, import, in, is, lambda, nonlocal, None, not, or, pass, raise, return, True, try, while, with, yield
Tipos de dados
Python conhece vários tipos de dados. Três deles - mais comuns - são:
· Números inteiros
· Números de ponto (vírgula) flutuante
· Cadeias de caracteres ou strings
No exemplo acima, à variável peso_kg foi atribuído um valor inteiro de 60.
Se quisermos rastrear com mais precisão o peso do nosso paciente, podemos usar um valor de ponto flutuante executando:
[ ]
peso_kg = 60,0
print(peso_kg)
Para criar uma string, adicionamos aspas simples ou duplas em algum texto. Para identificar e rastrear um paciente ao longo do nosso estudo, podemos atribuir a cada pessoa um identificador exclusivo, armazenando-o numa string:
[ ]
id_paciente = "001"
print(paciente_id)
Tipos Numéricos
Python suporta dois tipos principais de números
int, números inteiros assinados de tamanho arbitrário, como estes:
2011
-999999999999
float, números de ponto (vírgula) flutuante de precisão arbitrária, como estes:
3.14159 ou 3,14159
3.8*10**6 ou 3,8*10**6
Na maioria das vezes, não precisamos de nos preocuparmos com que tipo de número usar - o Python cuidará disso para nós.
O ponto decimal informa ao Python qual terá de usar.
A mistura de floats e ints resulta num float, então, por exemplo, 2011 * 3.14 resulta em número de ponto flutuante.
Tente inserir essas expressões na seguinte célula (linha de código):
print(5 - 6)
print(8 * 9)
print(6 / 2)
print(5.0 / 2)
print(5 % 2)
print(2 * 10 + 3)
print(2 * (10 + 3))
print(2 ** 4)
Houve algum resultado que não estivesse à espera?
[ ]
print(5 - 6)
print(8 * 9)
print(6 / 2)
print(5.0 / 2)
print(5 % 2)
print(2 * 10 + 3)
print(2 * (10 + 3))
print(2 ** 4)
print(8 % 3)
© -1
72
3.0
2.5
1
23
26
16
2
Usar variáveis em Python
Assim que tivermos os dados armazenados com nomes de variáveis, podemos fazer uso dessas variáveis ao longo dos nossos cálculos. Chamamos expressões a essas combinações de variáveis e valores. Ao avaliar uma expressão, o Python substitui internamente os nomes das variáveis pelos valores aos quais elas se referem.
Podemos querer armazenar o peso do nosso paciente em libras e também em quilogramas:
[ ] peso_lb = 2.2 * peso_kg
print(peso_lb)
Também podemos decidir adicionar um prefixo ao nosso identificador de paciente:
[ ] patient_id = "inflam_" + patient_id
print(patient_id)
Funções Python integradas
Para realizar tarefas comuns com dados e variáveis em Python, a linguagem fornece-nos diversas funções integradas.
Para exibir informações no ecrã, usamos a função
print:
[ ] print(peso_lb)
print(patient_id)
Quando queremos fazer uso de uma função, chamada de função, seguimos o seu nome entre parênteses. Os parênteses são importantes:
- se queremos deixá-los desligados, a função não será executada de facto!
Às vezes incluiremos valores ou variáveis entre parênteses para a função usar.
No caso de print, usamos os parênteses para informar à função qual é o valor que queremos exibir.
Aprenderemos mais sobre como as funções funcionam e como criar as nossas próprias funções em lições posteriores.
Podemos exibir várias coisas ao mesmo tempo que usamos apenas uma chamada de função de impressão:
[ ] print(patient_id, "peso em quilogramas:", peso_kg)
Observemos que a chamada de função acima não alterou o valor de peso_kg:
[ ] print(peso_kg)
Para alterar o valor da variável peso_kg, temos que atribuir um novo valor a peso_kg usando o sinal de igual =:
[ ] peso_kg = 65,0
print("peso em quilogramas agora é:", peso_kg)
------------------------------------------------------------------------------------------------------------------------------------------------------------
Neste tutorial a linguagem Python será usada numa plataforma TensorFlow
Sintaxe Python em comparação com outras linguagens de programação:
· Python foi projetado para ser legível e tem algumas semelhanças com a língua inglesa com influência da matemática.
· Python usa novas linhas para completar um comando, ao contrário de outras linguagens de programação que costumam usar ponto e vírgula ou parênteses.
· Python depende de indentação, usando espaços em branco, para definir o âmbito; como o limite do trabalho, sejam "loops", funções e classes. Outras linguagens de programação costumam usar chaves ou parênteses para essa finalidade.
Colab: uma maneira fácil de aprender e usar o TensorFlow
Colaboratory é um ambiente de notebook Jupyter hospedado de uso gratuito e que não requer configuração. Provavelmente, já deve ter visto isso nalguma introdução ao Machine Learning, ou num tutorial de execução do tensorflow.org ou em vários textos de pesquisa (como este). Deixamos aqui 5 sugestões úteis para usar:
1. O TensorFlow já está pré-instalado
Quando criar um novo notebook em colab.research.google.com, o TensorFlow já vem pré-instalado e otimizado para o hardware em curso. Basta importar o tensorflow como tf e começar a codificar.
2. Configurar as suas bibliotecas e dependências de dados em células de código (são os locais onde escreve o seu código Python)
Criar uma célula com !pip install ou !apt-get funciona conforme o esperado. Também torna mais fácil para outras pessoas reproduzirem a sua configuração.
Para obter os dados de treino, pode seguir estes tutoriais para fontes de dados populares: BigQuery, Drive, folhas de cálculo Google Cloud Storage. Também tem acesso ao shell com !, então !wget, !pwd, etc. também podem ajudar.
<<O acesso Shell, comumente referido como SSH (Secure SHell), é o acesso remoto de linha de comando a um servidor. Ter acesso à linha de comando (se estiver familiarizado com o seu uso) pode ser muito útil.>>
3. Usar com Github
Se tiver um bom .ipynb no Github, é fácil criar o link de um clique para os seus leitores/alunos começarem a brincar com ele.
Basta adicionar o caminho do Github a colab.research.google.com/github/ .
Por exemplo,
colab.research.google.com/github/tensorflow/tensor2tensor/blob/master/tensor2tensor/notebooks/hello_t2t.ipynb
carregará este ipynb armazenado no Github.
Também pode gravar facilmente uma cópia do seu notebook Colab no Github usando Arquivo > Salvar uma cópia no Github…
4. Partilhar e editar de forma colaborativa
Os cadernos Colab são como Documentos e folhas de cálculo Google. São armazenados no Google Drive e podem ser partilhados, editados e comentados de forma colaborativa. Basta clicar no botão "Share button" (partilhar) no canto superior direito de qualquer bloco de notas que tenha criado.
5. Aceleração de hardware
Por padrão, os notebooks Colab são executados na CPU. Pode mudar o seu notebook para funcionar com GPU acedendo Runtime > Change runtime type e selecionando GPU. Também pode fazer com que um notebook Colab use o hardware da sua máquina local seguindo estas instruções.
Usar o link colab.research.google.com
O que é o Colab?
O Colab, ou "Colaboratory", permite-lhe escrever e executar código Python no seu navegador com
· Sem configuração necessária
· Acesso às GPUs sem custo financeiro
· Partilha fácil
· Quer seja aluno, cientista de dados ou investigador de IA, o Colab pode facilitar o seu trabalho.
Veja a Introdução ao Colab para saber mais ou simplesmente comece a utilizá-lo abaixo!
Introdução
O documento que está a ler não é uma página Web estática, mas sim um ambiente interativo chamado bloco de notas do Colab que lhe permite escrever e executar código.
Por exemplo, eis uma célula de código com um curto
script do Python que calcula um valor, armazena-o numa variável e imprime o resultado:
[ ]
seconds_in_a_day = 24 * 60 * 60
seconds_in_a_day
86400
Para executar o código na célula acima, selecione-a com um clique e, em seguida, prima o botão Play à esquerda do código ou utilize o atalho de teclado "Command/Ctrl+Enter". Para editar o código, basta clicar na célula e começar a editar.
As variáveis que define numa célula podem ser utilizadas noutras células posteriormente:
[ ]
seconds_in_a_week = 7 * seconds_in_a_day
seconds_in_a_week
604800
Os blocos de notas do Colab permitem-lhe combinar código executável e texto num único documento, juntamente com imagens, HTML, LaTeX e muito mais. Quando criar os seus próprios blocos de notas do Colab, estes são armazenados na sua conta do Google Drive.
Pode partilhar facilmente os seus blocos de notas do Colab com colegas de trabalho ou amigos, permitindo que estes comentem os seus blocos de notas ou até mesmo que os editem. Para saber mais, consulte Vista geral do Colab.
Para criar um novo bloco de notas do Colab, pode utilizar o menu Ficheiro acima ou o seguinte link:
criar um novo bloco de notas do Colab.
Os blocos de notas do Colab são blocos de notas do Jupyter alojados pelo Colab. Para saber mais acerca do projeto Jupyter, consultar jupyter.org.
## Ciência de dados
</div>
Com o Colab, pode aproveitar todo o poder das populares bibliotecas do Python para analisar e visualizar dados. A célula de código abaixo utiliza <strong>numpy</strong> para gerar alguns dados aleatórios e <strong>matplotlib</strong> para os visualizar. Para editar o código, basta clicar na célula e começar a editar.
import numpy as np
import IPython.display as display
from matplotlib import pyplot as plt
import io
import base64
ys = 200 + np.random.randn(100)
x = [x for x in range(len(ys))]
fig = plt.figure(figsize=(4, 3), facecolor='w')
plt.plot(x, ys, '-')
plt.fill_between(x, ys, 195, where=(ys > 195), facecolor='g', alpha=0.6)
plt.title("Sample Visualization", fontsize=10)
data = io.BytesIO()
plt.savefig(data)
image = F"data:image/png;base64,{base64.b64encode(data.getvalue()).decode()}"
alt = "Sample Visualization"
display.display(display.Markdown(F"""![{alt}]({image})"""))
plt.close(fig)
Pode importar os seus próprios dados para os blocos de notas do Colab a partir da sua conta do Google Drive, incluindo de folhas de cálculo, assim como do GitHub e de muitas outras fontes. Para saber mais acerca da importação de dados e de como o Colab pode ser utilizado para ciência de dados, consulte os links abaixo em <a href="#working-with-data">Trabalhar com dados</a>.
##Aprendizagem automática
Com o Colab, pode importar um conjunto de dados de imagem, preparar um classificador de imagens e avaliar o modelo, tudo isto com apenas algumas linhas de código. Os blocos de notas do Colab executam código nos servidores na nuvem da Google, o que significa que pode tirar partido da potência do hardware da Google, incluindo GPUs e TPUs, independentemente da potência da sua máquina. Só precisa de um navegador.
O Colab é utilizado extensivamente na comunidade de aprendizagem automática com aplicações que incluem:
· Começar a utilizar o TensorFlow
· Desenvolver e preparar redes neurais
· Experiências com TPUs.
· Divulgar a investigação em IA
· Criar tutoriais
Para ver exemplos de blocos de notas do Colab que demonstram aplicações de aprendizagem automática, consulte os exemplos de aprendizagem automática abaixo.
Preparar novamente um classificador de imagens: crie um modelo do Keras baseado num classificador de imagens pré-preparado para distinguir flores.
Retreinando um classificador de imagens
Introdução
Os modelos de classificação de imagens têm milhões de parâmetros. Treiná-los do zero requer muitos dados de treino rotulados e muito poder de computação. A aprendizagem por transferência é uma técnica que reduz muito disso, pegando uma parte de um modelo que já foi treinado em uma tarefa relacionada e reutilizando-o em um novo modelo.
Este Colab demonstra como construir um modelo Keras para classificar cinco espécies de flores usando um TF2 SavedModel pré-treinado do TensorFlow Hub para extração de recursos de imagem, treinado no conjunto de dados ImageNet muito maior e mais geral. Opcionalmente, o extrator de recursos pode ser treinado ("ajustado") junto com o classificador recém-adicionado.
Procurando uma ferramenta?
Este é um tutorial de codificação do TensorFlow. Se você quer uma ferramenta que só constrói o modelo TensorFlow ou TFLite para, dê uma olhada no make_image_classifier ferramenta de linha de comando que fica instalado pelo pacote PIP tensorflow-hub[make_image_classifier] , ou pelo presente colab TFLite.
Configurar
import itertools
import os
import matplotlib.pylab as plt
import numpy as np
import tensorflow as tf
import tensorflow_hub as hub
print("TF version:", tf.__version__)
print("Hub version:", hub.__version__)
print("GPU is", "available" if tf.config.list_physical_devices('GPU') else "NOT AVAILABLE")
Selecione o módulo TF2 SavedModel para usar
Para começar, use https://tfhub.dev/google/imagenet/mobilenet_v2_100_224/feature_vector/4 . A mesma URL pode ser usada no código para identificar o SavedModel e em seu navegador para mostrar sua documentação. (Observe que os modelos no formato TF1 Hub não funcionam aqui.)
Você pode encontrar mais modelos TF2 que geram a imagem de vetores de características aqui .
Existem vários modelos possíveis para experimentar. Tudo o que você precisa fazer é selecionar um diferente na célula abaixo e acompanhar com o notebook.
model_name = "efficientnetv2-xl-21k" # @param ['efficientnetv2-s', 'efficientnetv2-m', 'efficientnetv2-l', 'efficientnetv2-s-21k', 'efficientnetv2-m-21k', 'efficientnetv2-l-21k', 'efficientnetv2-xl-21k', 'efficientnetv2-b0-21k', 'efficientnetv2-b1-21k', 'efficientnetv2-b2-21k', 'efficientnetv2-b3-21k', 'efficientnetv2-s-21k-ft1k', 'efficientnetv2-m-21k-ft1k', 'efficientnetv2-l-21k-ft1k', 'efficientnetv2-xl-21k-ft1k', 'efficientnetv2-b0-21k-ft1k', 'efficientnetv2-b1-21k-ft1k', 'efficientnetv2-b2-21k-ft1k', 'efficientnetv2-b3-21k-ft1k', 'efficientnetv2-b0', 'efficientnetv2-b1', 'efficientnetv2-b2', 'efficientnetv2-b3', 'efficientnet_b0', 'efficientnet_b1', 'efficientnet_b2', 'efficientnet_b3', 'efficientnet_b4', 'efficientnet_b5', 'efficientnet_b6', 'efficientnet_b7', 'bit_s-r50x1', 'inception_v3', 'inception_resnet_v2', 'resnet_v1_50', 'resnet_v1_101', 'resnet_v1_152', 'resnet_v2_50', 'resnet_v2_101', 'resnet_v2_152', 'nasnet_large', 'nasnet_mobile', 'pnasnet_large', 'mobilenet_v2_100_224', 'mobilenet_v2_130_224', 'mobilenet_v2_140_224', 'mobilenet_v3_small_100_224', 'mobilenet_v3_small_075_224', 'mobilenet_v3_large_100_224', 'mobilenet_v3_large_075_224']
model_handle_map = {
"efficientnetv2-s": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet1k_s/feature_vector/2",
"efficientnetv2-m": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet1k_m/feature_vector/2",
"efficientnetv2-l": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet1k_l/feature_vector/2",
"efficientnetv2-s-21k": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet21k_s/feature_vector/2",
"efficientnetv2-m-21k": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet21k_m/feature_vector/2",
"efficientnetv2-l-21k": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet21k_l/feature_vector/2",
"efficientnetv2-xl-21k": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet21k_xl/feature_vector/2",
"efficientnetv2-b0-21k": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet21k_b0/feature_vector/2",
"efficientnetv2-b1-21k": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet21k_b1/feature_vector/2",
"efficientnetv2-b2-21k": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet21k_b2/feature_vector/2",
"efficientnetv2-b3-21k": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet21k_b3/feature_vector/2",
"efficientnetv2-s-21k-ft1k": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet21k_ft1k_s/feature_vector/2",
"efficientnetv2-m-21k-ft1k": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet21k_ft1k_m/feature_vector/2",
"efficientnetv2-l-21k-ft1k": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet21k_ft1k_l/feature_vector/2",
"efficientnetv2-xl-21k-ft1k": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet21k_ft1k_xl/feature_vector/2",
"efficientnetv2-b0-21k-ft1k": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet21k_ft1k_b0/feature_vector/2",
"efficientnetv2-b1-21k-ft1k": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet21k_ft1k_b1/feature_vector/2",
"efficientnetv2-b2-21k-ft1k": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet21k_ft1k_b2/feature_vector/2",
"efficientnetv2-b3-21k-ft1k": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet21k_ft1k_b3/feature_vector/2",
"efficientnetv2-b0": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet1k_b0/feature_vector/2",
"efficientnetv2-b1": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet1k_b1/feature_vector/2",
"efficientnetv2-b2": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet1k_b2/feature_vector/2",
"efficientnetv2-b3": "https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet1k_b3/feature_vector/2",
"efficientnet_b0": "https://tfhub.dev/tensorflow/efficientnet/b0/feature-vector/1",
"efficientnet_b1": "https://tfhub.dev/tensorflow/efficientnet/b1/feature-vector/1",
"efficientnet_b2": "https://tfhub.dev/tensorflow/efficientnet/b2/feature-vector/1",
"efficientnet_b3": "https://tfhub.dev/tensorflow/efficientnet/b3/feature-vector/1",
"efficientnet_b4": "https://tfhub.dev/tensorflow/efficientnet/b4/feature-vector/1",
"efficientnet_b5": "https://tfhub.dev/tensorflow/efficientnet/b5/feature-vector/1",
"efficientnet_b6": "https://tfhub.dev/tensorflow/efficientnet/b6/feature-vector/1",
"efficientnet_b7": "https://tfhub.dev/tensorflow/efficientnet/b7/feature-vector/1",
"bit_s-r50x1": "https://tfhub.dev/google/bit/s-r50x1/1",
"inception_v3": "https://tfhub.dev/google/imagenet/inception_v3/feature-vector/4",
"inception_resnet_v2": "https://tfhub.dev/google/imagenet/inception_resnet_v2/feature-vector/4",
"resnet_v1_50": "https://tfhub.dev/google/imagenet/resnet_v1_50/feature-vector/4",
"resnet_v1_101": "https://tfhub.dev/google/imagenet/resnet_v1_101/feature-vector/4",
"resnet_v1_152": "https://tfhub.dev/google/imagenet/resnet_v1_152/feature-vector/4",
"resnet_v2_50": "https://tfhub.dev/google/imagenet/resnet_v2_50/feature-vector/4",
"resnet_v2_101": "https://tfhub.dev/google/imagenet/resnet_v2_101/feature-vector/4",
"resnet_v2_152": "https://tfhub.dev/google/imagenet/resnet_v2_152/feature-vector/4",
"nasnet_large": "https://tfhub.dev/google/imagenet/nasnet_large/feature_vector/4",
"nasnet_mobile": "https://tfhub.dev/google/imagenet/nasnet_mobile/feature_vector/4",
"pnasnet_large": "https://tfhub.dev/google/imagenet/pnasnet_large/feature_vector/4",
"mobilenet_v2_100_224": "https://tfhub.dev/google/imagenet/mobilenet_v2_100_224/feature_vector/4",
"mobilenet_v2_130_224": "https://tfhub.dev/google/imagenet/mobilenet_v2_130_224/feature_vector/4",
"mobilenet_v2_140_224": "https://tfhub.dev/google/imagenet/mobilenet_v2_140_224/feature_vector/4",
"mobilenet_v3_small_100_224": "https://tfhub.dev/google/imagenet/mobilenet_v3_small_100_224/feature_vector/5",
"mobilenet_v3_small_075_224": "https://tfhub.dev/google/imagenet/mobilenet_v3_small_075_224/feature_vector/5",
"mobilenet_v3_large_100_224": "https://tfhub.dev/google/imagenet/mobilenet_v3_large_100_224/feature_vector/5",
"mobilenet_v3_large_075_224": "https://tfhub.dev/google/imagenet/mobilenet_v3_large_075_224/feature_vector/5",
}
model_image_size_map = {
"efficientnetv2-s": 384,
"efficientnetv2-m": 480,
"efficientnetv2-l": 480,
"efficientnetv2-b0": 224,
"efficientnetv2-b1": 240,
"efficientnetv2-b2": 260,
"efficientnetv2-b3": 300,
"efficientnetv2-s-21k": 384,
"efficientnetv2-m-21k": 480,
"efficientnetv2-l-21k": 480,
"efficientnetv2-xl-21k": 512,
"efficientnetv2-b0-21k": 224,
"efficientnetv2-b1-21k": 240,
"efficientnetv2-b2-21k": 260,
"efficientnetv2-b3-21k": 300,
"efficientnetv2-s-21k-ft1k": 384,
"efficientnetv2-m-21k-ft1k": 480,
"efficientnetv2-l-21k-ft1k": 480,
"efficientnetv2-xl-21k-ft1k": 512,
"efficientnetv2-b0-21k-ft1k": 224,
"efficientnetv2-b1-21k-ft1k": 240,
"efficientnetv2-b2-21k-ft1k": 260,
"efficientnetv2-b3-21k-ft1k": 300,
"efficientnet_b0": 224,
"efficientnet_b1": 240,
"efficientnet_b2": 260,
"efficientnet_b3": 300,
"efficientnet_b4": 380,
"efficientnet_b5": 456,
"efficientnet_b6": 528,
"efficientnet_b7": 600,
"inception_v3": 299,
"inception_resnet_v2": 299,
"nasnet_large": 331,
"pnasnet_large": 331,
}
model_handle = model_handle_map.get(model_name)
pixels = model_image_size_map.get(model_name, 224)
print(f"Selected model: {model_name} : {model_handle}")
IMAGE_SIZE = (pixels, pixels)
print(f"Input size {IMAGE_SIZE}")
BATCH_SIZE = 16
Selected model: efficientnetv2-xl-21k : https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet21k_xl/feature_vector/2
Input size (512, 512)
Configure o conjunto de dados do Flowers
As entradas são redimensionadas adequadamente para o módulo selecionado. O aumento do conjunto de dados (ou seja, distorções aleatórias de uma imagem cada vez que ela é lida) melhora o treinamento, esp. durante o ajuste fino.
data_dir = tf.keras.utils.get_file(
'flower_photos',
'https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz',
untar=True)
Downloading data from https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz
228818944/228813984 [==============================] - 1s 0us/step
228827136/228813984 [==============================] - 1s 0us/step
Alternar código
Found 3670 files belonging to 5 classes.
Using 2936 files for training.
Found 3670 files belonging to 5 classes.
Using 734 files for validation.
Definindo o modelo
Tudo o que precisamos é colocar um classificador linear no topo do feature_extractor_layer com o módulo de Hub.
Para a velocidade, começamos com um não-treinável feature_extractor_layer , mas você também pode ativar o ajuste fino para maior precisão.
do_fine_tuning = False
print("Building model with", model_handle)
model = tf.keras.Sequential([
# Explicitly define the input shape so the model can be properly
# loaded by the TFLiteConverter
tf.keras.layers.InputLayer(input_shape=IMAGE_SIZE + (3,)),
hub.KerasLayer(model_handle, trainable=do_fine_tuning),
tf.keras.layers.Dropout(rate=0.2),
tf.keras.layers.Dense(len(class_names),
kernel_regularizer=tf.keras.regularizers.l2(0.0001))
])
model.build((None,)+IMAGE_SIZE+(3,))
model.summary()
Building model with https://tfhub.dev/google/imagenet/efficientnet_v2_imagenet21k_xl/feature_vector/2
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
keras_layer (KerasLayer) (None, 1280) 207615832
dropout (Dropout) (None, 1280) 0
dense (Dense) (None, 5) 6405
=================================================================
Total params: 207,622,237
Trainable params: 6,405
Non-trainable params: 207,615,832
_________________________________________________________________
Treinando o modelo
model.compile(
optimizer=tf.keras.optimizers.SGD(learning_rate=0.005, momentum=0.9),
loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True, label_smoothing=0.1),
metrics=['accuracy'])
steps_per_epoch = train_size // BATCH_SIZE
validation_steps = valid_size // BATCH_SIZE
hist = model.fit(
train_ds,
epochs=5, steps_per_epoch=steps_per_epoch,
validation_data=val_ds,
validation_steps=validation_steps).history
Epoch 1/5
183/183 [==============================] - 133s 543ms/step - loss: 0.9221 - accuracy: 0.8996 - val_loss: 0.6271 - val_accuracy: 0.9597
Epoch 2/5
183/183 [==============================] - 94s 514ms/step - loss: 0.6072 - accuracy: 0.9521 - val_loss: 0.5990 - val_accuracy: 0.9528
Epoch 3/5
183/183 [==============================] - 94s 513ms/step - loss: 0.5590 - accuracy: 0.9671 - val_loss: 0.5362 - val_accuracy: 0.9722
Epoch 4/5
183/183 [==============================] - 94s 514ms/step - loss: 0.5532 - accuracy: 0.9726 - val_loss: 0.5780 - val_accuracy: 0.9639
Epoch 5/5
183/183 [==============================] - 94s 513ms/step - loss: 0.5618 - accuracy: 0.9699 - val_loss: 0.5468 - val_accuracy: 0.9556
plt.figure()
plt.ylabel("Loss (training and validation)")
plt.xlabel("Training Steps")
plt.ylim([0,2])
plt.plot(hist["loss"])
plt.plot(hist["val_loss"])
plt.figure()
plt.ylabel("Accuracy (training and validation)")
plt.xlabel("Training Steps")
plt.ylim([0,1])
plt.plot(hist["accuracy"])
plt.plot(hist["val_accuracy"])
[<matplotlib.lines.Line2D at 0x7f607ad6ad90>]
png
png
Experimente o modelo em uma imagem dos dados de validação:
x, y = next(iter(val_ds))
image = x[0, :, :, :]
true_index = np.argmax(y[0])
plt.imshow(image)
plt.axis('off')
plt.show()
# Expand the validation image to (1, 224, 224, 3) before predicting the label
prediction_scores = model.predict(np.expand_dims(image, axis=0))
predicted_index = np.argmax(prediction_scores)
print("True label: " + class_names[true_index])
print("Predicted label: " + class_names[predicted_index])
png
True label: sunflowers
Predicted label: sunflowers
Finalmente, o modelo treinado pode ser salvo para implantação no TF Serving ou TFLite (no celular) da seguinte forma.
saved_model_path = f"/tmp/saved_flowers_model_{model_name}"
tf.saved_model.save(model, saved_model_path)
2021-11-05 13:09:44.225508: W tensorflow/python/util/util.cc:368] Sets are not currently considered sequences, but this may change in the future, so consider avoiding using them.
WARNING:absl:Found untraced functions such as restored_function_body, restored_function_body, restored_function_body, restored_function_body, restored_function_body while saving (showing 5 of 3985). These functions will not be directly callable after loading.
INFO:tensorflow:Assets written to: /tmp/saved_flowers_model_efficientnetv2-xl-21k/assets
INFO:tensorflow:Assets written to: /tmp/saved_flowers_model_efficientnetv2-xl-21k/assets
Classificação básica: classificação de imagens de roupas
Ver em TensorFlow.orgExecutar no Google ColabVer fonte no GitHub Baixar notebook
https://github.com/tensorflow/docs-l10n/blob/master/site/pt-br/tutorials/keras/classification.ipynb
Este guia treina um modelo de rede neural para classificar imagens de roupas, como tênis e camisetas. Não tem problema se você não entender todos os detalhes. Esta é uma visão geral rápida de um programa completo do TensorFlow, e os detalhes são explicados aos poucos.
Este guia usa o tf.keras, uma API de alto nível, para criar e treinar modelos no TensorFlow.
[ ]
# TensorFlow and tf.keras
import tensorflow as tf
# Helper libraries
import numpy as np
import matplotlib.pyplot as plt
print(tf.__version__)
keyboard_arrow_down
Importar o dataset Fashion MNIST
dataset Fashion MNIST
Este guia usa o dataset Fashion MNIST, que contém 70 mil imagens em escala de cinza, em 10 categorias. As imagens mostram artigos de vestuário individuais com resolução baixa (28x28 pixels), conforme visto aqui:
Imagem 1. Amostras do Fashion MNIST (por Zalando, Licença MIT).
O Fashion MNIST é usado como substituto do dataset MNIST clássico, geralmente utilizado como o "Olá, mundo" dos programas de aprendizado de máquina para visão computacional. O dataset MNIST contém imagens de dígitos escritos à mão (0, 1, 2, etc.) em um formato idêntico ao dos artigos de vestuário que você usará aqui.
Este tutorial usa o Fashion MNIST por ser variado e por ser um problema um pouco mais desafiador que o MNIST comum. Os dois datasets são relativamente pequenos e são usados para verificar se um algoritmo funciona como esperado. Eles são bons pontos de partida para testar e depurar o código.
Aqui, 60 mil imagens são usadas para treinar a rede, e 10 mil imagens são usadas para avaliar com que exatidão a rede aprendeu a classificar as imagens. Você pode acessar o dataset Fashion MNIST diretamente no TensorFlow. Importe e carregue os dados do Fashion MNIST diretamente do TensorFlow:
[ ]
fashion_mnist = tf.keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
Ao carregar o dataset, são retornadas quatro matrizes NumPy:
train_images
e train_labels
são o conjunto de treinamento — os dados que o modelo usa para aprender.test_images
, e matrizes test_labels
.As imagens são matrizes NumPy 28x28, sendo que os valores de pixel variam de 0 a 255. Os rótulos são uma matriz de números inteiros, que variam de 0 a 9. Eles correspondem à classe de roupas que a imagem representa:
RótuloClasse0Camiseta/Top1Calça2Suéter3Vestido4Casaco5Sandália6Camisa7Tênis8Bolsa9Botim
Cada imagem é mapeada para um único rótulo. Como os nomes das classes não estão incluídos no dataset, armazene-os aqui par usá-los posteriormente ao plotar as imagens:
[ ]
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
keyboard_arrow_down
Explorar os dados
Vamos explorar o formato do dataset antes de treinar o modelo. O código abaixo mostra que há 60 mil imagens no conjunto de treino, com cada imagem representada como pixels 28x28.
[ ]
train_images.shape
Da mesma forma, há 60 mil rótulos no conjunto de treinamento:
[ ]
len(train_labels)
Cada rótulo é um número inteiro entre 0 e 9:
[ ]
train_labels
Há 10 mil imagens no conjunto de teste. Novamente, cada imagem é representada por pixels de 28x28:
[ ]
test_images.shape
E o conjunto de teste contém 10 mil rótulos de imagens:
[ ]
len(test_labels)
keyboard_arrow_down
Pré-processar os dados
Os dados precisam ser pré-processados antes de treinar a rede. Se você conferir a primeira imagem no conjunto de treinamento, verá que os valores de pixel ficam no intervalo de 0 a 255:
[ ]
plt.figure()
plt.imshow(train_images[0])
plt.colorbar()
plt.grid(False)
plt.show()
Mude a escala desses valores para o intervalo de 0 a 1 antes de alimentá-los no modelo da rede neural. Para fazer isso, divida os valores por 255. É importante que o conjunto de treinamento e o conjunto de teste sejam pré-processados da mesma forma:
[ ]
train_images = train_images / 255.0
test_images = test_images / 255.0
Para verificar se os dados estão no formato correto e se está tudo pronto para criar e treinar a rede, vamos exibir as 25 primeiras imagens do conjunto de treinamento e vamos exibir também o nome da classe abaixo de cada imagem.
[ ]
plt.figure(figsize=(10,10))
for i in range(25):
plt.subplot(5,5,i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.imshow(train_images[i], cmap=plt.cm.binary)
plt.xlabel(class_names[train_labels[i]])
plt.show()
keyboard_arrow_down
Criar o modelo
Criar a rede neural requer a configuração das camadas do modelo e depois a compilação do modelo.
keyboard_arrow_down
Configurar as camadas
O bloco de construção básico de uma rede neural é a camada. As camadas extraem representações dos dados alimentados nela. Espera-se que essas representações tenham um significado para o problema em questão.
A maioria dos aprendizados profundos consiste da combinação de camadas simples. A maioria das camadas, como tf.keras.layers.Dense
, têm parâmetros que são aprendidos durante o treino.
[ ]
model = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10)
])
A primeira camada desta rede, tf.keras.layers.Flatten
, transforma o formato das imagens de uma matriz bidimensional (de pixels 28x28) em uma matriz unidimensional (de 28 * 28 = 784 pixels). Pense nessa camada como pegar as linhas de pixels da imagem e enfileirá-las. Essa camada não tem parâmetros a aprender, ela somente reformata os dados.
Após os pixels serem achatados, a rede consiste de uma sequência de duas camadas tf.keras.layers.Dense
, que são camadas neurais densamente conectadas, ou totalmente conectadas. A primeira camada Dense
tem 128 nós (ou neurônios). A segunda (e última) camada retorna uma matriz de logits, com tamanho igual a 10. Cada nó contém uma pontuação que indica que a imagem atual pertence a uma das 10 classes.
keyboard_arrow_down
Compilar o modelo
Antes que o modelo fique pronto para o treinamento, é preciso fazer mais algumas configurações, que são adicionadas durante o passo de compilação do modelo:
[ ]
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
keyboard_arrow_down
Treinar o modelo
O treinamento da modelo de rede neural requer os seguintes passos:
train_images
e train_labels
.test_images
.test_labels
.keyboard_arrow_down
Alimentar o modelo
Para iniciar o treinamento, faça uma chamada ao método model.fit
, chamado de "fit" (adequar) porque ele faz o modelo "se adequar" aos dados de treinamento:
[ ]
model.fit(train_images, train_labels, epochs=10)
À medida que o modelo é treinado, as métricas de perda e exatidão são exibidas. Este modelo atinge uma exatidão de cerca de 0,91 (91%) para os dados de treinamento.
keyboard_arrow_down
Avaliar a exatidão
Agora, compare o desempenho do modelo para o dataset de teste:
[ ]
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print('\nTest accuracy:', test_acc)
Percebe-se que a exatidão para o dataset de teste é um pouco menor do que para o dataset de treinamento. Essa discrepância entre a exatidão do treinamento e a exatidão do teste representa o overfitting. O overfitting acontece quando um modelo de aprendizado de máquina tem um desempenho inferior com entradas novas, nunca vistas anteriormente, em comparação aos dados de treinamento. Um modelo com overfitting "memoriza" o ruído e os detalhes do dataset de treinamento a ponto de impactar negativamente o desempenho do modelo para novos dados. Se quiser saber mais, confira:
keyboard_arrow_down
Fazer previsões
Com o modelo treinado, você pode usá-lo para fazer previsões sobre algumas imagens. Anexe uma camada softmax para converter as saídas lineares do modelo (logits) em probabilidades, que devem ser mais fáceis de interpretar.
[ ]
probability_model = tf.keras.Sequential([model,
tf.keras.layers.Softmax()])
[ ]
predictions = probability_model.predict(test_images)
Aqui, o modelo previu o rótulo de cada imagem no conjunto de teste. Vamos conferir a primeira previsão:
[ ]
predictions[0]
Uma previsão é uma matriz com 10 números. Eles representam a "confiança" do modelo de que a imagem corresponde a cada um dos 10 diferentes artigos de vestuário. Você pode ver qual rótulo tem o maior valor de confiança:
[ ]
np.argmax(predictions[0])
Portanto, o modelo tem maior confiança de que esta imagem é um botim, ou class_names[9]
. Ao avaliar o rótulo de teste, vemos que essa classificação está correta:
[ ]
test_labels[0]
Gerar um gráfico para ver o conjunto completo das 10 previsões de classe:
[ ]
def plot_image(i, predictions_array, true_label, img):
true_label, img = true_label[i], img[i]
plt.grid(False)
plt.xticks([])
plt.yticks([])
plt.imshow(img, cmap=plt.cm.binary)
predicted_label = np.argmax(predictions_array)
if predicted_label == true_label:
color = 'blue'
else:
color = 'red'
plt.xlabel("{} {:2.0f}% ({})".format(class_names[predicted_label],
100*np.max(predictions_array),
class_names[true_label]),
color=color)
def plot_value_array(i, predictions_array, true_label):
true_label = true_label[i]
plt.grid(False)
plt.xticks(range(10))
plt.yticks([])
thisplot = plt.bar(range(10), predictions_array, color="#777777")
plt.ylim([0, 1])
predicted_label = np.argmax(predictions_array)
thisplot[predicted_label].set_color('red')
thisplot[true_label].set_color('blue')
keyboard_arrow_down
Verificar as previsões
Com o modelo treinado, podemos usá-lo para fazer previsões sobre algumas imagens.
Vamos conferir a imagem, previsão e matriz de previsões na posição 0. Os rótulos com previsão correta são azuis, e os rótulos com previsão incorreta são vermelhos. O número dá a porcentagem (até 100) do rótulo previsto.
[ ]
i = 0
plt.figure(figsize=(6,3))
plt.subplot(1,2,1)
plot_image(i, predictions[i], test_labels, test_images)
plt.subplot(1,2,2)
plot_value_array(i, predictions[i], test_labels)
plt.show()
[ ]
i = 12
plt.figure(figsize=(6,3))
plt.subplot(1,2,1)
plot_image(i, predictions[i], test_labels, test_images)
plt.subplot(1,2,2)
plot_value_array(i, predictions[i], test_labels)
plt.show()
Vamos desenhar (plot) diversas imagens com suas previsões. Observe que o modelo pode errar mesmo quando tiver confiança alta.
[ ]
# Plot the first X test images, their predicted labels, and the true labels.
# Color correct predictions in blue and incorrect predictions in red.
num_rows = 5
num_cols = 3
num_images = num_rows*num_cols
plt.figure(figsize=(2*2*num_cols, 2*num_rows))
for i in range(num_images):
plt.subplot(num_rows, 2*num_cols, 2*i+1)
plot_image(i, predictions[i], test_labels, test_images)
plt.subplot(num_rows, 2*num_cols, 2*i+2)
plot_value_array(i, predictions[i], test_labels)
plt.tight_layout()
plt.show()
keyboard_arrow_down
Usar o modelo treinado
Por fim, use o modelo treinado para fazer uma previsão sobre uma única imagem.
[ ]
# Grab an image from the test dataset.
img = test_images[1]
print(img.shape)
Os modelos do tf.keras
são otimizados para fazer previsões para um lote, ou coleção, de exemplos ao mesmo tempo. Mesmo que você esteja usando uma única imagem, precisa adicioná-la a uma lista:
[ ]
# Add the image to a batch where it's the only member.
img = (np.expand_dims(img,0))
print(img.shape)
Agora, faça a previsão do rótulo correto para essa imagem:
[ ]
predictions_single = probability_model.predict(img)
print(predictions_single)
[ ]
plot_value_array(1, predictions_single[0], test_labels)
_ = plt.xticks(range(10), class_names, rotation=45)
plt.show()
tf.keras.Model.predict
retorna uma lista de listas:
uma lista para cada imagem no lote de dados. Obtenha as previsões para nossa única imagem no lote:
[ ]
np.argmax(predictions_single[0])
E o modelo prevê um rótulo conforme esperado
Nota Técnica:
TensorFlow é uma estrutura de código aberto desenvolvida por investigadores do Google para executar aprendizagem automática (ML), aprendizagem profunda e outras cargas de trabalho de análise estatística e preditiva.
Como plataformas semelhantes, foi projetada para agilizar o processo de desenvolvimento e execução de aplicativos analíticos avançados para utilizadores como cientistas de dados, estatísticos e modeladores preditivos.
O software TensorFlow lida com conjuntos de dados organizados como "nós computacionais" em forma de gráfico. As arestas que conectam os nós num gráfico podem representar vetores ou matrizes multi-dimensionais, criando o que é conhecido como tensores. Como os programas TensorFlow usam uma arquitetura de fluxo de dados que funciona com resultados intermediários generalizados dos cálculos, são especialmente abertos a aplicações de processamento paralelo em grande escala, sendo as redes neuronais um exemplo comum.
A estrutura inclui conjuntos de APIs (application programming interface) de alto e baixo nível. O Google recomenda usar os de alto nível sempre que possível para simplificar o desenvolvimento do pipeline de dados e a programação de aplicativos. No entanto, saber como usar APIs de baixo nível – chamadas TensorFlow Core – pode ser valioso para experimentação e depuração de aplicativos, dizem os autores; também oferece aos utilizadores um “modelo mental” do funcionamento interno da tecnologia de aprendizagem automática, nas palavras do Google.
O TensorFlow pode ser usado para desenvolver modelos para diversas tarefas, incluindo processamento de linguagem natural, reconhecimento de imagem, reconhecimento de escrita e diferentes simulações baseadas em computação, como equações diferenciais parciais.
Embora o TensorFlow ofereça suporte a outras linguagens de programação, Python e JavaScript são as mais populares. Além disso, o TensorFlow oferece suporte a Swift, C, Go, C# e Java. Python não é necessário para funcionar com o TensorFlow; no entanto, torna o trabalho com o TensorFlow extremamente simples.
Como funciona o TensorFlow com Python?
O TensorFlow oferece tudo o que for necessário aos programadores por meio da
linguagem de programação Python. Python é simples de aprender e executar e oferece métodos diretos para representar o acoplamento de abstrações de alto nível.
Nós e tensores do TensorFlow são objetos Python; portanto, os aplicativos TensorFlow também são programas Python. No entanto, cálculos matemáticos reais não são feitos em Python. As bibliotecas de transformação acessíveis por meio do TensorFlow são criadas como binários C++ eficientes. Python controla apenas o fluxo de informações entre os componentes e oferece estruturas de codificação de alto nível para conectá-los.
Referências:
Primamos em preparar/colaborar com quem confia em nó, para uma ampla variedade de novos conhecimentos escolares, habilitações, aptidões, após o Ensino Secundário ou Médio, de acordo com as exigências de diversos cursos de escolas, faculdades e universidades.
"Eu não estava confortável com a matemática e sentia-me muito frustrada.
C.I.I.A, ajudou-me a entender a matéria e agora sou dos melhores do grupo."
"Realmente fui bem ajudado a entender os fundamentos básicos da química, e isso permitiu-me entrar no curso que queria! Eu só tenho a agradecer."
"As minhas sessões de participação em diferentes webinários foram tranquilas e descontraídas. Participei em seminários e atividades dos <<Grupos Pequenos>> e recomendo a qualquer um que aprenda melhor em grupo."
O potencial da Inteligência Artificial no desenvolvimento sustentável do planeta oferece uma promessa sem precedentes: a capacidade de transformar todos os sectores para satisfazer as necessidades atuais sem comprometer as gerações futuras. Como conseguimos isso?
Um estudo publicado na revista Nature (https://www.nature.com/articles/s41467-019-14108-y) revela que a Inteligência Artificial poderia facilitar o cumprimento dos (ODS) e até 93% se considerarmos apenas os ODS ambientais.
Existem dados que refletem o imenso potencial da IA para ajudar no combate contra as alterações climáticas, mas como funciona exatamente esta tecnologia?
3 - Desenvolvimento Sustentável
Garantir o acesso à saúde de qualidade e promover o bem-estar para todos, em todas as idades
Reduzir a taxa de mortalidade global.
Promover a saúde mental e o bem-estar.
Alcançar a cobertura universal de saúde.
IA e resultados sociais:
Sessenta e sete alvos (82%) dentro do grupo Sociedade poderiam ser beneficiados por tecnologias baseadas em IA. Por exemplo, no ODS 1 sobre erradicação da pobreza, ODS3 garantir vidas saudáveis e promover o bem-estar para todos, em todas as idades, ODS 4 sobre educação de qualidade, ODS 6 sobre água potável e saneamento, ODS 7 sobre energia limpa e acessível, e ODS 11 em cidades sustentáveis, a IA pode atuar como um facilitador para todas as metas, apoiando o fornecimento de serviços alimentares, de saúde, de água e de energia à população. Pode também apoiar sistemas hipocarbónicos, por exemplo, apoiando a criação de economias circulares e cidades inteligentes que utilizem eficientemente os seus recursos.
O potencial da Inteligência Artificial no desenvolvimento sustentável do planeta
Oferece uma promessa sem precedentes: a capacidade de transformar todos os sectores para satisfazer as necessidades atuais sem comprometer as gerações futuras. Como conseguimos isso?
Na saúde, em especial na medicina, a IA será disruptiva a vários níveis.
Como pode a IA mudar o cuidado dos idosos nos lares de idosos?
Pode dizer-se que, em geral, a IA consegue melhorar a qualidade de vida dos idosos em lares de idosos, ao fornecer atendimento mais personalizado,
eficiente e focado no indivíduo. Ao mesmo tempo, ajuda a aliviar a carga no pessoal e otimiza os recursos disponíveis. No entanto, é importante garantir que as preocupações éticas e de privacidade associadas à utilização da IA no cuidado de idosos sejam abordadas de forma adequada.
METAS
• Até 2030, reduzir a taxa de mortalidade por infeções respiratórias
Atualmente 44,8% (Masculino); 55,2% Feminino;
• Diminuir factores de risco apontados para o desenvolvimento de pneumonias;
• Antecipar risco da patologia AVC
• Deteção e manejo de idosos, com fragilidade ou comprometimento funcional.
• Promover a saúde, a qualidade de vida e a prevenção da solidão indesejada nos idosos.
• Fazer avançar a autonomia pessoal, prevenção da fragilidade e da dependência.
• Prevenir riscos para a saúde dos nossos idosos devido às condições climáticas no inverno e no verão.
• Prevenir a violência de género contra as mulheres idosas e promover bom tratamento das pessoas idosas.
• Promover a qualidade dos cuidados e as boas práticas no cuidado das pessoas idosas.
IMPACTOS
A Inteligência Artificial está a ter um impacto significativo no cuidado de residentes em lares de idosos de várias maneiras:
• Personalização do atendimento:
A IA pode analisar dados sobre a saúde, preferências e necessidades dos residentes para fornecer cuidados mais personalizados e adaptados a cada indivíduo. Isso pode incluir recomendações dietéticas, programas específicos de exercícios ou ajustes de medicamentos com base nas necessidades de cada pessoa.
• Otimização de recursos
Ao analisar dados e otimizar processos, a IA pode ajudar os lares de idosos a gerir de forma mais eficiente os recursos disponíveis, incluindo pessoal, suprimentos médicos e equipamentos.
• Monitorização de saúde
Para analisar dados de saúde, os sistemas de IA podem monitorizar em modo contínuo a saúde dos residentes, detetando anomalias nos sinais vitais e alertando o pessoal médico sobre potenciais problemas de saúde. A principal vantagem é que isso pode ser feito antes que se tornem emergências.
Isso pode incluir monitorização da pressão arterial, frequência cardíaca, saturação de oxigénio e outros indicadores relevantes.
• Assistência personalizada
Para ver como a IA muda o cuidado dos idosos em lares de idosos, consideremos que os robôs e os sistemas de IA podem fornecer assistência personalizada aos residentes. Como? Ajudá-los nas tarefas do dia a dia, como levantar da cama, lembrar de tomar os remédios ou fazer companhia por meio de conversas simples. <<Para não esquecer! O que é Chat GPT? Chat GPT é um modelo de inteligência artificial que interage por meio de chat e tem a capacidade de responder a diversas questões numa conversa mais “humanizada”. Para além das respostas simples, o chat consegue até criar textos com uma boa estrutura e conteúdo. Sem dúvida, isto também ajuda a reduzir a carga sobre o pessoal dos lares de idosos e a melhorar a qualidade de vida dos residentes.>>
• Previsão de quedas
Não há dúvida que é uma das vantagens que mais chama a atenção.
Usando algoritmos de aprendizagem automática (Machine Learning) os sistemas de IA podem analisar os padrões de movimento e comportamento dos residentes para prever o risco de queda. Logicamente, isto permite que o pessoal de trabalho do centro tome medidas preventivas para reduzir a probabilidade de acidentes e lesões.
Deve-se levar em conta que todos esses avanços ainda precisam ser aplicados e desenvolvidos em todas as residências. Como podemos imaginar, esta tecnologia tem um custo económico que nem todos os centros podem suportar. A direção gestora do centro pode entender que isso iria encarecer o preço do local. Deve-se notar, no entanto, que todos os dias se registam mais progressos e que nem todas as aplicações de IA exigem necessariamente um custo elevado.
Indicadores
3.1
3.1.1 Taxa de mortalidade (Masculina/Feminina)
Conjunto de indicadores de qualidade de saúde sensíveis aos cuidados de enfermagem em lares de idosos.
Recursos às urgências hospitalares e número de dias de internamento:
• Redução dos recursos às urgências;
• Diminuição total de dias de internamento em unidades de recuperação avançadas;
• Diminuição de alguns actos médicos;
• Função sensorial (incidência de depressão, demência), comunicação, relações sociais, participação da família;
• Presença de cateteres urinários, incontinência;
• Perda de funcionalidade e actividades de vida diárias (imobilização e doentes acamados);
• Uso controlado de fármacos (anti-psicóticos, controlo de fármacos – número e modo de administração);
• Uso de nove ou mais medicamentos diferentes; Nutrição (perda de peso, obstipação, desidratação);
• Controlo de infeção (pneumonias, infeções urinárias);
• Prevalência do número de úlceras por pressão;
• Controlo da dor;
• Prevalência de quedas.
3.2
Indicadores
3.2.1 Taxa de mortalidade atribuída a doenças do aparelho circulatório, tumores malignos, diabetes ‘mellitus’ e doenças crónicas respiratórias
3.2.2 Taxa de mortalidade por lesões auto provocadas intencionalmente (suicídio)
3.3
Reforçar a prevenção e o tratamento do abuso de substâncias, incluindo o abuso de drogas e o uso nocivo do álcool
Indicadores
3.3.1 Cobertura das intervenções (farmacológicas, psicossociais, de reabilitação e de pós-tratamento) com vista ao tratamento do abuso de substâncias
3.3.2 Consumo de litros de álcool puro per capita (pessoas com 65 ou mais anos) por ano
IA transforma cuidados com idosos ao prever lesões, demência e até morte – investigação em curso (InterRAI - Nova Zelândia)
Ao analisar mais de 1 milhão de avaliações de saúde, um programa de inteligência artificial (IA) pode agora prever lesões, demência e até mortalidade para idosos residentes em lares comunitários públicos e privados.
Mais de 30 países fornecem dados para o projeto, incluindo informações sobre cognição mental, humor, medicação, dieta e questões mais complexas, como a solidão e o envolvimento social.
“O InterRAI agrega valor crescente à forma como oferecemos cuidados de saúde à nossa população idosa”.
“Com o crescente envelhecimento da população, os recursos serão cada vez mais escassos e precisamos de avaliar as necessidades de saúde de forma mais eficiente. Existem tantos geriatras.
“Health New Zealand-Te Whatu Ora” disse que é uma fonte de informações para formuladores de políticas de saúde, profissionais de saúde e pesquisadores que trabalham para melhorar os resultados dos pacientes e identificar áreas de necessidades não atendidas.
Os médicos podem usar os dados para prever fraturas de quadril e outras lesões e estimar a mortalidade e a probabilidade de desenvolver demência.
“As fraturas de quadril são incidentes comuns em pessoas idosas e, por causa do InterRAI, sabemos que 30% dos idosos morrem após uma fratura de quadril”.
De acordo com a Osteoporosis New Zealand, ocorrem mais de 3.500 fraturas de quadril a cada ano – a maioria acontece após uma queda. Outras 180 mil pessoas correm alto risco de quebrar o quadril.
Cada fratura de quadril pode resultar em três semanas de internação e custar US$ 47 mil.
Estimativas recentes mostram que as fraturas da anca custaram ao sistema de saúde geral da Nova Zelândia cerca de 180 milhões de dólares.
Os dados do InterRAI revelaram que certos medicamentos, como sedativos, estavam associados a 50% das fraturas de quadril. Tratamentos alternativos podem agora ser considerados para pacientes com maior risco de fratura futura.
“Com estes volumes de dados, temos uma visão de satélite do que está a acontecer e podemos começar a planear cuidados de intervenção eficientes para os idosos”.
“A ferramenta identifica e monitoriza tendências e podemos utilizar esta informação para melhorar os cuidados e os resultados para os residentes e capacitar o pessoal com formação e educação específicas.”
Para cumprir os objetivos da Década do Envelhecimento Saudável das Nações Unidas, é necessário que os países satisfaçam as necessidades de cuidados de saúde das populações idosas atuais e futuras através de soluções inovadoras. De acordo com a OMS, serviços e cuidados de longo prazo são definidos como:
“Serviços para garantir que as pessoas com ou em risco de perda significativa de capacidade física e mental pode manter um nível de habilidade funcional consistente com os seus direitos básicos, liberdades fundamentais, e dignidade humana…
Os serviços são prestados tanto por pessoas não remuneradas, cuidadores (normalmente familiares, mas também voluntários) e outro pessoal remunerado...
Os «serviços de cuidados de longa duração» abrangem cuidados no domicílio, na comunidade e em instalações (residenciais de longa duração, instalações de cuidados, lares de idosos ou instalações e outros grupos de convivência comum).”
Os serviços LTC normalmente ajudam as pessoas com atividades da vida diária e incentivam a participação social e outros modos de lidar com condições crónicas de saúde.
Nos últimos anos, a inteligência artificial (IA) começou a remodelar o cenário global do LTC. IA refere-se a sistemas que analisam os diversos ambientes e levam a cabo ações para atingir objetivos específicos com um certo grau de autonomia.
A IA pode ser baseada em sistemas de software e atuar em espaços virtuais (por exemplo, agentes de conversação, sistemas de reconhecimento facial), ou serem baseados em hardware e atuar em ambientes físicos (por exemplo, robôs). As técnicas de IA incluem aprendizagem automática (Machine Learning), redes neuronais, aprendizagem profunda, visão computacional, classificação de imagens, rastreamento de objetos), deteção/reconhecimento de padrões, e processamento de linguagem natural, entre outros.
Intervenções melhoradas referem-se a intervenções tecnológicas que incluem um componente de IA (por exemplo, sensores ambientais com algoritmos de classificação para deteção de quedas.
O Arduino tem a missão de tornar o Machine Learning (aprendizagem automática) simples o suficiente para qualquer pessoa usar.
Temos trabalhado com a equipa do TensorFlow Lite nos últimos meses e estamos entusiasmados
em mostrar o que temos feito juntos: trazer o TensorFlow Lite Micro para o Arduino Nano 33 BLE Sense.
Mais à frente, mostraremos como instalar e executar vários exemplos do TensorFlow Lite Micro que estão agora disponíveis no Arduino Library Manager
O primeiro tutorial que será publicado mostra como instalar uma rede neuronal na placa Arduino para reconhecer comandos de voz simples.