标签:
- 图像分类
- pytorch
- huggingpics
评估指标:
- 准确率
模型索引:
- 名称: 大型猫科动物分类器
结果:
- 任务:
名称: 图像分类
类型: 图像分类
评估指标:
- 名称: 准确率
类型: 准确率
值: 0.9107142686843872

这是一个基于视觉变换器(Vision Transformers)构建的图像分类器,能够将大型猫科动物的图像分类到以下类别中:
类别 |
大型猫科动物 |
示例图片 |
0 |
猎豹 |
 |
1 |
美洲豹 |
 |
2 |
豹子 |
 |
3 |
狮子 |
 |
4 |
老虎 |
 |
注意:
- 由于美洲豹和豹子外观相似,模型可能会混淆两者。这些[1] [2] 两篇文章详细解释了两者的区别。
- 理论上,模型应能准确识别每个物种的地理种群变种。但在实际场景中可能并非如此,因为在训练阶段收集数据集时并未特别考虑这一点。
- 例如:孟加拉虎、西伯利亚虎、印度支那虎和马来亚虎的图片都应被识别为老虎
- 最后,模型在分类某些大型猫科动物的罕见变种(如白虎、雪豹或黑豹)时的表现尚未专门测试。尽管部分测试结果令人满意。
训练与推理
训练: 
推理: 
使用方法
from PIL import Image
import matplotlib.pyplot as plt
from transformers import ViTFeatureExtractor, ViTForImageClassification
def identify_big_cat(img_path:str)->str:
"""
读取属于猫科的大型猫科动物图像并返回对应物种的函数
"""
img = Image.open(img_path)
model_panthera = ViTForImageClassification.from_pretrained("smaranjitghose/big-cat-classifier")
feature_extractor = ViTFeatureExtractor.from_pretrained('smaranjitghose/big-cat-classifier')
inputs = feature_extractor(images=img, return_tensors="pt")
outputs = model_panthera(**inputs)
logits = outputs.logits
predicted_class_idx = logits.argmax(-1).item()
return model_panthera.config.id2label[predicted_class_idx]
our_big_cat = identify_big_cat("path_of_the_image")
print(f"预测物种: {our_big_cat}" )
托管API:
点击查看这里
库应用使用:
git clone https://github.com/smaranjitghose/Big_Cat_Classifier.git
cd Big_Cat_Classifier
A) 不使用Docker:
确保已安装最新稳定版Python 3并添加至PATH
pip install -r requirements.txt
streamlit run app.py
B) 使用Docker:
确保已安装Docker
docker build -t smaranjitghose/big-cat-classifier:latest .
docker images
docker run -t -i -p 8080:8080 --name "big-cat-classifier" smaranjitghose/big-cat-classifier

托管部署
- Heroku
- 移除Docker容器中暴露特定端口的行
- 确保启动命令暴露为可变端口号
ENTRYPOINT ["streamlit", "run", "app.py", "--server.port=$PORT"]
heroku login -i
heroku create
heroku container:login
heroku container:push web
heroku container:release web
heroku open
参考与致谢:
Hugging Pics