广西民族大学高级人工智能课程—头歌实践教学实践平台-计算机视觉

第1关:计算机眼中的图片

代码文件

#encoding=utf8
import cv2

def get_img(img_path, save_path):
    '''
    img_path: 图片存储路径
    save_path: 图片保存路径
    img: 处理后的图片
    '''
    # ********* Begin *********#
    # 加载图片
    img = cv2.imread(img_path)

    # 将图片尺寸转换成300x300x3
    img = cv2.resize(img, (300, 300))

    # 保存图片
    cv2.imwrite(save_path, img)
    # ********* End *********#
    return img

题目描述

任务描述

本关任务:利用openCV对图片进行相应的处理。

相关知识

为了完成本关任务,你需要掌握:1.计算机眼中的图片,2.如何利用openCV处理图片。

计算机眼中的图片

图片在计算机中以像素矩阵的形式储存,每个像素值在0255之间,对于灰度图片,它只有一个通道,如下图:

对于人类而言,我们知道这是数字8,而对于计算机,所有图片都是一堆数字。相比灰度图片,彩色图片稍微复杂一点,它有RGB三个通道,每一个通道对应着一个如上图中的像素矩阵。

如何利用openCV处理图片

openCV是一款功能非常强大的计算机视觉库,在这里,我们学习一些基本的处理图片的方法。我们要对一张图片进行处理,首先我们得获取它,具体代码如下:

 
  1. import cv2
  2. #加载图片
  3. img = cv2.imread(img_path)

其中,cv2.imread()即为获取图片的方法,其中需要填写的参数img_path即图片在计算机中所储存的路径。

加载图片后,我们可以改变图片的尺寸,即宽高,使它变成我们需要的大小:

 
  1. import cv2
  2. #将图片尺寸转换成HxWx3
  3. img = cv2.resize(img,(H,W))

其中,cv2.resize()为改变图片尺寸的方法,参数img为你需要改变的图片,H为你需要设定成多高,W为你需要设定成多宽。

将图片处理后,我们还需要保存它:

 
  1. import cv2
  2. #保存图片图片
  3. cv2.imwrite(save_path, img)

其中,cv2.imwrite()为保存图片的方法,参数save_path为你将图片保存的位置,img为你所需保存的图片。

编程要求

根据提示,在右侧编辑器补充代码,实现改变图片尺寸与保存图片方法。

测试说明

程序会调用你实现的方法对图片进行处理,处理后图片与正确图片L1距离均值小于10则视为通关,否则输出处理后图片与正确图片L1距离。


开始你的任务吧,祝你成功!

第2关:人物性别识别

代码文件

# -*- coding: utf-8 -*-

from load_face_dataset import get_img_and_label
from keras.models import load_model

def get_acc(data_path, model_path):
    '''
    data_path: 数据所在路径
    model_path: 模型所在路径
    '''
    # ********* Begin *********#
    # 加载测试数据
    data, label = get_img_and_label(data_path)
    # 加载模型
    model = load_model(model_path)
    # 计算正确率    
    _, acc = model.evaluate(data, label, verbose=0)
    # ********* End *********#
    return acc

题目描述

任务描述

本关任务:使用keras调用已训练好模型对图片中人物性别进行预测。

相关知识

为了完成本关任务,你需要掌握:1.计算机是如何识别人物性别,2.使用keras识别人物性别流程。

计算机是如何识别人物性别

如何识别人物性别这个对我们人类来说是非常简单的任务,我们一眼就能识别出上图中是一位女性,而对于计算机来说,想要识别出图中人物性别就没这么容易了。因为,对于任何图片,在计算机中都是一堆数字。那么,我们该如何让我们的计算机能够识别人物性别呢?首先,我们得构造一个模型,这个模型就像我们初高中所学的函数,你输入一个x,它就输出一个y。而我们这个模型,输入的是图片,输出的是性别类型。如下图所示:

相信大家都记得,函数它的输入跟输出都应该是数字。对于图片来说,它本身就是以像素矩阵的形式储存在计算机中,输出我们则可以用0来表示女性,1来表示男性。当然这只是一种选择,在深度学习中我们通常使用另外一种形式[0,1]表示女性,[1,0]表示男性。不管哪种方式,我们都把问题转换成了去求函数f(.)的表达式。只要求出正确的表达式,就能对人物进行正确的性别识别。

而在图像问题中,我们常用的是卷积神经网络模型,如何训练模型,得到能正确识别性别的流程大致如下:

首先,我们搭建好模型后,会随机的为模型的参数赋值。这个时候,模型并不能准确的识别出人物的性别,如上图,它认为图中人物是男性的可能为0.8,女性的可能性为0.2,而我们知道,正确情况应该为男性可能性为0,女性可能性为1,即真实情况。这个时候,我们将模型的预测情况与真实情况结合构造出一个损失函数,这个损失函数你可以当作是用来衡量预测值与真实值差异的一个指标。很明显,预测值与真实值越接近越好,即损失函数值越接近0越好。而优化器就是用来达到这一目的的。优化器不断的使损失函数变小,从而达到更新模型参数的目的。最后,我们就能得到一个能够准确预测的模型。

使用keras识别人物性别流程

keras是一个高层神经网络API,我们使用它来实现人物性别识别是非常方便的。使用keras实现人物性别识别的第一部就是得获取数据,有了数据才能对模型进行训练。这里获取数据的方法已经给大家写好了,直接调用就可以了,代码如下:

 
  1. #导入获取数据的方法
  2. from load_face_dataset import get_img_and_label
  3. #加载测试数据
  4. data,label = get_img_and_label(data_path)

其中,get_img_and_label()是获取图像和标签的方法,data_path是数据存储的路径,datalabel是我们获取的图像与图像相对应的标签

由于训练模型需要一定的时间,所以已经将模型提前训练好,大家只需加载模型,就能使用模型来进行预测。代码如下:

 
  1. #导入加载模型方法
  2. from keras.models import load_model
  3. #加载模型
  4. model = load_model(model_path)

其中,load_model()是加载模型的方法,model_path为模型存储的路径。model为我们所加载的模型。

最后我们就可以对加载的数据进行预测了:

 
  1. #计算正确率
  2. _,acc = model.evaluate(data,label,verbose=0)

其中,model.evaluate为测试模型的方法,data,label为输入的图像与对应的标签。acc为模型预测的正确率。

编程要求

根据提示,在右侧编辑器补充代码,实现对人物性别进行预测,并返回正确率的方法。

测试说明

程序会调用你实现的方法,若正确率大于0.95则视为通关。


开始你的任务吧,祝你成功!

第3关:人脸检测

代码文件

# -*- coding: utf-8 -*-
import cv2

def face_detection(img_path, img_save_path, model_path):
    '''
    img_path: 待识别图片路径
    img_save_path: 图片保存路径
    model_path: 模型所在路径
    '''
    # ********* Begin *********#
    # 加载图片
    img = cv2.imread(img_path)

    # 转换为灰度图
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    # 加载模型
    face_cascade = cv2.CascadeClassifier(model_path)

    # 获取识别框坐标
    face_rects = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30), flags=cv2.CASCADE_SCALE_IMAGE)

    # 将识别框加入图片中
    for (x, y, w, h) in face_rects:
        cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)

    # 保存图片
    cv2.imwrite(img_save_path, img)
    # ********* End *********#

    # 返回所有检测到的人脸坐标
    return face_rects

# 使用示例
# face_detection('/path/to/image.jpg', '/path/to/save_image.jpg', '/path/to/haarcascade_frontalface_default.xml')

题目描述

任务描述

本关任务:利用openCV对图片进行相应的处理。

相关知识

为了完成本关任务,你需要掌握:1.人脸检测,2.如何利用openCV实现人脸检测。

人脸检测

在上一关,我们已经知道如何去检测图片中人物的性别。然而,在真实项目中,我们不仅仅是需要知道图片中人物的性别,有时候还需要将图片中人脸的位置检测出来。

如上图,我们用一个方框将人脸部分给划分出来,人脸检测就是需要找出这个方框的正确位置。需要将检测框位置确定下来需要知道四个参数:

 
  1. x:检测框左上角点的横坐标。
  2. y:检测框左上角点的纵坐标。
  3. w:检测框宽的值。
  4. h:检测框高的值。

如何确定这四个参数的值其实与上一关相似,都需要构建一个损失函数再进行优化,只不过上一关是分类问题,而这一关是回归问题

如何利用openCV实现人脸检测

跟其它任务一样,要进行人脸检测首先得加载待检测图片:

 
  1. import cv2
  2. #加载图片
  3. img = cv2.imread(img_path,1)
  4. #转换为灰度图
  5. gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

其中,cv2.imread()为加载图片方法,参数img_path为待识别图片路径,1表示加载BGR图片,接下来再使用cv2.cvtColor()方法将图片转换为灰度图。img为待处理图片,cv2.COLOR_BGR2GRAY表示将BGR图转换为灰度图。

然后我们再加载已经训练好的检测模型:

 
  1. #加载模型
  2. face_cascade = cv2.CascadeClassifier(model_path)

cv2.CascadeClassifier()为加载模型方法,model_path为模型存放路径。

利用训练好的模型,我们就能检测出人脸的位置,代码如下:

 
  1. #获取识别框坐标
  2. face_rects = face_cascade.detectMultiScale(gray, 1.1, 10)
  3. x, y, w, h = face_rects[0]

face_cascade.detectMultiScale()为人脸检测方法,gray为待检测灰度图,1.1表示检测框按1.1的比例放大,10表示一个目标至少要被检测到10次才算真正的目标。(x,y)为检测框左上角坐标,w,h为检测框宽高长度值。

最后,我们将检测框添加进图像中并保存图像:

 
  1. #将识别框加入图片中
  2. cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 3)
  3. #保存图片
  4. cv2.imwrite(img_save_path,img)

img为目标图片,(x,y)为检测框左上角坐标,(x+w,y+h)为右下角坐标。(255,0,0)表示蓝色,(0,255,0)表示绿色,(0,0,255)表示红色,3表示BGR三个通道。

编程要求

根据提示,在右侧编辑器补充代码,实现人脸检测方法。

测试说明

程序会调用你实现的方法对图片进行检测,并画出检测框。若检测框位置与正确位置l1距离均值小于10则视为通关,否则输出你的检测框位置。


开始你的任务吧,祝你成功!

  • 12
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值