Escrito por Camila Toniato e Matheus Ricardo— 8 de Maio de 2025
Há alguns anos a Apple vem democratizando o Machine Studying e implementando-o ao seu ecossistema com o CreateML e o CoreML.
Como este tema vem crescendo dia a dia com o increase das IA viemos com este artigo para que você, usário do sistema IOS, consiga implementar modelos de maneira simples e fácil.
O que é o CreateML? É uma iniciativa da Apple de desmistificar o Machine Studying e com ele conseguimos treinar diferentes tipos de modelos, dentro de 13 classificações, sendo elas:
- Picture Classification
- Object Detection
- Model Switch
- Hand Pose Classification
- Motion Classification
- Hand Motion Classification
- Exercise Classification
- Sound Classification
- Textual content Classification
- Phrase Tagging
- Tabular Classification
- Tabular Regression
- Suggestion.
Por possuir uma interface limpa e simples o CreateML se torna uma ótima alternativa para aqueles que desejam iniciar no mercado de Machine Studying.
Mas mesmo possuindo tal interface facilitada, como implementar seus projetos?
Bom, existem várias formas de se pensar nesse momento, mas acreditamos que algo elementary é iniciar seu projeto já sabendo o dataset correspondente ao template que você vai querer utilizar, e para isso você precisa ter em mente o que é um bom conjunto de dados.
Quando procuramos um dataset é preciso analisar a variedade dos dados para que não ocorram alguns problemas como Underfitting/Overfitting.
- Overfitting
Ele ocorre quando, na etapa de treino, o modelo acaba decorando os padrões ao invés de aprendê-los fazendo com que nesta fase o desempenho seja ótimo porém quando vamos para a fase de teste ele acaba não sendo eficaz.
Exemplo: Queremos que nosso modelo reconheça gatos em uma imagem, então temos um dataset de treino com fotos de gatos porém todos estão em uma parede azul. No treino o modelo identificaria muito bem os gatos porém na etapa de testes se colocássemos uma imagem de gato em uma parede cinza o modelo não o identificaria. Isso ocorre porque na etapa de testes a parede azul virou parte do padrão. - Underfitting
Já o underffiting acontece quando emblem na etapa de treinamento o modelo não consegue identificar algum padrão, neste caso o teste nem precisaria ocorrer para identificar um dataset ruim.
Exemplo: Queremos novamente que nosso modelo reconheça imagens de gatos e inserimos um dataset no modelo, entretanto durante o treinamento ele demonstra uma efetividade de 50%, isso significaria que ele não conseguiu reconhecer os padrões e, neste caso, o ultimate a se fazer seria procurar outro dataset, ou melhorar aquele escolhido.
Em nosso primeiro projeto, nós utilizamos o Picture Classification para identificar as emoções das fotos que o usuário enviaria e, desta forma poder retornar a ele uma música que teria relação com tal sentimento. Para isso utilizamos um dataset que possui 5 pastas diferentes, cada uma com um grupo de imagens que representasse as emoções desejadas: Alegria, tristeza, paixão, medo e raiva. Sendo assim conseguimos ligar tais fotos com as respectivas canções.
Para saber mais sobre esse projeto você pode acessar o hyperlink abaixo que o direcionará ao GitHub, no qual o código estará disponível.
Como implementar (Picture Classification)
- Ao selecionar o template você será direcionado para a área de treinamento, na qual será necessário colocar o dataset.
Após isso, dentro do CreateML nós precisamos selecionar as pastas que vão treinar nosso modelo, neste momento é importante considerar qual tipo de treinamento iremos utilizar. Para este projeto utilzamos 80/20, 80% treino e 20% teste.
Nos parâmetros de teste voce deve ficar atento a dois parametros:
- Iterations: Mais interações significa que o modelo irá passar mais vezes pela imagem durante o treinamento. No entanto, uma maior quantidade de iterations significa que o processador do seu Mac será mais demandado, cuidado!
- Augmentations: São as argumentações que você pode colocar na imagem que adicionam ruídos , para que o modelo possa treinar de forma mais efetiva, para conseguir identificar, mais tarde, imagens de diversas qualidades.
Ao finalizar o treinamento, o aplicativo te dará os resultados, podendo eles serem positivos ou negativos dependendo da qualidade do dataset escolhido.
No segundo projeto, o qual trabalhamos com o Textual content Classification, queríamos classificar as emoções dos usuários com base no texto que eles escrevessem e o ML retornaria um sentimento junto com o texto condizente em braile. Sendo assim, nós buscamos um dataset que possuía tweets variados que conseguissem representar os sentimentos que estávamos procurando e iniciamos o projeto criando uma pasta que iria conter tal modelo.
O treinamento dos dois ML possui muita similaridade, utilizamos o mesmo modelo 80/20 de prática, a única exceção é que o textual content não tem os mesmos parâmetros.
Como adicionar o modelo ao seu código
Após apertar o botao get irá aparecer uma janela para o modelo ser salvo, feito isso você arrasta ele para sua pasta e o Xcode já irá entender que é um modelo para ser trabalhado.
O que é e como implementar CoreML? É um framework da Apple que facilita a inserção de modelos de machine studying no Xcode.
- Como implementar CoreML (Textual content Classification)
// Uma váriavel que armazena o modelo que você irá utilizar
let config= MLModelConfiguration()
// Seleciona o modelo (NLModel = Pure Language)
let mlModel = attempt NLModel(mlModel: FeelingClassifier(configuration: config).mannequin)// Chama a váriavel acima mlModel que faz com que o modelo retorne um texto (a emoção)
let handler = mlModel.predictedLabel(for: textual content) // ['text' seria a String de entrada]
- Como implementar CoreML (Picture Classification)
// O do-catch é para tratamento de excessão
do {
// Uma váriavel que armazena o modelo que você irá utilizar
let config = MLModelConfiguration()// Tentativa de criação de um modelo de Picture Classification
let mannequin = attempt VNCoreMLModel(for: FacialExpressions(configuration: config).mannequin)// Extrai a resposta do modelo atribuindo a primeira resposta
let request = VNCoreMLRequest(mannequin: mannequin) { request, error in
if let outcomes = request.outcomes as? [VNClassificationObservation] {
classificationLabel = outcomes.first!.identifier
} else {
print("Invalid Classify")
}
}// O handler recebe uma imagem
let handler = VNImageRequestHandler(ciImage: ciImage)// Aqui usamos a variavel que está acima junto com a request para entender a imagem que está sendo passada
attempt handler.carry out([request])// Tratamento de erro
} catch {
print("Couldn't load mannequin: (error.localizedDescription)")
}// Retorna a resposta do ML
return classificationLabel
Com isso observamos como a Apple tem incentivado esse assunto no seu ecossistema deixando o CoreML e CreateML muito intuitivos. Vimos como podemos implementar isso em nossos projetos, principalmente com os templates de Picture e Textual content Classification, e esperamos ter conseguido te ajudar a desmistificar um pouco mais esse mundo das IAs.