人工智慧——影像分析第二期練習

Jozky86發表於2020-09-30

又和同學肝了半個上午(主要是一二節有課),完成了天氣影像識別的第二期練習
一開始幾個題不難,挺簡單的,到後面出現HOG特徵擬合svm模型,HOG提取特徵,又是現學內容
HOG特徵的維數用cv2.HOGDescriptor()來做
最後用shape來反應維數

import cv2
import matplotlib.pyplot as plt
img=cv2.imread('/home/kesci/input/weather_image1552/訓練集/100.jpg',0)
plt.imshow(img)
hg=cv2.HOGDescriptor()
winSreide=(64,64)
padding=(16,16)
hg.getDescriptorSize()
hgg=hg.compute(img,winSreide,padding)
hgg.shape

還有個題是的HOG特徵擬合svm模型得到的模型的第一個係數是多少?
這個第一個係數屬實把我倆看懵逼了,啥玩意??最後找了一陣子資料都沒有找到關於第一個係數的相關知識,發現下面有個求得分的於是我們先轉移目標
訓練得分題一般都是滿分是1分,題目要求保留小數點後一點,那答案蒙也能蒙出來,但是抱著學習的態度決定先算算

主要為這幾部分:

svm = SVM(max_iter=200)

這個是最大迭代次數,可以理解成訓練多少次

svm.fit(X_train, y_train)

這是訓練部分
‘train done!’

svm.score(X_test, y_test)

這是用模型來檢驗成績

官方資料顯示:基於SVM的影像分類需要依靠HOG提取的特徵,擬合模型時將HOG提取出的特徵向量作為X,將樣本的類別標籤作為y
而上一題我們已經求出特徵向量,而題目的樣本類別標籤也已經給出,我們要做的就是將兩者一一對等連線起來,並進行訓練
而在本題中X_train=X_test,Y也是一樣,大致思路這樣
但是過程中出現很多小問題,比如格式不對等,以及題目要求kernel的型別和svm的隨機態設定為2020,這些在SVC的函式中直接修改即可

clf = SVC(kernel='linear',random_state=2020)
import cv2
import matplotlib.pyplot as plt
import numpy as np
import json
with open('/home/kesci/input/weather_image1552/train.json','r') as f:
    js_data=json.load(f)
cnt=0
mp={'sunny':0,'cloudy':1}
js_pic=[]
js_lab=[]
for key in js_data:
    if(cnt<10):
        js_pic.append(key)
        js_lab.append(mp[js_data[key]])
    cnt+=1
# for i in range(len(v_pic)):
#     print(v_pic[i],v_lab[i])
prePath='/home/kesci/input/weather_image1552/訓練集/'
features=[]
for i in range(len(js_pic)):
    img=cv2.imread(prePath+js_pic[i],0)
    # plt.imshow(img)
    dsize=(100,128)
    img_rs=cv2.resize(img,dsize)
    hg=cv2.HOGDescriptor()
    # winFt=hg.getDescriptorSize()
    hog=hg.compute(img_rs).reshape(-1)
    print(hog)
    features.append(hog)
# for i in range(10):
    
from sklearn.svm import SVC
clf = SVC(kernel='linear',random_state=2020)
feature=np.array(features)
label=np.array(js_lab)
# feature = np.concatenate(feature, axis=0)
# label = np.concatenate(label, axis=0)
clf.fit(feature, label)
clf.score(feature, label)

到此天氣識別和疾病分析的前兩個部分都已經完成,最後一部分就是真槍實彈,直接寫完整程式來判斷天氣或疾病情況,等明天繼續開幹,奧利給

相關文章