使用MobileNet进行图像识别


介绍

图像识别是指识别图像中物体或特征的过程。图像识别广泛应用于医疗影像、汽车、安全以及缺陷检测等众多领域。

什么是MobileNet?为什么如此流行?

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

让我们简单了解一下在ML领域存在已久的MobileNet V1和V2。

MobileNetV2比MobileNet V1提供了两个重要的特性:

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

  • 瓶颈之间的短连接。

Mobilenetv2架构

输入

操作符

T

C

N

S

224² X 3

conv2d

32

1

2

112² X 32

瓶颈

1

16

1

1

112² X 16

瓶颈

6

24

2

2

56² X 24

瓶颈

6

32

3

2

28² X 32

瓶颈

6

64

4

2

14² X 64

瓶颈

6

96

3

1

14² X 96

瓶颈

6

160

3

2

7² X 160

瓶颈

6

320

1

1

7² X 320

conv2d 1x1 1

1280

1

1

7² X 1280

avgpool 7x7

1

1 X 1 X 1280

conv2d 1x1

k

MobileNet v1和Mobilenet V2的比较

大小

MOBILENETV1

MOBILENETV2

SHUFFLENET (2X,G=3)

112X112

64/1600

16/400

32/800

56x56

128/800

32/200

48/300

28x28

256/400

64/100

400/600K

14x14

512/200

160/62

800/310

7x7

1024/199

320/32

1600/156

1x1

1024/2

1280/2

1600/3

最大

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

  • MobileNet具有更高的分类精度和更少的参数。

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

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

图像识别的益处

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

  • 广泛用于OCR技术,从图像中检索信息。

  • 车道线检测。

  • 人脸检测和考勤系统。

  • 图像字幕和标签,在社交媒体网站上有用。

结论

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

更新于:2022年12月30日

475 次浏览

开启您的职业生涯

通过完成课程获得认证

开始学习
广告