Blog oficial para desenvolvedores que falam português
Aprimorando o desempenho do aprendizado profundo com AutoAugment
7/4/18
Postado por Ekin Dogus Cubuk, residente do Google AI, e Barret Zoph, cientista de pesquisa da equipe do Google Brain
O sucesso do aprendizado profundo em visão computacional pode ser parcialmente atribuído à disponibilidade de grandes quantidades de dados de treinamento classificados. O desempenho de um modelo normalmente melhora à medida que se aumentam a qualidade, a diversidade e a quantidade de dados de treinamento. Porém, coletar dados de qualidade suficientes para treinar um modelo da forma certa costuma ser bastante difícil. Uma solução para esse obstáculo é fixar simetrias de imagem nas arquiteturas de rede neural para que elas produzam resultados melhores ou designar especialistas para desenvolver métodos de aumento de dados, como rotação e reorientação, normalmente usados para treinar modelos de visão de bom desempenho. Porém, até recentemente, não se dava tanta atenção para encontrar maneiras de aumentar os dados existentes automaticamente com aprendizado de máquina. Inspirados pelos resultados das iniciativas do AutoML de
desenvolver arquiteturas
e
otimizadores de rede neural
para substituir componentes de sistemas desenvolvidos por humanos, ficamos com uma pergunta na cabeça: será que dá para automatizar o procedimento de aumento de dados?
Em “
AutoAugment: Learning Augmentation Policies from Data
”, exploramos um algoritmo de
aprendizado de reforço
que aumenta a quantidade e a diversidade dos dados de um conjunto de dados de treinamento. Intuitivamente, o aumento de dados é usado para ensinar um modelo sobre os pontos invariáveis das imagens no domínio de dados, de forma que a rede neural se torne invariável a essas simetrias importantes, o que melhora o desempenho. Ao contrário dos melhores modelos de aprendizado que usavam políticas de aumento de dados criadas "à mão", usamos aprendizado de reforço para encontrar as políticas de transformação de imagens ideal nos próprios dados. O resultado melhorou o desempenho dos modelos de visão computacional sem precisar da produção de conjuntos de dados novos e cada vez maiores.
Aumentando os dados de treinamento
A ideia por trás do aumento de dados é simples: imagens têm muitas simetrias que não mudam as informações presentes nelas. Por exemplo, um reflexo de um cachorro no espelho continua sendo um cachorro. Apesar de alguns desses "pontos invariáveis" serem óbvios para humanos, muitos não são. Por exemplo, o método
mixup
aumenta os dados ao sobrepor imagens durante o treinamento, gerando dados que melhoram o desempenho da rede neural.
Esquerda: uma imagem original do conjunto de dados
ImageNet
. Direita: a mesma imagem transformada por uma transformação de aumento de dados normalmente usada, uma reorientação horizontal com relação ao centro.
O AutoAugment é uma forma automática de desenvolver políticas personalizadas de aumento de dados para conjuntos de dados de visão computacional. Entre outras funções, ele orienta a seleção de operações básicas de transformação de imagem, como reorientação vertical ou horizontal de uma imagem, gira uma imagem, muda a cor de uma imagem etc. Além de prever que transformações de imagem devem ser combinadas, o AutoAugment determina a probabilidade e a magnitude da transformação usada, de modo que a imagem não seja manipulada sempre da mesma forma. O AutoAugment consegue selecionar uma política ideal em um espaço de pesquisa de 2,9 x 10
32
possibilidades de transformação de imagem.
O recurso aprende diferentes transformações, dependendo do conjunto de dados em que opera. Por exemplo, para imagens com
números de casas vistos da rua
(SVHN), que envolvem imagens de dígitos em cenas naturais, o AutoAugment foca em transformações geométricas, como distorção e conversão, que são diferenças comumente observadas neste conjunto de dados. Além disso, o AutoAugment aprendeu a inverter por completo cores que naturalmente aparecem no conjunto de dados SVHN original, dada a diversidade de materiais dos números de casa e prédios no mundo.
Esquerda: uma imagem original do conjunto de dados
SVHN
. Direita: a mesma imagem transformada pelo AutoAugment. Neste caso, a transformação ideal foi o resultado da distorção da imagem e da inversão das cores dos pixels.
No
CIFAR-10
e no
ImageNet
, o AutoAugment não usa distorção porque os conjuntos de dados normalmente não contêm imagens de objetos distorcidos nem invertem as cores totalmente, já que essas transformações criariam imagens não realistas. Em vez disso, o AutoAugment foca em aplicar um pequeno ajuste de cor e de distribuição da matiz, preservando as propriedades de cor gerais. Isso sugere que as cores reais dos objetos de CIFAR-10 e ImageNet são importantes, ao passo que só as cores relativas são importantes no SVHN.
Esquerda: uma imagem original do conjunto de dados
ImageNet
. Direita: a mesma imagem transformada pela política do AutoAugment. Primeiro, o contraste da imagem é maximizado e, depois, a imagem é girada.
Resultados
O algoritmo do AutoAugment encontrou políticas de aumento para alguns dos conjuntos de dados de visão computacional mais conhecidos que, quando integradas ao treinamento da rede neural, geram precisões altíssimas. Aumentando os dados do ImageNet, obtemos um novo nível de precisão de 83,54%, a melhor precisão do conjunto. No CIFAR-10, conseguimos uma taxa de erro de 1,48%, uma melhoria de 0,83% em relação ao aumento de dados padrão desenvolvido por cientistas. No SVHN, aprimoramos o melhor nível de erro de 1,3% para 1,02%. Um ponto importante é que as políticas do AutoAugment podem ser transferidas, ou seja, a política encontrada no conjunto de dados ImageNet também pode ser aplicada a outros conjuntos de dados de visão (
Stanford Cars
,
FGVC-Aircraft
etc.), o que melhora o desempenho da rede neural.
É um prazer ver que o nosso algoritmo AutoAugment atingiu esse nível de desempenho em tantos conjuntos de dados de visão computacional concorrentes. Esperamos ver aplicações dessa tecnologia em mais tarefas de visão computacional e até em outras áreas, como processamento de áudio ou modelos de idioma. As políticas de melhor desempenho estão no
anexo deste artigo
. Se você é pesquisador, pode usá-las para melhorar seus modelos para tarefas de visão.
Agradecimentos
Um agradecimento especial aos coautores do artigo, Dandelion Mane, Vijay Vasudevan e Quoc V. Le. Gostaríamos de agradecer também a Alok Aggarwal, Gabriel Bender, Yanping Huang, Pieter-Jan Kindermans, Simon Kornblith, Augustus Odena, Avital Oliver e Colin Raffel pela ajuda no projeto.
Labels
+page
1
20th Century Fox
1
A/B
1
Action
1
Action Console
1
Actions
3
Actions Console
1
Actions on Google
1
ActiveQA
1
Adaptive Battery
1
AddThis
1
ADK
1
ADL
1
Admin do Firebase
1
AdMob
6
Ads
2
AdWords
1
AdX
1
AI
4
algoritmo
1
AMP
6
AMP Linker
1
AMP Project
1
Analytics API
1
Android
58
Android 8.0 Oreo
1
Android 8.1
1
Android ADK
2
Android API
2
Android App Bundle
1
Android Dev Summit
1
Android Developers
23
Android Marshmallow
1
Android N
3
Android Nougat
2
Android P
3
Android P Beta 2
1
Android Preview
1
Android SDK
1
android studio
8
Android Studio 3.2
1
android wear
2
AndroidDev
6
AndroidX
1
Announcement
2
AoG
1
AoGDevs
1
api
15
API 25
1
API 28
1
APIs
4
Aplicativos
4
app
1
App Engine
1
Apple
1
apply
1
Apps
9
AR
1
ARCore
3
artificial intelligence
1
AsyncTask
1
AUC
1
AutoAugment
1
Avro
1
Awareness API
1
Biblioteca do Google
1
Big Data
1
BigQuery
1
BiometricPrompt
1
bitcode
1
Borg
1
Bot
1
bytecode Dalvik
1
C++
1
câmera
1
CameraDevice
1
Canal Beta
1
canary
1
câncer de próstata
1
Capital One
1
Cast
1
CFI
1
Chrome
8
Chrome 68
1
Chrome Dev Summit
1
Chrome DevTools
1
Chrome OS
2
Chromecast
1
Chromium
2
CI
1
CLI
1
Cloud
6
Cloud Computing
1
Cloud Console
1
Cloud Dataflow
1
Cloud Developers
2
Cloud DLP
1
Cloud Firestore
1
Cloud Messaging
1
Cloud ML Engine
1
Cloud Scheduler
1
Cloud Shell
1
Cloud Source Repositories
1
Cloud Spanner
2
CodeSchool
1
código aberto
2
Compute Engine
1
ConfigMap
1
Container Builder
1
CPU
2
Crash Reporting
2
Crashlytics
3
credential api
1
criptografia
1
CSS
3
CSS Grid Layout
1
CSV
1
CTA
1
Curitiba
1
Dart API
1
Data Validation
1
DBAs
1
DCGAN
1
Desenvolvedores Google
11
Desenvolvimento
3
DevBusBrasil
1
DevBytes
2
Developer Bus
1
Developer Preview
1
developer quiz
1
DevFest
3
DevFest16
1
DevFest18
1
DevFestW
1
DFP
2
Dialogflow
1
DLP
1
DLS
1
documentação
1
Dragon Ball Legends
1
E2E
1
eclipse
1
end-to-end-encryption
1
Estimator
1
Estimators API
1
estudantes
1
Eventos
15
Famílias multilíngue
1
FCM
2
Featured
1
Firebase
24
Firebase Analytics
6
Firebase App Indexing
2
Firebase Cloud Messaging
5
Firebase Crashlytics
2
Firebase Dynamic Links
3
Firebase In-App Messaging
1
Firebase Invites
2
Firebase Lab
1
Firebase Links Dinamicos
1
Firebase Notifications
3
Firebase Remote Config
1
Flutter
3
FRR
1
G+
1
game
1
game dev
3
Games
2
games services
1
GCloud
3
GCM
1
GCP
7
GDD
7
GDE
1
GDEs
1
GDG
12
GDG Curitiba
1
GDG Floripa
1
GDG OpenSampa
1
GDG Porto Alegre
1
GDG Recife
1
GDG SP
3
GDGs
1
GDL
1
Git
1
GitHub
1
GNMT
1
Google
3
Google Ad Manager
1
Google AI
1
Google Analytics
1
Google Assistant
1
Google Assistente
3
Google Brain
2
Google Cast SDK
1
google clou
1
Google Cloud
17
Google Cloud Certified
1
Google Cloud Healthcare API
1
Google Cloud Platform
3
google code-in
1
Google Developer Advocate
1
Google Developer Expert
1
Google Developers
11
Google Fotos
1
Google I/O
6
Google Play
16
Google Play Games services
1
Google Play Protect
1
Google Play Services
4
Google Slides
1
Google Speech
1
google summer of code
1
Google+
2
Google+ sign-in
1
Googlers
1
GPU
2
GSuites
1
GUI
1
Hackathon
1
Hangouts
1
Hangouts Chat
1
HDR
1
High Quality Apps
2
HTML5
6
HTTP
3
HTTPS
2
HttpURLConnection
2
I/O
1
IA
2
Illusive Images
1
ImageReader
1
In-App Messaging
1
Inglês
1
Instant Apps
1
inteligencia artificial
1
IntelliJ REPL
1
IntentService
1
Interoperabilidade
1
IO Extended
1
IO13
1
iOS
9
IU
2
Java
1
Java 8
1
javascript
2
JPEG
1
JSON
2
Kaggle
1
kernel
1
Keyboard Map API
1
Knowledge Connectors
1
Kotlin
6
Kotlin da Udacity
1
Kubernetes
5
LangID
1
Launchpad
1
launchpad accelerator
2
Learning Augmentation
1
LEGO
1
Listas
1
ListFragment
1
LLVM
1
LTO
1
Machine Learning
2
Meetup
2
mensagens
1
Mentoria
1
Messaging
2
microsserviços
1
ML
2
ML Kit
1
Mobile
3
Mobile Ads SDK
1
Monetização
3
Monetize
3
MySQL
1
Native
1
Navigation Architecture Component
1
NES
1
Neto Marin
2
Next Level Apps
2
Next Level Tips
2
NNLM
1
Node.js
2
Notificações
1
novembro azul
1
Number Genie
1
Nuvem Profissional
1
OAuth
2
OAuth2
1
Open Images Extended
1
open source
3
Options Menu
1
Options Menu virtual
1
Orkut
2
Payment Request
1
pesquisa
1
PHA
1
Phone Gateway
1
PII
1
pixel
1
Play Academy
1
Play Console
1
Play Services
1
Playtime 2018
1
plug-in AMP
1
Porto Alegre
1
Preact
1
PRIV
1
program
1
progressive web apps
2
Push Notification
2
Python
1
QA
1
RA
2
Raspberry Pi
1
RBDMS
1
React
1
recording apis
1
remarketing
1
Remote Config
2
research
4
ResultReceiver
1
reward
1
RNN
2
Robolectric 4.0
1
RV
1
Sceneform
1
SDK
4
SDK Manager
3
Security
2
Server
1
service worker
1
sign-in
1
Sliding Tabs
1
Smartronix
1
social
6
Spark
1
SRE
1
Stack
1
Stack Overflow
1
Startups
2
Storage
2
story
1
Support Library
1
SurfaceView
1
Svelte
1
switch
1
Tag Manager
1
Tag Manager 360
1
tensorflow
5
TensorFlow Hub
2
TensorFlow Lite
1
TensorFlow Transform
1
Test Lab
2
Testes
1
TF Hub
2
tf.keras
1
TFDV
1
TFX
1
TI essencial
1
toolkit
1
tradução
1
TTS
1
Udacity
1
Universal Apps
1
Universal Sentence Encoder
1
user experience
1
ux
1
VectorDrawable
1
Velostrata
1
Volley
1
vr
2
vulnerabilidades
1
vulnerabilidades do Google
1
vulnerability
1
web
2
web dev
2
WebKit
1
webservice
3
when
1
WordPress
1
WorkerDOM
1
YouTube
4
YouTube API
1
YUV
1
Zomato
1
Archive
2022
Nov
Oct
Jul
Jun
May
Apr
Mar
Feb
Jan
2021
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2020
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2019
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
2018
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
2017
Aug
Jul
Jun
May
Apr
Mar
Jan
2016
Dec
Nov
Oct
Sep
Aug
Jul
May
Mar
2014
Jul
Jun
Apr
Mar
Feb
2013
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Mar
Feb
Jan
2012
Nov
Jul
Jun
May
Apr
Mar
2011
Nov
Sep
Aug
Jul
Jun
Feed
Follow @googledevbr