java 深度学习 图像分类_OpenCV3与深度学习实例-使用Caffe训练好的GoogLeNet模型进行图片分类识别...

该博客展示了如何使用Java和Caffe库,基于预训练的GoogLeNet模型对图像进行分类。通过读取模型参数,进行图像预处理,然后输入网络进行前向传播,最终得出概率最高的类别及对应的概率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#coding:utf-8

import cv2 as cv

import time

import numpy as np

def predict(image_path):

prototxt = 'datas/models/caffe/bvlc_googlenet.prototxt'

caffemodel = 'datas/models/caffe/bvlc_googlenet.caffemodel'

synsetwords = 'datas/models/caffe/bvlc_googlenet_synset_words.txt'

image = cv.imread(image_path)

image = cv.resize(image,(256,256))

# 加载分类

rows = open(synsetwords).read().strip().split("\n")

classes = [r[r.find(" ") + 1:].split(",")[0] for r in rows]

# 根据 Deploy 的 Prototxt, 得知训练后的 CNN model 需要输入数据的维度为

# (1, 3, 224, 224)

# 透过训练时的 Prototxt, 可以得知训练集的 Pixel RGB 平均值为 (104, 117, 123)

# https://github.com/BVLC/caffe/blob/master/models/bvlc_googlenet/train_val.prototxt

# 做 Mean subtraction 的目的 : 改善对抗光线改变造成的影响

blob = cv.dnn.blobFromImage(image, 1, (224, 224), (104, 117, 123))

# 载入网络

net = cv.dnn.readNetFromCaffe(prototxt, caffemodel)

# 将 blob 输入到网络, 进行 forward-pass, 作分类

net.setInput(blob)

start = time.time()

predicteds = net.forward()

print("Cassification took {:.4} seconds".format(time.time() - start))

# 找出预测結果中概率最大的前 3 名的索引

# np.argsort 結果为升冪(ascending)排列

indices = np.argsort(predicteds[0])[::-1][:3]

# 显示前三名

for (i, idx) in enumerate(indices):

cls_name = classes[idx]

prob = predicteds[0][idx]

if i == 0:

text = "Label:{}, Probability: {:.4f}%".format(cls_name, prob * 100)

cv.putText(image, text, (5, 15), cv.FONT_HERSHEY_DUPLEX, 0.5, (255, 0, 0), 1)

print("[{}] Label: {:10}, Probability: {:.4f}".format(i + 1, cls_name, prob * 100))

cv.imshow("Image", image)

cv.waitKey(0)

predict('datas/images/tiger.jpg')

运行结果:

6f345e71d4649b119c8b28d068d44c8d.png

efef1181c0e1a88e85978e938f45bde3.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值