Como criar um detector de objetos em uma imagem usando CoreML

Samuel Brasileiro
Apple Developer Academy | UFPE
5 min readSep 11, 2020

Primeiro, o que é CoreML? — Na WWDC de 2017 a Apple apresentou uma nova proposta: A embarcação em modelos de inteligência artificial em seus apps, por meio de seu novo SDK, o CoreML, que é muito mais acessível e simples que outras versões que existiam. Com a nova ferramenta CreateML, é possível criar e treinar modelos de transcrição de voz, de detecção de objetos, de análise de dados, entre outros.

Mas nesse post a gente vai explorar a funcionalidade mais usada: A de detecção de objetos em uma imagem.

Índice

Criação do modelo de detecção de objetos

Construção do banco de imagens/dataset

No meu projeto, eu precisava identificar acessórios como óculos de sol e brincos numa pessoa. Agora como ele iria identificar esses objetos se eu não disse pro meu programa o que esses objetos são e as variedades que ele pode ter? É preciso apresentar muitas imagens (e bote muitas nisso) para ensinar o programa o que são os objetos.

Para isso precisamos fazer o seguinte:

  1. Antes de fazer a busca por imagens, decida logo qual é o conjunto de classes dos objetos que você deseja identificar. Podem ser tanto acessórios numa pessoa, placas de trânsito ou até mesmo raças de cachorro. Obs.: Sempre tente objetos com classes mais parecidas, para o modelo ficar mais completo, e não uma mistura de tipos de árvore e tipos de pizza, por exemplo.
  2. Crie uma nova pasta chamada "dataset" para armazenar as imagens que você vai procurar.
  3. Para cada classe que você escolheu salve 30 imagens (no mínimo) que contenham o objeto que você quer. Por exemplo, se uma das minhas classes é "óculos de sol" numa pessoa, tenho que salvar 30 imagens de pessoas usando óculos de sol.

Obs.: Tenha noção do seguinte: quanto maior o número de classes mais vai ser demorada a criação do modelo.

Agora que temos o nosso dataset, o programa precisa saber onde estão os objetos nas imagens, né?

Para isso, vamos precisar usar o Cloud Annotations da IBM

Cloud Annotations

Se você ainda não tem uma conta da IBMCloud, você terá que fazer (gratuitamente) para usufruir o site.

  • Clique em "Start a new project" para criar o seu projeto.
  • Após escrever o nome do seu projeto, escolha o tipo de anotação. Como queremos identificar simples objetos numa cena, escolha a opção Localization.
  • Depois de confirmar, arraste e solte todas as imagens do seu dataset no site. Depois de um tempinho fazendo o upload de todas as imagens, a tela é para estar um pouco parecida com a de baixo.
  • Note que seu mouse agora é uma marcação e que a imagem que aparece tem óculos e brincos. Clicando e segurando o mouse, você consegue delimitar o espaço de identificação do objeto. Para os óculos de sol é desse formato:
  • Perceba que no canto superior direito apareceu um novo item: Untitled Label. Edite e escreva o nome da classe, à sua escolha. (Use o mesmo nome para todos os objetos da mesma classe)
  • Faça o mesmo processo para cada objeto identificado na cena, em todas as imagens do dataset.
  • Quando terminar de fazer todas as marcações, é preciso clicar em File e depois em Exportar como Create ML para baixar o arquivo .zip final.
  • Descomprima o arquivo e perceba que ele possui todas as imagens e um arquivo chamado _annotations.json. Esse arquivo possui todas as marcações que fizemos no site.

Criando o modelo no Create ML

  • Abra o Xcode e percorra o seguinte caminho:
  • Após abrir o Create ML selecione New Document para criar o seu novo projeto. Como estamos criando um modelo de recognição de objetos, selecione o template Object Detector
  • Arraste a pasta que você exportou do Cloud Annotations (a que contém o arquivo _annotations.json) no espaço Training Data.
  • Obs.: Você pode mudar o número máximo de iterações que seu projeto vai ter. Quanto maior for o número, mais bem treinado seu modelo vai ser, porém ele demorará mais tempo para ser computado.
  • No meu projeto foi um total de 323 itens de treinamento de 11 classes bastante diferentes e escolhi o máximo de iterações (99.999) para computar e durou aproximadamente sete horas.
  • Agora é só clicar em Train no canto superior direito e esperar seu modelo ficar pronto.

Depois de concluir, você pode se divertir testando seu modelo no próprio Create ML ou ir logo exportando o modelo ao seu projeto.

Como aplicar seu modelo em um projeto iOS

--

--