From 14fb06a90331e8ad15217e893cbd37cdebd3c2bc Mon Sep 17 00:00:00 2001 From: moscovskayaliza Date: Fri, 20 Mar 2026 17:01:27 +0300 Subject: [PATCH] Initial commit --- .gitignore | 5 + README.md | 1 + config.py | 35 +++++++ gesture_control/arm_control.py | 98 +++++++++++++++++++ gesture_control/feature_extractor.py | 26 +++++ gesture_control/special_gestures.py | 102 ++++++++++++++++++++ gesture_control/state.py | 9 ++ main.py | 101 ++++++++++++++++++++ ml_gestures/evaluate.py | 47 +++++++++ ml_gestures/feature_extractor.py | 26 +++++ ml_gestures/predict.py | 18 ++++ ml_gestures/train.py | 135 ++++++++++++++++++++++++++ robot.png | Bin 0 -> 162061 bytes robot/annotate.py | 95 +++++++++++++++++++ robot/dummy.py | 9 ++ robot/map_simulator.py | 137 +++++++++++++++++++++++++++ skeleton/mediapipe_detector.py | 41 ++++++++ utils/annotate.py | 107 +++++++++++++++++++++ utils/capture_photo.py | 79 +++++++++++++++ 19 files changed, 1071 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 config.py create mode 100644 gesture_control/arm_control.py create mode 100644 gesture_control/feature_extractor.py create mode 100644 gesture_control/special_gestures.py create mode 100644 gesture_control/state.py create mode 100644 main.py create mode 100644 ml_gestures/evaluate.py create mode 100644 ml_gestures/feature_extractor.py create mode 100644 ml_gestures/predict.py create mode 100644 ml_gestures/train.py create mode 100644 robot.png create mode 100644 robot/annotate.py create mode 100644 robot/dummy.py create mode 100644 robot/map_simulator.py create mode 100644 skeleton/mediapipe_detector.py create mode 100644 utils/annotate.py create mode 100644 utils/capture_photo.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..53fe3f3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +__pycache__/ +*.pyc +*.pyo +*.pyd +.env diff --git a/README.md b/README.md new file mode 100644 index 0000000..ca8b5f4 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +Тут будут зависимости, инструкции и краткие описания diff --git a/config.py b/config.py new file mode 100644 index 0000000..5805fe3 --- /dev/null +++ b/config.py @@ -0,0 +1,35 @@ +class Config: + # ===== Камера ===== + CAMERA_ID = 0 + MIRROR_CAMERA = True + + # ===== Управление руками (скорости) ===== + ARM_CONTROL = { + 'linear_arm': 'right', + 'angular_arm': 'left', + 'max_speed_linear': 1.0, + 'max_speed_angular': 1.0, + 'dead_zone': 0.2, + 'debug': False + # минимальное относительное смещение для отклика + } + + # ===== Специальные жесты ===== + SPECIAL_GESTURE_MODE = 'ml' #ml #geometric + ML_GESTURE_MODEL = '/home/ubuntu/sirius/gesture_rec/special_model.pkl' + ML_GESTURE_CLASSES = ['dome', 'cross', 'none'] + + # ===== Робот ===== + ROBOT_MODE = 'simulator' + ROBOT_IMAGE_PATH = 'robot.png' # или None + + # ===== Симулятор карты ===== + MAP_WIDTH = 800 + MAP_HEIGHT = 600 + MAP_OBSTACLES = [ + (200, 150, 100, 200), + (500, 300, 150, 50), + ] + START_POS = (100, 100) + FINISH_POS = (700, 500) + ROBOT_RADIUS = 20 diff --git a/gesture_control/arm_control.py b/gesture_control/arm_control.py new file mode 100644 index 0000000..09c4725 --- /dev/null +++ b/gesture_control/arm_control.py @@ -0,0 +1,98 @@ +import numpy as np + +class ArmController: + def __init__(self, config, mirror=False): + self.config = config + self.mirror = mirror + self.shoulder_idx = {'left': 11, 'right': 12} + self.wrist_idx = {'left': 15, 'right': 16} + self.hip_idx = {'left': 23, 'right': 24} + self.dead_zone = config.get('dead_zone', 0.2) + self.debug = config.get('debug', False) + + def _get_shoulder_width(self, landmarks): + """Ширина плеч для нормировки горизонтальных смещений.""" + left = landmarks[11][:2] + right = landmarks[12][:2] + width = np.linalg.norm(right - left) + if width < 50 or width > 300: + return None + return width + + def _get_torso_height(self, landmarks): + """Высота торса для нормировки вертикальных смещений.""" + left_shoulder = landmarks[11][:2] + right_shoulder = landmarks[12][:2] + left_hip = landmarks[23][:2] + right_hip = landmarks[24][:2] + shoulder_center = (left_shoulder + right_shoulder) / 2 + hip_center = (left_hip + right_hip) / 2 + height = np.linalg.norm(shoulder_center - hip_center) + if height < 50: + return None + return height + + def _horizontal_displacement_rel(self, landmarks, side): + """ + Нормированное горизонтальное смещение запястья относительно плеча. + При mirror=True инвертируем знак, чтобы скомпенсировать отражение. + """ + if landmarks[self.shoulder_idx[side]][3] < 0.5 or landmarks[self.wrist_idx[side]][3] < 0.5: + return 0.0 + shoulder = landmarks[self.shoulder_idx[side]][:2] + wrist = landmarks[self.wrist_idx[side]][:2] + shoulder_width = self._get_shoulder_width(landmarks) + if shoulder_width is None: + return 0.0 + disp = wrist[0] - shoulder[0] + if self.mirror: + disp = -disp + return disp / shoulder_width + + def _vertical_displacement_rel(self, landmarks, side): + """ + Нормированное вертикальное смещение запястья относительно плеча. + Положительное – запястье выше плеча (рука вверх), отрицательное – ниже. + Зеркало не влияет. + """ + if landmarks[self.shoulder_idx[side]][3] < 0.5 or landmarks[self.wrist_idx[side]][3] < 0.5: + return 0.0 + shoulder = landmarks[self.shoulder_idx[side]][:2] + wrist = landmarks[self.wrist_idx[side]][:2] + torso_height = self._get_torso_height(landmarks) + if torso_height is None: + return 0.0 + # Так как y растёт вниз, то (shoulder[1] - wrist[1]) > 0, если запястье выше + disp = shoulder[1] - wrist[1] + return disp / torso_height + + def compute_speeds(self, landmarks): + # Проверка видимости ключевых точек + if (landmarks[11][3] < 0.5 or landmarks[12][3] < 0.5 or + landmarks[15][3] < 0.5 or landmarks[16][3] < 0.5): + #if self.debug: + #print("Руки не видны") + return 0.0, 0.0 + + # Правая рука (индекс 16) — линейная скорость + lin_rel = self._horizontal_displacement_rel(landmarks, 'right') + # Левая рука (индекс 15) — угловая скорость + ang_rel = self._vertical_displacement_rel(landmarks, 'left') + + if self.debug: + print(f"lin_rel={lin_rel:.3f}, ang_rel={ang_rel:.3f}") + + # Линейная скорость (только вперёд) + if lin_rel < self.dead_zone: + linear = 0.0 + else: + linear = min(lin_rel, 1.0) * self.config['max_speed_linear'] + + # Угловая скорость (положительная — вправо, отрицательная — влево) + if abs(ang_rel) < self.dead_zone: + angular = 0.0 + else: + ang_rel_clipped = np.clip(ang_rel, -1.0, 1.0) + angular = ang_rel_clipped * self.config['max_speed_angular'] + + return linear, angular diff --git a/gesture_control/feature_extractor.py b/gesture_control/feature_extractor.py new file mode 100644 index 0000000..06a18ab --- /dev/null +++ b/gesture_control/feature_extractor.py @@ -0,0 +1,26 @@ +import numpy as np + +def normalize_landmarks(landmarks): + """ + Нормализует полный скелет MediaPipe (33 точки) с использованием x,y,z. + Центрирует относительно центра бёдер и масштабирует по росту. + Возвращает плоский вектор (99,) из x,y,z всех точек. + """ + lm = landmarks[:, :3].copy() # (33,3) + + # Центр бёдер (индексы 23 и 24) + hip_center = (lm[23] + lm[24]) / 2 + + # Центр плеч (11 и 12) + shoulder_center = (lm[11] + lm[12]) / 2 + + # Рост – расстояние от бёдер до плеч + height = np.linalg.norm(shoulder_center - hip_center) + if height < 1e-6: + height = 1.0 + + # Центрируем и масштабируем + lm_centered = lm - hip_center + lm_normalized = lm_centered / height + + return lm_normalized.flatten() # (99,) diff --git a/gesture_control/special_gestures.py b/gesture_control/special_gestures.py new file mode 100644 index 0000000..03cf5c9 --- /dev/null +++ b/gesture_control/special_gestures.py @@ -0,0 +1,102 @@ +import numpy as np +from ml_gestures.predict import MLGesturePredictor + +class SpecialGestureDetector: + def __init__(self, mode='geometric', model_path=None, class_names=None): + self.mode = mode + if mode == 'ml': + if model_path is None or class_names is None: + raise ValueError("Для ML нужны model_path и class_names") + self.ml_predictor = MLGesturePredictor(model_path, class_names) + print("Использую статический ML классификатор") + else: + self.ml_predictor = None + print("Использую геометрические отношения для детекции специальных жестовq") + self.debug = True # Включите для отладки + + def predict(self, landmarks): + if self.mode == 'geometric': + return self._geometric_predict(landmarks) + else: + return self.ml_predictor.predict(landmarks) + + def _geometric_predict(self, landmarks): + # Индексы MediaPipe + idx = { + 'nose': 0, + 'left_shoulder': 11, + 'right_shoulder': 12, + 'left_elbow': 13, + 'right_elbow': 14, + 'left_wrist': 15, + 'right_wrist': 16, + 'left_hip': 23, + 'right_hip': 24, + } + + # Повышенный порог уверенности для специальных жестов + min_conf = 0.7 + required = ['left_shoulder', 'right_shoulder', 'left_elbow', 'right_elbow', + 'left_wrist', 'right_wrist', 'left_hip', 'right_hip'] + for p in required: + if landmarks[idx[p]][3] < min_conf: + if self.debug: + print(f"{p} low confidence") + return 'none' + + # Координаты (x, y) + l_sh = landmarks[idx['left_shoulder']][:2] + r_sh = landmarks[idx['right_shoulder']][:2] + l_el = landmarks[idx['left_elbow']][:2] + r_el = landmarks[idx['right_elbow']][:2] + l_wr = landmarks[idx['left_wrist']][:2] + r_wr = landmarks[idx['right_wrist']][:2] + l_hip = landmarks[idx['left_hip']][:2] + r_hip = landmarks[idx['right_hip']][:2] + + hip_center = (l_hip + r_hip) / 2 + shoulder_width = np.linalg.norm(r_sh - l_sh) + if shoulder_width < 50 or shoulder_width > 300: + if self.debug: + print("shoulder_width out of range") + return 'none' + + # ----- КРЕСТ (предплечья скрещены на груди) ----- + # 1. Запястья перекрещены (левое правее правого) И на уровне груди (ниже плеч, выше бедер) + wrists_crossed = l_wr[0] > r_wr[0] + wrists_chest_level = (max(l_wr[1], r_wr[1]) > max(l_sh[1], r_sh[1]) and + min(l_wr[1], r_wr[1]) < hip_center[1]) + + # 2. Локти тоже на уровне груди (примерно) + elbows_chest_level = (max(l_el[1], r_el[1]) > max(l_sh[1], r_sh[1]) * 0.9 and + min(l_el[1], r_el[1]) < hip_center[1] * 1.1) + + # 3. Руки согнуты (предплечья короче верхней части руки) + left_bent = np.linalg.norm(l_wr - l_el) < np.linalg.norm(l_el - l_sh) * 0.9 + right_bent = np.linalg.norm(r_wr - r_el) < np.linalg.norm(r_el - r_sh) * 0.9 + arms_bent = left_bent and right_bent + + # 4. Запястья близко к центру тела (не сильно отведены, типично для креста на груди) + body_center_x = (l_sh[0] + r_sh[0]) / 2 + wrists_near_center = (abs(l_wr[0] - body_center_x) < shoulder_width * 0.6 and + abs(r_wr[0] - body_center_x) < shoulder_width * 0.6) + + cross = (wrists_crossed and wrists_chest_level and elbows_chest_level and + arms_bent and wrists_near_center) + + if self.debug and cross: + print(f"CROSS: crossed={wrists_crossed}, chest_w={wrists_chest_level}, " + f"chest_e={elbows_chest_level}, bent={arms_bent}, near_center={wrists_near_center}") + if cross: + return 'cross' + + # ----- ДОМИК (руки над головой) ----- + head_y = landmarks[idx['nose']][1] - 50 + arms_up = (l_wr[1] < head_y and r_wr[1] < head_y) + if arms_up: + dist = np.linalg.norm(l_wr - r_wr) + rel_dist = dist / shoulder_width + if rel_dist < 1.5: + return 'dome' + + return 'none' diff --git a/gesture_control/state.py b/gesture_control/state.py new file mode 100644 index 0000000..a2041be --- /dev/null +++ b/gesture_control/state.py @@ -0,0 +1,9 @@ +class ControlState: + def __init__(self, initial_enabled=True): + self.enabled = initial_enabled + + def update(self, special_gesture): + if special_gesture == 'dome': + self.enabled = True + elif special_gesture == 'cross': + self.enabled = False diff --git a/main.py b/main.py new file mode 100644 index 0000000..b8bbab2 --- /dev/null +++ b/main.py @@ -0,0 +1,101 @@ +import cv2 +import sys +from config import Config +from skeleton.mediapipe_detector import MediaPipeDetector +from gesture_control.arm_control import ArmController +from gesture_control.special_gestures import SpecialGestureDetector +from gesture_control.state import ControlState +from robot.map_simulator import MapSimulator +from robot.dummy import DummyRobot + +def main(): + cfg = Config() + + # Детектор + detector = MediaPipeDetector() + + # Состояние управления + state = ControlState() + + # Специальные жесты + special_detector = SpecialGestureDetector( + mode=cfg.SPECIAL_GESTURE_MODE, + model_path=cfg.ML_GESTURE_MODEL, + class_names=cfg.ML_GESTURE_CLASSES + ) + + # Управление скоростями + arm_control = ArmController(cfg.ARM_CONTROL, mirror=cfg.MIRROR_CAMERA) + + # Робот + if cfg.ROBOT_MODE == 'simulator': + robot = MapSimulator(cfg) + else: + robot = DummyRobot() + + # Камера + cap = cv2.VideoCapture(cfg.CAMERA_ID) + if not cap.isOpened(): + print("Ошибка: не удалось открыть камеру") + sys.exit(1) + + print("Управление: крест руками = СТОП, домик = ПУСК") + print("Линейная скорость: правая рука в сторону, угловая: левая рука") + print("В симуляторе: R – перезапуск после Game Over/победы") + print("q – выход") + + while True: + ret, frame = cap.read() + if not ret: + break + + if cfg.MIRROR_CAMERA: + frame = cv2.flip(frame, 1) + + result = detector.detect(frame) + + if result['success']: + landmarks = result['landmarks'] + vis_frame = detector.draw_landmarks(frame, result['pose_landmarks']) + + special = special_detector.predict(landmarks) + state.update(special) + + if state.enabled: + linear, angular = arm_control.compute_speeds(landmarks) + else: + linear, angular = 0.0, 0.0 + + robot.set_speeds(linear, angular) + + # Отрисовка на видео + cv2.putText(vis_frame, f"State: {'ON' if state.enabled else 'OFF'}", + (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, + (0,255,0) if state.enabled else (0,0,255), 2) + cv2.putText(vis_frame, f"L:{linear:.2f} A:{angular:.2f}", + (10, 60), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255,255,0), 2) + if special != 'none': + cv2.putText(vis_frame, f"Special: {special}", (10, 90), + cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255,255,0), 2) + else: + vis_frame = frame + cv2.putText(vis_frame, "No pose detected", (10, 30), + cv2.FONT_HERSHEY_SIMPLEX, 1, (0,0,255), 2) + + cv2.imshow('Camera', vis_frame) + + if cfg.ROBOT_MODE == 'simulator': + if not robot.step(): + break + else: + robot.step() + + if cv2.waitKey(1) & 0xFF == ord('q'): + break + + cap.release() + cv2.destroyAllWindows() + robot.quit() + +if __name__ == '__main__': + main() diff --git a/ml_gestures/evaluate.py b/ml_gestures/evaluate.py new file mode 100644 index 0000000..312c1d4 --- /dev/null +++ b/ml_gestures/evaluate.py @@ -0,0 +1,47 @@ +import pandas as pd +import numpy as np +import joblib +import argparse +from sklearn.metrics import classification_report, confusion_matrix, accuracy_score + +def evaluate(csv_path, model_path, test_size=0.2, random_state=42): + # Загрузка модели + data = joblib.load(model_path) + model = data['model'] + class_names = data['class_names'] + print(f"Loaded model with classes: {class_names}") + + # Загрузка данных + df = pd.read_csv(csv_path) + X = df.iloc[:, 1:].values.astype(np.float32) + y_labels = df.iloc[:, 0].values + + label_to_id = {label: i for i, label in enumerate(class_names)} + y = np.array([label_to_id[label] for label in y_labels]) + + # Разделение (должно совпадать с параметрами обучения) + from sklearn.model_selection import train_test_split + _, X_test, _, y_test, _, y_labels_test = train_test_split( + X, y, y_labels, test_size=test_size, random_state=random_state, stratify=y + ) + print(f"Test size: {len(X_test)}") + + y_pred = model.predict(X_test) + acc = accuracy_score(y_test, y_pred) + report = classification_report(y_test, y_pred, target_names=class_names) + cm = confusion_matrix(y_test, y_pred) + + print(f"\nAccuracy: {acc:.4f}") + print("\nClassification Report:") + print(report) + print("Confusion Matrix:") + print(cm) + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--csv', required=True, help='CSV с данными') + parser.add_argument('--model', required=True, help='Путь к модели') + parser.add_argument('--test_size', type=float, default=0.2) + parser.add_argument('--random_state', type=int, default=42) + args = parser.parse_args() + evaluate(args.csv, args.model, args.test_size, args.random_state) diff --git a/ml_gestures/feature_extractor.py b/ml_gestures/feature_extractor.py new file mode 100644 index 0000000..06a18ab --- /dev/null +++ b/ml_gestures/feature_extractor.py @@ -0,0 +1,26 @@ +import numpy as np + +def normalize_landmarks(landmarks): + """ + Нормализует полный скелет MediaPipe (33 точки) с использованием x,y,z. + Центрирует относительно центра бёдер и масштабирует по росту. + Возвращает плоский вектор (99,) из x,y,z всех точек. + """ + lm = landmarks[:, :3].copy() # (33,3) + + # Центр бёдер (индексы 23 и 24) + hip_center = (lm[23] + lm[24]) / 2 + + # Центр плеч (11 и 12) + shoulder_center = (lm[11] + lm[12]) / 2 + + # Рост – расстояние от бёдер до плеч + height = np.linalg.norm(shoulder_center - hip_center) + if height < 1e-6: + height = 1.0 + + # Центрируем и масштабируем + lm_centered = lm - hip_center + lm_normalized = lm_centered / height + + return lm_normalized.flatten() # (99,) diff --git a/ml_gestures/predict.py b/ml_gestures/predict.py new file mode 100644 index 0000000..59b3277 --- /dev/null +++ b/ml_gestures/predict.py @@ -0,0 +1,18 @@ +import joblib +import numpy as np +from .feature_extractor import normalize_landmarks + +class MLGesturePredictor: + def __init__(self, model_path, class_names): + data = joblib.load(model_path) + self.model = data['model'] + self.class_names = data['class_names'] + if 'none' not in self.class_names: + self.class_names.append('none') # запасной вариант + + def predict(self, landmarks): + features = normalize_landmarks(landmarks).reshape(1, -1) + pred_id = self.model.predict(features)[0] + if pred_id < len(self.class_names): + return self.class_names[pred_id] + return 'none' diff --git a/ml_gestures/train.py b/ml_gestures/train.py new file mode 100644 index 0000000..fce4f87 --- /dev/null +++ b/ml_gestures/train.py @@ -0,0 +1,135 @@ +import pandas as pd +import numpy as np +import joblib +import json +import argparse +from sklearn.linear_model import LogisticRegression +from sklearn.neural_network import MLPClassifier +from sklearn.ensemble import RandomForestClassifier +from sklearn.model_selection import train_test_split +from sklearn.metrics import classification_report, confusion_matrix, accuracy_score + +def balance_data(df, target_classes, random_state=42): + """ + Балансирует только указанные классы до минимального размера среди них. + Класс 'none' (и любые другие) остаются без изменений. + """ + # Разделяем на целевые и остальные + target_df = df[df['class'].isin(target_classes)] + other_df = df[~df['class'].isin(target_classes)] + + # Определяем минимальный размер среди целевых классов + class_counts = target_df['class'].value_counts() + min_count = class_counts.min() + + # Балансируем каждый целевой класс + balanced_parts = [] + for cls in target_classes: + cls_df = target_df[target_df['class'] == cls] + if len(cls_df) > min_count: + cls_df = cls_df.sample(n=min_count, random_state=random_state) + balanced_parts.append(cls_df) + + balanced_target = pd.concat(balanced_parts, ignore_index=True) + + # Объединяем с остальными данными (none и др.) + balanced_df = pd.concat([balanced_target, other_df], ignore_index=True) + return balanced_df + +def train(csv_path, model_path, model_type='mlp', test_size=0.2, random_state=42, balance=False, target_classes=None): + # Загрузка данных + df = pd.read_csv(csv_path) + print(f"Total samples: {len(df)}") + + # Балансировка + if balance: + if target_classes is None: + # По умолчанию балансируем все классы кроме 'none' (если есть) + all_classes = df['class'].unique() + target_classes = [c for c in all_classes if c != 'none'] + if not target_classes: + raise ValueError("No target classes found (none is the only class).") + print(f"Balancing target classes: {target_classes}") + df = balance_data(df, target_classes, random_state) + print(f"After balancing: {len(df)} samples") + print(df['class'].value_counts()) + + # Разделение на признаки и метки + X = df.iloc[:, 1:].values.astype(np.float32) + y_labels = df.iloc[:, 0].values + class_names = sorted(df['class'].unique()) + label_to_id = {label: i for i, label in enumerate(class_names)} + y = np.array([label_to_id[label] for label in y_labels]) + + print(f"Classes: {class_names}") + print(f"Feature count: {X.shape[1]}") + + # Стратифицированное разбиение + X_train, X_test, y_train, y_test = train_test_split( + X, y, test_size=test_size, random_state=random_state, stratify=y + ) + print(f"Train size: {len(X_train)}, Test size: {len(X_test)}") + + # Выбор модели + if model_type == 'linear': #попробовать добавить логистическую регрессию с полиномиальными признаками, можно чисто для сравнения + model = LogisticRegression(max_iter=1000, random_state=random_state) + elif model_type == 'mlp': + model = MLPClassifier(hidden_layer_sizes=(64, 32), activation='relu', + solver='adam', max_iter=500, random_state=random_state, + early_stopping=True, validation_fraction=0.2) + elif model_type == 'rf': + model = RandomForestClassifier(n_estimators=50, max_depth=10, random_state=random_state) + else: + raise ValueError("model_type должен быть linear, mlp или rf") + + # Обучение + model.fit(X_train, y_train) + + # Предсказание на тесте + y_pred = model.predict(X_test) + + # Метрики + accuracy = accuracy_score(y_test, y_pred) + report = classification_report(y_test, y_pred, target_names=class_names, output_dict=True) + conf_matrix = confusion_matrix(y_test, y_pred).tolist() + + print(f"\nAccuracy: {accuracy:.4f}") + print("\nClassification Report:") + for cls in class_names: + print(f"{cls}: precision={report[cls]['precision']:.3f}, recall={report[cls]['recall']:.3f}, f1={report[cls]['f1-score']:.3f}") + print("\nConfusion Matrix:") + print(conf_matrix) + + # Сохранение модели и отчёта + joblib.dump({'model': model, 'class_names': class_names}, model_path) + report_data = { + 'model_type': model_type, + 'accuracy': accuracy, + 'classification_report': report, + 'confusion_matrix': conf_matrix, + 'train_samples': len(X_train), + 'test_samples': len(X_test), + 'classes': class_names, + 'balance': balance, + 'target_classes': target_classes if balance else None, + } + with open(model_path.replace('.pkl', '_report.json'), 'w') as f: + json.dump(report_data, f, indent=2) + + print(f"\nModel saved to {model_path}") + print(f"Report saved to {model_path.replace('.pkl', '_report.json')}") + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Обучение модели для распознавания жестов') + parser.add_argument('--csv', required=True, help='Путь к CSV-файлу с данными') + parser.add_argument('--model', required=True, help='Путь для сохранения модели (.pkl)') + parser.add_argument('--type', default='mlp', choices=['linear', 'mlp', 'rf'], help='Тип модели') + parser.add_argument('--test_size', type=float, default=0.2, help='Доля тестовой выборки') + parser.add_argument('--random_state', type=int, default=42, help='Seed для воспроизводимости') + parser.add_argument('--balance', action='store_true', help='Балансировать классы (кроме none)') + parser.add_argument('--target_classes', type=str, default=None, + help='Список целевых классов для балансировки через запятую (по умолчанию все, кроме none)') + args = parser.parse_args() + + target_classes = args.target_classes.split(',') if args.target_classes else None + train(args.csv, args.model, args.type, args.test_size, args.random_state, args.balance, target_classes) diff --git a/robot.png b/robot.png new file mode 100644 index 0000000000000000000000000000000000000000..2246f68fecc568536166bdacc1f595bbc7e23a84 GIT binary patch literal 162061 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 z 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 literal 0 HcmV?d00001 diff --git a/robot/annotate.py b/robot/annotate.py new file mode 100644 index 0000000..eb88308 --- /dev/null +++ b/robot/annotate.py @@ -0,0 +1,95 @@ +import cv2 +import os +import csv +import sys +from pathlib import Path +import argparse + +sys.path.append(str(Path(__file__).parent.parent)) +from skeleton.mediapipe_detector import MediaPipeDetector +from ml_gestures.feature_extractor import normalize_landmarks + +def main(): + parser = argparse.ArgumentParser(description='Разметка изображений для обучения') + parser.add_argument('--folder', required=True, help='Папка с изображениями') + parser.add_argument('--classes', default='dome,cross,none', + help='Список классов через запятую') + parser.add_argument('--output', default='gesture_data.csv', + help='Имя выходного CSV-файла') + args = parser.parse_args() + + classes = [c.strip() for c in args.classes.split(',')] + key_to_class = {str(i+1): cls for i, cls in enumerate(classes)} + print("Классы:", classes) + + detector = MediaPipeDetector() + + image_extensions = ('.jpg', '.jpeg', '.png', '.bmp') + image_files = [f for f in os.listdir(args.folder) if f.lower().endswith(image_extensions)] + image_files.sort() + print(f"Найдено {len(image_files)} изображений.") + + csv_file = args.output + file_exists = os.path.isfile(csv_file) + if not file_exists: + with open(csv_file, 'w', newline='', encoding='utf-8') as f: + writer = csv.writer(f) + # 99 признаков (33 точки * 3 координаты) + writer.writerow(['class'] + [f'f{i}' for i in range(99)]) + + for idx, filename in enumerate(image_files): + filepath = os.path.join(args.folder, filename) + print(f"\n[{idx+1}/{len(image_files)}] {filename}") + + image = cv2.imread(filepath) + if image is None: + continue + + result = detector.detect(image) + if not result['success']: + cv2.imshow('No skeleton', image) + cv2.waitKey(0) + cv2.destroyAllWindows() + continue + + landmarks = result['landmarks'] + features = normalize_landmarks(landmarks) # вектор из 99 чисел + + display = detector.draw_landmarks(image, result['pose_landmarks']) + h, w = display.shape[:2] + + # Панель с инструкцией + overlay = display.copy() + cv2.rectangle(overlay, (0, h-80), (w, h), (50,50,50), -1) + cv2.addWeighted(overlay, 0.6, display, 0.4, 0, display) + + y = h - 60 + for i, cls in enumerate(classes): + cv2.putText(display, f"{i+1}:{cls}", (10 + i*120, y), + cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255,255,255), 2) + cv2.putText(display, "n:skip q:quit", (10, y+30), + cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255,255,0), 2) + + cv2.imshow('Annotation', display) + key = cv2.waitKey(0) & 0xFF + cv2.destroyAllWindows() + + if key == ord('q'): + break + elif key == ord('n'): + continue + else: + key_char = chr(key) if key < 256 else None + if key_char in key_to_class: + selected = key_to_class[key_char] + with open(csv_file, 'a', newline='', encoding='utf-8') as f: + writer = csv.writer(f) + writer.writerow([selected] + features.tolist()) + print(f"Сохранено: {selected}") + else: + print("Неверная клавиша") + + print("Готово.") + +if __name__ == '__main__': + main() diff --git a/robot/dummy.py b/robot/dummy.py new file mode 100644 index 0000000..3c12ea9 --- /dev/null +++ b/robot/dummy.py @@ -0,0 +1,9 @@ +class DummyRobot: + def set_speeds(self, linear, angular): + print(f"Robot: linear={linear:.2f}, angular={angular:.2f}") + + def step(self): + pass + + def quit(self): + pass diff --git a/robot/map_simulator.py b/robot/map_simulator.py new file mode 100644 index 0000000..695df79 --- /dev/null +++ b/robot/map_simulator.py @@ -0,0 +1,137 @@ +import pygame +import sys +import math + +class MapSimulator: + def __init__(self, config): + pygame.init() + self.width = config.MAP_WIDTH + self.height = config.MAP_HEIGHT + self.screen = pygame.display.set_mode((self.width, self.height)) + pygame.display.set_caption("Robot Map Simulator") + self.clock = pygame.time.Clock() + self.font = pygame.font.SysFont(None, 24) + + self.obstacles = config.MAP_OBSTACLES + self.start = config.START_POS + self.finish = config.FINISH_POS + self.robot_radius = config.ROBOT_RADIUS + + if config.ROBOT_IMAGE_PATH: + try: + self.robot_image = pygame.image.load(config.ROBOT_IMAGE_PATH) + self.robot_image = pygame.transform.scale(self.robot_image, + (self.robot_radius*2, self.robot_radius*2)) + except: + self.robot_image = None + else: + self.robot_image = None + + self.reset() + + def reset(self): + self.x, self.y = self.start + self.angle = 0.0 + self.linear_speed = 0.0 + self.angular_speed = 0.0 + self.game_over = False + self.won = False + + def set_speeds(self, linear, angular): + self.linear_speed = linear + self.angular_speed = angular + + def update(self): + if self.game_over or self.won: + return + + dt = 1/30.0 + self.angle += self.angular_speed * dt * 2 + dx = self.linear_speed * math.cos(self.angle) * dt * 100 + dy = self.linear_speed * math.sin(self.angle) * dt * 100 + new_x = self.x + dx + new_y = self.y + dy + + # Ограничение границами карты + new_x = max(self.robot_radius, min(self.width - self.robot_radius, new_x)) + new_y = max(self.robot_radius, min(self.height - self.robot_radius, new_y)) + + # Проверка столкновений с препятствиями + if not self.check_collision(new_x, new_y): + self.x, self.y = new_x, new_y + else: + self.game_over = True + + # Проверка финиша + dist = math.hypot(self.x - self.finish[0], self.y - self.finish[1]) + if dist < self.robot_radius: + self.won = True + + def check_collision(self, x, y): + for ox, oy, ow, oh in self.obstacles: + closest_x = max(ox, min(x, ox + ow)) + closest_y = max(oy, min(y, oy + oh)) + dist = math.hypot(x - closest_x, y - closest_y) + if dist < self.robot_radius: + return True + return False + + def draw(self): + self.screen.fill((255,255,255)) + + for obs in self.obstacles: + pygame.draw.rect(self.screen, (100,100,100), obs) + + pygame.draw.circle(self.screen, (0,255,0), + (int(self.finish[0]), int(self.finish[1])), self.robot_radius, 2) + + if self.robot_image: + rotated = pygame.transform.rotate(self.robot_image, -math.degrees(self.angle)) + rect = rotated.get_rect(center=(int(self.x), int(self.y))) + self.screen.blit(rotated, rect) + else: + nose = (self.x + self.robot_radius * math.cos(self.angle), + self.y + self.robot_radius * math.sin(self.angle)) + left = (self.x + self.robot_radius * math.cos(self.angle + 2.5), + self.y + self.robot_radius * math.sin(self.angle + 2.5)) + right = (self.x + self.robot_radius * math.cos(self.angle - 2.5), + self.y + self.robot_radius * math.sin(self.angle - 2.5)) + pygame.draw.polygon(self.screen, (0,0,255), [nose, left, right]) + + texts = [ + f"Linear: {self.linear_speed:.2f}", + f"Angular: {self.angular_speed:.2f}", + ] + y = 10 + for t in texts: + surf = self.font.render(t, True, (0,0,0)) + self.screen.blit(surf, (10, y)) + y += 25 + + if self.game_over: + msg = self.font.render("GAME OVER – Press R to restart", True, (255,0,0)) + self.screen.blit(msg, (self.width//2 - 150, self.height//2)) + elif self.won: + msg = self.font.render("YOU WIN! – Press R to restart", True, (0,100,0)) + self.screen.blit(msg, (self.width//2 - 120, self.height//2)) + + pygame.display.flip() + + def handle_events(self): + for event in pygame.event.get(): + if event.type == pygame.QUIT: + return False + if event.type == pygame.KEYDOWN and event.key == pygame.K_r: + self.reset() + return True + + def step(self): + if not self.handle_events(): + return False + self.update() + self.draw() + self.clock.tick(30) + return True + + def quit(self): + pygame.quit() diff --git a/skeleton/mediapipe_detector.py b/skeleton/mediapipe_detector.py new file mode 100644 index 0000000..214782f --- /dev/null +++ b/skeleton/mediapipe_detector.py @@ -0,0 +1,41 @@ +import cv2 +import mediapipe as mp +import numpy as np + +class MediaPipeDetector: + def __init__(self, model_complexity=1, min_detection_confidence=0.5): + self.mp_pose = mp.solutions.pose + self.pose = self.mp_pose.Pose( + static_image_mode=False, + model_complexity=model_complexity, + enable_segmentation=False, + min_detection_confidence=min_detection_confidence + ) + self.mp_drawing = mp.solutions.drawing_utils + + def detect(self, image): + """Возвращает словарь с ключами: success, landmarks (33,4), pose_landmarks (для отрисовки)""" + rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) + results = self.pose.process(rgb) + + if results.pose_landmarks: + h, w, _ = image.shape + landmarks = [] + for lm in results.pose_landmarks.landmark: + x = lm.x * w + y = lm.y * h + z = lm.z + v = lm.visibility + landmarks.append([x, y, z, v]) + landmarks = np.array(landmarks, dtype=np.float32) + return {'success': True, 'landmarks': landmarks, 'pose_landmarks': results.pose_landmarks} + else: + return {'success': False, 'landmarks': None, 'pose_landmarks': None} + + def draw_landmarks(self, image, pose_landmarks): + """Рисует скелет на копии изображения и возвращает её""" + if pose_landmarks is None: + return image.copy() + vis = image.copy() + self.mp_drawing.draw_landmarks(vis, pose_landmarks, self.mp_pose.POSE_CONNECTIONS) + return vis diff --git a/utils/annotate.py b/utils/annotate.py new file mode 100644 index 0000000..cda39f4 --- /dev/null +++ b/utils/annotate.py @@ -0,0 +1,107 @@ +import cv2 +import os +import csv +import sys +from pathlib import Path +import argparse + +sys.path.append(str(Path(__file__).parent.parent)) +from skeleton.mediapipe_detector import MediaPipeDetector +from ml_gestures.feature_extractor import normalize_landmarks + +def main(): + parser = argparse.ArgumentParser(description='Разметка изображений для обучения') + parser.add_argument('--folder', required=True, help='Папка с изображениями') + parser.add_argument('--classes', default='dome,cross,none', + help='Список классов через запятую') + parser.add_argument('--output', default='gesture_data.csv', + help='Имя выходного CSV-файла') + parser.add_argument('--max_display_size', default='800,600', + help='Максимальный размер для отображения (ширина,высота)') + args = parser.parse_args() + + classes = [c.strip() for c in args.classes.split(',')] + key_to_class = {str(i+1): cls for i, cls in enumerate(classes)} + print("Классы:", classes) + + detector = MediaPipeDetector() + + max_width, max_height = map(int, args.max_display_size.split(',')) + + image_extensions = ('.jpg', '.jpeg', '.png', '.bmp') + image_files = [f for f in os.listdir(args.folder) if f.lower().endswith(image_extensions)] + image_files.sort() + print(f"Найдено {len(image_files)} изображений.") + + csv_file = args.output + file_exists = os.path.isfile(csv_file) + if not file_exists: + with open(csv_file, 'w', newline='', encoding='utf-8') as f: + writer = csv.writer(f) + writer.writerow(['class'] + [f'f{i}' for i in range(99)]) + + for idx, filename in enumerate(image_files): + filepath = os.path.join(args.folder, filename) + print(f"\n[{idx+1}/{len(image_files)}] {filename}") + + image = cv2.imread(filepath) + if image is None: + print("Не удалось загрузить") + continue + + result = detector.detect(image) + + if result['success']: + landmarks = result['landmarks'] + features = normalize_landmarks(landmarks) + vis_image = detector.draw_landmarks(image.copy(), result['pose_landmarks']) + else: + vis_image = image.copy() + landmarks = None + + # Масштабирование для отображения + h, w = vis_image.shape[:2] + scale = min(max_width / w, max_height / h, 1.0) + if scale < 1.0: + new_w = int(w * scale) + new_h = int(h * scale) + display = cv2.resize(vis_image, (new_w, new_h)) + else: + display = vis_image.copy() + + # Панель с инструкцией + dh, dw = display.shape[:2] + overlay = display.copy() + cv2.rectangle(overlay, (0, dh-80), (dw, dh), (50,50,50), -1) + cv2.addWeighted(overlay, 0.6, display, 0.4, 0, display) + + y = dh - 60 + for i, cls in enumerate(classes): + cv2.putText(display, f"{i+1}:{cls}", (10 + i*120, y), + cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255,255,255), 2) + cv2.putText(display, "n:skip q:quit", (10, y+30), + cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255,255,0), 2) + + cv2.imshow('Annotation', display) + key = cv2.waitKey(0) & 0xFF + cv2.destroyAllWindows() + + if key == ord('q'): + break + elif key == ord('n'): + continue + else: + key_char = chr(key) if key < 256 else None + if key_char in key_to_class: + selected = key_to_class[key_char] + with open(csv_file, 'a', newline='', encoding='utf-8') as f: + writer = csv.writer(f) + writer.writerow([selected] + features.tolist()) + print(f"Сохранено: {selected}") + else: + print("Неверная клавиша") + + print("Готово.") + +if __name__ == '__main__': + main() diff --git a/utils/capture_photo.py b/utils/capture_photo.py new file mode 100644 index 0000000..640656e --- /dev/null +++ b/utils/capture_photo.py @@ -0,0 +1,79 @@ +import cv2 +import os +import sys +import time +from pathlib import Path + +def capture_photo(output_dir='captured', camera_id=0, mirror=True): + """ + Простой инструмент для захвата фото с камеры. + При нажатии 's' запускается отсчёт 3 секунды, затем делается снимок. + При нажатии 'q' выход. + """ + # Создаём папку, если её нет + Path(output_dir).mkdir(parents=True, exist_ok=True) + + cap = cv2.VideoCapture(camera_id) + if not cap.isOpened(): + print("Не удалось открыть камеру") + sys.exit(1) + + print("Нажмите 's' для захвата фото (отсчёт 3 секунды)") + print("Нажмите 'q' для выхода") + + capture_count = 0 + countdown = 0 + countdown_start = 0 + + while True: + ret, frame = cap.read() + if not ret: + break + + if mirror: + frame = cv2.flip(frame, 1) + + display = frame.copy() + + # Отображение отсчёта, если активен + if countdown > 0: + elapsed = time.time() - countdown_start + remaining = max(0, 3 - elapsed) + if remaining > 0: + cv2.putText(display, f"Capturing in {int(remaining)}", (display.shape[1]//2-100, display.shape[0]//2), + cv2.FONT_HERSHEY_SIMPLEX, 1, (0,0,255), 2) + else: + # Сохраняем фото + timestamp = time.strftime("%Y%m%d_%H%M%S") + filename = f"photo_{timestamp}.jpg" + filepath = os.path.join(output_dir, filename) + cv2.imwrite(filepath, frame) + print(f"Сохранено: {filepath}") + capture_count += 1 + countdown = 0 + else: + # Подсказка + cv2.putText(display, "Press 's' to capture, 'q' to quit", (10, 30), + cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255,255,0), 2) + + cv2.imshow('Capture', display) + + key = cv2.waitKey(1) & 0xFF + if key == ord('q'): + break + elif key == ord('s') and countdown == 0: + countdown = 1 + countdown_start = time.time() + + cap.release() + cv2.destroyAllWindows() + print(f"Завершено. Сохранено {capture_count} фото.") + +if __name__ == '__main__': + import argparse + parser = argparse.ArgumentParser() + parser.add_argument('--dir', default='captured', help='Папка для сохранения') + parser.add_argument('--camera', type=int, default=0, help='ID камеры') + parser.add_argument('--no-mirror', action='store_true', help='Отключить зеркалирование') + args = parser.parse_args() + capture_photo(output_dir=args.dir, camera_id=args.camera, mirror=not args.no_mirror)