如何在Xcode 10中创建MLImageClassifier

yc0p9oo0  于 2023-01-10  发布在  其他
关注(0)|答案(2)|浏览(187)

我尝试在Xcode 10.1 Playground中使用Create ML构建机器学习-Image Recognition,但在将数据放入模型时遇到一些问题。
我有一个文件夹,其中的图像编号从1到1336,还有一个.csv文件,其中有2列(图像名称和图像分类)。
我不知道该怎么把这个放进模型里。
我现在有这个:

import Cocoa
import CreateML

let data = try MLDataTable(contentsOf: URL(fileURLWithPath: "/Users/x/Desktop/CoreML/project/file.csv"))

let(trainingData, testingData) = data.randomSplit(by: 0.8, seed: 1)

let Classifier = try MLImageClassifier *need help here*

let evaluationMetrics = sentimentClassifier.evaluation(on: testingData)

let evaluationAccuracy = (1 - evaluationMetrics.classificationError) * 100

let metaData = MLModelMetadata(author: "x", shortDescription: "Model", version: "1.0")

try classifier.write(to: URL(fileURLWithPath: "/Users/x/Desktop/CoreML/project/XClassifier.mlmodel"))
vhmi4jdf

vhmi4jdf1#

我认为不可能通过.csv或任何其他单独的文件将标签馈送到MLImageClassifier。您只有两种选择:使用文件名作为标签或使用目录作为标签(在您有许多图像的情况下可能更可取):

let model = try MLImageClassifier(trainingData: .labeledDirectories(at: trainingDir))
let evaluation = model.evaluation(on: .labeledDirectories(at: testingDir))

您需要将图像放入.csv文件中以标签命名的子目录中。

esyap4oy

esyap4oy2#

我自己也在纠结这个问题。这里有一个为CreateML重新组织数据的解决方案。所有的功劳都要归功于Tony T1,他提出了这个脚本。
1.将图像和CSV文件放入单个文件夹。
1.在Automator中,创建如下所示的新工作流程:

1.运行工作流程。选择您的CSV并观看图像被分类到各自的文件夹中!
该脚本如下所示:

cd "${1%/*}"
while read line         
do         
     FolderName=${line%;*}
     ImageName=${line#*;}
     mkdir "$FolderName"
     mv "$ImageName" "$FolderName"
done < "$1"
  • DF20是起始文件夹,您可以将其更改为任何您想要的
  • 我的CSV被"分隔; "。如果CSV以,""分隔,请在脚本中更改该符号(例如FolderName = ${line %,*})
  • 在我的CSV中,类是columnA和images columnB。根据您的情况进行切换。

相关问题