Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

9-LEKCIYA_MDQI

.pdf
Скачиваний:
0
Добавлен:
18.10.2024
Размер:
225.55 Кб
Скачать

9-lekciya. Kóriniske (súwretke) dáslepki qayta islew

Jobası:

1.Kórinislerdi oqıw hám kórsetiw

2.Ólshem ózgertiw

3.Normalizaciya

4.Jarıqlıqtı hám kontrasttı ózgertiw

1. Kirisiw

Kórinislerdi (súwretlerdi) dáslepki qayta islew bul kompyuter kóriwi hám mashina úyreniwi tarawlarında júdá áhmiyetli orın iyeleydi. Kórinislerdi dáslepki qayta islew - bul súwretlerdi algoritmler ushın qolaylı hám effektiv forma alıwı ushın ótkeriletuǵın processler jıyındısı. Biz bul lekciyada tiykarǵı usıllar hám olardıń Python tilinde ámelge asırılıwın kórip shıǵamız.

2. Kórinislerdi oqıw hám kórsetiw

Dáslep, kórinislerdi oqıw hám kórsetiw ushın kerekli kitapxanalardı import etemiz:

python

import cv2

import numpy as np

import matplotlib.pyplot as plt

# Súwretti oqıw

image = cv2.imread('mısaı_súwret.jpg')

# RGB formatına ótkerip alıw

image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# Súwretti kórsetiw plt.imshow(image_rgb) plt.axis('off') plt.show()

3. Ólshem ózgertiw

Kórinistiń ólshemin ózgertiw - bul eń ápiwayı hám keń tarqalǵan qayta islew usıllarınan biri:

python Copy

# Súwretti kichireytiriw

resized_image = cv2.resize(image_rgb, (224, 224))

plt.imshow(resized_image) plt.axis('off')

plt.title('Ólshemi ózgertilgen súwret')

plt.show()

4. Normalizaciya

Súwret piksellerin [0, 1] aralıǵına normalizaciyalaw:

python

normalized_image = resized_image.astype('float32') / 255.0

print("Normalizaciyadan keyingi mánisler aralıǵı:", normalized_image.min(), "-", normalized_image.max())

5. Jarıqlıqtı hám kontrasttı ózgertiw

python

# Jarıqlıqtı asırıw

brightened = cv2.convertScaleAbs(image_rgb, alpha=1.5, beta=30)

# Kontrasttı asırıw

contrasted = cv2.convertScaleAbs(image_rgb, alpha=1.5, beta=0)

fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(15, 5)) ax1.imshow(image_rgb)

ax1.set_title('Original') ax2.imshow(brightened) ax2.set_title('Jarıqlıǵı asırılǵan') ax3.imshow(contrasted) ax3.set_title('Kontrasti asırılǵan') plt.show()

6. Filtrler qollanıw

Gausslıq filtr hám keskin filtrdi qollanıw:

python Copy

# Gausslıq filtr

blurred = cv2.GaussianBlur(image_rgb, (5, 5), 0)

# Keskin filtr

kernel = np.array([[-1, -1, -1], [-1, 9, -1], [-1, -1, -1]])

sharpened = cv2.filter2D(image_rgb, -1, kernel)

fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(15, 5)) ax1.imshow(image_rgb)

ax1.set_title('Original') ax2.imshow(blurred) ax2.set_title('Gausslıq filtr') ax3.imshow(sharpened) ax3.set_title('Keskin filtr') plt.show()

7. Qırqıw (Cropping)

python

height, width = image_rgb.shape[:2]

start_row, start_col = int(height * .25), int(width * .25) end_row, end_col = int(height * .75), int(width * .75)

cropped = image_rgb[start_row:end_row, start_col:end_col]

plt.imshow(cropped) plt.axis('off') plt.title('Qırqılǵan súwret') plt.show()

8. Aylandırıw hám awdarıw

python

# 45 gradusqa aylandırıw

rows, cols = image_rgb.shape[:2]

M = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 1) rotated = cv2.warpAffine(image_rgb, M, (cols, rows))

# Gorizontal awdarıw

flipped = cv2.flip(image_rgb, 1)

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 5)) ax1.imshow(rotated)

ax1.set_title('Aylandırılǵan') ax2.imshow(flipped) ax2.set_title('Awdarılǵan') plt.show()

9. Juwmaq

Bul lekciyada biz kórinislerdi dáslepki qayta islewdiń tiykarǵı usılların úyrendik.

Bular:

Kórinislerdi oqıw hám kórsetiw

Ólshem ózgertiw

Normalizaciya

Jarıqlıq hám kontrast ózgertiw

Filtrler qollanıw

Qırqıw

Aylandırıw hám awdarıw

Bul usıllar kompyuter kóriwi hám mashina úyreniwi modellerin úyretiw ushın súwretlerdi tayarlaw processinde júdá áhmiyetli. Olar modellerdıń effektivligin asırıwǵa hám hár túrli jaǵdaylarda islewine járdem beredi.

Biz joqarıda kórinislerdi qayta islew usılların úyrendik. Bul usıllardı mashina úyreniwi modelleri menen birge qollaw haqqında sóz etemiz. Bunda súwretlerdi qayta islew hám olardı mashina úyreniwi modelleri menen birge qollanıwdıń ámeliy tájiriybesin beredi.

2. Kerekli kitapxanalardı júklew

python Copy

import cv2

import numpy as np

import matplotlib.pyplot as plt

from sklearn.model_selection import train_test_split from tensorflow.keras.models import Sequential

from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense from tensorflow.keras.utils import to_categorical

3. Maǵlıwmatlar toplamın tayarlaw

Mısal ushın, biz CIFAR-10 maǵlıwmatlar toplamın qollanamız:

python Copy

from tensorflow.keras.datasets import cifar10

(x_train, y_train), (x_test, y_test) = cifar10.load_data()

# Klasslar atları

class_names = ['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']

# Maǵlıwmatlardı normalizaciyalaw

x_train = x_train.astype('float32') / 255.0 x_test = x_test.astype('float32') / 255.0

# Klasslar sanın kórsetiw

y_train = to_categorical(y_train, 10) y_test = to_categorical(y_test, 10)

4. Maǵlıwmatlardı vizuallastırıw

python

plt.figure(figsize=(10,10)) for i in range(25):

plt.subplot(5,5,i+1) plt.xticks([]) plt.yticks([]) plt.grid(False) plt.imshow(x_train[i])

plt.xlabel(class_names[y_train[i].argmax()]) plt.show()

5. Maǵlıwmatlardı kóbeytiriw (Data Augmentation)

python

from tensorflow.keras.preprocessing.image import ImageDataGenerator

datagen = ImageDataGenerator( rotation_range=15, width_shift_range=0.1, height_shift_range=0.1, horizontal_flip=True, zoom_range=0.1

)

plt.figure(figsize=(10,10))

for X_batch, y_batch in datagen.flow(x_train, y_train, batch_size=9, seed=42):

for i in range(9): plt.subplot(3,3,i+1) plt.imshow(X_batch[i]) plt.axis('off')

plt.tight_layout() break

plt.show()

6. CNN modelin jaratıw

python

model = Sequential([

Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)), MaxPooling2D((2, 2)),

Conv2D(64, (3, 3), activation='relu'), MaxPooling2D((2, 2)),

Conv2D(64, (3, 3), activation='relu'), Flatten(),

Dense(64, activation='relu'), Dense(10, activation='softmax')

])

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

model.summary()

7. Modeldi úyretiw

python

history = model.fit(datagen.flow(x_train, y_train, batch_size=32), epochs=10,

validation_data=(x_test, y_test))

8. Nátiyjelerin bahalaw

python

plt.figure(figsize=(12,4)) plt.subplot(1,2,1)

plt.plot(history.history['accuracy'], label='Training Accuracy') plt.plot(history.history['val_accuracy'], label='Validation Accuracy') plt.legend()

plt.title('Accuracy') plt.subplot(1,2,2)

plt.plot(history.history['loss'], label='Training Loss') plt.plot(history.history['val_loss'], label='Validation Loss') plt.legend()

plt.title('Loss') plt.show()

test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2) print(f'\nTest accuracy: {test_acc}')

9. Jańa súwretlerdi klassifikaciyalaw

python

def preprocess_image(image_path): img = cv2.imread(image_path)

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) img = cv2.resize(img, (32, 32))

img = img.astype('float32') / 255.0 return img

# Jańa súwret jolı new_image_path = 'new_image.jpg'

# Súwretti qayta islew

processed_image = preprocess_image(new_image_path)

# Boljaw

prediction = model.predict(np.expand_dims(processed_image, axis=0)) predicted_class = class_names[np.argmax(prediction)]

plt.imshow(processed_image) plt.title(f'Boljanǵan klass: {predicted_class}') plt.axis('off')

plt.show()

10.Juwmaq

Bul lekciyada biz:

Maǵlıwmatlar toplamın tayarlaw

Maǵlıwmatlardı vizuallastırıw

Maǵlıwmatlardı kóbeytiriw (Data Augmentation)

CNN modelin jaratıw hám úyretiw

Nátiyjelerin bahalaw

Jańa súwretlerdi klassifikaciyalaw

usılların úyrendik hám ámelge asırdıq. Bul processler arqalı biz kórinislerdi qayta islew usılların mashina úyreniwi modelleri menen birge qollanıwdı kórdik.

Bul usıllar arqalı modelimizdiń dálligin asıra alamız hám hár túrli jaǵdaylarda islewine járdem bere alamız. Sonıń menen birge, bul usıllar modelimizdiń artıqsha úyreniwiniń (overfitting) aldın alıwǵa da járdem beredi.

Соседние файлы в предмете Программная инженерия