源代码来源:
https://blog.csdn.net/zsx1713366249/article/details/87902476
运行处理:
一. 自行下载json文件,链接如下:
https://pan.baidu.com/s/1QZDay0aOVkpDGaC4EF3VzA
提/取/码:1211
将下载后的json文件放在代码运行的文件夹下

二. 修改相关代码:
1.1 删除:
LABELS_URL = 'https://s3.amazonaws.com/outcome-blog/imagenet/labels.json'
1.2 添加:
jsonfile = r'labels.json' # 保存在当前代码运行的文件夹的话就不用修改了
with open(jsonfile, 'r') as load_f:
load_json = json.load(load_f)
2.1 删除:
classes = {int(key):value for (key, value) in requests.get(LABELS_URL).json().items()}
2.2 添加:
classes = {int(key): value for (key, value)
in load_json.items()}
注意: 从 torchvision 0.13开始,加载预训练模型函数的参数从 pretrained = True 改为 weights=预训练模型参数版本。
若版本不匹配会出现以下问题:
UserWarning: The parameter ‘pretrained’ is deprecated since 0.13 and will be removed in 0.15, please use ‘weights’ instead.
3.1 修改部分如下:
if model_id == 1:
net = models.squeezenet1_1(weights = models.SqueezeNet1_1_Weights.IMAGENET1K_V1)
elif model_id == 2:
net = models.resnet101(weights = models.ResNet101_Weights.IMAGENET1K_V1)
elif model_id == 3:
net = models.densenet161(weights = models.DenseNet161_Weights.IMAGENET1K_V1)
三. 选择不同Model
由于模型在运行代码时下载较慢,因此可以提前下载放在如下文件夹中:

1. 下载模型方式
- 一开始运行代码时,文件夹中没有模型,运行后会有如下正在从蓝色网址下载模型到红色文件夹位置的情况:

- 直接点击蓝色部分,即可下载选用的模型:(下载速度远远快于运行代码下载)

- 找到刚刚下载的模型文件:

- 复制到红色字体部分指示的文件夹中:

- 重新运行代码即可:
结果如下

model_id = 1时:

model_id = 2时:

model_id = 3时:

结论: 可见在该种辨别自行车的情况下,模型1的效果更精确
测试本机图片(以摩托车为例):
1. 网上下载任意一张摩托车图片:

注释:
# response = requests.get(IMG_URL)
# img_pil = Image.open(io.BytesIO(response.content))
添加:
img_path = "C:/Users/86156/Pictures/Saved Pictures/motuo_test1.jpg"
# 地址为自己下载图片后保存的位置
img_pil = Image.open(img_path)
解决OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.报错问题
参考:https://huaweicloud.csdn.net/637f7cebdacf622b8df86187.html
本人是使用第一个解决方法解决的,注意双引号自己需要在英文输入法下重新改一下,直接复制博文中的会报错。
结果如下:
model_id = 1时:

输出的预测分值排名在前五的五个类别的预测分值和对应类别名称:

结论:在model1的预测模型下,网络倾向于将该图片分类为:mountain bike, all-terrain bike, off-roader类
model_id = 2时:

输出的预测分值排名在前五的五个类别的预测分值和对应类别名称:

结论:在model2的预测模型下,网络倾向于将该图片分类为:crash helmet类
model_id = 3时:

输出的预测分值排名在前五的五个类别的预测分值和对应类别名称:

结论:在model3的预测模型下,网络倾向于将该图片分类为:crash helmet类
本文介绍了如何修改代码以使用本地json文件,替代在线获取标签数据。同时,针对torchvision的版本更新,调整加载预训练模型的参数。文章对比了SqueezeNet1_1、ResNet101和DenseNet161在自行车识别上的性能,并展示了模型对摩托车图片的分类结果,揭示了不同模型的分类倾向。
1万+

被折叠的 条评论
为什么被折叠?



