Na actualidade aínda estamos arranxando e actualizando os equipos e acabamos de abrir os formularios de solicitude para asociacións sen ánimo de lucro para que entre este final de curso e o principio do curso que vén lle deamos saída a todos os ordenadores reciclados.
Seguramente oíches falar ultimamente da intelixencia artificial, pois todos os días utilizamos aplicacións que fan uso destas técnicas: cando usas un tradutor automático, cando o móbil se desbloquea co recoñecemento da túa cara, cando che sae publicidade xusto de cousas similares ás que estiveches mirando na rede con anterioridade, cando Netflix che recomenda películas e series, cando google che solta iso de “quizais quixeches dicir …” e suxíreche outra palabra de busca, cando o xestor de imaxes recoñece as persoas que hai nas túas fotografías ou cando ves que xa están a desenvolver coches autónomos que non necesitan condutor. Como serán capaces estes coches de identificar o que teñen arredor e decidir que facer en consecuencia?
Aprendizaxe automática
Ben, pois unha das técnicas utilizadas na intelixencia artificial é a coñecida como machine learning ou aprendizaxe automática. Trátase dun conxunto de algoritmos cos que se constrúe un modelo de clasificación a partir de conxuntos de datos coñecidos. Con este modelo a máquina vai ser capaz de clasificar datos de entrada novos que non eran coñecidos de antemán pero que se axustan aos parámetros do modelo.
Por exemplo, a partir das primeiras imaxes de cans boxer a máquina será quen de recoñecer que a segunda imaxe corresponde a un boxer, aínda que non a tivese como dato inicial. O mesmo podemos facer con textos, audio ou datos numéricos. Por certo, a idea de facer unha aplicación para recoñecer razas de cans é de Tania, de 4ºESO :-)
Hai algunhas aplicacións que nos van permitir probar isto da aprendizaxe automática.
Machine Learning for Kids
Unha aplicación que podemos usar é Machine Learning for Kids (ML4K), que permite o recoñecemento de imaxes, textos e datos, e utilizar despois o modelo para crear aplicacións en scratch ou app inventor. Ten unha chea de actividades de exemplo que podes facer.
No seguinte exemplo podedes ver como podemos facer unha aplicación que recoñeza números debuxados a man:
Learning Machine Learning
Outra aplicación é LearningML, que consta dun editor e dun clon de scratch. Aínda está en proceso de desenvolvemento e iremos vendo como co tempo van aumentando as súas funcionalidades, pero de momento xa podemos ir utilizándoa para o recoñecemento de imaxes e textos. Polo de agora é algo máis limitada que a anterior, pero ten a vantaxe de que non é necesario rexistrarse (agás se queres gardar os proxectos no servidor), que podemos usala en galego e que podemos utilizar imaxes cargadas desde o ordenador para a xeración do modelo.
Na súa web podemos atopar tamén algúns videotitoriais para aprender a manexala.
Vou amosar un par de exemplos que fixen:
Recoñecemento de textos
Podemos utilizar o editor para facer unha clasificación de diversas clases de textos e, despois, programar unha aplicación de scratch que sexa quen de clasificar as mensaxes de entrada. Poderiamos facer un xogo de preguntas e respostas ou, como no seguinte exemplo, un asistente virtual:
Podes descargar aquí os ficheiros Asistente.json para o editor e Asistente.sb3 para scratch: Asistente.zip
Recoñecemento de imaxes
Para recoñecer imaxes fixen unha aplicación de recoñecemento de xestos da man. A través da cámara web o programa recolle as imaxes da man e clasifícaas segundo o modelo realizado con anterioridade a partir tamén de imaxes da cámara. Segundo sexa esta clasificación un debuxo tentará imitar o xesto que realiza a man.
Tamén podemos facer un programa algo máis complexo. Neste caso xogamos a pedra, papel e tesoiras contra o ordenador. Quen acade antes 3 puntos gaña.
Podes descargar aquí os ficheiros pedra-papel-tesoiras.json para o editor e pedra-papel-tesoira.sb3 para scratch: PedraPapelTesoiras.zip
A programar!
Pódensenos ocorrer miles de cousas máis. A verdade é que estas aplicacións abren un mundo de posibilidades para a aprendizaxe da programación, pois permiten a creación de programas que incorporan o machine learning. Na programación clásica, por chamala dalgunha maneira, os programas consisten nunha serie de instrucións que cobren todas as opcións ás que se enfronta o ordenador e a máquina fai exactamente o que lle pedimos. Con estas técnicas de intelixencia artificial é o ordenador quen debe aprender duns datos e apañarse para obter resultados a partir de datos que non estaban definidos inicialmente. Terá que buscarse a vida, actuar cun pouco máis de intelixencia :-)
Hai tempo que amosamos por aquí o artigo “a música das fábricas“, no que viamos como as máquinas eran capaces de facer ritmos e son do máis acompasado. Hoxe temos aquí a música que fai un ordenador cuántico IMB Q. Podédela escoitar a partir do minuto 1:32.
A computación cuántica aínda está en cueiros, non pode substituír a electrónica, pero todo se andará. De momento podemos ir vendo de que vai, coñecer un pouco o seu interior e escoitar a súa música.
Quen estudou matemáticas no Bacharelato ten claro que a división dun número entre cero é unha indefinición, pois cando x tende a cero, n/x aproxímase a infinito. Isto soemos simplificalo dicindo que calquera número dividido entre 0 dá infinito.
Se facemos esta operación nun programa informático, a división por cero é considerada coma un erro lóxico. No caso de que se produza dita operación, os procesadores matemáticos son capaces de detectala e, nese caso, entregan un informe de erro que detén o proceso que se está a executar e evita que a aplicación entre nun bucle infinito.
Proba dividir entre cero na túa calculadora de peto e verás como a resposta é unha mensaxe de erro ou de operación non válida.
Pero que sucede nunha calculadora mecánica? Podes ver o resultado neste vídeo:
Nestas máquinas os cálculos realízanse facendo xirar sucesivos engrenaxes un número determinado de veces segundo a operación que se realice. No caso das divisións, o procedemento é similar ao método que utilizamos cando dividimos manualmente, a base de restar sucesivamente para encontrar cada díxito do resultado. Ao ser o divisor igual a 0, a resta execútase sempre, pero o resultado non cambia, polo que a operación se repite infinitamente intentando obter un resultado. A máquina entrou nun bucle infinito!
Algunhas calculadoras mecánicas máis modernas xa incluían un “E” para indicar erro cando se producía, pero enseguida chegaron as calculadoras electrónicas que fixeron que estas bonitas e ruidosas máquinas pasasen á historia.
Para representar unha cor nunha pantalla adóitase utilizar o modelo de cor RGB (R= red, vermello; G= green, verde; B= blue, azul). O código de cores RGB baséase na mestura das cores vermello, verde e azul con maior ou menor intensidade para acadar toda a gama completa. Cada unha das cores RGB pode tomar un valor entre 0 e 255 en decimal ou entre 00 e FF en hexadecimal, co que se consegue un total de 256 3 = 16.777.216 cores distintas.
Por exemplo:
Cor
dec
hex
Cor
dec
hex
vermello
255,0,0
#FF0000
amarelo
255,255,0
#FFFF00
verde
0,255,0
#00FF00
ciano
0,255,255
#00FFFF
azul
0,0,255
#0000FF
maxenta
255,0,255
#FF00FF
branco
255,255,255
#FFFFFF
negro
0,0,0
#000000
Na seguinte aplicación feita con Scratch podes ver como varía a cor segundo os valores RGB que elixas:
[Scratch: Cor RGB]
Cor no Scratch
No Scratch 1.4, cando queremos definir a cor do lapis aparécenos unha paleta na que podemos seleccionar a cor desexada. Porén, no Scratch 2.0 só se pode seleccionar unha cor que estea visible na pantalla.
Unha opción é crear coa ferramenta de debuxo un sprite que conteña as cores que queremos utilizar e seleccionalas dende alí.
Tamén podemos definir a cor mediante un valor que vai desde 0 ata 200, que corresponde á seguinte paleta:
Se queremos unha cor específica definida mediante o código RGB, temos tres opcións:
Control dun LED RGB con arduino
Un LED RGB é un LED que incorpora tres LEDs no mesmo encapsulado, de xeito que se poden formar miles de cores axustando de maneira individual a intensidade de cada LED. O tres LEDs poden estar unidos polo cátodo ou polo ánodo.
Dependendo da intensidade de cada un dos LEDs RGB obteremos diferentes cores. O que imos facer é enviar un valor entre 0 e 255 a cada un dos pins PWM dos LEDs.
Na seguinte simulación feita con 123D circuits podes ver un o código utilizado para obter diferentes cores dun LED RGB. Simulación:
Se queredes controlar un LED RGB conectado a unha placa arduino a través do móbil mediante Bluetooth podedes ver este proxecto de instructables.
Usamos cookies para o correcto funcionamento do sitio web. Ao facer clic en Aceptar, aceptas o uso das cookies necesarias. Podes xestionar as cookies que queres activar.
Este sitio web utiliza cookies para mellorar a súa experiencia mentres navega polo sitio web. Delas, as cookies que se clasifican como necesarias almacénanse no teu navegador xa que son esenciais para o funcionamento das funcionalidades básicas do sitio web. Tamén utilizamos cookies de terceiros que nos axudan a analizar e comprender como usas este sitio web. Estas cookies almacenaranse no teu navegador só co teu consentimento e tes a opción de desactivalas.
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
Cookie
Duración
Descrición
ak_bmsc
2 hours
This cookie is used by Akamai to optimize site security by distinguishing between humans and bots
cf_ob_info
past
The cf_ob_info cookie is set by Cloudflare to provide information on HTTP Status Code returned by the origin web server, the Ray ID of the original failed request and the data center serving the traffic.
cf_use_ob
past
Cloudflare sets this cookie to improve page load times and to disallow any security restrictions based on the visitor's IP address.
cookielawinfo-checkbox-advertisement
1 year
Set by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Advertisement" category .
cookielawinfo-checkbox-analytics
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional
11 months
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
CookieLawInfoConsent
1 year
Records the default button state of the corresponding category & the status of CCPA. It works only in coordination with the primary cookie.
cookiesession1
1 year
This cookie is set by the Fortinet firewall. This cookie is used for protecting the website from abuse.
JSESSIONID
session
The JSESSIONID cookie is used by New Relic to store a session identifier so that New Relic can monitor session counts for an application.
viewed_cookie_policy
11 months
The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Cookie
Duración
Descrición
language
session
This cookie is used to store the language preference of the user.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Cookie
Duración
Descrición
browser_id
5 years
This cookie is used for identifying the visitor browser on re-visit to the website.
CONSENT
2 years
YouTube sets this cookie via embedded youtube-videos and registers anonymous statistical data.
sid
session
The sid cookie contains digitally signed and encrypted records of a user’s Google account ID and most recent sign-in time.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
Cookie
Duración
Descrición
NID
6 months
NID cookie, set by Google, is used for advertising purposes; to limit the number of times the user sees an ad, to mute unwanted ads, and to measure the effectiveness of ads.
VISITOR_INFO1_LIVE
5 months 27 days
A cookie set by YouTube to measure bandwidth that determines whether the user gets the new or old player interface.
YSC
session
YSC cookie is set by Youtube and is used to track the views of embedded videos on Youtube pages.
yt-remote-connected-devices
never
YouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
yt-remote-device-id
never
YouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
yt.innertube::nextId
never
This cookie, set by YouTube, registers a unique ID to store data on what videos from YouTube the user has seen.
yt.innertube::requests
never
This cookie, set by YouTube, registers a unique ID to store data on what videos from YouTube the user has seen.