使用MobileNet的图像识别

使用MobileNet的图像识别

简介

用图像识别一个物体或特征的过程被称为图像识别。图像识别在不同的领域都能找到它的位置,无论是医学成像、汽车、安全还是检测缺陷。

什么是MobileNet,为什么它如此受欢迎?

MobileNet是使用深度可分离卷积开发的深度学习CNN模型。与其他相同深度的模型相比,这个模型高度减少了参数的数量。这个模型是轻量级的,并被优化为在移动和边缘设备上运行。到目前为止,Mobilenet有三个版本。即MobileNet v1、v2和v3。Mobilenet是由谷歌开发的。

让我们来谈一谈MobileNet V1和V2,它们在ML领域已经有相当长的时间了。

与MobileNet V1相比,MobileNetV2提供了两个广泛的功能。它们是

  • MobileNetV2在各层之间有一个线性瓶颈。它通过不允许非线性破坏太多的信息来保存信息

  • 瓶颈之间的短距离连接

MobileNet v2的架构

INPUT OPERATOR T C N S
2242 X 3 conv2d 32 1 2
1122X 32 bottleneck 1 16 1 1
1122X 16 bottleneck 6 24 2 2
562 X 24 bottleneck 6 32 3 2
282 X 32 bottleneck 6 64 4 2
142 X 64 bottleneck 6 96 3 1
142 X 96 bottleneck 6 160 3 2
72 X 160 bottleneck 6 320 1 1
72 X 320 conv2d 1×1 1 1280 1 1
72 X 1280 avgpool 7×7 1
1 X1 X 1280 conv2d 1×1 k

MobileNet v1和Mobilenet V2的比较

SIZE MOBILENETV1 MOBILENETV2 SHUFFLENET (2X,G=3)
112X112 64/1600 16/400 32/800
56×56 128/800 32/200 48/300
28×28 256/400 64/100 400/600K
14×14 512/200 160/62 800/310
7×7 1024/199 320/32 1600/156
1×1 1024/2 1280/2 1600/3
max 1600K 400K 600K

使用移动网络的图像识别

图像识别的代码实现

示例

## MOBILENET

import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.layers import Dense, Activation
from tensorflow.keras.metrics import categorical_crossentropy
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.preprocessing import image
from tensorflow.keras.models import Model
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.applications import imagenet_utils
import matplotlib.pyplot as plt
from IPython.display import Image,display
%matplotlib inline

mobile = tf.keras.applications.mobilenet.MobileNet()

def format_image(file):
  image_path = '/content/images/'
  img = image.load_img(image_path + file, target_size=(224, 224))
  img_array = image.img_to_array(img)
  img_array_exp_dims = np.expand_dims(img_array, axis=0)
  return tf.keras.applications.mobilenet.preprocess_input(img_array_exp_dims)


display(Image(filename='/content/images/image.jpg', width=300,height=200))

preprocessed_img = format_image('image.jpg')
prediction_results = mobile.predict(preprocessed_img)

results = imagenet_utils.decode_predictions(prediction_results)
print(results)

输出

[[('n02279972', 'monarch', 0.58884907), ('n02281406', 'sulphur_butterfly', 
0.18508224), ('n02277742', 'ringlet', 0.15471826), ('n02281787', 'lycaenid', 0.04744451), 
('n02276258', 'admiral', 0.01013135)]]

与其他网络相比,MobileNet的优势

  • 移动网络具有更高的分类精度和更少的参数。

  • MobileNets体积小,延迟低,功耗优化,最适合于移动和嵌入式设备。

  • 它们是高效的特征提取器,用于分割和物体检测。

图像识别的好处

  • 自主车辆和机器人用于探测障碍物

  • 高度应用于OCR技术,从图像中检索信息

  • 交通车道检测

  • 人脸检测和考勤系统

  • 给图片加标题和标签,在社会媒体网站上很有用。

总结

图像识别已经成为每个物体检测和视频相关任务的初步任务。由于已经有了大量的预训练模型和架构,它在当前与视觉相关的人工智能领域已经变得非常重要。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程