ThinkerFarm 1.0.4

ThinkerFarm 1.0.4

Erkan Sirin维护。



ThinkerFarm

ThinkerFarm V1.0.4

目录

1 - 简介
2 - 特性
3 - 安装
4 - 文档
5 - 许可

简介

iOS 计算机视觉框架。

ThinkerFarm 是一个包含 OpenCV DNN 模块和 Tensorflow Lite 套件封装的框架。目标检测模块支持 Tensorflow 模型文件和 Tensorflow Lite 模型文件,Caffe 模型,ONNX 模型,Torch 模型文件。ThinkerFarm 提供易于使用的 iOS 语音识别和语音合成。在文本识别中使用 SwiftyTesseract。

特性

[✓] - 目标检测模块支持 Caffe、ONNX、Torch、Tensorflow 模型文件
[✓] - 面部识别模块(OpenCV 面部识别模块)此模块已弃用,不再更新或修复,仅用于实验目的,但 这里 有一个完全功能的示例应用,您可以自由克隆和尝试
[✓] - 语音识别
[✓] - 语音合成器
[✓] - 用于实时检测的自定义相机视图

项目中使用的第三方框架

[✓] - OpenCV DNN
[✓] - OpenCV 面部识别
[✓] - TensorFlowLiteSwift

安装

ThinkerFarm 在 CocoaPods 上发布。如果您想下载和使用源代码,它是开源的,您可以自由地做任何您想做的事情。如果您想在项目中使用框架,请按照以下 pod 安装操作进行。

Podfile

use_frameworks!  

target 'YOUR_TARGET_NAME' do  
    use_frameworks!  
    pod 'ThinkerFarm'
end  
Replace YOUR_TARGET_NAME and then, in the Podfile directory, type:  
$ pod install  

lipo -create
simulator/ThinkerFarm.framework/ThinkerFarm
devices/ThinkerFarm.framework/ThinkerFarm
-output universal/ThinkerFarm.framework/ThinkerFarm

— 准备 ThinkerFarm 通用框架 —

1:首先为模拟器和通用设备(发布)进行构建。
2 : 转到项目根目录 / build/ Products 文件夹
3 : 输入

mkdir ThinkerFarm  
lipo -create -output “ThinkerFarm” “Release-iphonesimulator/ThinkerFarm.framework/ThinkerFarm” “Release-iphoneos/ThinkerFarm.framework/ThinkerFarm”  

4 : 输入

$ cp -R Release-iphoneos/ThinkerFarm.framework ./ThinkerFarm.framework  

5 : 输入

$ mv ThinkerFarm ./ThinkerFarm.framework/ThinkerFarm  

文档

使用Caffe模块

首先,您可以在这里找到完全功能的示例应用程序源代码,位于ThinkerFarmExample存储库中,并在Apple Store中可用的完全功能的ThinkerFarm应用程序

CaffeDetector

创建Caffe探测器

创建并初始化Caffe探测器CaffeDetectorDelegate

import ThinkerFarm.Swift  

var caffeDetection : CaffeDetector?  
caffeDetection = CaffeDetector()
caffeDetection!.delegate = self

 func detectionResuslts(result: [DetectionResults]) {
 
 }
 

检测器在帧上检测到某些内容后,将在detectionResults函数中返回结构化数据

public struct DetectionResults {
   public let className: String
    public let classId: String
    public let borderRect: CGRect
    public let confidence: Float
    public let color: UIColor
    public let croppedImage : UIImage?
    public let detectionDate : Date
}

设置Caffe模型设置

假设您已经训练了一个或使用了预训练模型并将其添加到您的包中。请不要包含扩展名,框架会为您处理。

ModelSettings.caffeModelFile  = "YOUR CAFFE MODEL FILE NAME"   

您的Caffe模型protoText文件名

ModelSettings.protoText = "YOUR CAFFE PROTOTEXT FILE NAME"   

包含您类名的文本文件

ModelSettings.caffeLabelMap = "YOUR CAFFE MODEL CLASSES FILE NAME"  

设置缩放因子默认值 1.0

ModelSettings.imageBlobScalefactor = 1.0  

设置均值标量默认 ["104.0", "177.0", "123.0"]

ModelSettings.imageBlobMeanScalar = ["104.0", "177.0", "123.0"]  

设置SwapRB默认值为false

ModelSettings.imageBlobSwapRB = false   

设置Blob Crop默认值为false

ModelSettings.imageBlobCrop = false  

如果您希望在检测代理响应中获得裁剪图像,请将此设置为true,裁剪图像将以UIImage格式返回

ModelSettings.returnCroppedImages = true  

设置输入大小宽度默认为300

ModelSettings.inputWidth = 300  

设置输入大小高度默认为300

ModelSettings.inputHeight = 300  

如果您想隐藏检测边框重叠,请将此设置为true,默认为false

ModelSettings.hideOverlay = false  

开始检测

最后开始检测,调用检测函数 detectionWithResults,它接收 UIImage 并返回结构化数据 DetectionResults

caffeDetection!.detectionWithResults(withUIImage: image)  

CaffeCamera

CaffeCamera 是一个可供使用于 Storyboard 上的 UIView 或仅通过程序创建的相机模块。它通过 detectionResuslts 函数返回结构化数据

@IBOutlet weak var previewView: CaffeCamera!   
override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    
    previewView.setup(frame:self.previewView.frame)
    
}

override func viewDidLoad() {
super.viewDidLoad()

resourceReport.delegate = self


}

TensorFlowDetection

创建 TensorFlow 检测器

创建并初始化 TensorFlow 检测器 TensorFlowDetectionDelegate

import ThinkerFarm.Swift  

var detector : TensorFlowDetection?
detector = TensorFlowDetection()
detector!.delegate = self

 func detectionResuslts(result: [DetectionResults]) {
 
 }
 

检测器在帧上检测到某些内容后,将在detectionResults函数中返回结构化数据

public struct DetectionResults {
   public let className: String
    public let classId: String
    public let borderRect: CGRect
    public let confidence: Float
    public let color: UIColor
    public let croppedImage : UIImage?
    public let detectionDate : Date
}

设置 TensorFlow 模型配置

支持 TensorFlow Lite 模型,如果您想要使用 ThinkerFarmTrainer (https://github.com/erkansirin/ThinkerFarmTrainer)进行训练和转换

设置您的 TFLite 模型文件

ModelSettings.modelFileInfo  = (name: "YOUR MODEL FILE NAME", extension: "tflite")  

设置您的标签文件

ModelSettings.labelsFileInfo = (name: "YOUR LABEL FILE NAME", extension: "txt")  

设置检测输入大小,默认为 300

ModelSettings.inputWidth = 300  

设置检测输入大小,默认为 300

ModelSettings.inputHeight = 300    

如果您希望在检测代理响应中获得裁剪图像,请将此设置为true,裁剪图像将以UIImage格式返回

ModelSettings.returnCroppedImages = true  

如果您想隐藏检测边框重叠,请将此设置为true,默认为false

ModelSettings.hideOverlay = false  

开始检测

最后开始检测,调用检测函数 detectionWithResults,它接收 UIImage 并返回结构化数据 DetectionResults

self.detector!.detectionWithResults(withUIImage: image)

TensorFlowCamera

TensorFlowCamera 是一个用于与 Storyboard 上的 UIView 或程序性创建一起使用的相机模块。它可以在 detectionResults 函数中返回结构化数据。

@IBOutlet weak var previewView: TensorFlowCamera!
override func viewDidLayoutSubviews() {
       super.viewDidLayoutSubviews()
       
       previewView.setup(frame:self.previewView.frame)

   }

override func viewDidLoad() {
super.viewDidLoad()

previewView.delegate = self


}

TensorFlowCamera

TensorFlowCamera 是一个用于与 Storyboard 上的 UIView 或程序性创建一起使用的相机模块。它可以在 detectionResults 函数中返回结构化数据。

@IBOutlet weak var previewView: TensorFlowCamera!
override func viewDidLayoutSubviews() {
       super.viewDidLayoutSubviews()
       
       previewView.setup(frame:self.previewView.frame)

   }

override func viewDidLoad() {
super.viewDidLoad()

previewView.delegate = self


}

VideoAnalysis

创建并初始化 VideoAnalysis。它接受视频 URL,并以字典数组形式返回检测结果,剩余任务在队列中,视频帧以 UIImage 格式。模型设置与上述相同。在初始化时必须指定网络类型。从 VideoPickerDelegate 获取结果。

var videoAnalysis : VideoAnalysis?

videoAnalysis  = VideoAnalysis(networkType: "TensorFlow") or videoAnalysis  = VideoAnalysis(networkType: "Caffe")
videoAnalysis!.delegate = self

self.videoAnalysis!.processVideo(url:url)

func detectionResuslts(result: [Dictionary<String, Any>], frame: UIImage,remainingJobInQueue:Int,remainingJobCountInQueue:Int) {
}

授权

授权