
9-LEKCIYA_MDQI
.pdf
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.