iOS请参考:issues13
Java参考:Tensorflow-Api
C++参考:TensorflowLite-Api
JavaScript参考JS相关文档
其中Python、C++均有两种数据喂入的方式,可根据需求选择pb模型或tfLite文件,详细请参考上面的链接.Java的目前只能加载pb模型。其他的平台可自行百度
Kotlin+okhttp3+rxjava2+retrofit2+koin+glide+greendao+databinding+Livedata
模型大小改动较大,原量化模型虽小(6M),但对GPU加速支持不友好,新模型大约23M,完美支持GPU加速并优化识别精度,加速效果明显。建议全部升级该版本。新版本的GPU加速默认开启状态,SDK默认会检测设备是否支持,不支持时会自动取消加速(老版本会奔溃)
由于模型支持GPU加速后模型文件变大,部分用户反馈Apk体积增大,考虑到这方面,在1.3.4版本中增加初始化方式,可通过传入模型文件的路径进行初始化,该模型在/OpenNSFW/src/main/assets/nsfw.tflite
处,可自行下载并存放适当位置,比如放在后台,app端自行下载后初始化NSFW后使用。初始化方式:
Classifier.Build()
// .context(this) //1.3.4版本可不用调用该代码。其他版本必须调用,否则会有异常抛出
// .isOpenGPU(true)//默认不开启GPU加速,默认为true
// .numThreads(100) //分配的线程数 根据手机配置设置,默认1
.nsfwModuleFilePath("/data/user/0/com.zwy.demo/files/nsfw.tflite") //1.3.4版本必须配置模型存放路径,否则会有异常抛出
.build()
- 添加远程仓库支持
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
dependencies {
//versionCode:上面小icon中最新版本号
implementation 'com.github.devzwy:open_nsfw_android:[versionCode]'
}
- 以下配置1.3.4版本可跳过
除1.3.4版本外,其他任何版本均需要添加如下代码,否则会有
java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed
异常抛出,因为assets下模型文件较大
android {
aaptOptions {
noCompress "tflite"
}
}
- 建议在Application中全局初始化
Classifier.Build()
.context(this) //1.3.4版本可不用调用该代码。其他版本必须调用,否则会有异常抛出
// .isOpenGPU(true)//默认为true开启GPU加速
// .numThreads(100) //分配的线程数 根据手机配置设置,默认1
// .nsfwModuleFilePath("/data/user/0/com.zwy.demo/files/nsfw.tflite") //1.3.4版本必须配置模型存放路径,否则会有异常抛出
.build()
- 使用:
//方式一:
val nsfwBean = Classifier.Build().context(this).build().run(bitmap)
//方式二
val nsfwBean = bitmap.getNsfwScore()
//方式三
val nsfwBean = file.getNsfwScore()
nsfwBean.sfw ... 非涉黄数值 数值越大约安全
nsfwBean.nsfw ... 涉黄数值 数值越大约危险