我将使用Nativescript-Vue构建一个检测猫咪眼部疾病的应用。
我在Native Script中寻找其他图像分类项目和插件,但几乎没有找到结果。我探索了谷歌视觉、微软自定义视觉、Clarify,但没有发现适合Native Script的插件。
我还不太擅长将React Native的实现转换为Native Script的对应实现。有人尝试过吗?
回答:
如果你想尝试但没有信用卡,可以使用谷歌视觉、亚马逊Rekognition、微软和其他市场上的机器学习相关服务。但如果你没有信用卡,像我一样,我使用https://clarifai.com/ 。
对于API包,使用npm install --save clarifai
,至于实现,我是这样做的,
const Clarifai = require('clarifai')const app = new Clarifai.App({ apiKey: 'dac044d841bb40f6bc6a79e5d1a65fcf'})sendToClarifai(encoded_image) { let vm = this app.models.predict(Clarifai.GENERAL_MODEL, { base64: encoded_image }).then( function (response) { // 对响应做一些处理 var concepts = response['outputs'][0]['data']['concepts'] console.log('CONCEPTS', concepts) vm.isLoading = false let isDetectedEyeRelated = false // 遍历项目 concepts.forEach(obj => { if (['disease', 'animal', 'pet', 'cat', 'cataract', 'cataracts', 'eye', 'conjunctivitis'].includes(obj.name)) { isDetectedEyeRelated = true } // 这里还有改进的空间,但目前不够准确 }) // 显示消息 let message = "" let firstQuestionArray = [] if (isDetectedEyeRelated) { message = "您的猫咪可能有一些眼部问题。" firstQuestionArray = ["您是否看到红肿或分泌物?", "您的猫咪是否眯眼或出现第三眼睑?"] } else { message = "我们的分类模型无法识别对象。\n请检查相机设置和正确的位置。" firstQuestionArray = ["您的猫咪是否有明亮、清晰、均匀聚焦的眼睛?", "您是否看到红肿或分泌物?", "您的猫咪是否眯眼或出现第三眼睑?"] } // 后续问题 action({ message: message + '\n\n以下是后续问题:', cancelButtonText: "取消", actions: firstQuestionArray, cancelable: false }) .then(result => { if (result.includes("redness") || result.includes("emergence")) { //A action({ message: "请选择以下任何症状以了解可能的问题", cancelButtonText: "取消", actions: ["您是否看到任何熟悉的粉红色或红色,粘性眼部分泌物和肿胀?", "您是否注意到他们的眼睛有任何浑浊,虹膜颜色改变和不寻常的喵叫声?"], cancelable: false }) .then(result => { if (result.includes("reddish")) { //A alert({ title: "识别", message: "这可能是您的猫咪患有结膜炎的迹象。", okButtonText: "查看早期治疗" }).then(() => { vm.setTreatmentType('eye_conjunctivitis') vm.setTreatmentTitle('眼部结膜炎识别和治疗') vm.$router.replace({ path: '/pdf-treatment' }) }) } else if (result.includes("cloudiness")) { //b alert({ title: "识别", message: "这可能是您的猫咪患有白内障的迹象。", okButtonText: "查看早期治疗" }).then(() => { vm.setTreatmentType('eye_cataract') vm.setTreatmentTitle('眼部白内障识别和治疗') vm.$router.replace({ path: '/pdf-treatment' }) }) } }) } else if (result.includes("bright")) { //b const user_data = LS.getItem(vm.loggedUsername) const obj = JSON.parse(user_data) obj.progress.eye = '良好状态' // 更新用户数据 LS.removeItem(vm.loggedUsername) LS.setItem(vm.loggedUsername, JSON.stringify(obj)) alert({ title: "祝贺", message: "您的猫咪眼部状况良好。", okButtonText: "完成" }).then(() => { console.log("警示对话框已关闭"); }) vm.$router.push({ path: '/categories' }) } }) }, function (err) { // 发生错误 console.log('CLARIFAI ERROR', err) } )
或者与我的实现类似的其他方式。