基于Pytorch的CNN图像分类器

本文介绍了如何使用Pytorch构建一个简单的二分类卷积神经网络(CNN),并结合OpenCV进行图像预处理。通过示例代码详细阐述了从数据处理到模型训练的全过程,虽然模型出现过拟合,但主要目的是学习CNN的实现和数据加载。

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

基于Pytorch的CNN图像分类器,并利用OpenCV进行数据预处理

CNN(卷积神经网络)在图像处理上有很好的表现,AlphaGO使用也是也是CNN,但是AlphaGO去掉pooling(池化)层。

我以简单的二分类器为例,学习应用CNN进行图像分类的过程,从图像处理开始,到训练神经网络。

代码中含有详细注释

数据预处理:

#导入库
import os
import numpy as np
import cv2
# 定义读取图像的函数
def readimg(path):
	# 使用OpenCV库中的.imread()函数读取图像    
    img = cv2.imread(path) 
    # 使用OpenCV库中的.resize()函数修改图像尺寸,为了后面训练神经网络时得到更快的速度
    img = cv2.resize(img,(128,128),0)
    return img
# 定义函数,将修改后的图像保存
def save(path, img):
	# 使用OpenCV库中的.shape()方法获取图像的高和宽,.shape()   
    rows, cols = img.shape[:2]
    # 将图像以一度为步长,旋转360次
    for i in range(0,359):
    	# 使用OpenCV库中的.getRotationMatrix2D()和.warpAffine()方法将图像旋转,以处理数据
    	# 第一个参数是旋转中心,第二个参数是旋转角度,第三个参数是缩放比例
        M = cv2.getRotationMatrix2D((cols/2, rows/2), i, 1)
        img1 = cv2.warpAffine(img, M, (cols, rows))
        i = str(i)
        img_name = i+".jpg"
        # 存储图像
        cv2.imwrite(os.path.join(path, img_name),img1)
path = '/Users/jason_zhang/Desktop/'

for j in range(1,3):
    j = str(j)
    no_img = j + '.jpg'
    img_path = os.path.join(path, no_img)
    new_img_path = os.path.join(path, j)
    img = readimg(img_path)
    save(new_img_path ,img)
print("Saving done")

输出结果:
在这里插入图片描述

此时,数据已经处理完,并存出在相应文件夹中。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

导入数据:

# 导入库
import os
import numpy as np
import cv2
import torch
import torch.nn as nn
import torchvision.transforms as transforms
import panda
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值