Google Cloud Vision API 将所有图像检测为不当
Google Cloud Vision API detects all images as inappropriate
我实现了这个 google 云函数示例来管理上传到 firebase 存储的图像:LINK
但是我有一个问题,这个函数几乎可以检测我上传的每一张图片,如果它们不合适,即使它们显然不合适,这是函数的代码:
exports.blurOffensiveImages = functions.storage.object().onFinalize(async (object) => {
if (object.name.startsWith(`${BLURRED_FOLDER}/`)) {
console.log(`Ignoring upload "${object.name}" because it was already blurred.`);
return null;
}
const visionClient = new vision.ImageAnnotatorClient();
const data = await visionClient.safeSearchDetection(
`gs://${object.bucket}/${object.name}`
);
const safeSearch = data[0].safeSearchAnnotation;
console.log('SafeSearch results on image', safeSearch);
if (
safeSearch.adult !== VERY_UNLIKELY ||
safeSearch.spoof !== VERY_UNLIKELY ||
safeSearch.medical !== VERY_UNLIKELY ||
safeSearch.violence !== VERY_UNLIKELY ||
safeSearch.racy !== VERY_UNLIKELY
) {
console.log('Offensive image found. Blurring.');
//DO SOME STUFF
}
return null;
});
我也遇到过同样的行为。
接口有点误导,在打字稿定义中我注意到 google.cloud.vision.v1.ISafeSearchAnnotation.adult 等属性的类型定义为:
视觉原型.google.cloud.vision.v1.Likelihood | “未知” | “VERY_UNLIKELY” | “不太可能” | “可能” | “可能” | “VERY_LIKELY” |空 |未定义。
因此他们可以 return 可能性枚举或值的字符串。当我更改条件以检查字符串“VERY_UNLIKELY”而不是枚举时,我得到了预期的结果。
如果枚举是 returned,我很可能会同时检查枚举和字符串以防止将来发生更改。
我实现了这个 google 云函数示例来管理上传到 firebase 存储的图像:LINK 但是我有一个问题,这个函数几乎可以检测我上传的每一张图片,如果它们不合适,即使它们显然不合适,这是函数的代码:
exports.blurOffensiveImages = functions.storage.object().onFinalize(async (object) => {
if (object.name.startsWith(`${BLURRED_FOLDER}/`)) {
console.log(`Ignoring upload "${object.name}" because it was already blurred.`);
return null;
}
const visionClient = new vision.ImageAnnotatorClient();
const data = await visionClient.safeSearchDetection(
`gs://${object.bucket}/${object.name}`
);
const safeSearch = data[0].safeSearchAnnotation;
console.log('SafeSearch results on image', safeSearch);
if (
safeSearch.adult !== VERY_UNLIKELY ||
safeSearch.spoof !== VERY_UNLIKELY ||
safeSearch.medical !== VERY_UNLIKELY ||
safeSearch.violence !== VERY_UNLIKELY ||
safeSearch.racy !== VERY_UNLIKELY
) {
console.log('Offensive image found. Blurring.');
//DO SOME STUFF
}
return null;
});
我也遇到过同样的行为。
接口有点误导,在打字稿定义中我注意到 google.cloud.vision.v1.ISafeSearchAnnotation.adult 等属性的类型定义为: 视觉原型.google.cloud.vision.v1.Likelihood | “未知” | “VERY_UNLIKELY” | “不太可能” | “可能” | “可能” | “VERY_LIKELY” |空 |未定义。
因此他们可以 return 可能性枚举或值的字符串。当我更改条件以检查字符串“VERY_UNLIKELY”而不是枚举时,我得到了预期的结果。
如果枚举是 returned,我很可能会同时检查枚举和字符串以防止将来发生更改。