[5机器学习]python计算机视觉应用-图片内容识别

article/2025/7/16 9:52:22

上一期中,ofter介绍了计算机视觉的常用神经网络模型,以及如何选择模型,今天我们就趁热打铁拿个实际的模型跑跑,欢迎大家跨入数据科学家们的世界。

一、机器学习的目标

作为数据科学家,我们必须明白投入大量时间精力进行机器学习、深度学习的目的是什么?将非结构化、低密度、低价值的大数据转换为高密度和高价值数据。当我们对张三发布的某张照片进行内容识别的时候,这张照片就是非结构化、低密度、低价值的数据;但是当我们对他多年发布的N张照片进行内容识别后,我们大概率可以分析得出张三的生活习惯、爱好、朋友圈等等。

二、机器学习的步骤

  1. 确定需要使用的框架、预训练模型、编程语言;
  2. 准备需要训练的数据集;
  3. 预处理数据;
  4. 构建模型;
  5. 训练模型;
  6. 使用训练好的模型。

三、图像检测实战应用

数据科学家的主要任务是使用正确或表现良好的模型进行数据分析的实际应用。因此,今天ofter以图像检测为例,使用训练好的模型测试下检测效率和效果。本案例使用的框架Tensorflow+Keras,训练好的模型RetinaNet,编程语言python。其中,训练好的模型,大家可以从modelzoo中或其他途径搜索https://modelzoo.co/

3.1 引用所需模块

看上图,我们可以知道需要对识别的图片绘制边框和打印识别标签,因此,除了引用keras_retinanet模型模块以外,我们还需要引用可视化绘制图表、绘制边框、打标签、设置标签颜色的模块。

from keras_retinanet import models
from keras_retinanet.utils.image import read_image_bgr, preprocess_image, resize_image
from keras_retinanet.utils.visualization import draw_box, draw_caption
from keras_retinanet.utils.colors import label_color
import matplotlib.pyplot as plt
import cv2
import os
import numpy as np
import time
import sys
sys.path.insert(0, '../')

3.2 加载RetinaNet模型

# 加载已经训练好的retinanet模型
model_path = os.path.join('..', 'snapshots', 'resnet50_coco_best_v2.1.0.h5')
model = models.load_model(model_path, backbone_name='resnet50')
print(model.summary())
# 标签名称映射
labels_to_names = {0: 'person', 1: 'bicycle', 2: 'car', 3: 'motorcycle', 4: 'airplane', 5: 'bus', 6: 'train', 7: 'truck', 8: 'boat', 9: 'traffic light', 10: 'fire hydrant', 11: 'stop sign', 12: 'parking meter', 13: 'bench', 14: 'bird', 15: 'cat', 16: 'dog', 17: 'horse', 18: 'sheep', 19: 'cow', 20: 'elephant', 21: 'bear', 22: 'zebra', 23: 'giraffe', 24: 'backpack', 25: 'umbrella', 26: 'handbag', 27: 'tie', 28: 'suitcase', 29: 'frisbee', 30: 'skis', 31: 'snowboard', 32: 'sports ball', 33: 'kite', 34: 'baseball bat', 35: 'baseball glove', 36: 'skateboard', 37: 'surfboard', 38: 'tennis racket', 39: 'bottle', 40: 'wine glass', 41: 'cup', 42: 'fork', 43: 'knife', 44: 'spoon', 45: 'bowl', 46: 'banana', 47: 'apple', 48: 'sandwich', 49: 'orange', 50: 'broccoli', 51: 'carrot', 52: 'hot dog', 53: 'pizza', 54: 'donut', 55: 'cake', 56: 'chair', 57: 'couch', 58: 'potted plant', 59: 'bed', 60: 'dining table', 61: 'toilet', 62: 'tv', 63: 'laptop', 64: 'mouse', 65: 'remote', 66: 'keyboard', 67: 'cell phone', 68: 'microwave', 69: 'oven', 70: 'toaster', 71: 'sink', 72: 'refrigerator', 73: 'book', 74: 'clock', 75: 'vase', 76: 'scissors', 77: 'teddy bear', 78: 'hair drier', 79: 'toothbrush'}

其中
resnet50_coco_best_v2.1.0.h5是已经训练过数据集的文件。当我们加载模型时,可以看下该模型的网络结构。

3.3 图像识别代码

# 测试图片
image = read_image_bgr('house.png')
# 图片转换为RGB格式
draw = image.copy()
draw = cv2.cvtColor(draw, cv2.COLOR_BGR2RGB)
# 预处理图片
image = preprocess_image(image)
image, scale = resize_image(image)
# 处理图片
start = time.time()
boxes, scores, labels = model.predict_on_batch(np.expand_dims(image, axis=0))
# 输出图片处理时间
print("processing time: ", time.time() - start)
# 纠正图片比例
boxes /= scale
# 实例检测
for box, score, label in zip(boxes[0], scores[0], labels[0]):if score < 0.5:breakcolor = label_color(label)b = box.astype(int)draw_box(draw, b, color=color)caption = "{} {:.3f}".format(labels_to_names[label], score)draw_caption(draw, b, caption)
# 输出图片识别结果
plt.figure(figsize=(15, 15))
plt.axis('off')
plt.imshow(draw)
plt.show()

原图:

检测后:

一般,我们会对识别分score<0.5的进行剔除,当然,我们也可以提高识别分,或者降低识别分,比如降低到score<0.1的剔除,那么识别的内容会有更多的可能性。

四、完整的机器学习

当然,如果你想要学习完整的机器学习步骤,ofter推荐一个网址:

https://tensorflow.google.cn/tutorials/keras/classification?hl=zh-cn

本案例的代码下载地址:

https://github.com/fizyr/keras-retinanet


http://chatgpt.dhexx.cn/article/5KVuPEll.shtml

相关文章

计算机视觉用于图像识别的难点在哪?

计算机视觉用于图像识别的难点在哪&#xff1f;作为一个科学学科&#xff0c;计算机视觉研究相关的理论和技术&#xff0c;试图建立能够从图像或者多维数据中获取‘信息’的人工智能系统&#xff0c;但也存在一些难点&#xff0c;本篇来解答一下这个问题。 计算机视觉用于图像…

Java OCR tesseract 图像智能字符识别技术 Java代码实现

接着上一篇OCR所说的&#xff0c;上一篇给大家介绍了tesseract 在命令行的简单用法&#xff0c;当然了要继承到我们的程序中&#xff0c;还是需要代码实现的&#xff0c;下面给大家分享下java实现的例子。 拿代码扫描上面的图片&#xff0c;然后输出结果。主要思想就是利用Java…

六、计算机视觉相关内容

文章目录 前言一、图像增广1.1 常用的图像增广1.1.1 翻转和裁剪1.1.2 变换颜色1.1.3 结合多种图像增广方法 二、微调2.1 微调的步骤2.2 具体案例 三、 目标检测和边界框3.1 边界框 四、锚框五、多尺度目标检测六、目标检测数据集七、单发多框检测(SSD)八、区域卷积神经网络(R-C…

python计算机视觉学习第七章——图像搜索

目录 一、基于内容的图像检索 二、 视觉单词 三、 图像索引 3.1 建立数据库 3.2 添加图像 ​编辑四、在数据库中搜素图像 4.1 利用索引获取候选图像 4.2 用一幅图像进行查询 4.3 确定对比基准并绘制结果 五、 使用几何特性对结果排序 一、基于内容的图像检索 CBI…

使用计算机视觉和深度学习创建现代OCR管道

作者 | 学海无涯yc 编辑 | 3D视觉开发者社区 文章目录 前言1.研究和原型设计2.字深网3.字检测器4.组合式端到端系统5.生产化6.性能调优7.优雅 导读 此篇文章中讲述使用了计算机视觉和深度学习的进步&#xff0c;如双向长短期记忆&#xff08;LSTM&#xff09;&#xff0c;连接…

Java OCR tesseract 图像智能字符识别技术

公司有需求啊&#xff0c;所以就得研究哈&#xff0c;最近公司需要读验证码&#xff0c;于是就研究起了图像识别&#xff0c;应该就是传说中的&#xff08;OCR&#xff1a;光学字符识别OCR&#xff09;&#xff0c;下面把今天的收获整理一个给大家做个分享。 本人程序用的tess…

《深度学习中的字符识别在工业视觉中的实际应用》

最近在公司做了一个构建卷积神经网络来识别字符的项目&#xff0c;编程环境为pycharm2019&#xff0c;使用的是OpenCvPytorch进行项目的实现&#xff0c;因此想总结和归纳一下方法。 本次的字符识别项目可以分为以下几个步骤&#xff1a; 一、图像处理和字符分割 二、创建自…

python计算机视觉-图像检索和识别

目录 一、原理解析 1.1计算机视觉领域的图像分类是什么意思? 1.2图像分类要如何实现? 1.3Bag-of-features算法和过程? 1)提取图像特征 2)训练字典&#xff08; visual vocabulary &#xff09; 3)图片直方图表示 4)训练分类器 1.4TF-IDF? 1.5当前图像分类中会遇到…

使用计算机视觉和深度学习创建现代 OCR 管道

文章目录 研究和原型设计字深网字检测器组合式端到端系统生产化性能调优优雅 在这篇文章中&#xff0c;我们将带您了解我们如何为[【移动文档扫描仪】构建最先进的光学字符识别&#xff08;OCR&#xff09;管道的幕后故事。我们使用了计算机视觉和深度学习的进步&#xff0c;如…

最流行的4个机器学习数据集

最流行的4个机器学习数据集 机器学习算法需要作用于数据&#xff0c;而数据的本质则决定了应用的机器学习算法是否合适&#xff0c;而数据的质量也会决定算法表现的好坏程度。所以会研究数据&#xff0c;会分析数据很重要。本文作为学习研究数据系列博文的开篇&#xff0c;列举…

机器学习——数据集预处理(数据查看和空值处理)

目录 前言 数据集查看 前言 目的&#xff1a;本数据集是为了分析炉丝功率和炉膛温度以及样品盒内部温度之间的关系&#xff0c;分析温场的分布等。 来源&#xff1a;本数据集的来源是实验获得的数据。 特点&#xff1a;特征维度高&#xff0c;数据量大。 数据集查看 1.查…

推荐收藏:50个最佳机器学习公共数据集

外国自媒体mlmemoirs根据github、福布斯、CMU官网等信息&#xff0c;整理了一张50个最佳机器学习公共数据集的榜单&#xff0c;为大家分享一下~ 作者&#xff1a;mlmemoirs 郭一璞 编译 外国自媒体mlmemoirs根据github、福布斯、CMU官网等信息&#xff0c;整理了一张50个最佳…

8种适用于不同机器学习问题的常用数据集

要找到一定特定的数据集可以解决各种机器学习问题&#xff0c;是一件很难的事情。越来越多企业或研究机构将自己的数据集公开&#xff0c;已经成为全球的趋势&#xff0c;这也将有助于大家进行更多研究。 近期&#xff0c;亚马逊高级技术顾问 Will Badr 分享了 8 种适用于不同…

【ML】机器学习数据集:sklearn中回归数据集介绍

目录 1. Boston房价预测数据集2. California房价预测数据集3. 糖尿病预测数据集 在机器学习的教程中&#xff0c;我们会看到很多的demo&#xff0c;这些demo都是基于python中自带的数据集。今天我们将介绍三个用于回归预测的数据集。 1. Boston房价预测数据集 该数据集将在sci…

浅谈机器学习之数据集构建

浅谈机器学习之数据集构建 ​ 正如大家现在知道的&#xff0c;深度学习模型(DL)和机器学习模型(ML)是数据驱动型任务&#xff0c;在近乎完美的数据集面前&#xff0c;模型间的细微差异可以忽略。但要获得覆盖目标场景所有特征的样本&#xff0c;不仅要耗费巨大的人力物力&…

机器学习经典开源数据集盘点

在机器学习任务实施前&#xff0c;如何快速寻找到可用数据集&#xff0c;是令每一位研究人员最头痛的事情。本文为大家列举了八大主流数据集来源&#xff0c;不仅包含大量的数据集信息&#xff0c;而且包含了描述、用法以及一些实施案例等。 01 Kaggle数据集 Kaggle数据集地址h…

免费的机器学习数据集网站(6300+数据集)

今天给大家分享一个免费获取机器学习数据集网站&#xff1a; Machine Learning Datasets | Papers With Code 有想法但没有数据集的同学的福音&#xff0c;网站届满很简洁&#xff0c;及本本上提供的了一般可用的各类数据集&#xff0c;我们可以进行各类影像、评论和点云等数…

学习机器学习算法过程中的常用数据集

文章目录 【数据集1】forge&#xff1a;小型模拟分类问题数据集【数据集2】wave&#xff1a;小型模拟回归问题数据集【数据集3】cancer&#xff1a;中型实际分类问题数据集【数据集4】boston&#xff1a;中型实际回归问题数据集 以下数据集为学习机器学习算法时&#xff0c;经常…

虚拟机系统iso镜像下载_如何下载正版系统镜像

许多网友想装系统&#xff0c;可是不会装(后期会推装系统的文章)&#xff0c;而且网上的系统有的装有全家桶&#xff0c;有的又有捆绑软件&#xff0c;严重的还有病毒。那么&#xff0c;在哪里去下载正版&#xff0c;安全的系统镜像呢 "MSDN&#xff0c;我告诉你"这个…

Win7下安装xp虚拟机

在win7下安装Oracle VM VirtualBox虚拟机&#xff0c;然后在安装xp程序。 准备工作&#xff1a; 1. Oracle VM VirtualBox虚拟机 2. 一张xp安装版的镜像盘&#xff08;这里一定是安装版而不是Ghost版&#xff0c;如果想知道ghost版的会出现什么问题&#xff0c;不妨自己试试。&…