如何創(chuàng)建一個(gè)能夠區(qū)分或識(shí)別圖像的系統(tǒng)?
介紹你是否曾經(jīng)偶然發(fā)現(xiàn)一個(gè)數(shù)據(jù)集或圖像,并想知道是否可以創(chuàng)建一個(gè)能夠區(qū)分或識(shí)別圖像的系統(tǒng)?圖像分類的概念將幫助我們解決這個(gè)問(wèn)題。圖像分類是計(jì)算機(jī)視覺(jué)最熱門的應(yīng)用之一,是任何想在這個(gè)領(lǐng)域工作的人都必須知道的概念。

在本文中,我們將看到一個(gè)非常簡(jiǎn)單但使用頻率很高的應(yīng)用程序,那就是圖像分類。我們不僅將看到如何使一個(gè)簡(jiǎn)單和有效的模型分類數(shù)據(jù),而且還將學(xué)習(xí)如何實(shí)現(xiàn)一個(gè)預(yù)先訓(xùn)練的模型,并比較兩者的性能。在本文結(jié)束時(shí),你將能夠找到自己的數(shù)據(jù)集并輕松實(shí)現(xiàn)圖像分類。先決條件:Python編程Keras及其模塊基本了解圖像分類卷積神經(jīng)網(wǎng)絡(luò)及其實(shí)現(xiàn)遷移學(xué)習(xí)的基本認(rèn)識(shí)聽(tīng)起來(lái)有趣嗎?準(zhǔn)備創(chuàng)建你自己的圖像分類器吧!目錄圖像分類理解問(wèn)題陳述設(shè)置圖像數(shù)據(jù)讓我們構(gòu)建我們的圖像分類模型數(shù)據(jù)預(yù)處理數(shù)據(jù)擴(kuò)充模型定義和訓(xùn)練評(píng)估結(jié)果遷移學(xué)習(xí)的藝術(shù)導(dǎo)入基礎(chǔ)MobileNetV2模型微調(diào)訓(xùn)練評(píng)估結(jié)果下一步是什么?什么是圖像分類?圖像分類是分配輸入圖像(一組固定類別中的一個(gè)標(biāo)簽)的任務(wù)。這是計(jì)算機(jī)視覺(jué)的核心問(wèn)題之一,盡管它很簡(jiǎn)單,卻有各種各樣的實(shí)際應(yīng)用。讓我們舉個(gè)例子來(lái)更好地理解。當(dāng)我們進(jìn)行圖像分類時(shí),我們的系統(tǒng)將接收?qǐng)D像作為輸入,例如,一只貓。現(xiàn)在,系統(tǒng)將已知一組類別,它的目標(biāo)是為圖像分配一個(gè)類別。這個(gè)問(wèn)題似乎很簡(jiǎn)單,但對(duì)于計(jì)算機(jī)來(lái)說(shuō)卻是一個(gè)很難解決的問(wèn)題。你可能知道,電腦看到的是一組數(shù)字,而不是我們看到的貓的圖像。圖像是由0到255的整數(shù)組成的三維數(shù)組,大小為寬x高x 3。3代表紅色、綠色、藍(lán)色三個(gè)顏色通道。那么我們的系統(tǒng)如何學(xué)習(xí)識(shí)別這幅圖像呢?通過(guò)卷積神經(jīng)網(wǎng)絡(luò)。卷積神經(jīng)網(wǎng)絡(luò)(CNN)是深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的一種,是圖像識(shí)別領(lǐng)域的巨大突破。到目前為止,你可能已經(jīng)對(duì)CNN有了一個(gè)基本的了解,我們知道CNN由卷積層、Relu層、池化層和全連接層組成。
要閱讀關(guān)于圖像分類和CNN的詳細(xì)信息,你可以查看以下資源:https://www.a(chǎn)nalyticsvidhya.com/blog/2020/02/learn-image-classification-cnn-convolutional-neural-networks-3-datasets/
https://www.a(chǎn)nalyticsvidhya.com/blog/2019/01/build-image-classification-model-10-minutes/
現(xiàn)在我們已經(jīng)理解了這些概念,讓我們深入了解如何構(gòu)建和實(shí)現(xiàn)圖像分類模型。理解問(wèn)題陳述考慮下面的圖像:

一個(gè)精通體育運(yùn)動(dòng)的人可以認(rèn)出橄欖球的形象。圖像的不同方面可以幫助你識(shí)別它是橄欖球,它可以是球的形狀或球員的服裝。但你有沒(méi)有注意到,這張照片很可能是一個(gè)足球形象?讓我們考慮另一張圖片:

你認(rèn)為這個(gè)圖像代表什么?很難猜對(duì)吧?對(duì)于沒(méi)有受過(guò)訓(xùn)練的人來(lái)說(shuō),這幅圖像很容易被誤認(rèn)為是足球,但實(shí)際上,這是橄欖球的圖像,因?yàn)槲覀兛梢钥吹胶竺娴那蜷T柱不是網(wǎng),而且尺寸更大。現(xiàn)在的問(wèn)題是,我們能否建立一個(gè)能夠正確分類圖像的系統(tǒng)。這就是我們項(xiàng)目背后的想法,我們想要建立一個(gè)系統(tǒng)能夠識(shí)別圖像中所代表的運(yùn)動(dòng)。這里分為橄欖球和足球兩大類。問(wèn)題陳述可能有點(diǎn)棘手,因?yàn)轶w育運(yùn)動(dòng)有很多共同的方面,盡管如此,我們將學(xué)習(xí)如何解決問(wèn)題,并創(chuàng)建一個(gè)良好的表現(xiàn)系統(tǒng)。設(shè)置我們的圖像數(shù)據(jù)由于我們正在處理一個(gè)圖像分類問(wèn)題,我使用了兩個(gè)最大的圖像數(shù)據(jù)源,即ImageNet和谷歌OpenImages。我實(shí)現(xiàn)了兩個(gè)python腳本,我們可以輕松地下載圖像。一共下載了3058張圖片,分為train和test兩部分。我用訓(xùn)練文件夾有2448張圖片,測(cè)試文件夾有610張圖片,進(jìn)行了80-20的分割。橄欖球和足球兩個(gè)類別各有1224張圖片。我們的數(shù)據(jù)結(jié)構(gòu)如下:輸入 3058橄欖球 - 310足球 - 310橄欖球 - 1224足球 - 1224訓(xùn)練 - 2048測(cè)試 - 610我們來(lái)建立我們的圖像分類模型!步驟1: 導(dǎo)入所需的庫(kù)這里,我們將使用Keras庫(kù)來(lái)創(chuàng)建模型并對(duì)其進(jìn)行訓(xùn)練。我們還使用Matplotlib和Seaborn來(lái)可視化我們的數(shù)據(jù)集,以便更好地理解我們將要處理的圖像。另一個(gè)處理圖像數(shù)據(jù)的重要庫(kù)是Opencv。import matplotlib.pyplot as plt
import seaborn as sns
import keras
from keras.models import Sequential
from keras.layers import Dense, Conv2D , MaxPool2D , Flatten , Dropout
from keras.preprocessing.image import ImageDataGenerator
from keras.optimizers import Adam
from sklearn.metrics import classification_report,confusion_matrix
import tensorflow as tf
import cv2
import os
import numpy as np
步驟2: 加載數(shù)據(jù)接下來(lái),讓我們定義數(shù)據(jù)的路徑。讓我們定義一個(gè)名為get_data()的函數(shù),它使我們更容易創(chuàng)建我們的訓(xùn)練和驗(yàn)證數(shù)據(jù)集。我們定義了我們將要使用的兩個(gè)標(biāo)簽“Rugby”和“Soccer”。我們使用Opencv imread函數(shù)讀取RGB格式的圖像,并將圖像大小調(diào)整到我們想要的寬度和高度(在本例中都是224)。labels = ['rugby', 'soccer']
img_size = 224
def get_data(data_dir):
data = []
for label in labels:
path = os.path.join(data_dir, label)
class_num = labels.index(label)
for img in os.listdir(path):
try:
img_arr = cv2.imread(os.path.join(path, img))[...,::-1] #convert BGR to RGB format
resized_arr = cv2.resize(img_arr, (img_size, img_size)) # Reshaping images to preferred size
data.a(chǎn)ppend([resized_arr, class_num])
except Exception as e:
print(e)
return np.a(chǎn)rray(data)
Now we can easily fetch our train and validation data.
train = get_data('../input/traintestsports/Main/train')
val = get_data('../input/traintestsports/Main/test')
步驟3: 可視化數(shù)據(jù)讓我們可視化我們的數(shù)據(jù),看看我們到底在使用什么。我們使用seaborn來(lái)繪制這兩個(gè)類中的圖像數(shù)量,你可以看到輸出是什么樣的。l = []
for i in train:
if(i[1] == 0):
l.a(chǎn)ppend("rugby")
else
l.a(chǎn)ppend("soccer")
sns.set_style('darkgrid')
sns.countplot(l)
輸出:

發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
圖片新聞
-

落地?zé)o錫!京東首個(gè)物流機(jī)器人超級(jí)工廠來(lái)了
-

OpenAI發(fā)布的AI瀏覽器,市場(chǎng)為何反應(yīng)強(qiáng)烈?
-

馬云重返一線督戰(zhàn),阿里重啟創(chuàng)始人模式
-

機(jī)器人奧運(yùn)會(huì)戰(zhàn)報(bào):宇樹機(jī)器人摘下首金,天工Ultra搶走首位“百米飛人”
-

存儲(chǔ)圈掐架!江波龍起訴佰維,索賠121萬(wàn)
-

長(zhǎng)安汽車母公司突然更名:從“中國(guó)長(zhǎng)安”到“辰致科技”
-

豆包前負(fù)責(zé)人喬木出軌BP后續(xù):均被辭退
-

字節(jié)AI Lab負(fù)責(zé)人李航卸任后返聘,Seed進(jìn)入調(diào)整期
最新活動(dòng)更多
-
6月30日立即申請(qǐng)?jiān)囉?> 【免費(fèi)試用】旭之源工業(yè)電源一一機(jī)器人的穩(wěn)定“心臟“
-
精彩回顧立即查看>> 【限時(shí)免費(fèi)】物理場(chǎng)仿真助力生物醫(yī)學(xué)領(lǐng)域技術(shù)創(chuàng)新
-
精彩回顧立即查看>> 【直播】 智測(cè)未來(lái)·2026海克斯康春季產(chǎn)品創(chuàng)新日
-
精彩回顧立即查看>> 【線下論壇】新唐科技×芯唐南京 2026 年度研討會(huì)
-
精彩回顧立即查看>> OFweek 2026(第十五屆)中國(guó)機(jī)器人產(chǎn)業(yè)大會(huì)
-
精彩回顧立即查看>> 維科杯· OFweek 2025中國(guó)機(jī)器人行業(yè)年度評(píng)選
推薦專題
-
2 華為,重大突破!
- 1 人形機(jī)器人“第一股”來(lái)了!宇樹科技即將上會(huì)
- 2 全球股市陷AI獨(dú)大結(jié)構(gòu)性瘋狂
- 3 AI狂歡遇上油價(jià)破百,全球股市還能漲多久? | 產(chǎn)聯(lián)看全球
- 4 DeepSeek融資500億,梁文鋒難逃資本局
- 5 谷歌2026 I/O大會(huì)完整回顧:模型依然重要,但智能體正在接管一切
- 6 全球資本,重倉(cāng)中國(guó)機(jī)器人
- 7 Figure AI 交付突破350臺(tái),陪跑特斯拉會(huì)迎來(lái)iPhone 時(shí)刻嗎?
- 8 “國(guó)產(chǎn)GPU第一股”摩爾線程首季扭虧,但造血能力仍待考驗(yàn)
- 9 Anthropic發(fā)布2028年全球AI領(lǐng)導(dǎo)力的兩種情景報(bào)告
- 10 特斯拉宣布監(jiān)督版FSD登陸中國(guó)?
- 高級(jí)軟件工程師 廣東省/深圳市
- 自動(dòng)化高級(jí)工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級(jí)銷售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術(shù)專家 廣東省/江門市
- 封裝工程師 北京市/海淀區(qū)
- 結(jié)構(gòu)工程師 廣東省/深圳市


分享





