/
EmbodiedAI3

EmbodiedAI3

Публичный
Форк из kantasage/EmbodiedAI
0

Описание

Репозиторий представляет собой решение задание для дисциплины Системы искусственного интеллекта. Задание № 3 Embodied AI

Языки

  • Python100%
Эта ветка отличается от базовой kantasage/EmbodiedAI/master

KhursandbekPalvanov

21 янв 2025, 21:33
README
## **1. Подзадача «Планирование»**
 
### **Цель**:
Разработать систему, которая на основе языковой инструкции и вида сцены сверху генерирует план поведения для робота.
 
### **Шаги решения**:
1. **Предобработка данных**:
- Загрузите данные из `test.json`, включая инструкцию на естественном языке и вид сцены сверху.
- Обработайте текст инструкции: токенизация, очистка, приведение к нижнему регистру.
- Обработайте изображение сцены: нормализация, преобразование в тензор.
 
2. **Выбор языковой модели**:
- Используйте предобученную языковую модель (например, **GPT-3**, **LLaMA**, **BLOOM** или **T5**).
- Модель должна быть локальной (не через API), чтобы соответствовать требованиям задачи.
 
3. **Генерация плана**:
- Настройте языковую модель для генерации текстового плана на основе инструкции.
- Пример входных данных для модели:
```
Инструкция: "Возьми чашку со стола и поставь её на полку."
Вид сцены: [изображение сцены сверху]
```
- Пример выходных данных:
```
1. Подойти к столу.
2. Взять чашку.
3. Подойти к полке.
4. Поставить чашку на полку.
```
 
4. **Формирование JSON-ответа**:
- Сохраните сгенерированный план в формате JSON, как требуется в задаче:
```json
{
"1": {"plan": "Подойти к столу."},
"2": {"plan": "Взять чашку."},
"3": {"plan": "Подойти к полке."},
"4": {"plan": "Поставить чашку на полку."}
}
```
 
5. **Метрика Accuracy**:
- Для оценки используйте метрику **Accuracy**, которая сравнивает предсказанный план с эталонным.
 
---
 
## **2. Подзадача «Мобильная манипуляция»**
 
### **Цель**:
Разработать систему, которая генерирует траекторию для мобильного манипулятора на основе декомпозированной задачи, визуальной информации и состояния робота.
 
### **Шаги решения**:
1. **Предобработка данных**:
- Загрузите данные из файлов формата **ZARR**.
- Извлеките визуальную информацию с двух камер, состояние робота и экспертную траекторию.
- Обработайте изображения: нормализация, преобразование в тензоры.
- Обработайте состояние робота: нормализация числовых данных.
 
2. **Выбор модели**:
- Используйте модель, которая может обрабатывать мультимодальные данные (текст, изображения, числовые данные).
- Пример архитектуры:
- **Текстовая часть**: Используйте языковую модель (например, **BERT** или **GPT**) для обработки декомпозированной задачи.
- **Визуальная часть**: Используйте сверточную нейронную сеть (CNN) для обработки изображений с камер.
- **Числовая часть**: Используйте полносвязные слои для обработки состояния робота.
 
3. **Генерация траектории**:
- Обучите модель предсказывать траекторию на 16 шагов вперед.
- Входные данные:
- Текстовая задача (например, "Подойти к столу").
- Изображения с камер.
- Состояние робота.
- Выходные данные:
- Траектория из 16 точек, каждая из которых содержит 10 чисел (скорости, координаты, кватернион, раскрытие гриппера).
 
4. **Метрика MSE**:
- Для оценки используйте метрику **MSE** (среднеквадратичная ошибка) между предсказанной и экспертной траекторией.
 
---
 
## **3. Интеграция и тестирование**
 
### **Шаги**:
1. **Интеграция подзадач**:
- Объедините решение для «Планирования» и «Мобильной манипуляции» в единую систему.
- Убедитесь, что выходные данные первой подзадачи (план) корректно передаются на вход второй подзадачи.
 
2. **Тестирование**:
- Протестируйте систему на публичной части тестового датасета.
- Оцените метрики **Accuracy** и **MSE**.
 
3. **Оптимизация**:
- Улучшите производительность модели, используя техники оптимизации (например, уменьшение размера модели, квантование).
- Убедитесь, что решение работает в условиях ограничений (одна видеокарта A100, 10 ГБ дискового пространства, без доступа к интернету).
 
---
 
## **4. Формат решения**
 
### **Файлы для загрузки**:
1. **plan.json**:
- Предсказанные планы для тестового датасета.
2. **plan.zip**:
- Код для подзадачи «Планирование» и инструкция по запуску.
3. **predicted_action.zip**:
- Код для подзадачи «Мобильная манипуляция» и инструкция по запуску.
 
---
 
## **5. Пример кода**
 
### Для подзадачи «Планирование»:
```python
import json
from transformers import pipeline
 
# Загрузка языковой модели
planner = pipeline("text-generation", model="gpt-3")
 
# Генерация плана
def generate_plan(instruction):
plan = planner(instruction, max_length=100)
return plan
 
# Пример использования
instruction = "Возьми чашку со стола и поставь её на полку."
plan = generate_plan(instruction)
 
# Сохранение в JSON
with open("plan.json", "w") as f:
json.dump(plan, f)
```
 
### Для подзадачи «Мобильная манипуляция»:
```python
import torch
import torch.nn as nn
 
class TrajectoryModel(nn.Module):
def __init__(self):
super().__init__()
self.cnn = nn.Sequential(...) # CNN для обработки изображений
self.fc = nn.Sequential(...) # Полносвязные слои для состояния робота
 
def forward(self, text, image, state):
# Обработка входных данных
image_features = self.cnn(image)
state_features = self.fc(state)
# Объединение и предсказание траектории
trajectory = ... # Ваша логика
return trajectory
 
# Пример использования
model = TrajectoryModel()
trajectory = model(text_task, image_data, robot_state)
```
 
---
 
## **6. Рекомендации**
- Используйте **PyTorch** или **TensorFlow** для реализации моделей.
- Для обработки изображений используйте **OpenCV** или **PIL**.
- Для работы с ZARR-файлами используйте библиотеку **zarr**.