Upgrade to Pro — share decks privately, control downloads, hide ads and more …

A Importância do Ócio (JS Version): Delegando tarefas para a máquina com Machine Learning

A Importância do Ócio (JS Version): Delegando tarefas para a máquina com Machine Learning

Sabe aquele momento em que você sabe que tem que fazer alguma tarefa, mas simplesmente não quer se dar ao trabalho? Ou aquelas que você até faria de bom grado, mas sabe que o seu desempenho seria absolutamente horrível? Não faça algo que uma máquina poderia estar fazendo por você! Hoje em dia com o aumento do poder computacional nos nossos computadores pessoais e APIs de servidores externos, existem várias tarefas que poderíamos estar ensinando ao computador como fazer pra que nunca tenhamos que fazer de novo. Nesta talk eu vou mostrar como eu uso Machine Learning para automatizar minhas atividades cotidianas, explicar os algoritmos utilizados e mostrar como você também pode utilizar isso para recuperar tempo precioso da sua vida que você poderia usar para salvar o mundo ou fazer absolutamente nada relevante.

Isabella Silveira

July 14, 2018
Tweet

More Decks by Isabella Silveira

Other Decks in Technology

Transcript

  1. A Importância do Ócio
    Delegando tarefas para a máquina com Machine Learning
    @silveira_bells

    View Slide

  2. Ao longo dos anos, a tecnologia foi evoluindo
    para facilitar a sobrevivência da espécie humana

    View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. Quanto mais ela evoluía, mais fácil era a vida
    e assim as preocupações iam mudando

    View Slide

  7. View Slide

  8. View Slide

  9. View Slide

  10. Então a tecnologia começou a criar novas formas
    de interação e se tornou um espelho da própria sociedade

    View Slide

  11. Século XXI: a tecnologia a serviço dos
    interesses da sociedade

    View Slide

  12. E qual é a coisa mais valiosa da atualidade?

    View Slide

  13. Poder?

    View Slide

  14. View Slide

  15. View Slide

  16. Fama?

    View Slide

  17. View Slide

  18. Dinheiro?

    View Slide

  19. View Slide

  20. Ganhar discussão no twitter?

    View Slide

  21. View Slide

  22. Nope

    View Slide

  23. View Slide

  24. Tempo

    View Slide

  25. Isa Silveira
    @silveira_bells
    Desenvolvedora @Work&Co
    Carioca, cover da Anitta*, mãe de cachorro,
    maths freak, senso de humor peculiar @vida

    View Slide

  26. View Slide

  27. View Slide

  28. Tempo

    View Slide

  29. Tempo é commodity mais importante
    da atualidade

    View Slide

  30. View Slide

  31. View Slide

  32. View Slide

  33. View Slide

  34. VC
    TC
    VTNC
    VDD
    SDDS
    TBH
    OMW
    IMO
    PQP
    SRSLY
    WTF
    BRB

    View Slide

  35. Estamos sempre procurando formas
    de ganhar tempo e otimizar processos

    View Slide

  36. View Slide

  37. View Slide

  38. View Slide

  39. O que é ótimo, porque aí podemos usar nosso
    tempo no que realmente importa

    View Slide

  40. https://www.researchgate.net/publication/230786381_Inspired_by_Distraction_Mind_Wandering_Facilitates_Creative_Incubation

    View Slide

  41. Por que não usar a tecnologia pra
    automatizar processos pessoais então?

    View Slide

  42. Era uma vez, uma história que se
    repetia muitas vezes

    View Slide

  43. “Lembra de quando a gente foi pra ____ em ____?
    Você ainda tem as fotos aí?”
    - Silveira, Christine

    View Slide

  44. View Slide

  45. View Slide

  46. Como eu poderia usar a tecnologia pra
    otimizar esse processo?

    View Slide

  47. como ferramenta de otimização de tempo pessoal
    Machine learning

    View Slide

  48. O que é machine learning?

    View Slide

  49. O aprendizado automático ou aprendizado de máquina (em inglês:
    "machine learning") é um subcampo da o que evoluiu do estudo
    de reconhecimento de padrões e da teoria do aprendizado
    computacional em inteligência artificial . Em 1959, Arthur Samuel definiu
    aprendizado de máquina como o "campo de estudo que dá aos
    computadores a habilidade de aprender sem serem explicitamente
    programados". O aprendizado automático explora o estudo e construção
    de algoritmos que podem aprender de seus erros e fazer previsões
    sobre dados. Tais algoritmos operam construindo um modelo a partir de
    inputs amostrais a fim de fazer previsões ou decisões guiadas pelos
    dados ao invés de simplesmente seguindo inflexíveis e
    estáticas instruções programadas.

    View Slide

  50. Permite que a máquina aprenda

    View Slide

  51. Com machine learning, podemos
    aprender sobre dados de
    forma automatizada

    View Slide

  52. “Mas por que usar
    Machine Learning no browser?”

    View Slide

  53. Tem alguns jeitos em que poderíamos
    usar ML em uma aplicação web

    View Slide

  54. Hipótese #1: terceirizando o ML

    View Slide

  55. Deixar alguma API de ML cuidar do
    trabalho pesado

    View Slide

  56. Mas agora você tem que lidar com a carga
    intermediária de vários e vários GBs de fotos

    View Slide

  57. Passar toda a mídia pra um S3, pagar por toda a
    hospedagem da carga, mais APIs pra integrar
    Preocupações do dev

    View Slide

  58. Barreiras de usabilidade e preocupações com
    privacidade: “por que um serviço externo está
    manipulando as minhas fotos?”
    Preocupações do usuário

    View Slide

  59. E o S3 por si só não é suficiente, você ainda
    precisa implementar formas de selecionar,
    cortar e rotular fotos

    View Slide

  60. No final a eficácia não está boa o suficiente e
    não tem como alterar o algoritmo porque você
    não tem acesso a ele

    View Slide

  61. View Slide

  62. Hipótese #2: ML server side

    View Slide

  63. Usar alguma biblioteca bem estabelecida
    em python, por exemplo

    View Slide

  64. Mas você não sabe exatamente qual vai ser o
    volume de usuários nem o trafego de dados

    View Slide

  65. Load balancing num EC2, guardar os modelos e dados
    de cada usuário, implementação de provisionamento
    pra inferência e transferência do aprendizado
    Preocupações do dev

    View Slide

  66. Fazer upload de todas as fotos e recebimento da
    resposta demora e consome muita banda.
    Processo muito custoso
    Preocupações do usuário

    View Slide

  67. View Slide

  68. Hipótese #3: ML no browser

    View Slide

  69. Tensorflow.js fazendo todo o machine
    learning no client side mesmo

    View Slide

  70. Ótima abstração de algoritmos de ML, sem
    malabarismo de dados de um lado pro outro;
    tudo acontece no mesmo lugar

    View Slide

  71. Machine learning interativo
    Novas oportunidades

    View Slide

  72. Fim da necessidade de instalação de
    bibliotecas pelo usuário
    Novas oportunidades

    View Slide

  73. Aceleração usando GPU através do WebGL
    (até mobile!)
    Novas oportunidades

    View Slide

  74. Maior democratização de aprendizado e de
    acesso à aplicações com machine learning

    View Slide

  75. Performance do front
    Preocupações do dev

    View Slide

  76. Fazer upload das fotos usando
    cliente do browser
    Preocupações do usuário

    View Slide

  77. View Slide

  78. Case do dia

    View Slide

  79. Reconhecimento facial com redes
    neurais convolucionais

    View Slide

  80. Reconhecimento facial
    1.Encontrar os rostos
    2.Projeção de feições
    3.Diferenciação de rostos

    View Slide

  81. Reconhecimento facial
    1.Encontrar os rostos
    2.Projeção de feições
    3.Diferenciação de rostos

    View Slide

  82. View Slide

  83. Qual approach usar?
    Comparação de pixels?

    View Slide

  84. View Slide

  85. View Slide

  86. View Slide

  87. View Slide

  88. View Slide

  89. View Slide

  90. View Slide

  91. Dividimos a imagem em quadrados de 16x16

    View Slide

  92. View Slide

  93. View Slide

  94. https://github.com/justadudewhohacks/face-api.js

    View Slide

  95. await faceapi.loadModels('/')

    View Slide

  96. View Slide

  97. View Slide

  98. View Slide

  99. Reconhecimento facial
    1.Encontrar os rostos
    2.Projeção de feições
    3.Diferenciação de rostos

    View Slide

  100. View Slide

  101. View Slide

  102. fullFaceDescription.forEach((fd, i) => {
    faceapi.drawLandmarks(canvas, fd.landmarks,
    { drawLines: true })
    })

    View Slide

  103. View Slide

  104. View Slide

  105. View Slide

  106. View Slide

  107. Reconhecimento facial
    1.Encontrar os rostos
    2.Projeção de feições
    3.Diferenciação de rostos

    View Slide

  108. View Slide

  109. Agora é tranquilo, só achar por comparação

    View Slide

  110. Facebook

    View Slide

  111. 2,19 bilhões de usuários

    View Slide

  112. 300 milhões uploads de fotos por dia

    View Slide

  113. View Slide

  114. View Slide

  115. E óbvio que como todo trabalho braçal,
    nós também vamos deixar essa parte pra máquina

    View Slide

  116. Treinamos uma rede neural convolucional
    pra fazer o trabalho pesado

    View Slide

  117. 128 medidas pra cada rosto

    View Slide

  118. embbeding

    View Slide

  119. View Slide

  120. View Slide

  121. Comparamos o embedding da face atual com os que já temos
    registrados e verificamos qual tem a menor distância euclidiana

    View Slide

  122. View Slide

  123. Agora conseguimos fazer uma categorização de
    pessoas e agrupamento por data

    View Slide

  124. https://github.com/bella-silveira/face-recognition-demo

    View Slide

  125. Aprenda coisas fora da sua rotina de trabalho

    View Slide

  126. A tecnologia também é sua aliada
    fora das horas comerciais

    View Slide

  127. Use seu tempo com as coisas
    realmente importantes $❤

    View Slide

  128. Muito obrigada! ❤

    View Slide

  129. @silveira_bells

    View Slide