Cientistas criam implante que produz palavras a partir de ondas cerebrais

O sistema do trato vocal virtual conecta-se diretamente ao cérebro e sintetiza fala a partir de sinais cerebrais associados com os aspectos mecânicos da fala, como movimentos da mandíbula, laringe, lábios e língua. Eventualmente, o dispositivo poderia ser usado por pessoas que perderam a capacidade de falar. A pesquisa foi publicada nesta quinta-feira (25) na renomada científica revista Nature.

Projeto em Python que acessa a webcam e move os olhos em direção aos olhos dos espectadores

Rastreamento de rostos com personagens de anime

Fonte:  https://github.com/Aditya-Khadilkar/Face-tracking-with-Anime-characters?utm_source=mybridge&utm_medium=blog&utm_campaign=read_more

 

 

yuriRequisitos: Ter o python3 instalado. (Eu usei o Python3.6 no python IDLE) instale o OpenCV, os, math, ctypes, time, pygame (você provavelmente só precisará baixar o OpenCV eo PyGame)

Agora pegue o arquivo “YURI FULLSCREEN.py” deste repositório no seu computador. salve as imagens yuri2.bmp e eyes e dê o caminho para essas imagens no código (você também pode usar seu próprio waifus se quiser) baixe o haarcascade e dê a sua localização no código. Execute o código e divirta-se com o seu waifu … weeb

Faça o seu próprio:

Você precisará apenas de 2 imagens

  1. personagem sem olhos yuriwoeyes
  2. os olhosolhossó usam essas imagens e você está pronto para ir!

Versão 2: Yuri agora tem proximidade

Se você mover seu rosto para perto da webcam, ela cora!
Eu adicionei alguns novos arquivos: yuriblush.py (Porque nós não damos espaços em nomes de arquivos :)), Yuri blush.png, Yuri cute.png, Yuriceyes.png,

O processo é o mesmo acima, em vez de baixar YURI FULLSCREEN.py use yuriblush.py. Copie e cole os caminhos e você é bom!

yuri fofayuri blush

Cython

O Cython é um compilador estático otimizado tanto para a linguagem deprogramação Python quanto para a linguagem de programação estendida Cython (baseada no Pyrex ). Isso torna a escrita de extensões C para Python tão fácil quanto o próprio Python.

Cython dá-lhe o poder combinado de Python e C para deixá-lo

A linguagem Cython é um superconjunto da linguagem Python que suporta adicionalmente chamar funções C e declarar tipos C em variáveis ​​e atributos de classe. Isso permite que o compilador gere código C muito eficiente a partir do código Cython. O código C é gerado uma vez e depois compila com todos os principais compiladores C / C ++ no CPython 2.6, 2.7 (2.4+ com Cython 0.20.x) assim como 3.3 e todas as versões posteriores. Nós regularmente executamos testes de integração em todas as versões suportadas do CPython e suas últimas ramificações em desenvolvimento para garantir que o código gerado permaneça amplamente compatível e bem adaptado a cada versão. PyPysuporte é trabalho em andamento (em ambos os lados) e é considerado mais utilizável desde o Cython 0.17. A versão mais recente do PyPy é sempre recomendada aqui.

Tudo isso faz Cython a linguagem ideal para embalar bibliotecas C externas, a incorporação de CPython em aplicativos existentes, e por módulos rápidos C que aceleram a execução de código Python.

Fontehttps://cython.org/#development

Nova estrutura baseada em aprendizado de máquina pode levar a avanços no design de materiais

Computadores usados ​​para ocupar salas inteiras. Hoje, um laptop de dois quilos pode deslizar sem esforço em uma mochila. Mas isso não teria sido possível sem a criação de novos processadores menores – que só são possíveis com a inovação de novos materiais.

Mas como  cientistas de  realmente inventam novos materiais? Por meio da experimentação, explica Sanket Deshmukh, professor assistente do departamento de engenharia química, cuja pesquisa computacional recentemente publicada pela equipe pode melhorar muito a eficiência e a economia de custos do processo de projeto de material.

O laboratório de Deshmukh, o laboratório de Design Computacional de Materiais Híbridos, dedica-se a compreender e simular as maneiras pelas quais as moléculas se movem e interagem – cruciais para a criação de um novo material.

Nos últimos anos, o aprendizado de máquina, um poderoso subconjunto de inteligência artificial, tem sido empregado por cientistas de materiais para acelerar a descoberta de  por meio de simulações em computador. Deshmukh e sua equipe publicaram recentemente uma pesquisa no Journal of Physical Chemistry Letters demonstrando uma nova  aprendizado de máquina que treina “on the fly”, ou seja, processa dados instantaneamente e aprende com eles para acelerar o desenvolvimento de modelos computacionais.

Tradicionalmente, o desenvolvimento de modelos computacionais é “executado manualmente por meio de uma abordagem de tentativa e erro, que é muito cara e ineficiente, e é uma tarefa que exige muito trabalho”, explicou Deshmukh.

“Este novo framework não só usa o aprendizado de máquina de uma maneira única pela primeira vez”, disse Deshmukh, “mas também acelera dramaticamente o desenvolvimento de modelos computacionais precisos de materiais”.

“Nós treinamos o modelo de aprendizado de máquina de forma ‘reversa’ usando as propriedades de um modelo obtido de  como uma entrada para o modelo de aprendizado de máquina e usando os parâmetros de entrada usados ​​em simulações de dinâmica molecular como saída para a máquina. modelo de aprendizagem “, disse Karteek Bejagam, um pesquisador de pós-doutorado no laboratório de Deshmukh e um dos principais autores do estudo.

Essa nova estrutura permite que os pesquisadores realizem a otimização de modelos computacionais, a uma velocidade excepcionalmente mais rápida, até que atinjam as propriedades desejadas de um novo material.

A melhor parte? Independentemente de quão precisas são as previsões dos modelos de aprendizado de máquina, como elas são testadas on-the-fly, esses modelos não têm impacto negativo na otimização do modelo, se for impreciso. “Não pode doer, só pode ajudar”, disse Samrendra Singh, professor visitante no laboratório de Deshmukh e outro autor do estudo.

“A beleza desta nova estrutura de aprendizado de máquina é que ela é muito geral, o que significa que o  aprendizado de máquina pode ser integrado a qualquer algoritmo de otimização e técnica computacional para acelerar o design de materiais”, disse Singh.

A publicação, liderada por Bejagam e Singh e com a colaboração da engenharia química Ph.D. A estudante Yaxin An mostra o uso dessa nova estrutura desenvolvendo os modelos de dois solventes como prova de conceito.

O laboratório de Deshmukh planeja desenvolver a pesquisa utilizando essa nova estrutura baseada em aprendizado de máquina para desenvolver modelos de vários materiais que possuam potenciais aplicações de biomedicina e energia.

 Explorar mais: o aprendizado de máquina permite a modelagem preditiva de materiais em 2-D

Mais informações: Karteek K. Bejagam et al. Modelos grosseiros aprendidos por máquina, o Journal of Physical Chemistry Letters (2018). DOI: 10.1021 / acs.jpclett.8b01416

Read more at: https://phys.org/news/2018-10-machine-based-framework-breakthroughs-material.html#jCp

Bibliotecas NLP

NLTK

O NLTK é uma plataforma líder para criar programas em Python para trabalhar com dados em linguagem humana. Ele fornece interfaces fáceis de usar para mais de 50 recursos corpora e lexicais como o WordNet, juntamente com um conjunto de bibliotecas de processamento de texto para classificação, tokenização, stemming, tagging, análise e raciocínio semântico, wrappers para bibliotecas NLP de força industrial, e um fórum de discussão ativo .

https://www.nltk.org/

 

TEXTBLOB

Características

  • Extração de frase substantiva
  • Marcação de parte da fala
  • Análise de sentimentos
  • Classificação (Naive Bayes, Árvore de Decisão)
  • Tradução e detecção de idiomas com tecnologia do Google Tradutor
  • Tokenização (dividindo o texto em palavras e frases)
  • Frequências de palavras e frases
  • Análise
  • n-gramas
  • Infeção de palavras (pluralização e singularização) e lematização
  • Correção ortográfica
  • Adicione novos modelos ou idiomas por meio de extensões
  • Integração WordNet

TextBlob é uma biblioteca Python (2 e 3) para processamento de dados textuais. Ele fornece uma API simples para mergulhar em tarefas comuns de processamento de linguagem natural (NLP), como marcação de parte da fala, extração de frase de substantivo, análise de sentimento, classificação, tradução e muito mais.

https://pypi.org/project/textblob/

 

CORENLP

O Stanford CoreNLP fornece um conjunto de ferramentas de tecnologia de linguagem humana. Pode dar as formas básicas de palavras, suas partes de linguagem, se são nomes de empresas, pessoas, etc., normalizar datas, horas e quantidades numéricas, marcar a estrutura de sentenças em termos de frases e dependências sintáticas, indicar que frases nominais referem-se às mesmas entidades, indicam sentimento, extraem relações particulares ou de classe aberta entre as menções de entidade, obtêm as citações que as pessoas disseram, etc.

https://stanfordnlp.github.io/CoreNLP/

 

SPACY

  • Tokenização não destrutiva
  • Reconhecimento de entidade nomeada
  • Suporte para mais de 33 idiomas
  • 13 modelos estatísticos para 8 idiomas
  • Vetores de palavras pré-treinadas
  • Integração fácil de aprendizagem profunda
  • Marcação de parte da fala
  • Análise de dependência rotulada
  • Segmentação por sentenças conduzidas por sintaxe
  • Construído em visualizadores para sintaxe e NER
  • Mapeamento de string para hash conveniente
  • Exportar para matrizes de dados numpy
  • Serialização binária eficiente
  • Embalagem e implantação de modelo fácil
  • Velocidade de última geração
  • Precisão robusta e rigorosamente avaliada

https://spacy.io/

 

GENSIM

 

https://radimrehurek.com/gensim/

Construindo um classificador de texto no Spark Shell do Mahout

Construindo um classificador de texto no Spark Shell do Mahout

Este tutorial o guiará pelas etapas usadas para treinar um modelo Naive Bayes Multinomial e criar um classificador de texto baseado nesse modelo usando o mahout spark-shell.

Pré-requisitos

Este tutorial pressupõe que você tenha suas variáveis ​​de ambiente do Spark configuradas para a mahout spark-shellvisualização: Reprodução com o Shell do Mahout . Além disso, assumimos que o Mahout está sendo executado no modo de cluster (ou seja, com a MAHOUT_LOCALvariável de ambiente não definida ), conforme estaremos lendo e gravando no HDFS.

Download e vetorização do conjunto de dados da Wikipedia

A partir de Mahout v. 0.10.0, ainda estamos dependentes das versões MapReduce de mahout seqwikimahout seq2sparsepara extrair e vetorizar nosso texto. Uma implementação Spark do seq2sparse está em andamento para o Mahout v. 0.11. No entanto, para baixar o conjunto de dados da Wikipedia, extrair os corpos da documentação, rotular cada documento e vetorizar o texto em vetores TF-IDF, podemos executar o exemplo de wikipedia-classifier.sh de forma simples .

Please select a number to choose the corresponding task to run
1. CBayes (may require increased heap space on yarn)
2. BinaryCBayes
3. clean -- cleans up the work area in /tmp/mahout-work-wiki
Enter your choice :

Digite (2). Isso fará o download de um grande dump XML recente do banco de dados da Wikipedia, em um /tmp/mahout-work-wikidiretório, descompactá-lo e colocá-lo no HDFS. Ele executará um trabalho MapReduce para analisar o conjunto da wikipedia , extraindo e rotulando apenas páginas com tags de categoria para [Estados Unidos] e [Reino Unido] (documentos ~ 11600). Em seguida, ele será executado mahout seq2sparsepara converter os documentos em vetores TF-IDF. O script também irá compilar e testar um modelo Naive Bayes usando o MapReduce . Quando estiver concluído, você verá uma matriz de confusão na tela. Para este tutorial, vamos ignorar o modelo MapReduce e construir um novo modelo usando o Spark baseado na saída de texto vetorizado por seq2sparse.

Começando

Inicie o mahout spark-shell. Há um script de exemplo: spark-document-classifier.mscala(.mscala denota um script Mahout-Scala que pode ser executado de forma semelhante a um script R). Nós estaremos percorrendo este script para este tutorial, mas se você quisesse simplesmente executar o script, você poderia simplesmente emitir o comando:

mahout> :load /path/to/mahout/examples/bin/spark-document-classifier.mscala

Por enquanto, vamos desmontar o roteiro, peça por peça. Você pode recortar e colar os seguintes blocos de código no mahout spark-shell.

Importações

Nossas importações de Mahout Naive Bayes:

import org.apache.mahout.classifier.naivebayes._
import org.apache.mahout.classifier.stats._
import org.apache.mahout.nlp.tfidf._

Importações Hadoop necessárias para ler o nosso dicionário:

import org.apache.hadoop.io.Text
import org.apache.hadoop.io.IntWritable
import org.apache.hadoop.io.LongWritable

Leia em nosso conjunto completo do HDFS como vetorizado por seq2sparse em classify-wikipedia.sh

val pathToData = "/tmp/mahout-work-wiki/"
val fullData = drmDfsRead(pathToData + "wikipediaVecs/tfidf-vectors")

Extrair a categoria de cada observação e agregar essas observações por categoria

val (labelIndex, aggregatedObservations) = SparkNaiveBayes.extractLabelsAndAggregateObservations(
                                                             fullData)

Construa um modelo Muitinomial Naive Bayes e autoteste no conjunto de treinamento

val model = SparkNaiveBayes.train(aggregatedObservations, labelIndex, false)
val resAnalyzer = SparkNaiveBayes.test(model, fullData, false)
println(resAnalyzer)

imprimir o ResultAnalyzermostrará a matriz de confusão.

Leia no dicionário e conte a frequência de documentos do HDFS

val dictionary = sdc.sequenceFile(pathToData + "wikipediaVecs/dictionary.file-0",
                                  classOf[Text],
                                  classOf[IntWritable])
val documentFrequencyCount = sdc.sequenceFile(pathToData + "wikipediaVecs/df-count",
                                              classOf[IntWritable],
                                              classOf[LongWritable])

// setup the dictionary and document frequency count as maps
val dictionaryRDD = dictionary.map { 
                                case (wKey, wVal) => wKey.asInstanceOf[Text]
                                                         .toString() -> wVal.get() 
                                   }
                                   
val documentFrequencyCountRDD = documentFrequencyCount.map {
                                        case (wKey, wVal) => wKey.asInstanceOf[IntWritable]
                                                                 .get() -> wVal.get() 
                                                           }

val dictionaryMap = dictionaryRDD.collect.map(x => x._1.toString -> x._2.toInt).toMap
val dfCountMap = documentFrequencyCountRDD.collect.map(x => x._1.toInt -> x._2.toLong).toMap

Definir uma função para tokenize e vectorize o novo texto usando nosso dicionário atual

Para este exemplo simples, nossa função vectorizeDocument(...)irá converter um novo documento em unigramas usando métodos nativos de String Java e vetorizar usando nossas frequências de dicionário e documento. Você também pode usar um analisador Lucene para bigramas, trigramas, etc. e integrar o Apache Tika para extrair texto de diferentes tipos de documentos (PDF, PPT, XLS, etc.). Aqui, no entanto, vamos mantê-lo simples, separando e tokenizing nosso texto usando regexs e métodos nativos de String.

def vectorizeDocument(document: String,
                        dictionaryMap: Map[String,Int],
                        dfMap: Map[Int,Long]): Vector = {
    val wordCounts = document.replaceAll("[^\\p{L}\\p{Nd}]+", " ")
                                .toLowerCase
                                .split(" ")
                                .groupBy(identity)
                                .mapValues(_.length)         
    val vec = new RandomAccessSparseVector(dictionaryMap.size)
    val totalDFSize = dfMap(-1)
    val docSize = wordCounts.size
    for (word <- wordCounts) {
        val term = word._1
        if (dictionaryMap.contains(term)) {
            val tfidf: TermWeight = new TFIDF()
            val termFreq = word._2
            val dictIndex = dictionaryMap(term)
            val docFreq = dfCountMap(dictIndex)
            val currentTfIdf = tfidf.calculate(termFreq,
                                               docFreq.toInt,
                                               docSize,
                                               totalDFSize.toInt)
            vec.setQuick(dictIndex, currentTfIdf)
        }
    }
    vec
}

Configure nosso classificador

val labelMap = model.labelIndex
val numLabels = model.numLabels
val reverseLabelMap = labelMap.map(x => x._2 -> x._1)

// instantiate the correct type of classifier
val classifier = model.isComplementary match {
    case true => new ComplementaryNBClassifier(model)
    case _ => new StandardNBClassifier(model)
}

Definir uma função argmax

O rótulo com a pontuação mais alta ganha a classificação de um determinado documento.

def argmax(v: Vector): (Int, Double) = {
    var bestIdx: Int = Integer.MIN_VALUE
    var bestScore: Double = Integer.MIN_VALUE.asInstanceOf[Int].toDouble
    for(i <- 0 until v.size) {
        if(v(i) > bestScore){
            bestScore = v(i)
            bestIdx = i
        }
    }
    (bestIdx, bestScore)
}

Defina nosso classificador de vetores TF (-IDF)

def classifyDocument(clvec: Vector) : String = {
    val cvec = classifier.classifyFull(clvec)
    val (bestIdx, bestScore) = argmax(cvec)
    reverseLabelMap(bestIdx)
}

Dois exemplos de artigos de notícias: Futebol dos Estados Unidos e Futebol do Reino Unido

// A random United States football article
// http://www.reuters.com/article/2015/01/28/us-nfl-superbowl-security-idUSKBN0L12JR20150128
val UStextToClassify = new String("(Reuters) - Super Bowl security officials acknowledge" +
    " the NFL championship game represents a high profile target on a world stage but are" +
    " unaware of any specific credible threats against Sunday's showcase. In advance of" +
    " one of the world's biggest single day sporting events, Homeland Security Secretary" +
    " Jeh Johnson was in Glendale on Wednesday to review security preparations and tour" +
    " University of Phoenix Stadium where the Seattle Seahawks and New England Patriots" +
    " will battle. Deadly shootings in Paris and arrest of suspects in Belgium, Greece and" +
    " Germany heightened fears of more attacks around the world and social media accounts" +
    " linked to Middle East militant groups have carried a number of threats to attack" +
    " high-profile U.S. events. There is no specific credible threat, said Johnson, who" + 
    " has appointed a federal coordination team to work with local, state and federal" +
    " agencies to ensure safety of fans, players and other workers associated with the" + 
    " Super Bowl. I'm confident we will have a safe and secure and successful event." +
    " Sunday's game has been given a Special Event Assessment Rating (SEAR) 1 rating, the" +
    " same as in previous years, except for the year after the Sept. 11, 2001 attacks, when" +
    " a higher level was declared. But security will be tight and visible around Super" +
    " Bowl-related events as well as during the game itself. All fans will pass through" +
    " metal detectors and pat downs. Over 4,000 private security personnel will be deployed" +
    " and the almost 3,000 member Phoenix police force will be on Super Bowl duty. Nuclear" +
    " device sniffing teams will be deployed and a network of Bio-Watch detectors will be" +
    " set up to provide a warning in the event of a biological attack. The Department of" +
    " Homeland Security (DHS) said in a press release it had held special cyber-security" +
    " and anti-sniper training sessions. A U.S. official said the Transportation Security" +
    " Administration, which is responsible for screening airline passengers, will add" +
    " screeners and checkpoint lanes at airports. Federal air marshals, behavior detection" +
    " officers and dog teams will help to secure transportation systems in the area. We" +
    " will be ramping it (security) up on Sunday, there is no doubt about that, said Federal"+
    " Coordinator Matthew Allen, the DHS point of contact for planning and support. I have" +
    " every confidence the public safety agencies that represented in the planning process" +
    " are going to have their best and brightest out there this weekend and we will have" +
    " a very safe Super Bowl.")

// A random United Kingdom football article
// http://www.reuters.com/article/2015/01/26/manchester-united-swissquote-idUSL6N0V52RZ20150126
val UKtextToClassify = new String("(Reuters) - Manchester United have signed a sponsorship" +
    " deal with online financial trading company Swissquote, expanding the commercial" +
    " partnerships that have helped to make the English club one of the richest teams in" +
    " world soccer. United did not give a value for the deal, the club's first in the sector," +
    " but said on Monday it was a multi-year agreement. The Premier League club, 20 times" +
    " English champions, claim to have 659 million followers around the globe, making the" +
    " United name attractive to major brands like Chevrolet cars and sportswear group Adidas." +
    " Swissquote said the global deal would allow it to use United's popularity in Asia to" +
    " help it meet its targets for expansion in China. Among benefits from the deal," +
    " Swissquote's clients will have a chance to meet United players and get behind the scenes" +
    " at the Old Trafford stadium. Swissquote is a Geneva-based online trading company that" +
    " allows retail investors to buy and sell foreign exchange, equities, bonds and other asset" +
    " classes. Like other retail FX brokers, Swissquote was left nursing losses on the Swiss" +
    " franc after Switzerland's central bank stunned markets this month by abandoning its cap" +
    " on the currency. The fallout from the abrupt move put rival and West Ham United shirt" +
    " sponsor Alpari UK into administration. Swissquote itself was forced to book a 25 million" +
    " Swiss francs ($28 million) provision for its clients who were left out of pocket" +
    " following the franc's surge. United's ability to grow revenues off the pitch has made" +
    " them the second richest club in the world behind Spain's Real Madrid, despite a" +
    " downturn in their playing fortunes. United Managing Director Richard Arnold said" +
    " there was still lots of scope for United to develop sponsorships in other areas of" +
    " business. The last quoted statistics that we had showed that of the top 25 sponsorship" +
    " categories, we were only active in 15 of those, Arnold told Reuters. I think there is a" +
    " huge potential still for the club, and the other thing we have seen is there is very" +
    " significant growth even within categories. United have endured a tricky transition" +
    " following the retirement of manager Alex Ferguson in 2013, finishing seventh in the" +
    " Premier League last season and missing out on a place in the lucrative Champions League." +
    " ($1 = 0.8910 Swiss francs) (Writing by Neil Maidment, additional reporting by Jemima" + 
    " Kelly; editing by Keith Weir)")

Vetorize e classifique nossos documentos

val usVec = vectorizeDocument(UStextToClassify, dictionaryMap, dfCountMap)
val ukVec = vectorizeDocument(UKtextToClassify, dictionaryMap, dfCountMap)

println("Classifying the news article about superbowl security (united states)")
classifyDocument(usVec)

println("Classifying the news article about Manchester United (united kingdom)")
classifyDocument(ukVec)

Amarre tudo em um novo método para classificar o texto

def classifyText(txt: String): String = {
    val v = vectorizeDocument(txt, dictionaryMap, dfCountMap)
    classifyDocument(v)
}

Agora podemos simplesmente chamar nosso método classifyText (…) em qualquer String

classifyText("Hello world from Queens")
classifyText("Hello world from London")

Persistência do modelo

Você pode salvar o modelo no HDFS:

model.dfsWrite("/path/to/model")

E recupere-o com:

val model =  NBModel.dfsRead("/path/to/model")

O modelo treinado agora pode ser incorporado em um aplicativo externo.

 

Fonte:  http://mahout.apache.org/docs/latest/tutorials/samsara/classify-a-doc-from-the-shell.html

Padrão de interface de software do microcontrolador Cortex

Padrão de interface de software do microcontrolador Cortex

O CMSIS permite um suporte de dispositivo consistente e interfaces de software simples para o processador e seus periféricos, simplificando a reutilização de software, reduzindo a curva de aprendizado para desenvolvedores de microcontroladores e reduzindo o tempo de mercado para novos dispositivos.


Visão geral

A partir do CMSIS-CORE, uma camada de abstração de hardware independente do fornecedor para os processadores Cortex-M, o CMSIS expandiu-se para áreas como o gerenciamento de componentes de software e as interfaces de depurador de referência. A criação de software é um fator de custo importante na indústria incorporada. A padronização das interfaces de software em todos os produtos do fornecedor de silício Cortex-M, especialmente ao criar novos projetos ou a migrar o software existente para um novo dispositivo, significa redução significativa de custos.

O CMSIS é definido em estreita cooperação com vários fornecedores de silício e software e fornece uma abordagem comum para a interface para periféricos, sistemas operacionais em tempo real e componentes de middleware. Isso simplifica a reutilização de software, reduzindo a curva de aprendizado para novos desenvolvedores de microcontroladores e reduzindo o tempo de colocação no mercado para dispositivos.


Componentes do CMSIS

CMSIS-CORE: inicialização consistente do sistema e acesso periférico

A inicialização do sistema, o acesso ao núcleo do processador e as definições periféricas são essenciais para cada aplicativo incorporado. O CMSIS-CORE padronizado é implementado para mais de 3900 dispositivos diferentes e facilita a introdução de um novo dispositivo ou migra software em microcontroladores.

CMSIS versão 5

O CMSIS é desenvolvido publicamente no GitHub. A última versão pode ser baixada aqui:

CMSIS-RTOS: Execução determinista de software em tempo real

Um conceito de super-loop só é adequado para aplicativos embutidos simples. Os microcontroladores Cortex-M são projetados para sistemas operacionais em tempo real que oferecem controle de recursos e tempo.

O CMSIS-RTOS é uma API que permite camadas de software consistentes com componentes de middleware e biblioteca. O CMSIS-RTOS RTX é executado em todos os dispositivos Cortex-M e é a implementação de referência comprovada que é fácil de aprender e usar.

CMSIS-DSP: implementação rápida de processamento de sinal digital

O desenvolvimento de um sistema de processamento de sinais digitais em tempo real (DSP) não é trivial, já que os algoritmos DSP dependem fortemente de operações matemáticas complexas que são mesmo críticos para o tempo.

A biblioteca CMSIS-DSP é uma rica coleção de funções DSP que o Arm optimizou para os vários núcleos de processadores Cortex-M. O CMSIS-DSP é amplamente utilizado na indústria e também permite a geração de código C otimizada a partir de várias ferramentas de terceiros.

CMSIS-Driver: interfaces periféricas genéricas para middleware e código de aplicativo

Interfacing microcontroller periféricos com middleware ou código genérico de aplicação pode ser um desafio, pois cada dispositivo é diferente. As interfaces CMSIS-Driver prontas para usar estão disponíveis para muitas famílias de microcontroladores e evitam a portabilidade do driver pesada e demorada.

CMSIS-Pack: acesso fácil a componentes de software reutilizáveis

Anteriormente, os módulos de software eram difíceis de integrar, pois os arquivos de origem e de cabeçalho tinham requisitos pouco claros, documentação inconsistente ou informações de licença perdidas.

Como o CMSIS-Pack define a estrutura de um pacote de software que contém componentes de software, esses problemas são abordados. Os componentes de software são facilmente selecionáveis ​​e todas as dependências de outros softwares são destacadas.

CMSIS-SVD: visão consistente para dispositivos e periféricos

Para cada microcontrolador suportado, os depuradores podem fornecer visualizações detalhadas aos periféricos do dispositivo que exibem o estado do registro atual.

Os arquivos CMSIS-SVD permitem essas visualizações e garantem que a exibição do depurador coincida com a implementação real dos periféricos do dispositivo.

CMSIS-DAP: conectividade para hardware de avaliação de baixo custo

Planos de desenvolvimento baratos estão disponíveis em muitos fornecedores de microcontroladores. Freqüentemente, uma unidade de depuração de baixo custo está incluída, mas interfaces diferentes precisam de uma configuração de ferramenta específica.

O CMSIS-DAP é uma interface padronizada para a Porta de Acesso de Depuração Cortex (DAP) e é usado por muitos kits de inicialização e é suportado por vários depuradores.

CMSIS-NN: kernels de rede neural eficiente

As soluções baseadas em rede neural estão se tornando cada vez mais populares para aplicações de aprendizado de máquinas incorporadas.

O CMSIS-NN é uma coleção de kernels de redes neurais eficientes desenvolvidos para maximizar o desempenho e minimizar a pegada de memória de redes neurais nos núcleos de processadores Cortex-M.

 

Fonte:  https://developer.arm.com/embedded/cmsis

https://developer.arm.com/products/system-design/development-boards

https://developer.arm.com/products/system-design/development-boards/logictile-express

https://community.arm.com/b/carlosdelfino/posts/facilitando-o-desenvolvimento-para-a-proxima-geracao-de-embarcados-inteligentes-e-conectados

Pacote WEKA – Análise de Dados para Aprendizagem de Máquina

O pacote de software Weka (Waikato Environment for Knowledge Analysis) começou a ser escrito em 1993, usando Java, na Universidade de Waikato, Nova Zelândia sendo adquirido posteriormente por uma empresa no final de 2006. O Weka encontra-se licenciado ao abrigo da General Public License sendo portanto possível estudar e alterar o respectivo código fonte.

O Weka tem como objetivo agregar algoritmos provenientes de diferentes abordagens/paradigmas na sub-área da inteligência artificial dedicada ao estudo de aprendizagem de máquina.

Essa sub-área pretende desenvolver algoritmos e técnicas que permitam a um computador “aprender” (no sentido de obter novo conhecimento) quer indutiva quer dedutivamente.

O Weka procede à análise computacional e estatística dos dados fornecidos recorrendo a técnicas de mineração de dados tentando, indutivamente, a partir dos padrões encontrados gerar hipóteses para soluções e no extremos inclusive teorias sobre os dados em questão.

Fontes:

https://www.cs.waikato.ac.nz/ml/weka/