使用MobileNet进行图像识别

使用MobileNet进行图像识别

介绍

通过图像来识别物体或特征的过程被称为图像识别。图像识别在医学成像、汽车、安全和检测缺陷等不同领域都有应用。

什么是MobileNet以及为什么它如此受欢迎

MobileNet是使用深度可分离卷积开发的深度学习CNN模型。与同样深度的其他模型相比,该模型大大减少了参数数量。该模型轻巧且经过优化,可在移动设备和边缘设备上运行。到目前为止,已发布了三个版本的MobileNet,即MobileNet v1、v2和v3。MobileNet是由Google开发的。

让我们稍微了解一下已经存在于机器学习领域已经有一段时间的MobileNet V1和V2。

MobileNetV2相对于MobileNet V1提供了两个全面的特性。它们是:

  • MobileNetV2在层之间使用了线性瓶颈。它通过不允许非线性破坏太多信息来保留信息。

  • 瓶颈之间的短连接

MobileNetv2的架构

输入 操作符 T C N S
2242 X 3 conv2d - 32 1 2
112 2 X 32 bottleneck 1 16 1 1
112 2 X 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进行图像识别

图像识别的代码实现

示例

## 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相比其他网络的优势

  • MobileNet具有更高的分类准确度和较少的参数。

  • MobileNet小巧,延迟低,功耗优化,非常适合移动和嵌入式设备。

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

图像识别的好处

  • 用于自动驾驶车辆和机器人来检测障碍物。

  • 在OCR技术中广泛应用于从图像中提取信息。

  • 交通车道检测。

  • 人脸检测和考勤系统。

  • 图像字幕和标记,在社交媒体网站中非常有用。

结论

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程