[*] pr0gramm1ng basics
24 subscribers
50 photos
11 videos
20 files
41 links
Обзор различных кодов и импортируемых библиотек, информация об обновлениях и многое другое у меня на канале.
Download Telegram
[*] pr0gramm1ng basics
Photo
Сделал небольшой код на python 🐍 с использованием библиотеки RetinaFace 😶

Вот сам код:

from retinaface import RetinaFace
import cv2

path_to_file = 'image_1.png' # путь к файлу на вашем пк

image = cv2.imread(path_to_file) # открываем файл

if image is None:
raise FileNotFoundError(f"Не удалось загрузить изображение: {image}")

resp = RetinaFace.detect_faces('image_1.png') # считываем лица

if isinstance(resp, dict): # есть ли лица на фото
for face_id, face_info in resp.items(): # из словаря достаёём значения для построения квадрата на лицо
facial_area = face_info["facial_area"]
x1, y1, x2, y2 = facial_area

cv2.rectangle(image, (x1, y1), (x2, y2), (255, 0, 0), 2) # отображаем квадрат

cv2.imwrite("output_image_path.png", image) # сохраняем
print(f"Изображение с обнаруженными лицами сохранено как: output_image_path.png")


В коде есть небольшое объяснение, но немного поясню сам. Метод detect_faces возвращает список словарей:

{
"face_1": {
"score": 0.999,
"facial_area": [x1, y1, x2, y2],
"landmarks": {
"left_eye": [x, y],
"right_eye": [x, y],
"nose": [x, y],
"mouth_left": [x, y],
"mouth_right": [x, y]
}
},
"face_2": {
"score": 0.987,
"facial_area": [x1, y1, x2, y2],
"landmarks": { ... }
},
...
}


Здесь score - это уверенность (насколько модель уверена, что на изображении есть лицо), facial_area - координаты ограничивающего прямоугольника: [x1, y1, x2, y2], где: (x1, y1) — верхний левый угол, (x2, y2) — нижний правый угол, landmarks - ключевые точки (нос, правый уголок рта, левый уголок рта, правый глаз, левый глаз).

⚡️ Что делает программа: указываешь путь к файлу (обязательно изображение) и программа на этом изображении ищет лица и прикрепляет к ним квадраты. На фотографиях есть изображение до обработки и после ⚡️
🔥1
[*] pr0gramm1ng basics
Photo
Библиотека Tensorflow на python 🐍

Tensorflow - мощный фреймворк с открытым исходным кодом для машинного обучения и разработки нейросетей, разработанный компанией Google.

Установка:

pip install tensorflow 

Также в этой библиотеке есть встроенный API Keras. Он полностью интегрирован в Tensorflow.

🤖 Пример нейросети на Tensorflow:

import tensorflow as tf #импортируем

# 1. Загрузка данных (встроенный датасет)
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0 # Нормализация

# 2. Построение модели
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)), # Сглаживаем изображение 28x28 в вектор
tf.keras.layers.Dense(128, activation='relu'), # Полносвязный слой на 128 нейронов
tf.keras.layers.Dropout(0.2), # Регуляризация для борьбы с переобучением
tf.keras.layers.Dense(10) # Выходной слой на 10 классов (цифры 0-9)
])

# 3. Компиляция модели
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])

# 4. Обучение модели
model.fit(x_train, y_train, epochs=5)

# 5. Оценка качества
model.evaluate(x_test, y_test, verbose=2)

Для каких задач чаще всего используется Tensorflow:

1. Компьютерное зрение (Computer Vision). Например библиотека Mediapipe.

2. Обработка естественного языка. Например, определение тональности (NLTK + Tensorflow), машинный перевод (Tensorflow + Transformers (Hugging Face)), генерация текста (чат-боты)

3. Обработка звука и речи (Tensorflow Audio или Tensorflow + Librosa)

🔥 Щас на этой библиотеке я работаю над созданием своей нейросети. Она будет распознавать цифры, который я ей написал. Вчера 5 часов делал датасет и переобучил нейросеть. Сегодня придётся новый делать, поэтому не знаю когда дам её код. Стабильно библиотека работает на версии Python 3.8 🔥
MyFirstNeiro.rar
2.8 MB
Сделал свою нейросеть на python 🐍 при помощи библиотеки TensorFlow 🔥

Скрипты писал меньше часа, а саму нейросеть обучал почти 2 дня (методом проб и ошибок).

Так вот, что она делает?

🤖 Моя нейросеть умеет распознавать цифры 0-9. Обучена на данных MNIST (также сделал скрипты для создания своего датасета для моей нейросети).

Зависимости:

- TensorFlow (версия: 2.13.0)
- NumPy (версия: 1.24.3)
- Pillow (версия: 10.4.0)
- Pygame (версия: 2.6.1)

Нейросеть зовут - Овощ 🍆 (ну просто она реально овощ). Версия Python 3.8

GitHub репозиторий: my_first_neiro
👍1
Библиотека PyUSB в python 🐍

Это библиотека нужна для работы с USB устройствами (не всеми). Она является низкоуровневой и самой распространенной библиотекой для работы с USB. Эта библиотека поддерживается на Windows, Linux и MacOs (кроссплатформенная).

Пример кода на PyUSB:

import usb.core
import usb.util

# Найти устройство по VID и PID
dev = usb.core.find(idVendor=0x1234, idProduct=0x5678)

if dev is None:
raise ValueError("Устройство не найдено")

# Установить конфигурацию
dev.set_configuration()

# Отправить данные
dev.write(1, b'Hello USB')

Что такое PID и VID?

PID (Product id) - это идентификатор продукта. Он придумывается производителем для какого-либо устройства

VID (Vendor id) - это идентификатор производителя. Он назначается организацией USB-IF (официальная ассоциация USB)

👉 Вместе VID и PID полностью идентифицируют конкретную модель устройства

Вот пример кода для того чтобы узнать VID, PID и название продукта (product):

import usb.core

for dev in usb.core.find(find_all=True):
print(hex(dev.idVendor), hex(dev.idProduct), dev.product)

Есть конечно и библиотеки получше, чем PyUSB (например, hidapi (или hid), pyserial), но пока что решил рассказать про неё

Документация 👉 PyUSB 👈
Превращаем голос в текст 🔥

Чтобы перевести голос в текст в python можно воспользоваться библиотекой speech_recognition.

Speech_recognition - библиотека для распознавания речи в python. Она поддерживает несколько движков и API

Установка:

pip install SpeechRecognition
# Для работы с микрофоном
pip install pyaudio

Пример с обработкой звука из микрофона:

import speech_recognition as sr

# Создаем распознаватель
recognizer = sr.Recognizer()

def recognize_speech():
with sr.Microphone() as source:
print("Скажите что-нибудь...")

# Настройка для уменьшения шума
recognizer.adjust_for_ambient_noise(source, duration=1)

# Запись аудио
audio = recognizer.listen(source, timeout=5)

# Распознавание через Google
text = recognizer.recognize_google(audio, language="ru-RU")
print(f"Вы сказали: {text}")

recognize_speech()

В этом примере мы используем эту библиотеку для распознавания записанной нами речи через микрофон.

Эта библиотека также поддерживает работу с файлами (перевод звуков из файла в текст):

import speech_recognition as sr

def recognize_from_file(filename):
recognizer = sr.Recognizer()

with sr.AudioFile(filename) as source:
# Чтение всего аудиофайла
audio = recognizer.record(source)

text = recognizer.recognize_google(audio, language="ru-RU")
return text

# Использование
result = recognize_from_file("audio.wav")
print(result)

Эта библиотека подходит для распознавания голоса и его перевода в текст, но чаще всего используют другие библиотеки, но для начала её хватит
Библиотека socket в python 🐍

Socket - это библиотека для обмена данными между компьютерами. С её помощью можно установить соединение какого-либо компьютера (клиента) к другому компьютеру (серверу) и по сети передавать данные. Эта библиотека кроссплатформенная (подходит для Linux, Windows, MacOs). Также она поддерживает различные протоколы (TCP, UPD, RAW сокеты).

Пример кода клиента:

import socket

def start_client():
# создаём объект сокета с TCP подключением к IPv4
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# подключаем клиента к серверу
client_socket.connect(('localhost', 12345))

message = "Привет, сервер!"
# отправляем сообщение серверу
client_socket.sendall(message.encode())
# получаем ответ от сервера
response = client_socket.recv(1024)
print(f"Ответ сервера: {response.decode()}")
# закрываем сокет
client_socket.close()

if __name__ == "__main__":
start_client()

Пример сервера с socket:

import socket

def start_server():
# создаём объект сокета для сервера с TCP подключением и IPv4
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# привязываем к адресу и порту server_socket.bind(('localhost', 12345))
# слушаем
server_socket.listen(1)
print("Сервер запущен...")

while True:
# принимаем подключение клиента
client_socket, addr = server_socket.accept()
print(f"Подключен клиент: {addr}")
# получаем данные от клиента
data = client_socket.recv(1024)
print(f"Получено: {data.decode()}")

# Отправляем данные обратно
client_socket.sendall(data)
client_socket.close()

if __name__ == "__main__":
start_server()

Семейства адресов, которые может использовать socket:

1. Socket.AF_INET - это IPv4

2. Socket.AF_INET6 - это IPv6

3. Socket.AF_UNIX - это UNIX-сокеты

Типы сокетов:

1. Socket.SOCK_STREAM - TCP (надёжный, с установкой соединения)

2. Socket.SOCK_DGRAM - UPD (ненадёжный, без соединения)

С помощью библиотеки socket можно реализовать простейший мессенджер в консоли, чтобы обмениваться информацией с клиентом и сервером
hand.py
4.3 KB
Программа на Mediapipe для распознавания 7 жестов рук (палец вверх/вниз, ножницы, бумага, камень, рок 🤟, указательный палец вверх)

Требования 🛠️

- Python 3.10
- MediaPipe
- NumPy
- OpenCV

Также этот скрипт есть на моём 👉 GitHub 👈 с зависимостями
🔥 Всем привет. Сегодня праздник. Моё видео на канале впервые набрало 1000 просмотров, 50+ лайков и почти 30 закрепов. Также за это видео на мой канал подписались 7 человек. Такого ещё не было, но я крайне рад этому сообщению. Поздравляю вас тоже с этим прекрасным событием 🥰
🔥1
Библиотека NLTK в python 🐍

NLTK (Natural Language Toolkit) — это ведущая платформа для работы с естественным языком (NLP) в Python. Она предоставляет простые в использовании интерфейсы для более чем 50 корпусов и лексических ресурсов, а также набор библиотек для классификации, токенизации, стемминга, тегирования, синтаксического анализа и семантических рассуждений.

Установка NLTK:
pip install nltk

Настройка:

import nltk

# Загрузка необходимых ресурсов
nltk.download('punkt') # Токенизатор
nltk.download('stopwords') # Стоп-слова
nltk.download('wordnet') # Лемматизатор
nltk.download('averaged_perceptron_tagger') # POS-теггер

🔥 Токенизация - это разбиение текста на слова, предложения и т.д

Пример токенизации в NLTK:

import nltk
from nltk.tokenize import word_tokenize, sent_tokenize

text = "Hello world! This is NLTK. It's awesome."
sentences = sent_tokenize(text) # Разбиение на предложения
words = word_tokenize(text) # Разбиение на слова

print(sentences) # ['Hello world!', 'This is NLTK.', "It's awesome."]
print(words) # ['Hello', 'world', '!', 'This', 'is', 'NLTK', '.', 'It', "'s", 'awesome', '.']

🔥 Стемминг и лематизация - приведение слов к их базовой форме.

Пример стемминга в NLTK:

from nltk.stem import PorterStemmer, WordNetLemmatizer

stemmer = PorterStemmer()
lemmatizer = WordNetLemmatizer()

words = ["running", "flies", "happily", "better"]
stems = [stemmer.stem(word) for word in words]
lemmas = [lemmatizer.lemmatize(word) for word in words]

print(stems) # ['run', 'fli', 'happili', 'better']
print(lemmas) # ['running', 'fly', 'happily', 'better']

🔥 Тегирование - присвоение меток элементам текста.

Пример тегирования текста по частям речи в NLTK:

import nltk
from nltk import pos_tag
from nltk.tokenize import word_tokenize

text = "The quick brown fox jumps over the lazy dog"
tokens = word_tokenize(text)
tags = pos_tag(tokens)

print(tags)
# [('The', 'DT'), ('quick', 'JJ'), ('brown', 'JJ'), ('fox', 'NN'),
# ('jumps', 'VBZ'), ('over', 'IN'), ('the', 'DT'), ('lazy', 'JJ'), ('dog', 'NN')]

Теги для определения части речи:

- NN это существительное единственного числа

- NNS это существительное множественного числа

-VB это глагол в неопределённой форме

-VBD это глагол в прошедшем времени

- VBG это причастие

- JJ это прилагательное

- RB это наречие

- DT это определитель (the, a в английском)

- IN это предлог

- PRP это личное местоимение

🔥 Работа со стоп словами

Пример удаления малозначимых слов в NLTK:

from nltk.corpus import stopwords

nltk.download('stopwords')
stop_words = set(stopwords.words('english'))

text = "This is a sample sentence showing off stop word filtration"
words = word_tokenize(text)
filtered_words = [word for word in words if word.lower() not in stop_words]

print(filtered_words) # ['sample', 'sentence', 'showing', 'stop', 'word', 'filtration']

🔥 Анализ тональности

Пример анализа тональности в NLTK:

from nltk.sentiment import SentimentIntensityAnalyzer

nltk.download('vader_lexicon')
sia = SentimentIntensityAnalyzer()

text = "I love this product! It's amazing."
scores = sia.polarity_scores(text)

print(scores) # {'neg': 0.0, 'neu': 0.294, 'pos': 0.706, 'compound': 0.8516}

Библиотеку NLTK можно использовать в работе нейросетей, например, для извлечения полезной информации из текста, который дал пользователь
neiro.py
4.8 KB
Всем привет 👋

Я создал новую нейросеть - КОРНЕПЛОД. Эта нейросеть умеет определять что изображено на изображении (но на изображениях должны быть изображены только самолёты, коты, собаки, олени, лягушки, фуры, автомобили, корабли, лошади и птицы).

Зависимости (есть на GitHub в файле requirements.txt):

- Tensorflow 2.13.0
- NumPy 1.24.3
- Pillow 10.4.0

Скрипт работает на версии Python 3.8

Проект на 👉 Github 👈

#project #python #neiro_python_korneplod
emotions.py
2.9 KB
Привет всем 👋

Сделал новый скрипт, который определяет какую эмоцию показывает лицо на изображении с помощью библиотек RetinaFace, DeepFace и Pillow

Технологии:
- Python 3.8
- DeepFace
- RetinaFace
- Pillow

Также работа есть на 👉 GitHub 👈

#project #python #emotions_python_deepface
[*] pr0gramm1ng basics
emotions.py
Вот проводил тест для этой программы. Она обводит лицо человека на фото (если оно есть) и пишет эмоцию (например sad, happy)
Привет 👋

Я думаю многие из вас пытались сделать свой сайт. Но написание кода для этого сайта это только пол беды, ведь после написания сайта, его надо его выложить в интернет. Для этого надо сделать его хостинг и зарегистрировать доменное имя (и это всё не бесплатно). Но для этого есть решение 🧐

GitHub Pages 📃 - это бесплатный хостинг своего сайта при помощи аккаунта GitHub. Для этого надо создать репозиторий с названием: username.github.io, где username - это название вашего GitHub аккаунта (например если название аккаунта - Octocat, то репозиторий должен называться octocat.github.io)

Если у вас уже есть файлы сайта (.html, .css и .js), то их можно добавить и ваш сайта должен быть доступен в браузере. Если у вас нет файлов для сайта, то просто добавьте файл README.md (его GitHub Pages воспримет как файл .html и создаст вам сайт)

🔗 Как найти ссылку, которая будет вести к вашему сайту?

Для этого в вашем репозиторий перейдите в Настройки (Settings) -> Станицы (Pages). В этом разделе и должна быть ваша ссылка. А если не нашли её, то она должна выглядеть так: https://username.github.io (где username - это ваш ник в GitHub)

Вообщем если вы хотите бесплатно залить свой сайт в интернет, то используйте GitHub Pages 📃
👍1