Noções básicas sobre os tipos de corrida e a habilitação de sensores compatíveis com o AWS DeepRacer - AWS DeepRacer

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Noções básicas sobre os tipos de corrida e a habilitação de sensores compatíveis com o AWS DeepRacer

No AWS DeepRacer, você pode participar dos seguintes tipos de eventos de corrida:

  • Avaliação por tempo: corra contra o relógio em uma pista desobstruída com o objetivo de obter o tempo de volta mais rápido possível.

  • Desvio de objetos: corrida contra o relógio em uma pista com obstáculos estacionários e com o objetivo de obter o tempo de volta mais rápido possível.

  • Corrida mano a mano: corrida contra um ou mais veículos na mesma pista com o objetivo de cruzar a linha de chegada antes dos outros veículos.

Atualmente as corridas da comunidade do AWS DeepRacer são compatíveis apenas com testes de tempo.

Você deve experimentar diferentes sensores em seu veículo do AWS DeepRacer para fornecer a ele capacidades suficientes para observar o entorno de um determinado tipo de corrida. A próxima seção descreve os sensores compatíveis com o AWS DeepRacer que podem habilitar os tipos compatíveis de eventos de corridas autônomas.

Escolha sensores para os tipos de corrida do AWS DeepRacer

Seu veículo do AWS DeepRacer é fornecido com uma câmera monocular frontal como o sensor padrão. Você pode adicionar outra câmera monocular frontal para fazer câmeras estéreo frontais ou complementar a câmera monocular ou as câmeras estéreo com uma unidade LiDAR.

A lista a seguir resume as capacidades funcionais dos sensores compatíveis com o AWS DeepRacer, juntamente com análises breves de custo e benefício:

Câmera frontal

Uma câmera de lente única frontal pode capturar imagens do ambiente na frente do veículo host, incluindo bordas e formas da pista. Esse é o sensor mais barato e é adequado para lidar com tarefas de condução autônomas mais simples, como testes de tempo livres de obstáculos em pistas bem-marcadas. Com o treinamento adequado, ele pode evitar obstáculos estacionários em locais fixos na pista. No entanto, as informações de localização do obstáculo são incorporadas no modelo treinado e, como resultado, o modelo tem probabilidade de ser sobreajustado e pode não generalizar para outras posições de obstáculos. Com objetos estacionários posicionados em locais aleatórios ou outros veículos em movimento na pista, é improvável que o modelo convirja.

No mundo real, o veículo do AWS DeepRacer é fornecido com uma câmera de lente única frontal como o sensor padrão. A câmera possui lente grande angular de 120 graus e captura imagens RGB que são convertidas em imagens em escala de cinza de 160 x 120 pixels a 15 quadros por segundo (fps). Essas propriedades do sensor são preservadas no simulador para maximizar a chance de que o modelo treinado seja bem-transferido da simulação para o mundo real.

Câmera estéreo frontal

Uma câmera estéreo tem duas ou mais lentes que capturam imagens com a mesma resolução e frequência. As imagens das duas lentes são usadas para determinar a profundidade dos objetos observados. As informações de profundidade de uma câmera estéreo são valiosas para o veículo host para evitar a colisão com os obstáculos ou outros veículos na frente, especialmente em ambientes mais dinâmicos. No entanto, as informações de profundidade adicionadas fazem com que os treinamentos convirjam mais lentamente.

No veículo físico do AWS DeepRacer, a câmera estéreo de duas lentes é criada com a adição de outra câmera de lente única e com a montagem de cada câmera nos lados esquerdo e direito do veículo. O software do AWS DeepRacer sincroniza as capturas de imagem das duas câmeras. As imagens capturadas são convertidas em escala de cinza, empilhadas e alimentadas na rede neural para inferência. O mesmo mecanismo é duplicado no simulador para treinar o modelo para generalizar bem para um ambiente do mundo real.

Sensor LiDAR

Um sensor LiDAR usa lasers rotativos para enviar pulsos de luz para fora do espectro visível e cronometrar quanto tempo cada pulso leva para retornar. A condução e a distância dos objetos que um pulso específico atinge são registradas como um ponto em um grande mapa 3D centrado em torno da unidade LiDAR.

Por exemplo, o LiDAR ajuda a detectar pontos cegos do veículo host para evitar colisões enquanto o veículo muda de faixa. Ao combinar o LiDAR com câmeras mono ou estéreo, você permite que o veículo host capture informações suficientes para executar as ações apropriadas. No entanto, um sensor LiDAR custa mais em comparação com as câmeras. A rede neural deve aprender a interpretar os dados do LiDAR. Assim, os treinamentos demorarão mais tempo para convergir.

No veículo físico do AWS DeepRacer, um sensor LiDAR é montado na parte traseira e inclinado para baixo em 6 graus. Ele gira na velocidade angular de 10 rotações por segundo e tem um intervalo de 15 cm a 2 m. Ele pode detectar objetos atrás e ao lado do veículo host, bem como objetos altos desobstruídos pelas partes do veículo na frente. O ângulo e o intervalo são escolhidos para tornar a unidade LiDAR menos suscetível ao ruído ambiental.

Você pode configurar seu veículo do AWS DeepRacer com a seguinte combinação dos sensores compatíveis:

  • Câmera de lente única frontal.

    Essa configuração é boa para avaliações de tempo, bem como para desvio de obstáculos com objetos em locais fixos.

  • Somente câmera estéreo frontal.

    Essa configuração é boa para desvio de obstáculos com objetos em locais fixos ou aleatórios.

  • Câmera com lente única frontal com LiDAR.

    Essa configuração é boa para evitar obstáculos ou para corridas mano a mano.

  • Câmera estéreo frontal com LiDAR.

    Essa configuração é boa para evitar obstáculos ou para corridas mano a mano, mas provavelmente não é mais econômica para avaliações de tempo.

À medida que você adiciona mais sensores para fazer com que seu veículo do AWS DeepRacer passe de avaliações de tempo para evitar objetos e corridas mano a mano, o veículo coleta mais dados sobre o ambiente para alimentar a rede neural subjacente no treinamento. Isso torna o treinamento mais desafiante porque o modelo precisa lidar com complexidades maiores. No final, suas tarefas de aprendizado para treinar modelos tornam-se mais exigentes.

Para aprender progressivamente, você deve começar a treinar para testes de tempo antes de passar para desvio de objetos e depois para corridas mano a mano. Você encontrará recomendações mais detalhadas na próxima seção.

Configurar o atendente para treinar modelos do AWS DeepRacer

Para treinar um modelo de aprendizado por reforço para o veículo do AWS DeepRacer correr em corrida de desvio de obstáculos ou em corrida mano a mano, você precisa configurar o agente com sensores apropriados. Para testes de tempo simples, você pode usar o agente padrão configurado com uma câmera de lente única. Ao configurar o agente, você pode personalizar o espaço de ação e escolher uma topologia de rede neural para que eles funcionem melhor com os sensores selecionados para atender aos requisitos de condução pretendidos. Além disso, você pode alterar a aparência do agente para identificação visual durante o treinamento.

Depois de configurá-lo, a configuração do agente é registrada como parte dos metadados do modelo para treinamento e avaliação. Para avaliação, o agente recupera automaticamente a configuração registrada para usar os sensores especificados, o espaço de ação e a tecnologia de rede neural.

Esta seção orienta você pelas etapas para configurar um agente no console do AWS DeepRacer.

Para configurar um atendente do AWS DeepRacer no console do AWS DeepRacer
  1. Faça login no console do AWS DeepRacer.

  2. No painel de navegação principal, escolha Garage (Oficina).

  3. Na primeira vez que você usa Garage (Oficina), a caixa de diálogo WELCOME TO THE GARAGE (BEM-VINDO À OFICINA) é apresentada a você. Escolha > ou < para navegar pela introdução aos vários sensores compatíveis com o veículo do AWS DeepRacer ou escolha X para fechar a caixa de diálogo. Você pode encontrar essas informações introdutórias no painel da ajuda em Garage (Oficina).

  4. Na página Garage (Oficina) escolha Build new vehicle (Criar novo veículo).

  5. Na página Mod your own vehicle (Modelar seu próprio veículo) em Mod specifications (Especificações do modelo), escolha um ou mais sensores para testar e aprender a melhor combinação que pode atender aos seus tipos de corrida pretendidos.

    Para treinar para os testes de tempo do veículo do AWS DeepRacer, escolha Câmera. Para corridas de desvio de obstáculos ou mano a mano, você quer usar outros tipos de sensores. Para escolher Câmera estéreo, adquira uma câmera de lente única adicional. O AWS DeepRacer transforma a câmera estéreo em duas câmeras de lente única. Você pode ter uma câmera de lente única ou uma câmera estéreo de duas lentes em um veículo. Em qualquer um dos casos, você pode adicionar um sensor LiDAR ao agente se desejar apenas que o modelo treinado seja capaz de detectar e evitar pontos cegos em corridas de desvio de obstáculos ou mano a mano.

  6. Na página Garage (Oficina) e em Neural network topologies (Topologias de rede neural), escolha uma topologia de rede compatível.

    Em geral, uma rede neural mais profunda (com mais camadas) é mais adequada para dirigir em pistas mais complicadas com curvas fechadas e numerosas, para corridas de desvio de obstáculos estacionários ou para competir com outros veículos em movimento. Mas uma rede neural mais profunda é mais cara para treinar e o modelo leva mais tempo para convergir. Por outro lado, uma rede mais rasa (com menos camadas) custa menos e leva menos tempo para treinar. O modelo treinado é capaz de lidar com condições de pista mais simples ou requisitos de condução, tais como ensaios temporais numa pista sem obstáculos e sem concorrentes.

    Especificamente, o AWS DeepRacer é compatível com CNN de 3 camadas ou CNN de 5 camadas.

  7. Na página Garage (Oficina) escolha Next (Próximo) para continuar a configurar o espaço de ação do agente.

  8. Na página Action space (Espaço de ação) deixe as configurações padrão para seu primeiro treinamento. Para treinamentos subsequentes, experimente diferentes configurações para o ângulo de direção, a velocidade máxima e suas granularidades. Em seguida, escolha Next (Próximo).

  9. Na página Color your vehicle to stand out in the crowd (Colorir seu veículo para que se destaque na multidão) insira um nome em Name your DeepRacer (Nomear seu DeepRacer) e escolha uma cor para o agente na lista Vehicle color (Cor do veículo). Escolha Submit (Enviar).

  10. Na página Garage (Oficina) examine as configurações do novo agente. Para fazer mais modificações, escolha Mod vehicle (Modelar veículo) e repita as etapas anteriores a partir da Step 4 (Etapa 4).

Agora, seu agente está pronto para o treinamento.

Personalize o treinamento do AWS DeepRacer para testes de contrarrelógio

Se esta for a primeira vez que você usa o AWS DeepRacer, comece com um teste de tempo simples para se familiarizar com a forma de treinar modelos do AWS DeepRacer para dirigir seu veículo. Desta forma, você obtém uma introdução mais suave aos conceitos básicos da função de recompensa, do agente, do ambiente etc. Seu objetivo é treinar um modelo para fazer o veículo permanecer na pista e terminar uma volta o mais rápido possível. Depois, você pode implantar o modelo treinado em seu veículo do AWS DeepRacer para fazer o test drive em uma pista física sem sensores adicionais.

Para treinar um modelo para esse cenário, você pode escolher o agente padrão em Oficina no console do AWS DeepRacer. O agente padrão foi configurado com uma única câmera frontal, um espaço de ação padrão e uma topologia de rede neural padrão. É útil começar a treinar um modelo do AWS DeepRacer com o agente padrão antes de passar para os mais sofisticados.

Para treinar seu modelo com o agente padrão, siga as recomendações a seguir.

  1. Comece a treinar seu modelo com uma pista simples de formas mais regulares e de curvas menos fechadas. Use a função de recompensa padrão. E treine o modelo por 30 minutos. Depois de concluir o trabalho de treinamento, avalie o modelo na mesma pista para observar se o agente pode terminar uma volta.

  2. Leia sobre os parâmetros da função de recompensa. Continue o treinamento com diferentes incentivos para recompensar o agente para ir mais rápido. Alongue o tempo de treinamento para o próximo modelo em 1 a 2 horas. Compare o gráfico de recompensas entre o primeiro treinamento e este segundo. Continue experimentando até que o gráfico de recompensas pare de melhorar.

  3. Leia mais sobre espaço de ação. Treine o modelo pela terceira vez aumentando a velocidade máxima (por exemplo, 1 m/s). Para modificar o espaço de ação, crie um novo agente na Garage (Oficina) quando tiver a oportunidade de fazer a modificação. Ao atualizar a velocidade máxima de seu agente, esteja ciente de que quanto maior a velocidade máxima, mais rápido o agente poderá completar a pista em avaliação e mais rápido seu veículo do AWS DeepRacer poderá terminar uma volta em uma pista física. No entanto, uma velocidade máxima mais alta geralmente significa um tempo mais longo para o treinamento convergir porque o agente tem mais probabilidade de passar do limite em uma curva e, assim, sair da pista. É recomendável diminuir as granularidades para dar ao agente mais espaço para acelerar ou desacelerar e ajustar ainda mais a função de recompensa de outras maneiras, a fim de ajudar o treinamento a convergir mais rapidamente. Depois que o treinamento convergir, avalie o 3º modelo para ver se o tempo da volta melhora. Continue explorando até que não haja mais melhorias.

  4. Escolha uma pista mais complicada e repita as Etapa 1 a Etapa 3. Avalie seu modelo em uma pista diferente da que você usou para treinar para ver como o modelo pode generalizar em diferentes pistas virtuais generalizar para ambientes do mundo real.

  5. (Opcional) Experimente valores diferentes dos hiperparâmetros para melhorar o processo de treinamento e repita a Etapa 1 a Etapa 3.

  6. (Opcional) Examine e analise os logs do AWS DeepRacer. Para obter um código de exemplo que possa ser usado para analisar os logs, consulte https://github.com/aws-samples/aws-deepracer-workshops/tree/master/log-analysis.

Personalizar o treinamento do AWS DeepRacer para pistas com desvio de objetos

Depois de se familiarizar com os testes de tempo e ter treinado alguns modelos convergentes, passe para o próximo desafio mais exigente: desvio de obstáculos. Aqui, seu objetivo é treinar um modelo que possa completar uma volta o mais rápido possível sem sair da pista e evitando bater nos objetos colocados na pista. Obviamente, esse é um problema mais difícil para o agente aprender, e o treinamento leva mais tempo para convergir.

O console do AWS DeepRacer é compatível com dois tipos de treinamento para desvio de obstáculos: os obstáculos podem ser colocados em locais fixos ou aleatórios ao longo da pista. Com locais fixos, os obstáculos permanecem fixos no mesmo local durante todo o trabalho de treinamento. Com locais aleatórios, os obstáculos mudam de lugar aleatoriamente de episódio para episódio.

É mais fácil para os treinamentos convergirem para desvio de obstáculos de localização fixa, porque o sistema tem menos graus de liberdade. No entanto, os modelos podem ser sobreajustados quando as informações de localização são incorporadas aos modelos treinados. Como resultado, os modelos podem ser sobreajustados e podem não generalizar bem. Para desvio de obstáculos posicionados aleatoriamente, é mais difícil para os treinamentos convergirem, porque o agente deve continuar a aprender a evitar a colisão com obstáculos em locais que não viu antes. No entanto, modelos treinados com essa opção tendem a generalizar melhor e serem bem-transferidos para as corridas do mundo real. Para começar, coloque os obstáculos em locais fixos, familiarize-se com os comportamentos e ataque os locais aleatórios.

No simulador do AWS DeepRacer, os obstáculos são caixas cuboides com as mesmas dimensões, (9,5 polegadas (L) x 15,25 polegadas (L) x 10/5 polegadas (A)), que a caixa da embalagem do veículo do AWS DeepRacer. Dessa forma, será mais simples transferir o modelo treinado do simulador para o mundo real se você colocar a caixa da embalagem como um obstáculo na pista física.

Para experimentar o desvio de obstáculos, siga a prática recomendada descrita nas etapas abaixo:

  1. Use o agente padrão ou experimente novos sensores e espaços de ação personalizando um agente existente ou criando um novo. Você deve limitar a velocidade máxima para abaixo de 0,8 m/s e a granularidade da velocidade em 1 ou 2 níveis.

    Comece a treinar um modelo por cerca de 3 horas com 2 objetos em locais fixos. Use o exemplo da função de recompensa e treine o modelo na pista que você correrá ou em uma pista que se assemelha muito a ela. A pista do AWS DeepRacer Smile Speedway (Intermediate) é uma pista simples, o que a torna uma boa opção para a preparação para a corrida de elite. Avalie o modelo na mesma pista com o mesmo número de obstáculos. Veja como a recompensa total esperada converge, se convergir.

  2. Leia sobre os parâmetros da função de recompensa. Experimente com variações de sua função de recompensa. Aumente o número de obstáculos para 4. Treine o agente para ver se o treinamento converge na mesma quantidade de tempo do treinamento. Caso contrário, ajuste sua função de recompensa novamente, abaixe a velocidade máxima ou reduza o número de obstáculos e treine o agente novamente. Repita o experimento até que não haja nenhuma melhora mais significativa.

  3. Agora, continue o treinamento para desviar de obstáculos em locais aleatórios. Você precisará configurar o agente com sensores adicionais, que estão disponíveis em Oficina no console do AWS DeepRacer. Você pode usar uma câmera estéreo. Ou você pode combinar uma unidade LiDAR com uma câmera de lente única ou uma câmera estéreo, mas deve esperar um tempo de treinamento mais longo. Defina o espaço de ação com uma velocidade máxima relativamente baixa (por exemplo, 2 m/s) para que o treino convirja mais rapidamente. Para a arquitetura de rede, use uma rede neural superficial, que foi considerada suficiente para desvio de obstáculos.

  4. Comece a treinar o novo agente por 4 horas para desvio de obstáculos com 4 objetos colocados aleatoriamente em uma pista simples. Avalie o modelo na mesma pista para ver se ele pode concluir voltas com obstáculos posicionados aleatoriamente. Caso contrário, você pode querer ajustar sua função de recompensa, tentar sensores diferentes e ter mais tempo de treinamento. Como outra dica, você pode tentar clonar um modelo existente para continuar treinando para aproveitar a experiência aprendida anteriormente.

  5. (Opcional) Escolha uma velocidade máxima mais alta para o espaço de ação ou tenha mais obstáculos colocados aleatoriamente ao longo da pista. Experimente com diferentes combinações de sensores e ajuste as funções de recompensa e os valores de hiperparâmetros. Experimente com a topologia de rede CNN de 5 camadas. Treine o modelo novamente para determinar como ele afeta a convergência do treinamento.

Personalize o treinamento do AWS DeepRacer para corridas head-to-bot

Tendo passado pelo desvio de obstáculos de treinamento, você está pronto para atacar o próximo nível de desafio: modelos de treinamento para corridas mano a mano. Ao contrário dos eventos de desvio de obstáculos, as corridas mano a mano têm um ambiente dinâmico com veículos em movimento. Seu objetivo é treinar modelos para o veículo do AWS DeepRacer competir com outros veículos em movimento e atingir a linha de chegada em primeiro lugar sem sair da pista ou colidir com qualquer um dos outros veículos. No console do AWS DeepRacer, você pode treinar um modelo de corrida mano a mano, fazendo com que seu agente compita com veículos bot 1-4. De modo geral, você deve ter mais obstáculos colocados em uma pista mais longa.

Cada veículo bot segue um caminho predefinido a uma velocidade constante. Você pode habilitá-lo para mudar de faixa ou permanecer em sua faixa de partida. Semelhante ao treinamento para evitar obstáculos, você pode ter os veículos bot distribuídos uniformemente pela pista em duas faixas. O console limita você a ter até 4 veículos bot na pista. Ter mais veículos concorrentes na pista proporciona ao agente de aprendizagem mais oportunidades para encontrar situações mais variadas com os outros veículos. Dessa forma, ele aprende mais em um trabalho de treinamento e o agente é treinado mais rapidamente. No entanto, é provável que cada treinamento demore mais tempo para convergir.

Para treinar um agente com veículos bot, defina a velocidade máxima do espaço de ação do agente maior que a velocidade (constante) dos veículos bot para que o agente tenha mais oportunidades de passagem durante o treinamento. Como um bom ponto de partida, você deve definir a velocidade máxima do agente em 0,8 m/s e a velocidade de movimento do veículo bot em 0,4 m/s. Se você permitir que os bots mudem de faixa, o treinamento se tornará mais desafiante porque o agente deve aprender não só como evitar colisão com um veículo em movimento na frente na mesma faixa, mas também como evitar colisão com outro veículo em movimento na frente na outra faixa. Você pode definir os bots para mudar de faixa em intervalos aleatórios. A duração de um intervalo é selecionada aleatoriamente de um intervalo de tempo (por exemplo, 1s a 5s) especificado antes de iniciar o trabalho de treinamento. Esse comportamento de mudança de faixa é mais semelhante aos comportamentos de corrida mano a mano do mundo real e o agente treinado deve gerar melhor. No entanto, leva mais tempo para treinar o modelo para convergir.

Siga estas etapas sugeridas para iterar seu treinamento para corrida mano a mano:

  1. Em Oficina do console do AWS DeepRacer, crie um novo agente de treinamento configurado com câmeras estéreo e uma unidade LiDAR. É possível treinar um modelo relativamente bom usando apenas câmera estéreo contra veículos bot. O LiDAR ajuda a reduzir pontos cegos quando o agente muda de faixa. Não defina um valor muito alto para a velocidade máxima. Um bom ponto de partida é 1 m/s.

  2. Para treinar para corridas mano a mano contra veículos bot, comece com dois veículos bot. Defina a velocidade móvel do bot abaixo da velocidade máxima do seu agente (por exemplo, 0,5 m/s se a velocidade máxima do agente for 1 m/s). Desative a opção de mudança de faixa e escolha o agente de treinamento que acabou de criar. Use um dos exemplos da função de recompensa ou faça modificações minimamente necessárias e treine por 3 horas. Use a pista na qual você correrá ou uma pista que se assemelha muito a ela. A pista do AWS DeepRacer Smile Speedway (Intermediate) é uma pista simples, o que a torna uma boa opção para a preparação para a corrida de elite. Após a conclusão do treinamento, avalie o modelo treinado na mesma pista.

  3. Para tarefas mais desafiantes, clone o modelo treinado para um segundo modelo de corrida mano a mano. Prossiga para experimentar com mais veículos bot ou habilite as opções de mudança de faixa. Comece com operações de mudança de faixa lentas em intervalos aleatórios superiores a 2 segundos. Você também pode querer experimentar funções de recompensa personalizadas. Em geral, sua lógica de função de recompensa personalizada pode ser semelhante àquela do desvio de obstáculos, se você não levar em consideração um equilíbrio entre ultrapassar outros veículos e permanecer na pista. Dependendo da eficiência de seu modelo anterior, você poderá precisar treinar por mais 3 a 6 horas. Avalie seus modelos e veja qual é o desempenho do modelo.