102 lines
2.7 KiB
Plaintext
102 lines
2.7 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import torch\n",
|
||
"import torch.nn as nn\n",
|
||
"import torchvision.transforms as transforms\n",
|
||
"import torchvision.models as models\n",
|
||
"from PIL import Image\n",
|
||
"\n",
|
||
"# 设置设备\n",
|
||
"device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
|
||
"\n",
|
||
"# 数据预处理和标准化\n",
|
||
"transform = transforms.Compose([\n",
|
||
" transforms.Resize((224, 224)), # 调整图像大小为模型要求的大小\n",
|
||
" transforms.ToTensor(),\n",
|
||
" transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),\n",
|
||
"])\n",
|
||
"\n",
|
||
"# 加载已训练的MobileNetV2模型\n",
|
||
"model = models.mobilenet_v2(pretrained=False) # 创建一个新的MobileNetV2模型\n",
|
||
"num_classes = 12 # 假设您有12个类别,根据您的实际数据集进行调整\n",
|
||
"model.classifier[1] = nn.Linear(in_features=1280, out_features=num_classes)\n",
|
||
"model.load_state_dict(torch.load(\"./model/1/epochs10 96.13.pt\"))\n",
|
||
"model = model.to(device)\n",
|
||
"model.eval()\n",
|
||
"\n",
|
||
"class_names = [\"battery\",\"brick\",\"bottle\",\"butt\",\"cans\",\"carrot_piece\",\"fruits\",\"leaf\",\"nothing\",\"paper\",\"potato\",\"vegetable\"]\n",
|
||
"\n",
|
||
"def classify_image(image_path):\n",
|
||
" image = Image.open(image_path)\n",
|
||
" image = transform(image).unsqueeze(0) # 加载图像并进行预处理,添加一个批次维度\n",
|
||
" image = image.to(device)\n",
|
||
"\n",
|
||
" with torch.no_grad():\n",
|
||
" outputs = model(image)\n",
|
||
" _, predicted = torch.max(outputs.data, 1)\n",
|
||
"\n",
|
||
" class_idx = predicted.item()\n",
|
||
" class_name = class_names[class_idx]\n",
|
||
" return class_name\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"bottle\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(classify_image(\"./test_image/1690813083599.jpg\"))"
|
||
],
|
||
"metadata": {
|
||
"collapsed": false
|
||
}
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"outputs": [],
|
||
"source": [],
|
||
"metadata": {
|
||
"collapsed": false
|
||
}
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 2
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython2",
|
||
"version": "2.7.6"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 0
|
||
}
|