commit 1a083e043e851344391a8f9f1faf632a1640edc1 Author: Vyacheslav K Date: Fri Apr 3 07:30:54 2026 +0300 first commit diff --git a/04-Конкурсное-задание (17) (1).pdf b/04-Конкурсное-задание (17) (1).pdf new file mode 100644 index 0000000..46c04af Binary files /dev/null and b/04-Конкурсное-задание (17) (1).pdf differ diff --git a/README.md b/README.md new file mode 100644 index 0000000..4a567ac --- /dev/null +++ b/README.md @@ -0,0 +1,230 @@ +# Модуль В. Система технического зрения с использованием инструментов ИИ + +## Описание задачи + +На специальной полке на соревновательном поле расположены N > 3 коробок с рисунками инструментов. РМК-1 с манипулятором смотрит на полку сверху (камера на манипуляторе направлена вертикально вниз). Эксперт с помощью генератора случайных чисел выбирает целевую деталь. Алгоритм должен: + +1. Распознать все коробки в кадре камеры +2. Определить координаты целевой коробки относительно базы манипулятора (Base_link) +3. Направить манипулятор к коробке, схватить её и поднять в стартовое положение +4. Опустить коробку на свободное место на полке + +## Классы объектов + +| ID | Название | Описание | +|----|----------|----------| +| 1 | Молоток (hammer) | Коробка с изображением молотка | +| 2 | Гаечный ключ (wrench) | Коробка с изображением гаечного ключа | +| 3 | Пассатижи (pliers) | Коробка с изображением пассатижей | + +## Архитектура решения + +- **Модель**: YOLOv8n-cls (nano classification) — легковесная модель для классификации изображений +- **Фреймворк**: Ultralytics / PyTorch +- **Размер входа**: 224x224 px +- **Размер модели**: ~5.3 MB (PyTorch), ~5.5 MB (ONNX) +- **Скорость инференса**: ~1.6 мс на CPU + +### Пайплайн обработки кадра + +``` +Кадр с камеры манипулятора + | + v +Сегментация коробок (OpenCV: пороговая фильтрация + контурный анализ) + | + v +Классификация каждой коробки (YOLOv8n-cls) + | + v +Поиск целевой коробки (по ID класса + порог уверенности > 0.7) + | + v +Пересчёт пиксельных координат в координаты Base_link + | + v +Отправка координат манипулятору (MoveIt2 API) +``` + +## Структура файлов + +``` +module_v/ +├── images/ # Исходные изображения инструментов +│ ├── Hammer.jpg +│ ├── Wrench.jpg +│ └── Pliers.jpg +├── dataset/ # Сгенерированный датасет +│ ├── train/ # 900 изображений (300 на класс) +│ │ ├── hammer/ +│ │ ├── wrench/ +│ │ └── pliers/ +│ └── val/ # 180 изображений (60 на класс) +│ ├── hammer/ +│ ├── wrench/ +│ └── pliers/ +├── runs/module_v_cls/weights/ # Результаты обучения +│ ├── best.pt +│ └── best.onnx +├── best.pt # Обученная модель (копия) +├── generate_dataset.py # Скрипт генерации датасета +├── train_model.py # Скрипт обучения модели +├── detect_box.py # Основной скрипт инференса + ROS2 +├── test_detect.py # Тестовый скрипт с визуализацией +├── README.md # Общая инструкция по симулятору +└── README_MODULE_V.md # Данный файл +``` + +## Установка зависимостей + +```bash +pip install ultralytics opencv-python-headless Pillow albumentations +``` + +## Генерация датасета + +Датасет генерируется из 3 исходных изображений с помощью аугментаций: +- Композитинг инструментов на различные фоны (имитация полки) +- Повороты, отражения, перспективные искажения +- Изменение яркости, контраста, насыщенности +- Размытие, шум, JPEG-компрессия + +```bash +python3 generate_dataset.py +``` + +Результат: 900 train + 180 val изображений (по 300/60 на класс). + +## Обучение модели + +```bash +python3 train_model.py +``` + +Параметры обучения: +- Базовая модель: `yolov8n-cls.pt` (предобученная на ImageNet) +- Эпохи: до 80 (с early stopping, patience=15) +- Размер изображения: 224x224 +- Batch size: 32 + +Результат: **100% top-1 accuracy** на валидации. + +Модель автоматически экспортируется в ONNX формат. + +## Запуск + +### Тест на отдельном изображении + +```bash +python3 detect_box.py --target 1 --image path/to/image.jpg +``` + +Где `--target` — ID целевой детали (1=молоток, 2=ключ, 3=пассатижи). + +### Тест на всех исходных изображениях + +```bash +python3 detect_box.py --target 2 +``` + +### Тест с визуализацией на кадре с камеры + +```bash +python3 test_detect.py +``` + +Результат сохраняется в `test_result.png` с аннотированными рамками и подписями классов. + +### Запуск в режиме ROS2 + +Предварительно запустите симуляцию модуля В: + +```bash +# Терминал 1: запуск симулятора +ros2 launch ar_webots_fms_ros2 module3.launch.py + +# Терминал 2: запуск детектора (указать целевую деталь) +python3 detect_box.py --target 1 --ros +``` + +Скрипт подписывается на топик `/RMC1/arm95/camera_gripper/image_color`, распознаёт коробки и выводит координаты целевой коробки относительно Base_link. + +## Результаты тестирования + +### На исходных изображениях + +| Изображение | Предсказание | Уверенность | +|-------------|-------------|-------------| +| Hammer.jpg | hammer (молоток) | 99.98% | +| Wrench.jpg | wrench (гаечный ключ) | 99.99% | +| Pliers.jpg | pliers (пассатижи) | 100.00% | + +### На тестовом кадре с камеры (test.png) + +5 коробок на полке (молоток, ключ, 2 пассатижей + объект на краю): + +| Коробка | Класс | Уверенность | +|---------|-------|-------------| +| Box 1 | wrench | 99.51% | +| Box 2 | pliers | 100.00% | +| Box 3 | wrench | 65.81% (край кадра, фильтруется порогом) | +| Box 4 | hammer | 79.42% | +| Box 5 | pliers | 99.93% | + +Рекомендуемый порог уверенности для фильтрации: **> 0.7** + +## Интеграция с манипулятором + +Пример полного цикла (распознавание + захват): + +```python +import rclpy +from detect_box import load_model, find_target_box, pixel_to_base_link +from geometry_msgs.msg import PoseStamped +from tf_transformations import quaternion_from_euler +from moveit.planning import MoveItPy + +# Инициализация +rclpy.init() +model = load_model("best.pt") +arm95 = MoveItPy(node_name="moveit_py", name_space="/RMC1/arm95") +arm95_arm = arm95.get_planning_component("arm95_group") +gripper = arm95.get_planning_component("gripper") + +# 1. Получить кадр с камеры (через ROS2 subscriber) +# frame = ... (cv2 image from /RMC1/arm95/camera_gripper/image_color) + +# 2. Найти целевую коробку +target_id = 1 # молоток +result = find_target_box(model, frame, target_id) +if result: + cx, cy, conf, bbox = result + h, w = frame.shape[:2] + wx, wy, wz = pixel_to_base_link(cx, cy, w, h) + + # 3. Переместить манипулятор к коробке + q = quaternion_from_euler(3.14, 0.0, 1.57) + pose_goal = PoseStamped() + pose_goal.header.frame_id = "Base_link" + pose_goal.pose.orientation.x = q[0] + pose_goal.pose.orientation.y = q[1] + pose_goal.pose.orientation.z = q[2] + pose_goal.pose.orientation.w = q[3] + pose_goal.pose.position.x = wx + pose_goal.pose.position.y = wy + pose_goal.pose.position.z = 0.3 # высота над коробкой + + arm95_arm.set_start_state_to_current_state() + arm95_arm.set_goal_state(pose_stamped_msg=pose_goal, pose_link="gripper_base") + plan_result = arm95_arm.plan() + if plan_result: + arm95.execute(plan_result.trajectory, controllers=[]) + + # 4. Захватить коробку + gripper.set_goal_state(configuration_name="closed") + plan_result = gripper.plan() + if plan_result: + arm95.execute(plan_result.trajectory, controllers=[]) +``` + +**Важно**: координаты `pixel_to_base_link()` требуют калибровки параметров камеры (FOV, высота) под конкретную установку. diff --git a/README_bots.md b/README_bots.md new file mode 100644 index 0000000..2784e58 --- /dev/null +++ b/README_bots.md @@ -0,0 +1,540 @@ +# Требования +## Требования к устройству +* Процессор - 4 и более ядер +* Оперативная память - 8 ГБ и более +* Графика - Минимально: любая интегрированная графика (Intel HD * Graphics, AMD Radeon Vega), поддерживающая OpenGL 3.3. Чем мощнее, тем лучше +* Место на диске - 50 ГБ или более +## Требования к системе +* Операционная система - Ubuntu 24.04 LTS Desktop (64 bit) + +Рекомендуется установить на устройство отдельной системой в режиме dualboot или использовать виртуальную машину для установки. В случае виртуальной машины, важно выделить ей минимальные требуемые ресурсы на вашем устройстве из списка выше. Производительность в виртуальной машине может быть ниже, чем при нативной установке. + +# Установка +### 1. Установка ROS2 Jazzy: +Данная инструкция дублирует команды из [официальной документации ROS2](https://docs.ros.org/en/jazzy/Installation/Ubuntu-Install-Debs.html) по установке. + +Подготавливаем систему к установке +``` bash +sudo apt update && sudo apt install locales +sudo locale-gen en_US en_US.UTF-8 +sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 +export LANG=en_US.UTF-8 +``` + +Устанавливаем зависимости +``` bash +sudo apt install software-properties-common +sudo add-apt-repository universe +``` +``` bash +sudo apt update && sudo apt install curl -y +export ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F\" '{print $4}') +curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb" +sudo dpkg -i /tmp/ros2-apt-source.deb +``` + +Устанавливаем полную версию ROS2 Jazzy +``` bash +sudo apt install ros-jazzy-desctop-full +``` + +(Опционально) Можно добавить сурс (source) команду для ROS2 в ```~/.bashrc```, чтобы не нужно каждый раз в новом терминале вводить ```source /opt/ros/jazzy/setup.bash``` +``` bash +echo 'source /opt/ros/jazzy/setup.bash' >> ~/.bashrc +``` + +Устанавливаем инструмент сборки colcon +``` bash +sudo apt install python3-colcon-common-extensions +``` + +### 2. Установка симулятора Webots: + +Данная инструкция дублирует команды из [официальной документации Webots](https://cyberbotics.com/doc/guide/installation-procedure#installing-the-debian-package-with-the-advanced-packaging-tool-apt) по установке. + +Устанавливаем файл подписи Cyberbotics +```bash +sudo mkdir -p /etc/apt/keyrings + +cd /etc/apt/keyrings + +sudo wget -q https://cyberbotics.com/Cyberbotics.asc +``` + +Конфигурируем менеджер пакетов +```bash +echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/Cyberbotics.asc] https://cyberbotics.com/debian binary-amd64/" | sudo tee /etc/apt/sources.list.d/Cyberbotics.list + +sudo apt update +``` + +Устанаваливаем Webots +```bash +sudo apt install webots +``` + +Настраиваем переменную окружения +```bash +echo "export WEBOTS_HOME=/snap/webots/current/usr/share/webots" >> ~/.bashrc +``` + +### 3. Установка ROS2 пакетов симулятора + +Создаем папку рабочего пространства с любым именем в домашней директории, в данном примере используем папку `ros2_ws` +```bash +mkdir ~/ros2_ws/src -p +``` + +Скачиваем требуемые пакеты +```bash +cd ~/ros2_ws/src + +git clone https://gitlab.mobird.dev/fms_group/ar_webots_fms_ros2.git + +git clone https://gitlab.mobird.dev/fms_group/ar_arm95_moveit_config.git + +git clone https://gitlab.mobird.dev/fms_group/ar_aruco_detect_ros2.git + +git clone https://gitlab.mobird.dev/fms_group/ar_dual_lidar_merge_ros2.git + +git clone https://gitlab.mobird.dev/fms_group/ar_nav_ros2.git +``` + +Устанавливаем зависимости через инструмент rosdep +```bash +cd ~/ros2_ws + +sudo rosdep init +rosdep update +rosdep install --from-paths src -y --ignore-src +``` + +Собираем пакеты + +```bash +cd ~/ros2_ws +colcon build --symlink-install +``` +Перед запуском симулятора необходимо выполнить сурс (source) собранных файлов из папки `ros2_ws`, **это необходимо делать в каждом новом открытом терминале** +```bash +source /ros2_ws/install/setup.bash +``` + +(Опционально) данный сурс можно также добавить в ```~/.bashrc``` + +### 4. Установка пакетов навигации и slam для RMC1 +Создайте отдельное рабочее пространство для пакетов навигации, в данном примере это будет `nav2_ws`. Клонируем в него файлы Nav2. +```bash +mkdir ~/nav2_ws/src -p +git clone https://github.com/ros-planning/navigation2.git -b 1.3.10 +``` +Устанавливаем зависимости через инструмент rosdep +```bash +cd ~/nav2_ws + +sudo rosdep init +rosdep update +rosdep install -y -r -q --from-paths src --ignore-src --rosdistro jazzy +``` +После этого собираем пакеты. Сборка может занять некоторое время, ~30 минут в зависимости от мощности ПК +```bash +cd ~/nav2_ws +colcon build --symlink-install +``` +Далее создаем новую папку, в данном примере это будет `slam_ws` и загружаем в нее файлы SLAM +```bash +mkdir ~/slam_ws/src -p +git clone https://github.com/SteveMacenski/slam_toolbox.git -b 2.8.3 +``` +Устанавливаем зависимости через инструмент rosdep +```bash +cd ~/slam_ws + +sudo rosdep init +rosdep update +rosdep install -y -r -q --from-paths src --ignore-src --rosdistro jazzy +``` +После этого собираем пакеты. Сборка может занять некоторое время, ~5 минут в зависимости от мощности ПК +```bash +cd ~/slam_ws +colcon build --symlink-install +``` +Перед запуском симулятора необходимо выполнить сурс (source) собранных файлов из папок `nav2_ws` и `nav2_ws`, **это необходимо делать в каждом новом открытом терминале** +```bash +source /nav2_ws/install/setup.bash +source /slam_ws/install/setup.bash +``` +(Опционально) данный сурс можно также добавить в ```~/.bashrc``` + +# Запуск модулей +## Модуль Б. Разработка и настройка навигационных алгоритмов для РМК +``` +Задание: +1) РМК-2 стоит на точке старта над стартовым aruco-маркером. +Необходимо по команде старта эксперта отправить роботу целевую точку, в которую должен +приехать РМК-2. +2) После прибытия к целевой точке, РМК-2 должен вернуться в точку +старта, однако в этот раз перед стартом робота эксперт выставит на маршрут +робота препятствие, которое необходимо обнаружить и объехать. +``` + +Чтобы запустить симуляцию данного задания, запустите launch файл: +**Не забудьте выполнить сурсы (source), если они не добавлены в ваш ~/.bashrc** +```bash +ros2 launch ar_webots_fms_ros2 module2.launch.py +``` + +При первом запуске мира могут долго скачиваться некоторые ассеты для карты, поэтому, если робот не появился, то перезапустите симулятор. + +При успешном запуске в симуляторе должна быть такая картина: +![Симулятор с миром для модуля Б](docs/images/module2_view.png) + +В окне симулятора будут также отображаться изображения с камер робота. Предупреждения (warning) в консоли симулятора можно игнорировать. + +Для визуальной оценки данных, которые получают датчики робота RMC2, можно использовать программу Rviz2. В пакете есть готовый скрипт для запуска настроенного под робота окна Rviz2. + +Для запуска откройте новый терминал и выполните: +**Не забудьте выполнить сурсы (source), если они не добавлены в ваш ~/.bashrc** +```bash +ros2 launch ar_webots_fms_ros2 rviz_rmc2.launch.py +``` +Откроется следующее окно: +![Rviz2 для модуля Б](docs/images/module2_rviz.png) + +Красные и синие точки отображают данные переднего и заднего лидара соответственно. Белые точки - объедененный скан переднего и заднего лидара. + +Слева снизу можно видеть изображение, которое передает камера, расположенная на дне робота. Поверх этого изображения также отрисовываются визуальные данные из Rviz2, которые попадают в поле зрения визуализируемой камеры. На скриншоте выше, например, видно, что камера "видит" некоторые оси координат робота. Но пусть вас не смущают эти визуализации, на самом изображении это все отсутствует. + +Чтобы управлять роботом RMC2 в ручном режиме, можно запустить скрипт телеопераций, который позволит задавать скорость и направление робота через клавиатуру. Для запуска откройте новый терминал и выполните: +**Не забудьте выполнить сурсы (source), если они не добавлены в ваш ~/.bashrc** +```bash +ros2 run ar_nav_ros2 teleop --ros-args -r __ns:=/RMC2 +``` + +Перед вами появится инструкция с клавишами клавиатуры в следующем формате: + +```txt +Control Your Robot! +--------------------------- +Moving around: + q w e + a s d + x +w/x : increase/decrease linear X velocity +q/e : increase/decrease linear Y velocity +a/d : increase/decrease angular velocity +space key, s : force stop +CTRL-C to quit +``` + +Чтобы заспавнить препятствие на карте, воспользуйтесь launch файлом в новом терминале: +**Не забудьте выполнить сурсы (source), если они не добавлены в ваш ~/.bashrc** +```bash +ros2 launch ar_webots_fms_ros2 spawn_object.launch.py x:=-4.0 y:=1.0 angle_z:=0.0 object_name:=obstacle +``` +В качестве аргументов `x`,`y` и `angle_z` в виде чисел с плавающей точкой можно задать координаты и ориентацию объекта. Чтобы задать уникальное имя объекта, укажите его в виде аргумента `name`. + +## Модуль В. Системы технического зрения с использованием инструментов искусственного интеллекта + +``` +Этот модуль направлен на обучение и интеграцию нейросетевой модели для автоматического распознавания. Конкурсанты должны самостоятельно собрать и разметить датасет, выбрать подходящую архитектуру нейросети, обучить ее и интегрировать в систему управления манипулятором. + +Задание: +На специальной полке на соревновательном поле будут лежать N > 3 коробок. РМК-1 с манипулятором в стартовом положении около полки перпендикулярно ей (камера на манипуляторе смотрит вертикально вниз) смотрит на эту полку сверху. +С помощью генератора случайных чисел эксперт выбирает деталь, необходимую для захвата манипулятором. Конкурсанты должны запустить свой разработанный алгоритм, указать целевую деталь (1 - молоток, 2 - гаечный ключ, 3 - пассатижи) и начать выполнение. +РМК-1 должен автономно определить с помощью размеченного датасета, какая коробка его интересует, определить ее местоположение относительно базы манипулятора, направить манипулятор в нужную точку, схватить коробку схватом и поднять в стартовое положение. +После этого опустить коробку на пустое место на этой же полке. +``` + +Чтобы запустить симуляцию данного задания, запустите launch файл: +**Не забудьте выполнить сурсы (source), если они не добавлены в ваш ~/.bashrc** +```bash +ros2 launch ar_webots_fms_ros2 module3.launch.py +``` + +При первом запуске мира могут долго скачиваться некоторые ассеты для карты, поэтому, если робот не появился, то перезапустите симулятор. + +При успешном запуске в симуляторе должна быть такая картина: +![Симулятор с миром для модуля В](docs/images/module3_view.png) + +Предупреждения (warning) в консоли симулятора можно игнорировать. + +Для визуальной оценки данных, которые получают датчики робота RMC1, можно использовать программу Rviz2. В пакете есть готовый скрипт для запуска настроенного под робота окна Rviz2. + +Для запуска откройте новый терминал и выполните: +**Не забудьте выполнить сурсы (source), если они не добавлены в ваш ~/.bashrc** +```bash +ros2 launch ar_webots_fms_ros2 rviz_rmc1.launch.py +``` + +Откроется следующее окно: +![Rviz2 для модуля Б](docs/images/module3_rviz.png) + +Данные для обучения нейросети можно собрать, перемещая камеру и объекты в симуляторе и делая скриншоты. + +Красные и синие точки отображают данные переднего и заднего лидара соответственно. Белые точки - объедененный скан переднего и заднего лидара. + +Слева снизу можно видеть изображение, которое передает камера, расположенная на захвате манипулятора. Поверх этого изображения также отрисовываются визуальные данные из Rviz2, которые попадают в поле зрения визуализируемой камеры. На скриншоте выше, например, видно, что камера "видит" некоторые оси координат робота. Но пусть вас не смущают эти визуализации, на самом изображении это все отсутствует. + +Чтобы управлять роботом RMC1 в ручном режиме, можно запустить скрипт телеопераций, который позволит задавать скорость и направление робота через клавиатуру. Для запуска откройте новый терминал и выполните: +**Не забудьте выполнить сурсы (source), если они не добавлены в ваш ~/.bashrc** +```bash +ros2 run ar_nav_ros2 teleop --ros-args -r __ns:=/RMC1 +``` + +Перед вами появится инструкция с клавишами клавиатуры в следующем формате: + +```txt +Control Your Robot! +--------------------------- +Moving around: + q w e + a s d + x +w/x : increase/decrease linear X velocity +q/e : increase/decrease linear Y velocity +a/d : increase/decrease angular velocity +space key, s : force stop +CTRL-C to quit +``` + +Чтобы запустить готовый пакет навигации Nav2, откройте новый терминал и выполните: +**Не забудьте выполнить сурсы (source), если они не добавлены в ваш ~/.bashrc** +```bash +ros2 launch ar_nav_ros2 bringup_launch.py +``` +Запуск может занять около 15 секунд. + +После того, как стек навигации успешно запуститься, можно воспользоваться визуализацией Rviz2. Для запуска откройте новый терминал и выполните: +**Не забудьте выполнить сурсы (source), если они не добавлены в ваш ~/.bashrc** +```bash +ros2 launch ar_nav_ros2 rviz.launch.py +``` +Откроется следующее окно: +![Rviz2 для визуализации Nav2](docs/images/module3_nav2_rviz.png) + +В данном окне отображается 2D карта поля, показания лидара, локальная и глобальная карты занятости, границы робота и его траектории во время движения. Первоначально роботу необходимо задать начальную позицию, если его позиция на карте отличается от реальной. Для этого в верхней панели выберите инструмент `2D Pose Estimate`, кликните им в нужную точку и задайте ориентацию с помощью стрелки. + +Чтобы задать целевую точку, выберите инструмент `2D Goal Pose`, кликните им в нужную точку и задайте ориентацию с помощью стрелки. Робот начнет движение по отрисованной траектории. + +Для визуальной отладки манипулятора Arm95 и его управления через графический интерфейс, есть еще один готовый конфиг для Rviz2. Для запуска откройте новый терминал и выполните: +**Не забудьте выполнить сурсы (source), если они не добавлены в ваш ~/.bashrc** +```bash +ros2 launch ar_webots_fms_ros2 rviz_arm95.launch.py +``` + +Откроется следующее окно: +![Rviz2 для манипулятора ARM95](docs/images/module3_rviz_arm95.png) + +Для ручного управления манипулятором в поле `Planning Group` выбираем *arm95_group*. + +Теперь в визуализации можно потянуть за стрелки или за голубую сферу и задать конечное положение манипулятора. +Чтобы переместить манипулятор в заданное положение нажимаем кнопку `Plan`, затем `Execute`. Либо одной кнопкой сразу: `Plan & Execute`. Если удалось построить траекторию в заданну. точку, манипулятор должен переместиться. Можно проверить это в симуляторе Webots. + +Для ручного управления схватом в поле `Planning Group` выбираем *gripper*. +Затем в поле `Goal State` выбираем `open` или `close` и затем нажимаем `Plan & Execute`. + +## Модуль Д. Решение складского кейса гетерогенной группой РМК + +``` +Конкурсанты должны обеспечить взаимодействие РМК-1 (оснащенного +манипулятором) и РМК-2 (оснащенного подъемным механизмом) для +выполнения последовательных (или параллельных) операций по +транспортировке стеллажа и комплектации заказа + +Задание: + +1) РМК-2 выполняет транспортировку стеллажа из точки хранения в +точку комплектации. +2) РМК-1 выполняет операцию комплектации (picking) требуемой +детали со стеллажа. +3) РМК-1 доставляет деталь в точку сдачи. +4) РМК-2 выполняет транспортировку стеллажа из точки комплектации +в точку хранения. +5) Оба РМК возвращаются в исходные позиции +``` + +Чтобы запустить симуляцию данного задания, запустите launch файл: +**Не забудьте выполнить сурсы (source), если они не добавлены в ваш ~/.bashrc** +```bash +ros2 launch ar_webots_fms_ros2 module5.launch.py +``` + +При первом запуске мира могут долго скачиваться некоторые ассеты для карты, поэтому, если робот не появился, то перезапустите симулятор. + +При успешном запуске в симуляторе должна быть такая картина: +![Симулятор с миром для модуля В](docs/images/module5_view.png) + +Предупреждения (warning) в консоли симулятора можно игнорировать. + +Далее запустите пакеты наыигации Nav2, откройте новый терминал и выполните: +**Не забудьте выполнить сурсы (source), если они не добавлены в ваш ~/.bashrc** +```bash +ros2 launch ar_nav_ros2 bringup_launch.py +``` + +В этом модуле можно использовать все предыдущие конфиги Rviz2 под каждого робота: +**Не забудьте выполнить сурсы (source), если они не добавлены в ваш ~/.bashrc** +```bash +# Для RMC1 +ros2 launch ar_webots_fms_ros2 rviz_rmc1.launch.py + +# Для манипулятора ARM95 +ros2 launch ar_webots_fms_ros2 rviz_arm95.launch.py + +# Для RMC2 +ros2 launch ar_webots_fms_ros2 rviz_rmc2.launch.py + +# Для Nav2 +ros2 launch ar_nav_ros2 rviz.launch.py +``` + +# Управление + +## Робот RMC1 +### Топики ROS2 +Робот RMC1 использует имя `RMC1` в поле `namespace` топиков ROS2. Ниже приведен список доступных топиков для взаимодействия: + * `/RMC1/odometry` [nav_msgs/msg/Odometry] - положение робота по колесной одометрии + * `/RMC1/scan` [sensor_msgs/msg/LaserScan] - объединенный скан переднего и заднего лидара + * `/RMC1/scan_back` [sensor_msgs/msg/LaserScan] - скан заднего лидара +publisher + * `/RMC1/scan_front` [sensor_msgs/msg/LaserScan] - скан переднего лидара + * `/RMC1/cmd_vel` [geometry_msgs/msg/Twist] - целевая скорость платформы + * `/tf_static` [tf2_msgs/msg/TFMessage] - дерево статических преобразований между деталями робота + * `/tf` [tf2_msgs/msg/TFMessage] - дерево динамическиз преобразований между роботом и миром + * `/RMC1/arm95/camera_gripper/image_color` [sensor_msgs/msg/Image] - изображение с камеры манипулятора + +### Управление манипулятором + Чтобы управлять манипулятором, используйте файл с примером из пакета `ar_webots_ros2/ar_webots_ros2/moveit_api_example.py`, его содержимое приведено ниже: +``` python3 +import time +import rclpy +from rclpy.logging import get_logger +from geometry_msgs.msg import PoseStamped +from tf_transformations import quaternion_from_euler + +# moveit python library +from moveit.planning import MoveItPy + +def plan_and_execute(robot, planning_component, logger, sleep_time=0.0): + plan_result = planning_component.plan() + if plan_result: + logger.info("Executing plan") + robot_trajectory = plan_result.trajectory + robot.execute(robot_trajectory, controllers=[]) + else: + logger.error("Planning failed") + time.sleep(sleep_time) + +def main(): + rclpy.init() + # Инициализация объектов MoveItPy + arm95 = MoveItPy(node_name="moveit_py", name_space="/RMC1/arm95") + arm95_arm = arm95.get_planning_component("arm95_group") # Объект - манипулятор + gripper = arm95.get_planning_component("gripper") # Объект - захват + + # Пример открытия захвата + gripper.set_goal_state(configuration_name="open") + plan_and_execute(arm95, gripper, logger, sleep_time=0.0) + + # Пример закрытия захвата + gripper.set_goal_state(configuration_name="closed") + plan_and_execute(arm95, gripper, logger, sleep_time=0.0) + + # Задать текущее положение манипулятора как начальное + arm95_arm.set_start_state_to_current_state() + + # Целевая ориентация схвата в углах Эйлера относительно основания "Base_link" + # Задается в виде roll, pitch, yaw + # Ориентация из углов Эцлера переводится в кватернион + q = quaternion_from_euler(3.14, 0.0, 1.57) + + # Задать целевую позицию в формате PoseStamped сообщения + pose_goal = PoseStamped() + pose_goal.header.frame_id = "Base_link" # Движение относительно основания манипулятора + pose_goal.pose.orientation.x = q[0] # Ориентация робота задается через кватернион + pose_goal.pose.orientation.y = q[1] # Ориентация робота задается через кватернион + pose_goal.pose.orientation.z = q[2] # Ориентация робота задается через кватернион + pose_goal.pose.orientation.w = q[3] # Ориентация робота задается через кватернион + pose_goal.pose.position.x = -0.2 # Координата x захвата относительно основания "Base_link" + pose_goal.pose.position.y = -0.5 # Координата y захвата относительно основания "Base_link" + pose_goal.pose.position.z = 0.7 # Координата z захвата относительно основания "Base_link" + arm95_arm.set_goal_state(pose_stamped_msg=pose_goal, pose_link="gripper_base") # Задается тип движения по заданной позиции + plan_and_execute(arm95, arm95_arm, logger, sleep_time=0.0) # Запуск перемещения в заданную позицию + +if __name__ == "__main__": + main() +``` + +Запускать данный файл необходимо через `ar_webots_ros2/launch/moveit_api_example.launch.py` файл, в котором в moveit контроллер передаются параметры манипулятоар и захвата. + +### Управление навигацией Nav2 +Чтобы использовать навигацию Nav2, необходимо написать скрипт с использованием пакета `nav2_simple_commander`. Используйте его при запущенной навигации. Пример управляющего скрипта представлен ниже: +``` python3 +from nav2_simple_commander.robot_navigator import BasicNavigator, TaskResult +import rclpy + +rclpy.init() +nav = BasicNavigator() # Создание экземпляра контроллера + +# ... + +nav.setInitialPose(init_pose) # Задание исходной позиции в формате PoseStamped + +# ... + +path = nav.getPath(init_pose, goal_pose) # Построить маршрут из исходной точки в целевую (PoseStamped), проверка что путь существует + +# ... + +nav.goToPose(goal_pose) # Задать роботу цлевую позицию в формате PoseStamped +while not nav.isTaskComplete(): # Цикл выполнения целевой точки, пока она не будет достигнута + feedback = nav.getFeedback() # Информация о выполнении задачи + if feedback.navigation_duration > 600: # Сравнение времени выполнения задачи с заданным временем + nav.cancelTask() # Остановить выполнение целевой точки + +# ... + +result = nav.getResult() # Получение результата о выполнении задачи +if result == TaskResult.SUCCEEDED: + print('Goal succeeded!') +elif result == TaskResult.CANCELED: + print('Goal was canceled!') +elif result == TaskResult.FAILED: + print('Goal failed!') +``` + +Для запуска достаточно создать экземпляр контроллера, задать начальную и целевую точки. Робот начнет двиижение. + +Подробнее о работе с `nav2_simple_commander` можете уздать в [официальной документации](https://docs.nav2.org/commander_api/index.html). + +## Робот RMC2 +### Топики ROS2 +Робот RMC2 использует имя `RMC2` в поле `namespace` топиков ROS2. Ниже приведен список доступных топиков для взаимодействия: +* `/RMC2/aruco_id` [std_msgs/msg/String] - ID найденного нижней камерой ArUco маркера + * `/RMC2/camera_bottom/image_color` [sensor_msgs/msg/Image] - изображение с нижней камеры (геометрический центр робота) + * `/RMC2/depth_camera/image` [sensor_msgs/msg/Image] - изображение с передней камеры + * `/RMC2/depth_camera/point_cloud` [sensor_msgs/msg/PointCloud2] - облако точек с передней камеры глубины + * `/RMC2/lift_status` [std_msgs/msg/String] - состояние лифта (moving / success) + * `/RMC2/lift` [std_msgs/msg/Float64] - поднятие лифта на заданную высоту + * `/RMC2/odometry` [nav_msgs/msg/Odometry] колесная одометрия робота + * `/RMC2/scan` [sensor_msgs/msg/LaserScan] - объединенный скан переднего и заднего лидара + * `/RMC2/scan_back` [sensor_msgs/msg/LaserScan] - скан заднего лидара +publisher + * `/RMC2/scan_front` [sensor_msgs/msg/LaserScan] - скан переднего лидара + * `/RMC2/cmd_vel` [geometry_msgs/msg/Twist] - целевая скорость платформы + * `/tf_static` [tf2_msgs/msg/TFMessage] - дерево статических преобразований между деталями робота + * `/tf` [tf2_msgs/msg/TFMessage] - дерево динамическиз преобразований между роботом и миром + + Чтобы робот начал перемещение, необходиом начать публиковать в топик `/RMC2/cmd_vel` целевую скорость. Кинематика робота РМК2 позволяет задачать линейную скорость по оси `x` и угловую по оси `z` робота. + + Чтобы управлять положением подъемного лифта, необходимо отправить в топик `/RMC2/lift` число с плавающей точкой с высотой, на которую поднимется лифт. Значение `0.0` соответствует полностью опущенному положению лифта. Значения `0.1` соответстует поднятому положению. Этого достаточно, чтобы поднять стеллаж с объектами. Лифт имеет 2 фиксированных положения, промежуточного не существует. + + # Дополнительная информация + ## Поле + Соревновательное поле размечено ArUco маркерами в соответствии со следующим изображением: + ![Поле ArUco маркеров](docs/images/aruco_graph.png) + + Маркеры ArUco имеют уникальные ID адреса от 0 до 35, верх маркера соответствует верху цифры на изображении выше. Инпче говоря, все маркеры ориентированы верхней гранью в одну сторону. + + Начало координат поля в Webots совпадает с маркером ID = 0, направление векторов координат показано на картинке выше: ось X смотрит вправо, ось Y смотрит вверх. \ No newline at end of file diff --git a/__pycache__/test_detect.cpython-313.pyc b/__pycache__/test_detect.cpython-313.pyc new file mode 100644 index 0000000..d2efa4a Binary files /dev/null and b/__pycache__/test_detect.cpython-313.pyc differ diff --git a/best.pt b/best.pt new file mode 100644 index 0000000..31b002d Binary files /dev/null and b/best.pt differ diff --git a/dataset/train.cache b/dataset/train.cache new file mode 100644 index 0000000..b2a5a52 Binary files /dev/null and b/dataset/train.cache differ diff --git a/dataset/train/hammer/img_0000.jpg b/dataset/train/hammer/img_0000.jpg new file mode 100644 index 0000000..52c87cf Binary files /dev/null and b/dataset/train/hammer/img_0000.jpg differ diff --git a/dataset/train/hammer/img_0001.jpg b/dataset/train/hammer/img_0001.jpg new file mode 100644 index 0000000..295f9db Binary files /dev/null and b/dataset/train/hammer/img_0001.jpg differ diff --git a/dataset/train/hammer/img_0002.jpg b/dataset/train/hammer/img_0002.jpg new file mode 100644 index 0000000..57696ac Binary files /dev/null and b/dataset/train/hammer/img_0002.jpg differ diff --git a/dataset/train/hammer/img_0003.jpg b/dataset/train/hammer/img_0003.jpg new file mode 100644 index 0000000..d0d625c Binary files /dev/null and b/dataset/train/hammer/img_0003.jpg differ diff --git a/dataset/train/hammer/img_0004.jpg b/dataset/train/hammer/img_0004.jpg new file mode 100644 index 0000000..dcdfd40 Binary files /dev/null and b/dataset/train/hammer/img_0004.jpg differ diff --git a/dataset/train/hammer/img_0005.jpg b/dataset/train/hammer/img_0005.jpg new file mode 100644 index 0000000..3095aa0 Binary files /dev/null and b/dataset/train/hammer/img_0005.jpg differ diff --git a/dataset/train/hammer/img_0006.jpg b/dataset/train/hammer/img_0006.jpg new file mode 100644 index 0000000..6a61328 Binary files /dev/null and b/dataset/train/hammer/img_0006.jpg differ diff --git a/dataset/train/hammer/img_0007.jpg b/dataset/train/hammer/img_0007.jpg new file mode 100644 index 0000000..bb9fc3e Binary files /dev/null and b/dataset/train/hammer/img_0007.jpg differ diff --git a/dataset/train/hammer/img_0008.jpg b/dataset/train/hammer/img_0008.jpg new file mode 100644 index 0000000..f652aea Binary files /dev/null and b/dataset/train/hammer/img_0008.jpg differ diff --git a/dataset/train/hammer/img_0009.jpg b/dataset/train/hammer/img_0009.jpg new file mode 100644 index 0000000..c4564f8 Binary files /dev/null and b/dataset/train/hammer/img_0009.jpg differ diff --git a/dataset/train/hammer/img_0010.jpg b/dataset/train/hammer/img_0010.jpg new file mode 100644 index 0000000..5f74cc9 Binary files /dev/null and b/dataset/train/hammer/img_0010.jpg differ diff --git a/dataset/train/hammer/img_0011.jpg b/dataset/train/hammer/img_0011.jpg new file mode 100644 index 0000000..9a092ed Binary files /dev/null and b/dataset/train/hammer/img_0011.jpg differ diff --git a/dataset/train/hammer/img_0012.jpg b/dataset/train/hammer/img_0012.jpg new file mode 100644 index 0000000..23e5630 Binary files /dev/null and b/dataset/train/hammer/img_0012.jpg differ diff --git a/dataset/train/hammer/img_0013.jpg b/dataset/train/hammer/img_0013.jpg new file mode 100644 index 0000000..5f93d8b Binary files /dev/null and b/dataset/train/hammer/img_0013.jpg differ diff --git a/dataset/train/hammer/img_0014.jpg b/dataset/train/hammer/img_0014.jpg new file mode 100644 index 0000000..2423cd4 Binary files /dev/null and b/dataset/train/hammer/img_0014.jpg differ diff --git a/dataset/train/hammer/img_0015.jpg b/dataset/train/hammer/img_0015.jpg new file mode 100644 index 0000000..2c839d7 Binary files /dev/null and b/dataset/train/hammer/img_0015.jpg differ diff --git a/dataset/train/hammer/img_0016.jpg b/dataset/train/hammer/img_0016.jpg new file mode 100644 index 0000000..2b9cf72 Binary files /dev/null and b/dataset/train/hammer/img_0016.jpg differ diff --git a/dataset/train/hammer/img_0017.jpg b/dataset/train/hammer/img_0017.jpg new file mode 100644 index 0000000..24ee1b5 Binary files /dev/null and b/dataset/train/hammer/img_0017.jpg differ diff --git a/dataset/train/hammer/img_0018.jpg b/dataset/train/hammer/img_0018.jpg new file mode 100644 index 0000000..b41784b Binary files /dev/null and b/dataset/train/hammer/img_0018.jpg differ diff --git a/dataset/train/hammer/img_0019.jpg b/dataset/train/hammer/img_0019.jpg new file mode 100644 index 0000000..e4b776f Binary files /dev/null and b/dataset/train/hammer/img_0019.jpg differ diff --git a/dataset/train/hammer/img_0020.jpg b/dataset/train/hammer/img_0020.jpg new file mode 100644 index 0000000..e276942 Binary files /dev/null and b/dataset/train/hammer/img_0020.jpg differ diff --git a/dataset/train/hammer/img_0021.jpg b/dataset/train/hammer/img_0021.jpg new file mode 100644 index 0000000..f5ece33 Binary files /dev/null and b/dataset/train/hammer/img_0021.jpg differ diff --git a/dataset/train/hammer/img_0022.jpg b/dataset/train/hammer/img_0022.jpg new file mode 100644 index 0000000..85e463a Binary files /dev/null and b/dataset/train/hammer/img_0022.jpg differ diff --git a/dataset/train/hammer/img_0023.jpg b/dataset/train/hammer/img_0023.jpg new file mode 100644 index 0000000..42d6d81 Binary files /dev/null and b/dataset/train/hammer/img_0023.jpg differ diff --git a/dataset/train/hammer/img_0024.jpg b/dataset/train/hammer/img_0024.jpg new file mode 100644 index 0000000..f975186 Binary files /dev/null and b/dataset/train/hammer/img_0024.jpg differ diff --git a/dataset/train/hammer/img_0025.jpg b/dataset/train/hammer/img_0025.jpg new file mode 100644 index 0000000..d578a65 Binary files /dev/null and b/dataset/train/hammer/img_0025.jpg differ diff --git a/dataset/train/hammer/img_0026.jpg b/dataset/train/hammer/img_0026.jpg new file mode 100644 index 0000000..64404ed Binary files /dev/null and b/dataset/train/hammer/img_0026.jpg differ diff --git a/dataset/train/hammer/img_0027.jpg b/dataset/train/hammer/img_0027.jpg new file mode 100644 index 0000000..6610819 Binary files /dev/null and b/dataset/train/hammer/img_0027.jpg differ diff --git a/dataset/train/hammer/img_0028.jpg b/dataset/train/hammer/img_0028.jpg new file mode 100644 index 0000000..e269c9d Binary files /dev/null and b/dataset/train/hammer/img_0028.jpg differ diff --git a/dataset/train/hammer/img_0029.jpg b/dataset/train/hammer/img_0029.jpg new file mode 100644 index 0000000..e442e9a Binary files /dev/null and b/dataset/train/hammer/img_0029.jpg differ diff --git a/dataset/train/hammer/img_0030.jpg b/dataset/train/hammer/img_0030.jpg new file mode 100644 index 0000000..ca33c35 Binary files /dev/null and b/dataset/train/hammer/img_0030.jpg differ diff --git a/dataset/train/hammer/img_0031.jpg b/dataset/train/hammer/img_0031.jpg new file mode 100644 index 0000000..52c583b Binary files /dev/null and b/dataset/train/hammer/img_0031.jpg differ diff --git a/dataset/train/hammer/img_0032.jpg b/dataset/train/hammer/img_0032.jpg new file mode 100644 index 0000000..4503362 Binary files /dev/null and b/dataset/train/hammer/img_0032.jpg differ diff --git a/dataset/train/hammer/img_0033.jpg b/dataset/train/hammer/img_0033.jpg new file mode 100644 index 0000000..776d93f Binary files /dev/null and b/dataset/train/hammer/img_0033.jpg differ diff --git a/dataset/train/hammer/img_0034.jpg b/dataset/train/hammer/img_0034.jpg new file mode 100644 index 0000000..bfee784 Binary files /dev/null and b/dataset/train/hammer/img_0034.jpg differ diff --git a/dataset/train/hammer/img_0035.jpg b/dataset/train/hammer/img_0035.jpg new file mode 100644 index 0000000..88282f8 Binary files /dev/null and b/dataset/train/hammer/img_0035.jpg differ diff --git a/dataset/train/hammer/img_0036.jpg b/dataset/train/hammer/img_0036.jpg new file mode 100644 index 0000000..e2fba03 Binary files /dev/null and b/dataset/train/hammer/img_0036.jpg differ diff --git a/dataset/train/hammer/img_0037.jpg b/dataset/train/hammer/img_0037.jpg new file mode 100644 index 0000000..b45a9f5 Binary files /dev/null and b/dataset/train/hammer/img_0037.jpg differ diff --git a/dataset/train/hammer/img_0038.jpg b/dataset/train/hammer/img_0038.jpg new file mode 100644 index 0000000..55f0412 Binary files /dev/null and b/dataset/train/hammer/img_0038.jpg differ diff --git a/dataset/train/hammer/img_0039.jpg b/dataset/train/hammer/img_0039.jpg new file mode 100644 index 0000000..55c0978 Binary files /dev/null and b/dataset/train/hammer/img_0039.jpg differ diff --git a/dataset/train/hammer/img_0040.jpg b/dataset/train/hammer/img_0040.jpg new file mode 100644 index 0000000..bb941a1 Binary files /dev/null and b/dataset/train/hammer/img_0040.jpg differ diff --git a/dataset/train/hammer/img_0041.jpg b/dataset/train/hammer/img_0041.jpg new file mode 100644 index 0000000..4c2e05c Binary files /dev/null and b/dataset/train/hammer/img_0041.jpg differ diff --git a/dataset/train/hammer/img_0042.jpg b/dataset/train/hammer/img_0042.jpg new file mode 100644 index 0000000..34d9343 Binary files /dev/null and b/dataset/train/hammer/img_0042.jpg differ diff --git a/dataset/train/hammer/img_0043.jpg b/dataset/train/hammer/img_0043.jpg new file mode 100644 index 0000000..8fb1011 Binary files /dev/null and b/dataset/train/hammer/img_0043.jpg differ diff --git a/dataset/train/hammer/img_0044.jpg b/dataset/train/hammer/img_0044.jpg new file mode 100644 index 0000000..3a53edf Binary files /dev/null and b/dataset/train/hammer/img_0044.jpg differ diff --git a/dataset/train/hammer/img_0045.jpg b/dataset/train/hammer/img_0045.jpg new file mode 100644 index 0000000..09b899f Binary files /dev/null and b/dataset/train/hammer/img_0045.jpg differ diff --git a/dataset/train/hammer/img_0046.jpg b/dataset/train/hammer/img_0046.jpg new file mode 100644 index 0000000..a2f2968 Binary files /dev/null and b/dataset/train/hammer/img_0046.jpg differ diff --git a/dataset/train/hammer/img_0047.jpg b/dataset/train/hammer/img_0047.jpg new file mode 100644 index 0000000..3a47b49 Binary files /dev/null and b/dataset/train/hammer/img_0047.jpg differ diff --git a/dataset/train/hammer/img_0048.jpg b/dataset/train/hammer/img_0048.jpg new file mode 100644 index 0000000..13b1643 Binary files /dev/null and b/dataset/train/hammer/img_0048.jpg differ diff --git a/dataset/train/hammer/img_0049.jpg b/dataset/train/hammer/img_0049.jpg new file mode 100644 index 0000000..3d97c4e Binary files /dev/null and b/dataset/train/hammer/img_0049.jpg differ diff --git a/dataset/train/hammer/img_0050.jpg b/dataset/train/hammer/img_0050.jpg new file mode 100644 index 0000000..29e6ebf Binary files /dev/null and b/dataset/train/hammer/img_0050.jpg differ diff --git a/dataset/train/hammer/img_0051.jpg b/dataset/train/hammer/img_0051.jpg new file mode 100644 index 0000000..d1ce87e Binary files /dev/null and b/dataset/train/hammer/img_0051.jpg differ diff --git a/dataset/train/hammer/img_0052.jpg b/dataset/train/hammer/img_0052.jpg new file mode 100644 index 0000000..6ac15a9 Binary files /dev/null and b/dataset/train/hammer/img_0052.jpg differ diff --git a/dataset/train/hammer/img_0053.jpg b/dataset/train/hammer/img_0053.jpg new file mode 100644 index 0000000..75fbb6d Binary files /dev/null and b/dataset/train/hammer/img_0053.jpg differ diff --git a/dataset/train/hammer/img_0054.jpg b/dataset/train/hammer/img_0054.jpg new file mode 100644 index 0000000..2609ce0 Binary files /dev/null and b/dataset/train/hammer/img_0054.jpg differ diff --git a/dataset/train/hammer/img_0055.jpg b/dataset/train/hammer/img_0055.jpg new file mode 100644 index 0000000..76fdd7c Binary files /dev/null and b/dataset/train/hammer/img_0055.jpg differ diff --git a/dataset/train/hammer/img_0056.jpg b/dataset/train/hammer/img_0056.jpg new file mode 100644 index 0000000..d3229c5 Binary files /dev/null and b/dataset/train/hammer/img_0056.jpg differ diff --git a/dataset/train/hammer/img_0057.jpg b/dataset/train/hammer/img_0057.jpg new file mode 100644 index 0000000..ac45ec7 Binary files /dev/null and b/dataset/train/hammer/img_0057.jpg differ diff --git a/dataset/train/hammer/img_0058.jpg b/dataset/train/hammer/img_0058.jpg new file mode 100644 index 0000000..e0c871b Binary files /dev/null and b/dataset/train/hammer/img_0058.jpg differ diff --git a/dataset/train/hammer/img_0059.jpg b/dataset/train/hammer/img_0059.jpg new file mode 100644 index 0000000..881148f Binary files /dev/null and b/dataset/train/hammer/img_0059.jpg differ diff --git a/dataset/train/hammer/img_0060.jpg b/dataset/train/hammer/img_0060.jpg new file mode 100644 index 0000000..86680a4 Binary files /dev/null and b/dataset/train/hammer/img_0060.jpg differ diff --git a/dataset/train/hammer/img_0061.jpg b/dataset/train/hammer/img_0061.jpg new file mode 100644 index 0000000..79f2e8f Binary files /dev/null and b/dataset/train/hammer/img_0061.jpg differ diff --git a/dataset/train/hammer/img_0062.jpg b/dataset/train/hammer/img_0062.jpg new file mode 100644 index 0000000..dd2d6de Binary files /dev/null and b/dataset/train/hammer/img_0062.jpg differ diff --git a/dataset/train/hammer/img_0063.jpg b/dataset/train/hammer/img_0063.jpg new file mode 100644 index 0000000..fe6b7db Binary files /dev/null and b/dataset/train/hammer/img_0063.jpg differ diff --git a/dataset/train/hammer/img_0064.jpg b/dataset/train/hammer/img_0064.jpg new file mode 100644 index 0000000..40bacac Binary files /dev/null and b/dataset/train/hammer/img_0064.jpg differ diff --git a/dataset/train/hammer/img_0065.jpg b/dataset/train/hammer/img_0065.jpg new file mode 100644 index 0000000..6a1d03d Binary files /dev/null and b/dataset/train/hammer/img_0065.jpg differ diff --git a/dataset/train/hammer/img_0066.jpg b/dataset/train/hammer/img_0066.jpg new file mode 100644 index 0000000..41950f8 Binary files /dev/null and b/dataset/train/hammer/img_0066.jpg differ diff --git a/dataset/train/hammer/img_0067.jpg b/dataset/train/hammer/img_0067.jpg new file mode 100644 index 0000000..256f375 Binary files /dev/null and b/dataset/train/hammer/img_0067.jpg differ diff --git a/dataset/train/hammer/img_0068.jpg b/dataset/train/hammer/img_0068.jpg new file mode 100644 index 0000000..45c61ad Binary files /dev/null and b/dataset/train/hammer/img_0068.jpg differ diff --git a/dataset/train/hammer/img_0069.jpg b/dataset/train/hammer/img_0069.jpg new file mode 100644 index 0000000..d7fcd82 Binary files /dev/null and b/dataset/train/hammer/img_0069.jpg differ diff --git a/dataset/train/hammer/img_0070.jpg b/dataset/train/hammer/img_0070.jpg new file mode 100644 index 0000000..ebb0637 Binary files /dev/null and b/dataset/train/hammer/img_0070.jpg differ diff --git a/dataset/train/hammer/img_0071.jpg b/dataset/train/hammer/img_0071.jpg new file mode 100644 index 0000000..5020c95 Binary files /dev/null and b/dataset/train/hammer/img_0071.jpg differ diff --git a/dataset/train/hammer/img_0072.jpg b/dataset/train/hammer/img_0072.jpg new file mode 100644 index 0000000..3dc3bd3 Binary files /dev/null and b/dataset/train/hammer/img_0072.jpg differ diff --git a/dataset/train/hammer/img_0073.jpg b/dataset/train/hammer/img_0073.jpg new file mode 100644 index 0000000..dbfc37c Binary files /dev/null and b/dataset/train/hammer/img_0073.jpg differ diff --git a/dataset/train/hammer/img_0074.jpg b/dataset/train/hammer/img_0074.jpg new file mode 100644 index 0000000..7c161c1 Binary files /dev/null and b/dataset/train/hammer/img_0074.jpg differ diff --git a/dataset/train/hammer/img_0075.jpg b/dataset/train/hammer/img_0075.jpg new file mode 100644 index 0000000..594bd55 Binary files /dev/null and b/dataset/train/hammer/img_0075.jpg differ diff --git a/dataset/train/hammer/img_0076.jpg b/dataset/train/hammer/img_0076.jpg new file mode 100644 index 0000000..1151f7d Binary files /dev/null and b/dataset/train/hammer/img_0076.jpg differ diff --git a/dataset/train/hammer/img_0077.jpg b/dataset/train/hammer/img_0077.jpg new file mode 100644 index 0000000..fd48478 Binary files /dev/null and b/dataset/train/hammer/img_0077.jpg differ diff --git a/dataset/train/hammer/img_0078.jpg b/dataset/train/hammer/img_0078.jpg new file mode 100644 index 0000000..bf2f58c Binary files /dev/null and b/dataset/train/hammer/img_0078.jpg differ diff --git a/dataset/train/hammer/img_0079.jpg b/dataset/train/hammer/img_0079.jpg new file mode 100644 index 0000000..7443c08 Binary files /dev/null and b/dataset/train/hammer/img_0079.jpg differ diff --git a/dataset/train/hammer/img_0080.jpg b/dataset/train/hammer/img_0080.jpg new file mode 100644 index 0000000..b2436b1 Binary files /dev/null and b/dataset/train/hammer/img_0080.jpg differ diff --git a/dataset/train/hammer/img_0081.jpg b/dataset/train/hammer/img_0081.jpg new file mode 100644 index 0000000..ae999d0 Binary files /dev/null and b/dataset/train/hammer/img_0081.jpg differ diff --git a/dataset/train/hammer/img_0082.jpg b/dataset/train/hammer/img_0082.jpg new file mode 100644 index 0000000..769f9f6 Binary files /dev/null and b/dataset/train/hammer/img_0082.jpg differ diff --git a/dataset/train/hammer/img_0083.jpg b/dataset/train/hammer/img_0083.jpg new file mode 100644 index 0000000..32c78a9 Binary files /dev/null and b/dataset/train/hammer/img_0083.jpg differ diff --git a/dataset/train/hammer/img_0084.jpg b/dataset/train/hammer/img_0084.jpg new file mode 100644 index 0000000..ed48b1c Binary files /dev/null and b/dataset/train/hammer/img_0084.jpg differ diff --git a/dataset/train/hammer/img_0085.jpg b/dataset/train/hammer/img_0085.jpg new file mode 100644 index 0000000..3379961 Binary files /dev/null and b/dataset/train/hammer/img_0085.jpg differ diff --git a/dataset/train/hammer/img_0086.jpg b/dataset/train/hammer/img_0086.jpg new file mode 100644 index 0000000..44357af Binary files /dev/null and b/dataset/train/hammer/img_0086.jpg differ diff --git a/dataset/train/hammer/img_0087.jpg b/dataset/train/hammer/img_0087.jpg new file mode 100644 index 0000000..f4f40d1 Binary files /dev/null and b/dataset/train/hammer/img_0087.jpg differ diff --git a/dataset/train/hammer/img_0088.jpg b/dataset/train/hammer/img_0088.jpg new file mode 100644 index 0000000..dc4c0a8 Binary files /dev/null and b/dataset/train/hammer/img_0088.jpg differ diff --git a/dataset/train/hammer/img_0089.jpg b/dataset/train/hammer/img_0089.jpg new file mode 100644 index 0000000..c597308 Binary files /dev/null and b/dataset/train/hammer/img_0089.jpg differ diff --git a/dataset/train/hammer/img_0090.jpg b/dataset/train/hammer/img_0090.jpg new file mode 100644 index 0000000..c8e3bcc Binary files /dev/null and b/dataset/train/hammer/img_0090.jpg differ diff --git a/dataset/train/hammer/img_0091.jpg b/dataset/train/hammer/img_0091.jpg new file mode 100644 index 0000000..8c35371 Binary files /dev/null and b/dataset/train/hammer/img_0091.jpg differ diff --git a/dataset/train/hammer/img_0092.jpg b/dataset/train/hammer/img_0092.jpg new file mode 100644 index 0000000..f28bbbc Binary files /dev/null and b/dataset/train/hammer/img_0092.jpg differ diff --git a/dataset/train/hammer/img_0093.jpg b/dataset/train/hammer/img_0093.jpg new file mode 100644 index 0000000..05d0097 Binary files /dev/null and b/dataset/train/hammer/img_0093.jpg differ diff --git a/dataset/train/hammer/img_0094.jpg b/dataset/train/hammer/img_0094.jpg new file mode 100644 index 0000000..ee16694 Binary files /dev/null and b/dataset/train/hammer/img_0094.jpg differ diff --git a/dataset/train/hammer/img_0095.jpg b/dataset/train/hammer/img_0095.jpg new file mode 100644 index 0000000..d2fe627 Binary files /dev/null and b/dataset/train/hammer/img_0095.jpg differ diff --git a/dataset/train/hammer/img_0096.jpg b/dataset/train/hammer/img_0096.jpg new file mode 100644 index 0000000..90c9ca9 Binary files /dev/null and b/dataset/train/hammer/img_0096.jpg differ diff --git a/dataset/train/hammer/img_0097.jpg b/dataset/train/hammer/img_0097.jpg new file mode 100644 index 0000000..d44be77 Binary files /dev/null and b/dataset/train/hammer/img_0097.jpg differ diff --git a/dataset/train/hammer/img_0098.jpg b/dataset/train/hammer/img_0098.jpg new file mode 100644 index 0000000..f37e3a1 Binary files /dev/null and b/dataset/train/hammer/img_0098.jpg differ diff --git a/dataset/train/hammer/img_0099.jpg b/dataset/train/hammer/img_0099.jpg new file mode 100644 index 0000000..45b79fc Binary files /dev/null and b/dataset/train/hammer/img_0099.jpg differ diff --git a/dataset/train/hammer/img_0100.jpg b/dataset/train/hammer/img_0100.jpg new file mode 100644 index 0000000..39fa8f5 Binary files /dev/null and b/dataset/train/hammer/img_0100.jpg differ diff --git a/dataset/train/hammer/img_0101.jpg b/dataset/train/hammer/img_0101.jpg new file mode 100644 index 0000000..c869ff4 Binary files /dev/null and b/dataset/train/hammer/img_0101.jpg differ diff --git a/dataset/train/hammer/img_0102.jpg b/dataset/train/hammer/img_0102.jpg new file mode 100644 index 0000000..8dca075 Binary files /dev/null and b/dataset/train/hammer/img_0102.jpg differ diff --git a/dataset/train/hammer/img_0103.jpg b/dataset/train/hammer/img_0103.jpg new file mode 100644 index 0000000..18bc406 Binary files /dev/null and b/dataset/train/hammer/img_0103.jpg differ diff --git a/dataset/train/hammer/img_0104.jpg b/dataset/train/hammer/img_0104.jpg new file mode 100644 index 0000000..12e60c3 Binary files /dev/null and b/dataset/train/hammer/img_0104.jpg differ diff --git a/dataset/train/hammer/img_0105.jpg b/dataset/train/hammer/img_0105.jpg new file mode 100644 index 0000000..e0e956b Binary files /dev/null and b/dataset/train/hammer/img_0105.jpg differ diff --git a/dataset/train/hammer/img_0106.jpg b/dataset/train/hammer/img_0106.jpg new file mode 100644 index 0000000..d7833d6 Binary files /dev/null and b/dataset/train/hammer/img_0106.jpg differ diff --git a/dataset/train/hammer/img_0107.jpg b/dataset/train/hammer/img_0107.jpg new file mode 100644 index 0000000..e2ac6db Binary files /dev/null and b/dataset/train/hammer/img_0107.jpg differ diff --git a/dataset/train/hammer/img_0108.jpg b/dataset/train/hammer/img_0108.jpg new file mode 100644 index 0000000..f983a92 Binary files /dev/null and b/dataset/train/hammer/img_0108.jpg differ diff --git a/dataset/train/hammer/img_0109.jpg b/dataset/train/hammer/img_0109.jpg new file mode 100644 index 0000000..edad2bf Binary files /dev/null and b/dataset/train/hammer/img_0109.jpg differ diff --git a/dataset/train/hammer/img_0110.jpg b/dataset/train/hammer/img_0110.jpg new file mode 100644 index 0000000..d07a322 Binary files /dev/null and b/dataset/train/hammer/img_0110.jpg differ diff --git a/dataset/train/hammer/img_0111.jpg b/dataset/train/hammer/img_0111.jpg new file mode 100644 index 0000000..950829e Binary files /dev/null and b/dataset/train/hammer/img_0111.jpg differ diff --git a/dataset/train/hammer/img_0112.jpg b/dataset/train/hammer/img_0112.jpg new file mode 100644 index 0000000..530d80d Binary files /dev/null and b/dataset/train/hammer/img_0112.jpg differ diff --git a/dataset/train/hammer/img_0113.jpg b/dataset/train/hammer/img_0113.jpg new file mode 100644 index 0000000..c5457ce Binary files /dev/null and b/dataset/train/hammer/img_0113.jpg differ diff --git a/dataset/train/hammer/img_0114.jpg b/dataset/train/hammer/img_0114.jpg new file mode 100644 index 0000000..27726ba Binary files /dev/null and b/dataset/train/hammer/img_0114.jpg differ diff --git a/dataset/train/hammer/img_0115.jpg b/dataset/train/hammer/img_0115.jpg new file mode 100644 index 0000000..c35715b Binary files /dev/null and b/dataset/train/hammer/img_0115.jpg differ diff --git a/dataset/train/hammer/img_0116.jpg b/dataset/train/hammer/img_0116.jpg new file mode 100644 index 0000000..8303dc6 Binary files /dev/null and b/dataset/train/hammer/img_0116.jpg differ diff --git a/dataset/train/hammer/img_0117.jpg b/dataset/train/hammer/img_0117.jpg new file mode 100644 index 0000000..22a518e Binary files /dev/null and b/dataset/train/hammer/img_0117.jpg differ diff --git a/dataset/train/hammer/img_0118.jpg b/dataset/train/hammer/img_0118.jpg new file mode 100644 index 0000000..efc5d41 Binary files /dev/null and b/dataset/train/hammer/img_0118.jpg differ diff --git a/dataset/train/hammer/img_0119.jpg b/dataset/train/hammer/img_0119.jpg new file mode 100644 index 0000000..1a6ad3f Binary files /dev/null and b/dataset/train/hammer/img_0119.jpg differ diff --git a/dataset/train/hammer/img_0120.jpg b/dataset/train/hammer/img_0120.jpg new file mode 100644 index 0000000..203cf6f Binary files /dev/null and b/dataset/train/hammer/img_0120.jpg differ diff --git a/dataset/train/hammer/img_0121.jpg b/dataset/train/hammer/img_0121.jpg new file mode 100644 index 0000000..73810fe Binary files /dev/null and b/dataset/train/hammer/img_0121.jpg differ diff --git a/dataset/train/hammer/img_0122.jpg b/dataset/train/hammer/img_0122.jpg new file mode 100644 index 0000000..3097bb4 Binary files /dev/null and b/dataset/train/hammer/img_0122.jpg differ diff --git a/dataset/train/hammer/img_0123.jpg b/dataset/train/hammer/img_0123.jpg new file mode 100644 index 0000000..aafeda9 Binary files /dev/null and b/dataset/train/hammer/img_0123.jpg differ diff --git a/dataset/train/hammer/img_0124.jpg b/dataset/train/hammer/img_0124.jpg new file mode 100644 index 0000000..5653df1 Binary files /dev/null and b/dataset/train/hammer/img_0124.jpg differ diff --git a/dataset/train/hammer/img_0125.jpg b/dataset/train/hammer/img_0125.jpg new file mode 100644 index 0000000..6420b04 Binary files /dev/null and b/dataset/train/hammer/img_0125.jpg differ diff --git a/dataset/train/hammer/img_0126.jpg b/dataset/train/hammer/img_0126.jpg new file mode 100644 index 0000000..5ced3b1 Binary files /dev/null and b/dataset/train/hammer/img_0126.jpg differ diff --git a/dataset/train/hammer/img_0127.jpg b/dataset/train/hammer/img_0127.jpg new file mode 100644 index 0000000..27e2c3c Binary files /dev/null and b/dataset/train/hammer/img_0127.jpg differ diff --git a/dataset/train/hammer/img_0128.jpg b/dataset/train/hammer/img_0128.jpg new file mode 100644 index 0000000..6326f78 Binary files /dev/null and b/dataset/train/hammer/img_0128.jpg differ diff --git a/dataset/train/hammer/img_0129.jpg b/dataset/train/hammer/img_0129.jpg new file mode 100644 index 0000000..c6b94b8 Binary files /dev/null and b/dataset/train/hammer/img_0129.jpg differ diff --git a/dataset/train/hammer/img_0130.jpg b/dataset/train/hammer/img_0130.jpg new file mode 100644 index 0000000..000b59a Binary files /dev/null and b/dataset/train/hammer/img_0130.jpg differ diff --git a/dataset/train/hammer/img_0131.jpg b/dataset/train/hammer/img_0131.jpg new file mode 100644 index 0000000..f0ad2cf Binary files /dev/null and b/dataset/train/hammer/img_0131.jpg differ diff --git a/dataset/train/hammer/img_0132.jpg b/dataset/train/hammer/img_0132.jpg new file mode 100644 index 0000000..af721a0 Binary files /dev/null and b/dataset/train/hammer/img_0132.jpg differ diff --git a/dataset/train/hammer/img_0133.jpg b/dataset/train/hammer/img_0133.jpg new file mode 100644 index 0000000..3496d22 Binary files /dev/null and b/dataset/train/hammer/img_0133.jpg differ diff --git a/dataset/train/hammer/img_0134.jpg b/dataset/train/hammer/img_0134.jpg new file mode 100644 index 0000000..bf1428a Binary files /dev/null and b/dataset/train/hammer/img_0134.jpg differ diff --git a/dataset/train/hammer/img_0135.jpg b/dataset/train/hammer/img_0135.jpg new file mode 100644 index 0000000..1c3770d Binary files /dev/null and b/dataset/train/hammer/img_0135.jpg differ diff --git a/dataset/train/hammer/img_0136.jpg b/dataset/train/hammer/img_0136.jpg new file mode 100644 index 0000000..20d2255 Binary files /dev/null and b/dataset/train/hammer/img_0136.jpg differ diff --git a/dataset/train/hammer/img_0137.jpg b/dataset/train/hammer/img_0137.jpg new file mode 100644 index 0000000..0da6fbf Binary files /dev/null and b/dataset/train/hammer/img_0137.jpg differ diff --git a/dataset/train/hammer/img_0138.jpg b/dataset/train/hammer/img_0138.jpg new file mode 100644 index 0000000..4f3ae7f Binary files /dev/null and b/dataset/train/hammer/img_0138.jpg differ diff --git a/dataset/train/hammer/img_0139.jpg b/dataset/train/hammer/img_0139.jpg new file mode 100644 index 0000000..eb29d51 Binary files /dev/null and b/dataset/train/hammer/img_0139.jpg differ diff --git a/dataset/train/hammer/img_0140.jpg b/dataset/train/hammer/img_0140.jpg new file mode 100644 index 0000000..cd427e3 Binary files /dev/null and b/dataset/train/hammer/img_0140.jpg differ diff --git a/dataset/train/hammer/img_0141.jpg b/dataset/train/hammer/img_0141.jpg new file mode 100644 index 0000000..5eae2ab Binary files /dev/null and b/dataset/train/hammer/img_0141.jpg differ diff --git a/dataset/train/hammer/img_0142.jpg b/dataset/train/hammer/img_0142.jpg new file mode 100644 index 0000000..ae52fe3 Binary files /dev/null and b/dataset/train/hammer/img_0142.jpg differ diff --git a/dataset/train/hammer/img_0143.jpg b/dataset/train/hammer/img_0143.jpg new file mode 100644 index 0000000..40b74ce Binary files /dev/null and b/dataset/train/hammer/img_0143.jpg differ diff --git a/dataset/train/hammer/img_0144.jpg b/dataset/train/hammer/img_0144.jpg new file mode 100644 index 0000000..3a474aa Binary files /dev/null and b/dataset/train/hammer/img_0144.jpg differ diff --git a/dataset/train/hammer/img_0145.jpg b/dataset/train/hammer/img_0145.jpg new file mode 100644 index 0000000..dd526bd Binary files /dev/null and b/dataset/train/hammer/img_0145.jpg differ diff --git a/dataset/train/hammer/img_0146.jpg b/dataset/train/hammer/img_0146.jpg new file mode 100644 index 0000000..4e230c2 Binary files /dev/null and b/dataset/train/hammer/img_0146.jpg differ diff --git a/dataset/train/hammer/img_0147.jpg b/dataset/train/hammer/img_0147.jpg new file mode 100644 index 0000000..238ef10 Binary files /dev/null and b/dataset/train/hammer/img_0147.jpg differ diff --git a/dataset/train/hammer/img_0148.jpg b/dataset/train/hammer/img_0148.jpg new file mode 100644 index 0000000..b91f314 Binary files /dev/null and b/dataset/train/hammer/img_0148.jpg differ diff --git a/dataset/train/hammer/img_0149.jpg b/dataset/train/hammer/img_0149.jpg new file mode 100644 index 0000000..4f856ab Binary files /dev/null and b/dataset/train/hammer/img_0149.jpg differ diff --git a/dataset/train/hammer/img_0150.jpg b/dataset/train/hammer/img_0150.jpg new file mode 100644 index 0000000..9066fe4 Binary files /dev/null and b/dataset/train/hammer/img_0150.jpg differ diff --git a/dataset/train/hammer/img_0151.jpg b/dataset/train/hammer/img_0151.jpg new file mode 100644 index 0000000..5c88399 Binary files /dev/null and b/dataset/train/hammer/img_0151.jpg differ diff --git a/dataset/train/hammer/img_0152.jpg b/dataset/train/hammer/img_0152.jpg new file mode 100644 index 0000000..f079a2d Binary files /dev/null and b/dataset/train/hammer/img_0152.jpg differ diff --git a/dataset/train/hammer/img_0153.jpg b/dataset/train/hammer/img_0153.jpg new file mode 100644 index 0000000..d2625a2 Binary files /dev/null and b/dataset/train/hammer/img_0153.jpg differ diff --git a/dataset/train/hammer/img_0154.jpg b/dataset/train/hammer/img_0154.jpg new file mode 100644 index 0000000..7eead8c Binary files /dev/null and b/dataset/train/hammer/img_0154.jpg differ diff --git a/dataset/train/hammer/img_0155.jpg b/dataset/train/hammer/img_0155.jpg new file mode 100644 index 0000000..089e1d3 Binary files /dev/null and b/dataset/train/hammer/img_0155.jpg differ diff --git a/dataset/train/hammer/img_0156.jpg b/dataset/train/hammer/img_0156.jpg new file mode 100644 index 0000000..07be572 Binary files /dev/null and b/dataset/train/hammer/img_0156.jpg differ diff --git a/dataset/train/hammer/img_0157.jpg b/dataset/train/hammer/img_0157.jpg new file mode 100644 index 0000000..7cf96b8 Binary files /dev/null and b/dataset/train/hammer/img_0157.jpg differ diff --git a/dataset/train/hammer/img_0158.jpg b/dataset/train/hammer/img_0158.jpg new file mode 100644 index 0000000..a07f288 Binary files /dev/null and b/dataset/train/hammer/img_0158.jpg differ diff --git a/dataset/train/hammer/img_0159.jpg b/dataset/train/hammer/img_0159.jpg new file mode 100644 index 0000000..f862b34 Binary files /dev/null and b/dataset/train/hammer/img_0159.jpg differ diff --git a/dataset/train/hammer/img_0160.jpg b/dataset/train/hammer/img_0160.jpg new file mode 100644 index 0000000..040060a Binary files /dev/null and b/dataset/train/hammer/img_0160.jpg differ diff --git a/dataset/train/hammer/img_0161.jpg b/dataset/train/hammer/img_0161.jpg new file mode 100644 index 0000000..8f8edec Binary files /dev/null and b/dataset/train/hammer/img_0161.jpg differ diff --git a/dataset/train/hammer/img_0162.jpg b/dataset/train/hammer/img_0162.jpg new file mode 100644 index 0000000..d2696f8 Binary files /dev/null and b/dataset/train/hammer/img_0162.jpg differ diff --git a/dataset/train/hammer/img_0163.jpg b/dataset/train/hammer/img_0163.jpg new file mode 100644 index 0000000..52f18d0 Binary files /dev/null and b/dataset/train/hammer/img_0163.jpg differ diff --git a/dataset/train/hammer/img_0164.jpg b/dataset/train/hammer/img_0164.jpg new file mode 100644 index 0000000..94feaa6 Binary files /dev/null and b/dataset/train/hammer/img_0164.jpg differ diff --git a/dataset/train/hammer/img_0165.jpg b/dataset/train/hammer/img_0165.jpg new file mode 100644 index 0000000..0bb0931 Binary files /dev/null and b/dataset/train/hammer/img_0165.jpg differ diff --git a/dataset/train/hammer/img_0166.jpg b/dataset/train/hammer/img_0166.jpg new file mode 100644 index 0000000..8133f01 Binary files /dev/null and b/dataset/train/hammer/img_0166.jpg differ diff --git a/dataset/train/hammer/img_0167.jpg b/dataset/train/hammer/img_0167.jpg new file mode 100644 index 0000000..f29109f Binary files /dev/null and b/dataset/train/hammer/img_0167.jpg differ diff --git a/dataset/train/hammer/img_0168.jpg b/dataset/train/hammer/img_0168.jpg new file mode 100644 index 0000000..6f1bc32 Binary files /dev/null and b/dataset/train/hammer/img_0168.jpg differ diff --git a/dataset/train/hammer/img_0169.jpg b/dataset/train/hammer/img_0169.jpg new file mode 100644 index 0000000..f878775 Binary files /dev/null and b/dataset/train/hammer/img_0169.jpg differ diff --git a/dataset/train/hammer/img_0170.jpg b/dataset/train/hammer/img_0170.jpg new file mode 100644 index 0000000..e95927a Binary files /dev/null and b/dataset/train/hammer/img_0170.jpg differ diff --git a/dataset/train/hammer/img_0171.jpg b/dataset/train/hammer/img_0171.jpg new file mode 100644 index 0000000..a7b5f4f Binary files /dev/null and b/dataset/train/hammer/img_0171.jpg differ diff --git a/dataset/train/hammer/img_0172.jpg b/dataset/train/hammer/img_0172.jpg new file mode 100644 index 0000000..1b1c58d Binary files /dev/null and b/dataset/train/hammer/img_0172.jpg differ diff --git a/dataset/train/hammer/img_0173.jpg b/dataset/train/hammer/img_0173.jpg new file mode 100644 index 0000000..3db1c12 Binary files /dev/null and b/dataset/train/hammer/img_0173.jpg differ diff --git a/dataset/train/hammer/img_0174.jpg b/dataset/train/hammer/img_0174.jpg new file mode 100644 index 0000000..4b52d9e Binary files /dev/null and b/dataset/train/hammer/img_0174.jpg differ diff --git a/dataset/train/hammer/img_0175.jpg b/dataset/train/hammer/img_0175.jpg new file mode 100644 index 0000000..2e0b1d5 Binary files /dev/null and b/dataset/train/hammer/img_0175.jpg differ diff --git a/dataset/train/hammer/img_0176.jpg b/dataset/train/hammer/img_0176.jpg new file mode 100644 index 0000000..0b6b80b Binary files /dev/null and b/dataset/train/hammer/img_0176.jpg differ diff --git a/dataset/train/hammer/img_0177.jpg b/dataset/train/hammer/img_0177.jpg new file mode 100644 index 0000000..049d55e Binary files /dev/null and b/dataset/train/hammer/img_0177.jpg differ diff --git a/dataset/train/hammer/img_0178.jpg b/dataset/train/hammer/img_0178.jpg new file mode 100644 index 0000000..402a657 Binary files /dev/null and b/dataset/train/hammer/img_0178.jpg differ diff --git a/dataset/train/hammer/img_0179.jpg b/dataset/train/hammer/img_0179.jpg new file mode 100644 index 0000000..882a866 Binary files /dev/null and b/dataset/train/hammer/img_0179.jpg differ diff --git a/dataset/train/hammer/img_0180.jpg b/dataset/train/hammer/img_0180.jpg new file mode 100644 index 0000000..fd5ed95 Binary files /dev/null and b/dataset/train/hammer/img_0180.jpg differ diff --git a/dataset/train/hammer/img_0181.jpg b/dataset/train/hammer/img_0181.jpg new file mode 100644 index 0000000..1a97667 Binary files /dev/null and b/dataset/train/hammer/img_0181.jpg differ diff --git a/dataset/train/hammer/img_0182.jpg b/dataset/train/hammer/img_0182.jpg new file mode 100644 index 0000000..54e5fb6 Binary files /dev/null and b/dataset/train/hammer/img_0182.jpg differ diff --git a/dataset/train/hammer/img_0183.jpg b/dataset/train/hammer/img_0183.jpg new file mode 100644 index 0000000..d30a5e3 Binary files /dev/null and b/dataset/train/hammer/img_0183.jpg differ diff --git a/dataset/train/hammer/img_0184.jpg b/dataset/train/hammer/img_0184.jpg new file mode 100644 index 0000000..de0131b Binary files /dev/null and b/dataset/train/hammer/img_0184.jpg differ diff --git a/dataset/train/hammer/img_0185.jpg b/dataset/train/hammer/img_0185.jpg new file mode 100644 index 0000000..26264c7 Binary files /dev/null and b/dataset/train/hammer/img_0185.jpg differ diff --git a/dataset/train/hammer/img_0186.jpg b/dataset/train/hammer/img_0186.jpg new file mode 100644 index 0000000..ad4f5e7 Binary files /dev/null and b/dataset/train/hammer/img_0186.jpg differ diff --git a/dataset/train/hammer/img_0187.jpg b/dataset/train/hammer/img_0187.jpg new file mode 100644 index 0000000..a3ead35 Binary files /dev/null and b/dataset/train/hammer/img_0187.jpg differ diff --git a/dataset/train/hammer/img_0188.jpg b/dataset/train/hammer/img_0188.jpg new file mode 100644 index 0000000..95e3776 Binary files /dev/null and b/dataset/train/hammer/img_0188.jpg differ diff --git a/dataset/train/hammer/img_0189.jpg b/dataset/train/hammer/img_0189.jpg new file mode 100644 index 0000000..8796e89 Binary files /dev/null and b/dataset/train/hammer/img_0189.jpg differ diff --git a/dataset/train/hammer/img_0190.jpg b/dataset/train/hammer/img_0190.jpg new file mode 100644 index 0000000..222e2da Binary files /dev/null and b/dataset/train/hammer/img_0190.jpg differ diff --git a/dataset/train/hammer/img_0191.jpg b/dataset/train/hammer/img_0191.jpg new file mode 100644 index 0000000..780fcd2 Binary files /dev/null and b/dataset/train/hammer/img_0191.jpg differ diff --git a/dataset/train/hammer/img_0192.jpg b/dataset/train/hammer/img_0192.jpg new file mode 100644 index 0000000..f06d686 Binary files /dev/null and b/dataset/train/hammer/img_0192.jpg differ diff --git a/dataset/train/hammer/img_0193.jpg b/dataset/train/hammer/img_0193.jpg new file mode 100644 index 0000000..ff53aa7 Binary files /dev/null and b/dataset/train/hammer/img_0193.jpg differ diff --git a/dataset/train/hammer/img_0194.jpg b/dataset/train/hammer/img_0194.jpg new file mode 100644 index 0000000..a7c21bd Binary files /dev/null and b/dataset/train/hammer/img_0194.jpg differ diff --git a/dataset/train/hammer/img_0195.jpg b/dataset/train/hammer/img_0195.jpg new file mode 100644 index 0000000..4445a1f Binary files /dev/null and b/dataset/train/hammer/img_0195.jpg differ diff --git a/dataset/train/hammer/img_0196.jpg b/dataset/train/hammer/img_0196.jpg new file mode 100644 index 0000000..7f52cf2 Binary files /dev/null and b/dataset/train/hammer/img_0196.jpg differ diff --git a/dataset/train/hammer/img_0197.jpg b/dataset/train/hammer/img_0197.jpg new file mode 100644 index 0000000..86755a3 Binary files /dev/null and b/dataset/train/hammer/img_0197.jpg differ diff --git a/dataset/train/hammer/img_0198.jpg b/dataset/train/hammer/img_0198.jpg new file mode 100644 index 0000000..f1050a5 Binary files /dev/null and b/dataset/train/hammer/img_0198.jpg differ diff --git a/dataset/train/hammer/img_0199.jpg b/dataset/train/hammer/img_0199.jpg new file mode 100644 index 0000000..2fcf69a Binary files /dev/null and b/dataset/train/hammer/img_0199.jpg differ diff --git a/dataset/train/hammer/img_0200.jpg b/dataset/train/hammer/img_0200.jpg new file mode 100644 index 0000000..3abf570 Binary files /dev/null and b/dataset/train/hammer/img_0200.jpg differ diff --git a/dataset/train/hammer/img_0201.jpg b/dataset/train/hammer/img_0201.jpg new file mode 100644 index 0000000..f5e4345 Binary files /dev/null and b/dataset/train/hammer/img_0201.jpg differ diff --git a/dataset/train/hammer/img_0202.jpg b/dataset/train/hammer/img_0202.jpg new file mode 100644 index 0000000..fb9685f Binary files /dev/null and b/dataset/train/hammer/img_0202.jpg differ diff --git a/dataset/train/hammer/img_0203.jpg b/dataset/train/hammer/img_0203.jpg new file mode 100644 index 0000000..a482706 Binary files /dev/null and b/dataset/train/hammer/img_0203.jpg differ diff --git a/dataset/train/hammer/img_0204.jpg b/dataset/train/hammer/img_0204.jpg new file mode 100644 index 0000000..83698fb Binary files /dev/null and b/dataset/train/hammer/img_0204.jpg differ diff --git a/dataset/train/hammer/img_0205.jpg b/dataset/train/hammer/img_0205.jpg new file mode 100644 index 0000000..b5bef11 Binary files /dev/null and b/dataset/train/hammer/img_0205.jpg differ diff --git a/dataset/train/hammer/img_0206.jpg b/dataset/train/hammer/img_0206.jpg new file mode 100644 index 0000000..97638e4 Binary files /dev/null and b/dataset/train/hammer/img_0206.jpg differ diff --git a/dataset/train/hammer/img_0207.jpg b/dataset/train/hammer/img_0207.jpg new file mode 100644 index 0000000..8424f7b Binary files /dev/null and b/dataset/train/hammer/img_0207.jpg differ diff --git a/dataset/train/hammer/img_0208.jpg b/dataset/train/hammer/img_0208.jpg new file mode 100644 index 0000000..9bc51ec Binary files /dev/null and b/dataset/train/hammer/img_0208.jpg differ diff --git a/dataset/train/hammer/img_0209.jpg b/dataset/train/hammer/img_0209.jpg new file mode 100644 index 0000000..e2e696b Binary files /dev/null and b/dataset/train/hammer/img_0209.jpg differ diff --git a/dataset/train/hammer/img_0210.jpg b/dataset/train/hammer/img_0210.jpg new file mode 100644 index 0000000..b454ad9 Binary files /dev/null and b/dataset/train/hammer/img_0210.jpg differ diff --git a/dataset/train/hammer/img_0211.jpg b/dataset/train/hammer/img_0211.jpg new file mode 100644 index 0000000..dfb7935 Binary files /dev/null and b/dataset/train/hammer/img_0211.jpg differ diff --git a/dataset/train/hammer/img_0212.jpg b/dataset/train/hammer/img_0212.jpg new file mode 100644 index 0000000..aa5f8b0 Binary files /dev/null and b/dataset/train/hammer/img_0212.jpg differ diff --git a/dataset/train/hammer/img_0213.jpg b/dataset/train/hammer/img_0213.jpg new file mode 100644 index 0000000..768ff20 Binary files /dev/null and b/dataset/train/hammer/img_0213.jpg differ diff --git a/dataset/train/hammer/img_0214.jpg b/dataset/train/hammer/img_0214.jpg new file mode 100644 index 0000000..93a7e50 Binary files /dev/null and b/dataset/train/hammer/img_0214.jpg differ diff --git a/dataset/train/hammer/img_0215.jpg b/dataset/train/hammer/img_0215.jpg new file mode 100644 index 0000000..a52c19a Binary files /dev/null and b/dataset/train/hammer/img_0215.jpg differ diff --git a/dataset/train/hammer/img_0216.jpg b/dataset/train/hammer/img_0216.jpg new file mode 100644 index 0000000..2696592 Binary files /dev/null and b/dataset/train/hammer/img_0216.jpg differ diff --git a/dataset/train/hammer/img_0217.jpg b/dataset/train/hammer/img_0217.jpg new file mode 100644 index 0000000..6128653 Binary files /dev/null and b/dataset/train/hammer/img_0217.jpg differ diff --git a/dataset/train/hammer/img_0218.jpg b/dataset/train/hammer/img_0218.jpg new file mode 100644 index 0000000..d583fee Binary files /dev/null and b/dataset/train/hammer/img_0218.jpg differ diff --git a/dataset/train/hammer/img_0219.jpg b/dataset/train/hammer/img_0219.jpg new file mode 100644 index 0000000..db317d7 Binary files /dev/null and b/dataset/train/hammer/img_0219.jpg differ diff --git a/dataset/train/hammer/img_0220.jpg b/dataset/train/hammer/img_0220.jpg new file mode 100644 index 0000000..5bf310c Binary files /dev/null and b/dataset/train/hammer/img_0220.jpg differ diff --git a/dataset/train/hammer/img_0221.jpg b/dataset/train/hammer/img_0221.jpg new file mode 100644 index 0000000..10bfe12 Binary files /dev/null and b/dataset/train/hammer/img_0221.jpg differ diff --git a/dataset/train/hammer/img_0222.jpg b/dataset/train/hammer/img_0222.jpg new file mode 100644 index 0000000..46c71b1 Binary files /dev/null and b/dataset/train/hammer/img_0222.jpg differ diff --git a/dataset/train/hammer/img_0223.jpg b/dataset/train/hammer/img_0223.jpg new file mode 100644 index 0000000..51a96ce Binary files /dev/null and b/dataset/train/hammer/img_0223.jpg differ diff --git a/dataset/train/hammer/img_0224.jpg b/dataset/train/hammer/img_0224.jpg new file mode 100644 index 0000000..28b4149 Binary files /dev/null and b/dataset/train/hammer/img_0224.jpg differ diff --git a/dataset/train/hammer/img_0225.jpg b/dataset/train/hammer/img_0225.jpg new file mode 100644 index 0000000..e5bb83e Binary files /dev/null and b/dataset/train/hammer/img_0225.jpg differ diff --git a/dataset/train/hammer/img_0226.jpg b/dataset/train/hammer/img_0226.jpg new file mode 100644 index 0000000..872627c Binary files /dev/null and b/dataset/train/hammer/img_0226.jpg differ diff --git a/dataset/train/hammer/img_0227.jpg b/dataset/train/hammer/img_0227.jpg new file mode 100644 index 0000000..1a5d0b6 Binary files /dev/null and b/dataset/train/hammer/img_0227.jpg differ diff --git a/dataset/train/hammer/img_0228.jpg b/dataset/train/hammer/img_0228.jpg new file mode 100644 index 0000000..2ba57e5 Binary files /dev/null and b/dataset/train/hammer/img_0228.jpg differ diff --git a/dataset/train/hammer/img_0229.jpg b/dataset/train/hammer/img_0229.jpg new file mode 100644 index 0000000..7a654e8 Binary files /dev/null and b/dataset/train/hammer/img_0229.jpg differ diff --git a/dataset/train/hammer/img_0230.jpg b/dataset/train/hammer/img_0230.jpg new file mode 100644 index 0000000..79e1347 Binary files /dev/null and b/dataset/train/hammer/img_0230.jpg differ diff --git a/dataset/train/hammer/img_0231.jpg b/dataset/train/hammer/img_0231.jpg new file mode 100644 index 0000000..f393db4 Binary files /dev/null and b/dataset/train/hammer/img_0231.jpg differ diff --git a/dataset/train/hammer/img_0232.jpg b/dataset/train/hammer/img_0232.jpg new file mode 100644 index 0000000..4d2b7e4 Binary files /dev/null and b/dataset/train/hammer/img_0232.jpg differ diff --git a/dataset/train/hammer/img_0233.jpg b/dataset/train/hammer/img_0233.jpg new file mode 100644 index 0000000..fdd17e9 Binary files /dev/null and b/dataset/train/hammer/img_0233.jpg differ diff --git a/dataset/train/hammer/img_0234.jpg b/dataset/train/hammer/img_0234.jpg new file mode 100644 index 0000000..a3464fb Binary files /dev/null and b/dataset/train/hammer/img_0234.jpg differ diff --git a/dataset/train/hammer/img_0235.jpg b/dataset/train/hammer/img_0235.jpg new file mode 100644 index 0000000..5c3727f Binary files /dev/null and b/dataset/train/hammer/img_0235.jpg differ diff --git a/dataset/train/hammer/img_0236.jpg b/dataset/train/hammer/img_0236.jpg new file mode 100644 index 0000000..84ee897 Binary files /dev/null and b/dataset/train/hammer/img_0236.jpg differ diff --git a/dataset/train/hammer/img_0237.jpg b/dataset/train/hammer/img_0237.jpg new file mode 100644 index 0000000..9ecefa2 Binary files /dev/null and b/dataset/train/hammer/img_0237.jpg differ diff --git a/dataset/train/hammer/img_0238.jpg b/dataset/train/hammer/img_0238.jpg new file mode 100644 index 0000000..0c6c34e Binary files /dev/null and b/dataset/train/hammer/img_0238.jpg differ diff --git a/dataset/train/hammer/img_0239.jpg b/dataset/train/hammer/img_0239.jpg new file mode 100644 index 0000000..f426aa6 Binary files /dev/null and b/dataset/train/hammer/img_0239.jpg differ diff --git a/dataset/train/hammer/img_0240.jpg b/dataset/train/hammer/img_0240.jpg new file mode 100644 index 0000000..77e91d7 Binary files /dev/null and b/dataset/train/hammer/img_0240.jpg differ diff --git a/dataset/train/hammer/img_0241.jpg b/dataset/train/hammer/img_0241.jpg new file mode 100644 index 0000000..f928835 Binary files /dev/null and b/dataset/train/hammer/img_0241.jpg differ diff --git a/dataset/train/hammer/img_0242.jpg b/dataset/train/hammer/img_0242.jpg new file mode 100644 index 0000000..d0e029f Binary files /dev/null and b/dataset/train/hammer/img_0242.jpg differ diff --git a/dataset/train/hammer/img_0243.jpg b/dataset/train/hammer/img_0243.jpg new file mode 100644 index 0000000..46e5f45 Binary files /dev/null and b/dataset/train/hammer/img_0243.jpg differ diff --git a/dataset/train/hammer/img_0244.jpg b/dataset/train/hammer/img_0244.jpg new file mode 100644 index 0000000..d432008 Binary files /dev/null and b/dataset/train/hammer/img_0244.jpg differ diff --git a/dataset/train/hammer/img_0245.jpg b/dataset/train/hammer/img_0245.jpg new file mode 100644 index 0000000..f17f338 Binary files /dev/null and b/dataset/train/hammer/img_0245.jpg differ diff --git a/dataset/train/hammer/img_0246.jpg b/dataset/train/hammer/img_0246.jpg new file mode 100644 index 0000000..e2fdb26 Binary files /dev/null and b/dataset/train/hammer/img_0246.jpg differ diff --git a/dataset/train/hammer/img_0247.jpg b/dataset/train/hammer/img_0247.jpg new file mode 100644 index 0000000..a2af629 Binary files /dev/null and b/dataset/train/hammer/img_0247.jpg differ diff --git a/dataset/train/hammer/img_0248.jpg b/dataset/train/hammer/img_0248.jpg new file mode 100644 index 0000000..8e58afd Binary files /dev/null and b/dataset/train/hammer/img_0248.jpg differ diff --git a/dataset/train/hammer/img_0249.jpg b/dataset/train/hammer/img_0249.jpg new file mode 100644 index 0000000..bb72726 Binary files /dev/null and b/dataset/train/hammer/img_0249.jpg differ diff --git a/dataset/train/hammer/img_0250.jpg b/dataset/train/hammer/img_0250.jpg new file mode 100644 index 0000000..9d4c5f5 Binary files /dev/null and b/dataset/train/hammer/img_0250.jpg differ diff --git a/dataset/train/hammer/img_0251.jpg b/dataset/train/hammer/img_0251.jpg new file mode 100644 index 0000000..f6900f1 Binary files /dev/null and b/dataset/train/hammer/img_0251.jpg differ diff --git a/dataset/train/hammer/img_0252.jpg b/dataset/train/hammer/img_0252.jpg new file mode 100644 index 0000000..000c47a Binary files /dev/null and b/dataset/train/hammer/img_0252.jpg differ diff --git a/dataset/train/hammer/img_0253.jpg b/dataset/train/hammer/img_0253.jpg new file mode 100644 index 0000000..58776da Binary files /dev/null and b/dataset/train/hammer/img_0253.jpg differ diff --git a/dataset/train/hammer/img_0254.jpg b/dataset/train/hammer/img_0254.jpg new file mode 100644 index 0000000..c3131b8 Binary files /dev/null and b/dataset/train/hammer/img_0254.jpg differ diff --git a/dataset/train/hammer/img_0255.jpg b/dataset/train/hammer/img_0255.jpg new file mode 100644 index 0000000..33e3ce5 Binary files /dev/null and b/dataset/train/hammer/img_0255.jpg differ diff --git a/dataset/train/hammer/img_0256.jpg b/dataset/train/hammer/img_0256.jpg new file mode 100644 index 0000000..3c021fb Binary files /dev/null and b/dataset/train/hammer/img_0256.jpg differ diff --git a/dataset/train/hammer/img_0257.jpg b/dataset/train/hammer/img_0257.jpg new file mode 100644 index 0000000..4f5e47c Binary files /dev/null and b/dataset/train/hammer/img_0257.jpg differ diff --git a/dataset/train/hammer/img_0258.jpg b/dataset/train/hammer/img_0258.jpg new file mode 100644 index 0000000..6639e86 Binary files /dev/null and b/dataset/train/hammer/img_0258.jpg differ diff --git a/dataset/train/hammer/img_0259.jpg b/dataset/train/hammer/img_0259.jpg new file mode 100644 index 0000000..818562c Binary files /dev/null and b/dataset/train/hammer/img_0259.jpg differ diff --git a/dataset/train/hammer/img_0260.jpg b/dataset/train/hammer/img_0260.jpg new file mode 100644 index 0000000..634ab13 Binary files /dev/null and b/dataset/train/hammer/img_0260.jpg differ diff --git a/dataset/train/hammer/img_0261.jpg b/dataset/train/hammer/img_0261.jpg new file mode 100644 index 0000000..48143e3 Binary files /dev/null and b/dataset/train/hammer/img_0261.jpg differ diff --git a/dataset/train/hammer/img_0262.jpg b/dataset/train/hammer/img_0262.jpg new file mode 100644 index 0000000..d4f24d2 Binary files /dev/null and b/dataset/train/hammer/img_0262.jpg differ diff --git a/dataset/train/hammer/img_0263.jpg b/dataset/train/hammer/img_0263.jpg new file mode 100644 index 0000000..48a01e6 Binary files /dev/null and b/dataset/train/hammer/img_0263.jpg differ diff --git a/dataset/train/hammer/img_0264.jpg b/dataset/train/hammer/img_0264.jpg new file mode 100644 index 0000000..4f7b1df Binary files /dev/null and b/dataset/train/hammer/img_0264.jpg differ diff --git a/dataset/train/hammer/img_0265.jpg b/dataset/train/hammer/img_0265.jpg new file mode 100644 index 0000000..e452d2f Binary files /dev/null and b/dataset/train/hammer/img_0265.jpg differ diff --git a/dataset/train/hammer/img_0266.jpg b/dataset/train/hammer/img_0266.jpg new file mode 100644 index 0000000..6924ed3 Binary files /dev/null and b/dataset/train/hammer/img_0266.jpg differ diff --git a/dataset/train/hammer/img_0267.jpg b/dataset/train/hammer/img_0267.jpg new file mode 100644 index 0000000..70965fa Binary files /dev/null and b/dataset/train/hammer/img_0267.jpg differ diff --git a/dataset/train/hammer/img_0268.jpg b/dataset/train/hammer/img_0268.jpg new file mode 100644 index 0000000..b937c92 Binary files /dev/null and b/dataset/train/hammer/img_0268.jpg differ diff --git a/dataset/train/hammer/img_0269.jpg b/dataset/train/hammer/img_0269.jpg new file mode 100644 index 0000000..2080405 Binary files /dev/null and b/dataset/train/hammer/img_0269.jpg differ diff --git a/dataset/train/hammer/img_0270.jpg b/dataset/train/hammer/img_0270.jpg new file mode 100644 index 0000000..ff82ebc Binary files /dev/null and b/dataset/train/hammer/img_0270.jpg differ diff --git a/dataset/train/hammer/img_0271.jpg b/dataset/train/hammer/img_0271.jpg new file mode 100644 index 0000000..3d7a3ac Binary files /dev/null and b/dataset/train/hammer/img_0271.jpg differ diff --git a/dataset/train/hammer/img_0272.jpg b/dataset/train/hammer/img_0272.jpg new file mode 100644 index 0000000..6686ca5 Binary files /dev/null and b/dataset/train/hammer/img_0272.jpg differ diff --git a/dataset/train/hammer/img_0273.jpg b/dataset/train/hammer/img_0273.jpg new file mode 100644 index 0000000..63a160f Binary files /dev/null and b/dataset/train/hammer/img_0273.jpg differ diff --git a/dataset/train/hammer/img_0274.jpg b/dataset/train/hammer/img_0274.jpg new file mode 100644 index 0000000..eb9ef47 Binary files /dev/null and b/dataset/train/hammer/img_0274.jpg differ diff --git a/dataset/train/hammer/img_0275.jpg b/dataset/train/hammer/img_0275.jpg new file mode 100644 index 0000000..aad25df Binary files /dev/null and b/dataset/train/hammer/img_0275.jpg differ diff --git a/dataset/train/hammer/img_0276.jpg b/dataset/train/hammer/img_0276.jpg new file mode 100644 index 0000000..facbb1c Binary files /dev/null and b/dataset/train/hammer/img_0276.jpg differ diff --git a/dataset/train/hammer/img_0277.jpg b/dataset/train/hammer/img_0277.jpg new file mode 100644 index 0000000..d52f5be Binary files /dev/null and b/dataset/train/hammer/img_0277.jpg differ diff --git a/dataset/train/hammer/img_0278.jpg b/dataset/train/hammer/img_0278.jpg new file mode 100644 index 0000000..a1c52d7 Binary files /dev/null and b/dataset/train/hammer/img_0278.jpg differ diff --git a/dataset/train/hammer/img_0279.jpg b/dataset/train/hammer/img_0279.jpg new file mode 100644 index 0000000..fab8f66 Binary files /dev/null and b/dataset/train/hammer/img_0279.jpg differ diff --git a/dataset/train/hammer/img_0280.jpg b/dataset/train/hammer/img_0280.jpg new file mode 100644 index 0000000..7716e46 Binary files /dev/null and b/dataset/train/hammer/img_0280.jpg differ diff --git a/dataset/train/hammer/img_0281.jpg b/dataset/train/hammer/img_0281.jpg new file mode 100644 index 0000000..96674a8 Binary files /dev/null and b/dataset/train/hammer/img_0281.jpg differ diff --git a/dataset/train/hammer/img_0282.jpg b/dataset/train/hammer/img_0282.jpg new file mode 100644 index 0000000..32f3600 Binary files /dev/null and b/dataset/train/hammer/img_0282.jpg differ diff --git a/dataset/train/hammer/img_0283.jpg b/dataset/train/hammer/img_0283.jpg new file mode 100644 index 0000000..f98756b Binary files /dev/null and b/dataset/train/hammer/img_0283.jpg differ diff --git a/dataset/train/hammer/img_0284.jpg b/dataset/train/hammer/img_0284.jpg new file mode 100644 index 0000000..b241f17 Binary files /dev/null and b/dataset/train/hammer/img_0284.jpg differ diff --git a/dataset/train/hammer/img_0285.jpg b/dataset/train/hammer/img_0285.jpg new file mode 100644 index 0000000..979cd4f Binary files /dev/null and b/dataset/train/hammer/img_0285.jpg differ diff --git a/dataset/train/hammer/img_0286.jpg b/dataset/train/hammer/img_0286.jpg new file mode 100644 index 0000000..02c541d Binary files /dev/null and b/dataset/train/hammer/img_0286.jpg differ diff --git a/dataset/train/hammer/img_0287.jpg b/dataset/train/hammer/img_0287.jpg new file mode 100644 index 0000000..b40bc74 Binary files /dev/null and b/dataset/train/hammer/img_0287.jpg differ diff --git a/dataset/train/hammer/img_0288.jpg b/dataset/train/hammer/img_0288.jpg new file mode 100644 index 0000000..af09a43 Binary files /dev/null and b/dataset/train/hammer/img_0288.jpg differ diff --git a/dataset/train/hammer/img_0289.jpg b/dataset/train/hammer/img_0289.jpg new file mode 100644 index 0000000..b4427a5 Binary files /dev/null and b/dataset/train/hammer/img_0289.jpg differ diff --git a/dataset/train/hammer/img_0290.jpg b/dataset/train/hammer/img_0290.jpg new file mode 100644 index 0000000..ba16205 Binary files /dev/null and b/dataset/train/hammer/img_0290.jpg differ diff --git a/dataset/train/hammer/img_0291.jpg b/dataset/train/hammer/img_0291.jpg new file mode 100644 index 0000000..2dc353e Binary files /dev/null and b/dataset/train/hammer/img_0291.jpg differ diff --git a/dataset/train/hammer/img_0292.jpg b/dataset/train/hammer/img_0292.jpg new file mode 100644 index 0000000..8f1bf6f Binary files /dev/null and b/dataset/train/hammer/img_0292.jpg differ diff --git a/dataset/train/hammer/img_0293.jpg b/dataset/train/hammer/img_0293.jpg new file mode 100644 index 0000000..076f7e3 Binary files /dev/null and b/dataset/train/hammer/img_0293.jpg differ diff --git a/dataset/train/hammer/img_0294.jpg b/dataset/train/hammer/img_0294.jpg new file mode 100644 index 0000000..32d6e5f Binary files /dev/null and b/dataset/train/hammer/img_0294.jpg differ diff --git a/dataset/train/hammer/img_0295.jpg b/dataset/train/hammer/img_0295.jpg new file mode 100644 index 0000000..cbc6b31 Binary files /dev/null and b/dataset/train/hammer/img_0295.jpg differ diff --git a/dataset/train/hammer/img_0296.jpg b/dataset/train/hammer/img_0296.jpg new file mode 100644 index 0000000..a881463 Binary files /dev/null and b/dataset/train/hammer/img_0296.jpg differ diff --git a/dataset/train/hammer/img_0297.jpg b/dataset/train/hammer/img_0297.jpg new file mode 100644 index 0000000..4bfee2e Binary files /dev/null and b/dataset/train/hammer/img_0297.jpg differ diff --git a/dataset/train/hammer/img_0298.jpg b/dataset/train/hammer/img_0298.jpg new file mode 100644 index 0000000..018b9e7 Binary files /dev/null and b/dataset/train/hammer/img_0298.jpg differ diff --git a/dataset/train/hammer/img_0299.jpg b/dataset/train/hammer/img_0299.jpg new file mode 100644 index 0000000..3577621 Binary files /dev/null and b/dataset/train/hammer/img_0299.jpg differ diff --git a/dataset/train/pliers/img_0000.jpg b/dataset/train/pliers/img_0000.jpg new file mode 100644 index 0000000..5dc4140 Binary files /dev/null and b/dataset/train/pliers/img_0000.jpg differ diff --git a/dataset/train/pliers/img_0001.jpg b/dataset/train/pliers/img_0001.jpg new file mode 100644 index 0000000..3812392 Binary files /dev/null and b/dataset/train/pliers/img_0001.jpg differ diff --git a/dataset/train/pliers/img_0002.jpg b/dataset/train/pliers/img_0002.jpg new file mode 100644 index 0000000..9968a3b Binary files /dev/null and b/dataset/train/pliers/img_0002.jpg differ diff --git a/dataset/train/pliers/img_0003.jpg b/dataset/train/pliers/img_0003.jpg new file mode 100644 index 0000000..7da3f21 Binary files /dev/null and b/dataset/train/pliers/img_0003.jpg differ diff --git a/dataset/train/pliers/img_0004.jpg b/dataset/train/pliers/img_0004.jpg new file mode 100644 index 0000000..1e8948e Binary files /dev/null and b/dataset/train/pliers/img_0004.jpg differ diff --git a/dataset/train/pliers/img_0005.jpg b/dataset/train/pliers/img_0005.jpg new file mode 100644 index 0000000..b51d2c8 Binary files /dev/null and b/dataset/train/pliers/img_0005.jpg differ diff --git a/dataset/train/pliers/img_0006.jpg b/dataset/train/pliers/img_0006.jpg new file mode 100644 index 0000000..80f61da Binary files /dev/null and b/dataset/train/pliers/img_0006.jpg differ diff --git a/dataset/train/pliers/img_0007.jpg b/dataset/train/pliers/img_0007.jpg new file mode 100644 index 0000000..7079fa6 Binary files /dev/null and b/dataset/train/pliers/img_0007.jpg differ diff --git a/dataset/train/pliers/img_0008.jpg b/dataset/train/pliers/img_0008.jpg new file mode 100644 index 0000000..fe2d834 Binary files /dev/null and b/dataset/train/pliers/img_0008.jpg differ diff --git a/dataset/train/pliers/img_0009.jpg b/dataset/train/pliers/img_0009.jpg new file mode 100644 index 0000000..6446a75 Binary files /dev/null and b/dataset/train/pliers/img_0009.jpg differ diff --git a/dataset/train/pliers/img_0010.jpg b/dataset/train/pliers/img_0010.jpg new file mode 100644 index 0000000..a0d0c74 Binary files /dev/null and b/dataset/train/pliers/img_0010.jpg differ diff --git a/dataset/train/pliers/img_0011.jpg b/dataset/train/pliers/img_0011.jpg new file mode 100644 index 0000000..f203fdd Binary files /dev/null and b/dataset/train/pliers/img_0011.jpg differ diff --git a/dataset/train/pliers/img_0012.jpg b/dataset/train/pliers/img_0012.jpg new file mode 100644 index 0000000..4672a6c Binary files /dev/null and b/dataset/train/pliers/img_0012.jpg differ diff --git a/dataset/train/pliers/img_0013.jpg b/dataset/train/pliers/img_0013.jpg new file mode 100644 index 0000000..50aaf8f Binary files /dev/null and b/dataset/train/pliers/img_0013.jpg differ diff --git a/dataset/train/pliers/img_0014.jpg b/dataset/train/pliers/img_0014.jpg new file mode 100644 index 0000000..f87187b Binary files /dev/null and b/dataset/train/pliers/img_0014.jpg differ diff --git a/dataset/train/pliers/img_0015.jpg b/dataset/train/pliers/img_0015.jpg new file mode 100644 index 0000000..0313d13 Binary files /dev/null and b/dataset/train/pliers/img_0015.jpg differ diff --git a/dataset/train/pliers/img_0016.jpg b/dataset/train/pliers/img_0016.jpg new file mode 100644 index 0000000..5f8ec21 Binary files /dev/null and b/dataset/train/pliers/img_0016.jpg differ diff --git a/dataset/train/pliers/img_0017.jpg b/dataset/train/pliers/img_0017.jpg new file mode 100644 index 0000000..3f9f6c9 Binary files /dev/null and b/dataset/train/pliers/img_0017.jpg differ diff --git a/dataset/train/pliers/img_0018.jpg b/dataset/train/pliers/img_0018.jpg new file mode 100644 index 0000000..9a80498 Binary files /dev/null and b/dataset/train/pliers/img_0018.jpg differ diff --git a/dataset/train/pliers/img_0019.jpg b/dataset/train/pliers/img_0019.jpg new file mode 100644 index 0000000..555f4df Binary files /dev/null and b/dataset/train/pliers/img_0019.jpg differ diff --git a/dataset/train/pliers/img_0020.jpg b/dataset/train/pliers/img_0020.jpg new file mode 100644 index 0000000..91e7da9 Binary files /dev/null and b/dataset/train/pliers/img_0020.jpg differ diff --git a/dataset/train/pliers/img_0021.jpg b/dataset/train/pliers/img_0021.jpg new file mode 100644 index 0000000..17c62af Binary files /dev/null and b/dataset/train/pliers/img_0021.jpg differ diff --git a/dataset/train/pliers/img_0022.jpg b/dataset/train/pliers/img_0022.jpg new file mode 100644 index 0000000..e27aa1f Binary files /dev/null and b/dataset/train/pliers/img_0022.jpg differ diff --git a/dataset/train/pliers/img_0023.jpg b/dataset/train/pliers/img_0023.jpg new file mode 100644 index 0000000..d046bc8 Binary files /dev/null and b/dataset/train/pliers/img_0023.jpg differ diff --git a/dataset/train/pliers/img_0024.jpg b/dataset/train/pliers/img_0024.jpg new file mode 100644 index 0000000..d521ee4 Binary files /dev/null and b/dataset/train/pliers/img_0024.jpg differ diff --git a/dataset/train/pliers/img_0025.jpg b/dataset/train/pliers/img_0025.jpg new file mode 100644 index 0000000..48a16ee Binary files /dev/null and b/dataset/train/pliers/img_0025.jpg differ diff --git a/dataset/train/pliers/img_0026.jpg b/dataset/train/pliers/img_0026.jpg new file mode 100644 index 0000000..fc6b206 Binary files /dev/null and b/dataset/train/pliers/img_0026.jpg differ diff --git a/dataset/train/pliers/img_0027.jpg b/dataset/train/pliers/img_0027.jpg new file mode 100644 index 0000000..b914607 Binary files /dev/null and b/dataset/train/pliers/img_0027.jpg differ diff --git a/dataset/train/pliers/img_0028.jpg b/dataset/train/pliers/img_0028.jpg new file mode 100644 index 0000000..2046376 Binary files /dev/null and b/dataset/train/pliers/img_0028.jpg differ diff --git a/dataset/train/pliers/img_0029.jpg b/dataset/train/pliers/img_0029.jpg new file mode 100644 index 0000000..e81d77f Binary files /dev/null and b/dataset/train/pliers/img_0029.jpg differ diff --git a/dataset/train/pliers/img_0030.jpg b/dataset/train/pliers/img_0030.jpg new file mode 100644 index 0000000..24ee509 Binary files /dev/null and b/dataset/train/pliers/img_0030.jpg differ diff --git a/dataset/train/pliers/img_0031.jpg b/dataset/train/pliers/img_0031.jpg new file mode 100644 index 0000000..0fffe08 Binary files /dev/null and b/dataset/train/pliers/img_0031.jpg differ diff --git a/dataset/train/pliers/img_0032.jpg b/dataset/train/pliers/img_0032.jpg new file mode 100644 index 0000000..37a79d4 Binary files /dev/null and b/dataset/train/pliers/img_0032.jpg differ diff --git a/dataset/train/pliers/img_0033.jpg b/dataset/train/pliers/img_0033.jpg new file mode 100644 index 0000000..8844632 Binary files /dev/null and b/dataset/train/pliers/img_0033.jpg differ diff --git a/dataset/train/pliers/img_0034.jpg b/dataset/train/pliers/img_0034.jpg new file mode 100644 index 0000000..f10e7eb Binary files /dev/null and b/dataset/train/pliers/img_0034.jpg differ diff --git a/dataset/train/pliers/img_0035.jpg b/dataset/train/pliers/img_0035.jpg new file mode 100644 index 0000000..440180c Binary files /dev/null and b/dataset/train/pliers/img_0035.jpg differ diff --git a/dataset/train/pliers/img_0036.jpg b/dataset/train/pliers/img_0036.jpg new file mode 100644 index 0000000..5c62058 Binary files /dev/null and b/dataset/train/pliers/img_0036.jpg differ diff --git a/dataset/train/pliers/img_0037.jpg b/dataset/train/pliers/img_0037.jpg new file mode 100644 index 0000000..7a7e455 Binary files /dev/null and b/dataset/train/pliers/img_0037.jpg differ diff --git a/dataset/train/pliers/img_0038.jpg b/dataset/train/pliers/img_0038.jpg new file mode 100644 index 0000000..9104806 Binary files /dev/null and b/dataset/train/pliers/img_0038.jpg differ diff --git a/dataset/train/pliers/img_0039.jpg b/dataset/train/pliers/img_0039.jpg new file mode 100644 index 0000000..bff874c Binary files /dev/null and b/dataset/train/pliers/img_0039.jpg differ diff --git a/dataset/train/pliers/img_0040.jpg b/dataset/train/pliers/img_0040.jpg new file mode 100644 index 0000000..5370635 Binary files /dev/null and b/dataset/train/pliers/img_0040.jpg differ diff --git a/dataset/train/pliers/img_0041.jpg b/dataset/train/pliers/img_0041.jpg new file mode 100644 index 0000000..988001b Binary files /dev/null and b/dataset/train/pliers/img_0041.jpg differ diff --git a/dataset/train/pliers/img_0042.jpg b/dataset/train/pliers/img_0042.jpg new file mode 100644 index 0000000..f443eff Binary files /dev/null and b/dataset/train/pliers/img_0042.jpg differ diff --git a/dataset/train/pliers/img_0043.jpg b/dataset/train/pliers/img_0043.jpg new file mode 100644 index 0000000..ebfe348 Binary files /dev/null and b/dataset/train/pliers/img_0043.jpg differ diff --git a/dataset/train/pliers/img_0044.jpg b/dataset/train/pliers/img_0044.jpg new file mode 100644 index 0000000..23d8ac8 Binary files /dev/null and b/dataset/train/pliers/img_0044.jpg differ diff --git a/dataset/train/pliers/img_0045.jpg b/dataset/train/pliers/img_0045.jpg new file mode 100644 index 0000000..df0f052 Binary files /dev/null and b/dataset/train/pliers/img_0045.jpg differ diff --git a/dataset/train/pliers/img_0046.jpg b/dataset/train/pliers/img_0046.jpg new file mode 100644 index 0000000..b8aad6f Binary files /dev/null and b/dataset/train/pliers/img_0046.jpg differ diff --git a/dataset/train/pliers/img_0047.jpg b/dataset/train/pliers/img_0047.jpg new file mode 100644 index 0000000..b36a2b3 Binary files /dev/null and b/dataset/train/pliers/img_0047.jpg differ diff --git a/dataset/train/pliers/img_0048.jpg b/dataset/train/pliers/img_0048.jpg new file mode 100644 index 0000000..a517249 Binary files /dev/null and b/dataset/train/pliers/img_0048.jpg differ diff --git a/dataset/train/pliers/img_0049.jpg b/dataset/train/pliers/img_0049.jpg new file mode 100644 index 0000000..a866f47 Binary files /dev/null and b/dataset/train/pliers/img_0049.jpg differ diff --git a/dataset/train/pliers/img_0050.jpg b/dataset/train/pliers/img_0050.jpg new file mode 100644 index 0000000..6da4297 Binary files /dev/null and b/dataset/train/pliers/img_0050.jpg differ diff --git a/dataset/train/pliers/img_0051.jpg b/dataset/train/pliers/img_0051.jpg new file mode 100644 index 0000000..7d59166 Binary files /dev/null and b/dataset/train/pliers/img_0051.jpg differ diff --git a/dataset/train/pliers/img_0052.jpg b/dataset/train/pliers/img_0052.jpg new file mode 100644 index 0000000..aaa6098 Binary files /dev/null and b/dataset/train/pliers/img_0052.jpg differ diff --git a/dataset/train/pliers/img_0053.jpg b/dataset/train/pliers/img_0053.jpg new file mode 100644 index 0000000..4077e6b Binary files /dev/null and b/dataset/train/pliers/img_0053.jpg differ diff --git a/dataset/train/pliers/img_0054.jpg b/dataset/train/pliers/img_0054.jpg new file mode 100644 index 0000000..0ecd735 Binary files /dev/null and b/dataset/train/pliers/img_0054.jpg differ diff --git a/dataset/train/pliers/img_0055.jpg b/dataset/train/pliers/img_0055.jpg new file mode 100644 index 0000000..b33b74d Binary files /dev/null and b/dataset/train/pliers/img_0055.jpg differ diff --git a/dataset/train/pliers/img_0056.jpg b/dataset/train/pliers/img_0056.jpg new file mode 100644 index 0000000..b93e5ea Binary files /dev/null and b/dataset/train/pliers/img_0056.jpg differ diff --git a/dataset/train/pliers/img_0057.jpg b/dataset/train/pliers/img_0057.jpg new file mode 100644 index 0000000..ac32a36 Binary files /dev/null and b/dataset/train/pliers/img_0057.jpg differ diff --git a/dataset/train/pliers/img_0058.jpg b/dataset/train/pliers/img_0058.jpg new file mode 100644 index 0000000..c581bcb Binary files /dev/null and b/dataset/train/pliers/img_0058.jpg differ diff --git a/dataset/train/pliers/img_0059.jpg b/dataset/train/pliers/img_0059.jpg new file mode 100644 index 0000000..a09c8ec Binary files /dev/null and b/dataset/train/pliers/img_0059.jpg differ diff --git a/dataset/train/pliers/img_0060.jpg b/dataset/train/pliers/img_0060.jpg new file mode 100644 index 0000000..f5b4a48 Binary files /dev/null and b/dataset/train/pliers/img_0060.jpg differ diff --git a/dataset/train/pliers/img_0061.jpg b/dataset/train/pliers/img_0061.jpg new file mode 100644 index 0000000..9da5a03 Binary files /dev/null and b/dataset/train/pliers/img_0061.jpg differ diff --git a/dataset/train/pliers/img_0062.jpg b/dataset/train/pliers/img_0062.jpg new file mode 100644 index 0000000..cf9aa21 Binary files /dev/null and b/dataset/train/pliers/img_0062.jpg differ diff --git a/dataset/train/pliers/img_0063.jpg b/dataset/train/pliers/img_0063.jpg new file mode 100644 index 0000000..149a22c Binary files /dev/null and b/dataset/train/pliers/img_0063.jpg differ diff --git a/dataset/train/pliers/img_0064.jpg b/dataset/train/pliers/img_0064.jpg new file mode 100644 index 0000000..594e0df Binary files /dev/null and b/dataset/train/pliers/img_0064.jpg differ diff --git a/dataset/train/pliers/img_0065.jpg b/dataset/train/pliers/img_0065.jpg new file mode 100644 index 0000000..5fa3581 Binary files /dev/null and b/dataset/train/pliers/img_0065.jpg differ diff --git a/dataset/train/pliers/img_0066.jpg b/dataset/train/pliers/img_0066.jpg new file mode 100644 index 0000000..a09e808 Binary files /dev/null and b/dataset/train/pliers/img_0066.jpg differ diff --git a/dataset/train/pliers/img_0067.jpg b/dataset/train/pliers/img_0067.jpg new file mode 100644 index 0000000..831bd68 Binary files /dev/null and b/dataset/train/pliers/img_0067.jpg differ diff --git a/dataset/train/pliers/img_0068.jpg b/dataset/train/pliers/img_0068.jpg new file mode 100644 index 0000000..fd63857 Binary files /dev/null and b/dataset/train/pliers/img_0068.jpg differ diff --git a/dataset/train/pliers/img_0069.jpg b/dataset/train/pliers/img_0069.jpg new file mode 100644 index 0000000..5e6e277 Binary files /dev/null and b/dataset/train/pliers/img_0069.jpg differ diff --git a/dataset/train/pliers/img_0070.jpg b/dataset/train/pliers/img_0070.jpg new file mode 100644 index 0000000..e4f3b0f Binary files /dev/null and b/dataset/train/pliers/img_0070.jpg differ diff --git a/dataset/train/pliers/img_0071.jpg b/dataset/train/pliers/img_0071.jpg new file mode 100644 index 0000000..f734b5e Binary files /dev/null and b/dataset/train/pliers/img_0071.jpg differ diff --git a/dataset/train/pliers/img_0072.jpg b/dataset/train/pliers/img_0072.jpg new file mode 100644 index 0000000..9ce68c4 Binary files /dev/null and b/dataset/train/pliers/img_0072.jpg differ diff --git a/dataset/train/pliers/img_0073.jpg b/dataset/train/pliers/img_0073.jpg new file mode 100644 index 0000000..734f6a2 Binary files /dev/null and b/dataset/train/pliers/img_0073.jpg differ diff --git a/dataset/train/pliers/img_0074.jpg b/dataset/train/pliers/img_0074.jpg new file mode 100644 index 0000000..28dd9a6 Binary files /dev/null and b/dataset/train/pliers/img_0074.jpg differ diff --git a/dataset/train/pliers/img_0075.jpg b/dataset/train/pliers/img_0075.jpg new file mode 100644 index 0000000..90a8c8b Binary files /dev/null and b/dataset/train/pliers/img_0075.jpg differ diff --git a/dataset/train/pliers/img_0076.jpg b/dataset/train/pliers/img_0076.jpg new file mode 100644 index 0000000..22fd395 Binary files /dev/null and b/dataset/train/pliers/img_0076.jpg differ diff --git a/dataset/train/pliers/img_0077.jpg b/dataset/train/pliers/img_0077.jpg new file mode 100644 index 0000000..8293eb4 Binary files /dev/null and b/dataset/train/pliers/img_0077.jpg differ diff --git a/dataset/train/pliers/img_0078.jpg b/dataset/train/pliers/img_0078.jpg new file mode 100644 index 0000000..14d655a Binary files /dev/null and b/dataset/train/pliers/img_0078.jpg differ diff --git a/dataset/train/pliers/img_0079.jpg b/dataset/train/pliers/img_0079.jpg new file mode 100644 index 0000000..ea7575c Binary files /dev/null and b/dataset/train/pliers/img_0079.jpg differ diff --git a/dataset/train/pliers/img_0080.jpg b/dataset/train/pliers/img_0080.jpg new file mode 100644 index 0000000..c7bb640 Binary files /dev/null and b/dataset/train/pliers/img_0080.jpg differ diff --git a/dataset/train/pliers/img_0081.jpg b/dataset/train/pliers/img_0081.jpg new file mode 100644 index 0000000..507d76f Binary files /dev/null and b/dataset/train/pliers/img_0081.jpg differ diff --git a/dataset/train/pliers/img_0082.jpg b/dataset/train/pliers/img_0082.jpg new file mode 100644 index 0000000..4bea6d4 Binary files /dev/null and b/dataset/train/pliers/img_0082.jpg differ diff --git a/dataset/train/pliers/img_0083.jpg b/dataset/train/pliers/img_0083.jpg new file mode 100644 index 0000000..e0b77fd Binary files /dev/null and b/dataset/train/pliers/img_0083.jpg differ diff --git a/dataset/train/pliers/img_0084.jpg b/dataset/train/pliers/img_0084.jpg new file mode 100644 index 0000000..39ffb86 Binary files /dev/null and b/dataset/train/pliers/img_0084.jpg differ diff --git a/dataset/train/pliers/img_0085.jpg b/dataset/train/pliers/img_0085.jpg new file mode 100644 index 0000000..cfbc4be Binary files /dev/null and b/dataset/train/pliers/img_0085.jpg differ diff --git a/dataset/train/pliers/img_0086.jpg b/dataset/train/pliers/img_0086.jpg new file mode 100644 index 0000000..3af6925 Binary files /dev/null and b/dataset/train/pliers/img_0086.jpg differ diff --git a/dataset/train/pliers/img_0087.jpg b/dataset/train/pliers/img_0087.jpg new file mode 100644 index 0000000..fd8bde9 Binary files /dev/null and b/dataset/train/pliers/img_0087.jpg differ diff --git a/dataset/train/pliers/img_0088.jpg b/dataset/train/pliers/img_0088.jpg new file mode 100644 index 0000000..058bf1f Binary files /dev/null and b/dataset/train/pliers/img_0088.jpg differ diff --git a/dataset/train/pliers/img_0089.jpg b/dataset/train/pliers/img_0089.jpg new file mode 100644 index 0000000..04d21ec Binary files /dev/null and b/dataset/train/pliers/img_0089.jpg differ diff --git a/dataset/train/pliers/img_0090.jpg b/dataset/train/pliers/img_0090.jpg new file mode 100644 index 0000000..0475328 Binary files /dev/null and b/dataset/train/pliers/img_0090.jpg differ diff --git a/dataset/train/pliers/img_0091.jpg b/dataset/train/pliers/img_0091.jpg new file mode 100644 index 0000000..35ccd44 Binary files /dev/null and b/dataset/train/pliers/img_0091.jpg differ diff --git a/dataset/train/pliers/img_0092.jpg b/dataset/train/pliers/img_0092.jpg new file mode 100644 index 0000000..ba3a4b7 Binary files /dev/null and b/dataset/train/pliers/img_0092.jpg differ diff --git a/dataset/train/pliers/img_0093.jpg b/dataset/train/pliers/img_0093.jpg new file mode 100644 index 0000000..2ccba22 Binary files /dev/null and b/dataset/train/pliers/img_0093.jpg differ diff --git a/dataset/train/pliers/img_0094.jpg b/dataset/train/pliers/img_0094.jpg new file mode 100644 index 0000000..1de940a Binary files /dev/null and b/dataset/train/pliers/img_0094.jpg differ diff --git a/dataset/train/pliers/img_0095.jpg b/dataset/train/pliers/img_0095.jpg new file mode 100644 index 0000000..e4fdff0 Binary files /dev/null and b/dataset/train/pliers/img_0095.jpg differ diff --git a/dataset/train/pliers/img_0096.jpg b/dataset/train/pliers/img_0096.jpg new file mode 100644 index 0000000..1e044b2 Binary files /dev/null and b/dataset/train/pliers/img_0096.jpg differ diff --git a/dataset/train/pliers/img_0097.jpg b/dataset/train/pliers/img_0097.jpg new file mode 100644 index 0000000..f425697 Binary files /dev/null and b/dataset/train/pliers/img_0097.jpg differ diff --git a/dataset/train/pliers/img_0098.jpg b/dataset/train/pliers/img_0098.jpg new file mode 100644 index 0000000..62950b2 Binary files /dev/null and b/dataset/train/pliers/img_0098.jpg differ diff --git a/dataset/train/pliers/img_0099.jpg b/dataset/train/pliers/img_0099.jpg new file mode 100644 index 0000000..4fd9181 Binary files /dev/null and b/dataset/train/pliers/img_0099.jpg differ diff --git a/dataset/train/pliers/img_0100.jpg b/dataset/train/pliers/img_0100.jpg new file mode 100644 index 0000000..17a1735 Binary files /dev/null and b/dataset/train/pliers/img_0100.jpg differ diff --git a/dataset/train/pliers/img_0101.jpg b/dataset/train/pliers/img_0101.jpg new file mode 100644 index 0000000..0ffc14f Binary files /dev/null and b/dataset/train/pliers/img_0101.jpg differ diff --git a/dataset/train/pliers/img_0102.jpg b/dataset/train/pliers/img_0102.jpg new file mode 100644 index 0000000..ec78588 Binary files /dev/null and b/dataset/train/pliers/img_0102.jpg differ diff --git a/dataset/train/pliers/img_0103.jpg b/dataset/train/pliers/img_0103.jpg new file mode 100644 index 0000000..b2c0157 Binary files /dev/null and b/dataset/train/pliers/img_0103.jpg differ diff --git a/dataset/train/pliers/img_0104.jpg b/dataset/train/pliers/img_0104.jpg new file mode 100644 index 0000000..c75e945 Binary files /dev/null and b/dataset/train/pliers/img_0104.jpg differ diff --git a/dataset/train/pliers/img_0105.jpg b/dataset/train/pliers/img_0105.jpg new file mode 100644 index 0000000..07b6331 Binary files /dev/null and b/dataset/train/pliers/img_0105.jpg differ diff --git a/dataset/train/pliers/img_0106.jpg b/dataset/train/pliers/img_0106.jpg new file mode 100644 index 0000000..fbc3788 Binary files /dev/null and b/dataset/train/pliers/img_0106.jpg differ diff --git a/dataset/train/pliers/img_0107.jpg b/dataset/train/pliers/img_0107.jpg new file mode 100644 index 0000000..fad3425 Binary files /dev/null and b/dataset/train/pliers/img_0107.jpg differ diff --git a/dataset/train/pliers/img_0108.jpg b/dataset/train/pliers/img_0108.jpg new file mode 100644 index 0000000..a6e39ab Binary files /dev/null and b/dataset/train/pliers/img_0108.jpg differ diff --git a/dataset/train/pliers/img_0109.jpg b/dataset/train/pliers/img_0109.jpg new file mode 100644 index 0000000..e0ba4bf Binary files /dev/null and b/dataset/train/pliers/img_0109.jpg differ diff --git a/dataset/train/pliers/img_0110.jpg b/dataset/train/pliers/img_0110.jpg new file mode 100644 index 0000000..ffddb26 Binary files /dev/null and b/dataset/train/pliers/img_0110.jpg differ diff --git a/dataset/train/pliers/img_0111.jpg b/dataset/train/pliers/img_0111.jpg new file mode 100644 index 0000000..cc019a8 Binary files /dev/null and b/dataset/train/pliers/img_0111.jpg differ diff --git a/dataset/train/pliers/img_0112.jpg b/dataset/train/pliers/img_0112.jpg new file mode 100644 index 0000000..c179290 Binary files /dev/null and b/dataset/train/pliers/img_0112.jpg differ diff --git a/dataset/train/pliers/img_0113.jpg b/dataset/train/pliers/img_0113.jpg new file mode 100644 index 0000000..4b3bd9b Binary files /dev/null and b/dataset/train/pliers/img_0113.jpg differ diff --git a/dataset/train/pliers/img_0114.jpg b/dataset/train/pliers/img_0114.jpg new file mode 100644 index 0000000..e8a20c4 Binary files /dev/null and b/dataset/train/pliers/img_0114.jpg differ diff --git a/dataset/train/pliers/img_0115.jpg b/dataset/train/pliers/img_0115.jpg new file mode 100644 index 0000000..0126452 Binary files /dev/null and b/dataset/train/pliers/img_0115.jpg differ diff --git a/dataset/train/pliers/img_0116.jpg b/dataset/train/pliers/img_0116.jpg new file mode 100644 index 0000000..a78d5ff Binary files /dev/null and b/dataset/train/pliers/img_0116.jpg differ diff --git a/dataset/train/pliers/img_0117.jpg b/dataset/train/pliers/img_0117.jpg new file mode 100644 index 0000000..629f45d Binary files /dev/null and b/dataset/train/pliers/img_0117.jpg differ diff --git a/dataset/train/pliers/img_0118.jpg b/dataset/train/pliers/img_0118.jpg new file mode 100644 index 0000000..da03f9d Binary files /dev/null and b/dataset/train/pliers/img_0118.jpg differ diff --git a/dataset/train/pliers/img_0119.jpg b/dataset/train/pliers/img_0119.jpg new file mode 100644 index 0000000..84ad77f Binary files /dev/null and b/dataset/train/pliers/img_0119.jpg differ diff --git a/dataset/train/pliers/img_0120.jpg b/dataset/train/pliers/img_0120.jpg new file mode 100644 index 0000000..482404c Binary files /dev/null and b/dataset/train/pliers/img_0120.jpg differ diff --git a/dataset/train/pliers/img_0121.jpg b/dataset/train/pliers/img_0121.jpg new file mode 100644 index 0000000..0c0a1f1 Binary files /dev/null and b/dataset/train/pliers/img_0121.jpg differ diff --git a/dataset/train/pliers/img_0122.jpg b/dataset/train/pliers/img_0122.jpg new file mode 100644 index 0000000..b2772a8 Binary files /dev/null and b/dataset/train/pliers/img_0122.jpg differ diff --git a/dataset/train/pliers/img_0123.jpg b/dataset/train/pliers/img_0123.jpg new file mode 100644 index 0000000..6accf8c Binary files /dev/null and b/dataset/train/pliers/img_0123.jpg differ diff --git a/dataset/train/pliers/img_0124.jpg b/dataset/train/pliers/img_0124.jpg new file mode 100644 index 0000000..c2e35c6 Binary files /dev/null and b/dataset/train/pliers/img_0124.jpg differ diff --git a/dataset/train/pliers/img_0125.jpg b/dataset/train/pliers/img_0125.jpg new file mode 100644 index 0000000..4b910b4 Binary files /dev/null and b/dataset/train/pliers/img_0125.jpg differ diff --git a/dataset/train/pliers/img_0126.jpg b/dataset/train/pliers/img_0126.jpg new file mode 100644 index 0000000..edf7caa Binary files /dev/null and b/dataset/train/pliers/img_0126.jpg differ diff --git a/dataset/train/pliers/img_0127.jpg b/dataset/train/pliers/img_0127.jpg new file mode 100644 index 0000000..ffc8b51 Binary files /dev/null and b/dataset/train/pliers/img_0127.jpg differ diff --git a/dataset/train/pliers/img_0128.jpg b/dataset/train/pliers/img_0128.jpg new file mode 100644 index 0000000..f062124 Binary files /dev/null and b/dataset/train/pliers/img_0128.jpg differ diff --git a/dataset/train/pliers/img_0129.jpg b/dataset/train/pliers/img_0129.jpg new file mode 100644 index 0000000..089fc09 Binary files /dev/null and b/dataset/train/pliers/img_0129.jpg differ diff --git a/dataset/train/pliers/img_0130.jpg b/dataset/train/pliers/img_0130.jpg new file mode 100644 index 0000000..60a553c Binary files /dev/null and b/dataset/train/pliers/img_0130.jpg differ diff --git a/dataset/train/pliers/img_0131.jpg b/dataset/train/pliers/img_0131.jpg new file mode 100644 index 0000000..411f899 Binary files /dev/null and b/dataset/train/pliers/img_0131.jpg differ diff --git a/dataset/train/pliers/img_0132.jpg b/dataset/train/pliers/img_0132.jpg new file mode 100644 index 0000000..2f3e1b5 Binary files /dev/null and b/dataset/train/pliers/img_0132.jpg differ diff --git a/dataset/train/pliers/img_0133.jpg b/dataset/train/pliers/img_0133.jpg new file mode 100644 index 0000000..0e62696 Binary files /dev/null and b/dataset/train/pliers/img_0133.jpg differ diff --git a/dataset/train/pliers/img_0134.jpg b/dataset/train/pliers/img_0134.jpg new file mode 100644 index 0000000..488e387 Binary files /dev/null and b/dataset/train/pliers/img_0134.jpg differ diff --git a/dataset/train/pliers/img_0135.jpg b/dataset/train/pliers/img_0135.jpg new file mode 100644 index 0000000..bb03fcb Binary files /dev/null and b/dataset/train/pliers/img_0135.jpg differ diff --git a/dataset/train/pliers/img_0136.jpg b/dataset/train/pliers/img_0136.jpg new file mode 100644 index 0000000..794db0b Binary files /dev/null and b/dataset/train/pliers/img_0136.jpg differ diff --git a/dataset/train/pliers/img_0137.jpg b/dataset/train/pliers/img_0137.jpg new file mode 100644 index 0000000..2e7a7d0 Binary files /dev/null and b/dataset/train/pliers/img_0137.jpg differ diff --git a/dataset/train/pliers/img_0138.jpg b/dataset/train/pliers/img_0138.jpg new file mode 100644 index 0000000..c03686e Binary files /dev/null and b/dataset/train/pliers/img_0138.jpg differ diff --git a/dataset/train/pliers/img_0139.jpg b/dataset/train/pliers/img_0139.jpg new file mode 100644 index 0000000..06f7e87 Binary files /dev/null and b/dataset/train/pliers/img_0139.jpg differ diff --git a/dataset/train/pliers/img_0140.jpg b/dataset/train/pliers/img_0140.jpg new file mode 100644 index 0000000..633867d Binary files /dev/null and b/dataset/train/pliers/img_0140.jpg differ diff --git a/dataset/train/pliers/img_0141.jpg b/dataset/train/pliers/img_0141.jpg new file mode 100644 index 0000000..674ff32 Binary files /dev/null and b/dataset/train/pliers/img_0141.jpg differ diff --git a/dataset/train/pliers/img_0142.jpg b/dataset/train/pliers/img_0142.jpg new file mode 100644 index 0000000..022f6c0 Binary files /dev/null and b/dataset/train/pliers/img_0142.jpg differ diff --git a/dataset/train/pliers/img_0143.jpg b/dataset/train/pliers/img_0143.jpg new file mode 100644 index 0000000..9f82eff Binary files /dev/null and b/dataset/train/pliers/img_0143.jpg differ diff --git a/dataset/train/pliers/img_0144.jpg b/dataset/train/pliers/img_0144.jpg new file mode 100644 index 0000000..f48eb77 Binary files /dev/null and b/dataset/train/pliers/img_0144.jpg differ diff --git a/dataset/train/pliers/img_0145.jpg b/dataset/train/pliers/img_0145.jpg new file mode 100644 index 0000000..8817eca Binary files /dev/null and b/dataset/train/pliers/img_0145.jpg differ diff --git a/dataset/train/pliers/img_0146.jpg b/dataset/train/pliers/img_0146.jpg new file mode 100644 index 0000000..a268003 Binary files /dev/null and b/dataset/train/pliers/img_0146.jpg differ diff --git a/dataset/train/pliers/img_0147.jpg b/dataset/train/pliers/img_0147.jpg new file mode 100644 index 0000000..5212ccb Binary files /dev/null and b/dataset/train/pliers/img_0147.jpg differ diff --git a/dataset/train/pliers/img_0148.jpg b/dataset/train/pliers/img_0148.jpg new file mode 100644 index 0000000..048a990 Binary files /dev/null and b/dataset/train/pliers/img_0148.jpg differ diff --git a/dataset/train/pliers/img_0149.jpg b/dataset/train/pliers/img_0149.jpg new file mode 100644 index 0000000..38d7309 Binary files /dev/null and b/dataset/train/pliers/img_0149.jpg differ diff --git a/dataset/train/pliers/img_0150.jpg b/dataset/train/pliers/img_0150.jpg new file mode 100644 index 0000000..65bedd1 Binary files /dev/null and b/dataset/train/pliers/img_0150.jpg differ diff --git a/dataset/train/pliers/img_0151.jpg b/dataset/train/pliers/img_0151.jpg new file mode 100644 index 0000000..fd9bc3a Binary files /dev/null and b/dataset/train/pliers/img_0151.jpg differ diff --git a/dataset/train/pliers/img_0152.jpg b/dataset/train/pliers/img_0152.jpg new file mode 100644 index 0000000..1ca29e6 Binary files /dev/null and b/dataset/train/pliers/img_0152.jpg differ diff --git a/dataset/train/pliers/img_0153.jpg b/dataset/train/pliers/img_0153.jpg new file mode 100644 index 0000000..9ba31da Binary files /dev/null and b/dataset/train/pliers/img_0153.jpg differ diff --git a/dataset/train/pliers/img_0154.jpg b/dataset/train/pliers/img_0154.jpg new file mode 100644 index 0000000..1bd6343 Binary files /dev/null and b/dataset/train/pliers/img_0154.jpg differ diff --git a/dataset/train/pliers/img_0155.jpg b/dataset/train/pliers/img_0155.jpg new file mode 100644 index 0000000..041d2aa Binary files /dev/null and b/dataset/train/pliers/img_0155.jpg differ diff --git a/dataset/train/pliers/img_0156.jpg b/dataset/train/pliers/img_0156.jpg new file mode 100644 index 0000000..83d3aa3 Binary files /dev/null and b/dataset/train/pliers/img_0156.jpg differ diff --git a/dataset/train/pliers/img_0157.jpg b/dataset/train/pliers/img_0157.jpg new file mode 100644 index 0000000..538f23d Binary files /dev/null and b/dataset/train/pliers/img_0157.jpg differ diff --git a/dataset/train/pliers/img_0158.jpg b/dataset/train/pliers/img_0158.jpg new file mode 100644 index 0000000..7412a96 Binary files /dev/null and b/dataset/train/pliers/img_0158.jpg differ diff --git a/dataset/train/pliers/img_0159.jpg b/dataset/train/pliers/img_0159.jpg new file mode 100644 index 0000000..27b5b03 Binary files /dev/null and b/dataset/train/pliers/img_0159.jpg differ diff --git a/dataset/train/pliers/img_0160.jpg b/dataset/train/pliers/img_0160.jpg new file mode 100644 index 0000000..e3102e9 Binary files /dev/null and b/dataset/train/pliers/img_0160.jpg differ diff --git a/dataset/train/pliers/img_0161.jpg b/dataset/train/pliers/img_0161.jpg new file mode 100644 index 0000000..52a23d1 Binary files /dev/null and b/dataset/train/pliers/img_0161.jpg differ diff --git a/dataset/train/pliers/img_0162.jpg b/dataset/train/pliers/img_0162.jpg new file mode 100644 index 0000000..9d37d63 Binary files /dev/null and b/dataset/train/pliers/img_0162.jpg differ diff --git a/dataset/train/pliers/img_0163.jpg b/dataset/train/pliers/img_0163.jpg new file mode 100644 index 0000000..5f0ee59 Binary files /dev/null and b/dataset/train/pliers/img_0163.jpg differ diff --git a/dataset/train/pliers/img_0164.jpg b/dataset/train/pliers/img_0164.jpg new file mode 100644 index 0000000..24d6296 Binary files /dev/null and b/dataset/train/pliers/img_0164.jpg differ diff --git a/dataset/train/pliers/img_0165.jpg b/dataset/train/pliers/img_0165.jpg new file mode 100644 index 0000000..474491a Binary files /dev/null and b/dataset/train/pliers/img_0165.jpg differ diff --git a/dataset/train/pliers/img_0166.jpg b/dataset/train/pliers/img_0166.jpg new file mode 100644 index 0000000..29312af Binary files /dev/null and b/dataset/train/pliers/img_0166.jpg differ diff --git a/dataset/train/pliers/img_0167.jpg b/dataset/train/pliers/img_0167.jpg new file mode 100644 index 0000000..f734a7c Binary files /dev/null and b/dataset/train/pliers/img_0167.jpg differ diff --git a/dataset/train/pliers/img_0168.jpg b/dataset/train/pliers/img_0168.jpg new file mode 100644 index 0000000..5bf646e Binary files /dev/null and b/dataset/train/pliers/img_0168.jpg differ diff --git a/dataset/train/pliers/img_0169.jpg b/dataset/train/pliers/img_0169.jpg new file mode 100644 index 0000000..916e7ff Binary files /dev/null and b/dataset/train/pliers/img_0169.jpg differ diff --git a/dataset/train/pliers/img_0170.jpg b/dataset/train/pliers/img_0170.jpg new file mode 100644 index 0000000..7b37846 Binary files /dev/null and b/dataset/train/pliers/img_0170.jpg differ diff --git a/dataset/train/pliers/img_0171.jpg b/dataset/train/pliers/img_0171.jpg new file mode 100644 index 0000000..23f9b8e Binary files /dev/null and b/dataset/train/pliers/img_0171.jpg differ diff --git a/dataset/train/pliers/img_0172.jpg b/dataset/train/pliers/img_0172.jpg new file mode 100644 index 0000000..69503af Binary files /dev/null and b/dataset/train/pliers/img_0172.jpg differ diff --git a/dataset/train/pliers/img_0173.jpg b/dataset/train/pliers/img_0173.jpg new file mode 100644 index 0000000..da282a5 Binary files /dev/null and b/dataset/train/pliers/img_0173.jpg differ diff --git a/dataset/train/pliers/img_0174.jpg b/dataset/train/pliers/img_0174.jpg new file mode 100644 index 0000000..b83471c Binary files /dev/null and b/dataset/train/pliers/img_0174.jpg differ diff --git a/dataset/train/pliers/img_0175.jpg b/dataset/train/pliers/img_0175.jpg new file mode 100644 index 0000000..5c7092c Binary files /dev/null and b/dataset/train/pliers/img_0175.jpg differ diff --git a/dataset/train/pliers/img_0176.jpg b/dataset/train/pliers/img_0176.jpg new file mode 100644 index 0000000..d02de09 Binary files /dev/null and b/dataset/train/pliers/img_0176.jpg differ diff --git a/dataset/train/pliers/img_0177.jpg b/dataset/train/pliers/img_0177.jpg new file mode 100644 index 0000000..afd494f Binary files /dev/null and b/dataset/train/pliers/img_0177.jpg differ diff --git a/dataset/train/pliers/img_0178.jpg b/dataset/train/pliers/img_0178.jpg new file mode 100644 index 0000000..0c92745 Binary files /dev/null and b/dataset/train/pliers/img_0178.jpg differ diff --git a/dataset/train/pliers/img_0179.jpg b/dataset/train/pliers/img_0179.jpg new file mode 100644 index 0000000..2cc6c7a Binary files /dev/null and b/dataset/train/pliers/img_0179.jpg differ diff --git a/dataset/train/pliers/img_0180.jpg b/dataset/train/pliers/img_0180.jpg new file mode 100644 index 0000000..56f52ae Binary files /dev/null and b/dataset/train/pliers/img_0180.jpg differ diff --git a/dataset/train/pliers/img_0181.jpg b/dataset/train/pliers/img_0181.jpg new file mode 100644 index 0000000..121d879 Binary files /dev/null and b/dataset/train/pliers/img_0181.jpg differ diff --git a/dataset/train/pliers/img_0182.jpg b/dataset/train/pliers/img_0182.jpg new file mode 100644 index 0000000..c8fa1e5 Binary files /dev/null and b/dataset/train/pliers/img_0182.jpg differ diff --git a/dataset/train/pliers/img_0183.jpg b/dataset/train/pliers/img_0183.jpg new file mode 100644 index 0000000..08dcb88 Binary files /dev/null and b/dataset/train/pliers/img_0183.jpg differ diff --git a/dataset/train/pliers/img_0184.jpg b/dataset/train/pliers/img_0184.jpg new file mode 100644 index 0000000..bf22ffc Binary files /dev/null and b/dataset/train/pliers/img_0184.jpg differ diff --git a/dataset/train/pliers/img_0185.jpg b/dataset/train/pliers/img_0185.jpg new file mode 100644 index 0000000..8da95ff Binary files /dev/null and b/dataset/train/pliers/img_0185.jpg differ diff --git a/dataset/train/pliers/img_0186.jpg b/dataset/train/pliers/img_0186.jpg new file mode 100644 index 0000000..bea7c48 Binary files /dev/null and b/dataset/train/pliers/img_0186.jpg differ diff --git a/dataset/train/pliers/img_0187.jpg b/dataset/train/pliers/img_0187.jpg new file mode 100644 index 0000000..c3d92ad Binary files /dev/null and b/dataset/train/pliers/img_0187.jpg differ diff --git a/dataset/train/pliers/img_0188.jpg b/dataset/train/pliers/img_0188.jpg new file mode 100644 index 0000000..dcaec47 Binary files /dev/null and b/dataset/train/pliers/img_0188.jpg differ diff --git a/dataset/train/pliers/img_0189.jpg b/dataset/train/pliers/img_0189.jpg new file mode 100644 index 0000000..1a485fc Binary files /dev/null and b/dataset/train/pliers/img_0189.jpg differ diff --git a/dataset/train/pliers/img_0190.jpg b/dataset/train/pliers/img_0190.jpg new file mode 100644 index 0000000..0035a9f Binary files /dev/null and b/dataset/train/pliers/img_0190.jpg differ diff --git a/dataset/train/pliers/img_0191.jpg b/dataset/train/pliers/img_0191.jpg new file mode 100644 index 0000000..074168b Binary files /dev/null and b/dataset/train/pliers/img_0191.jpg differ diff --git a/dataset/train/pliers/img_0192.jpg b/dataset/train/pliers/img_0192.jpg new file mode 100644 index 0000000..7a82179 Binary files /dev/null and b/dataset/train/pliers/img_0192.jpg differ diff --git a/dataset/train/pliers/img_0193.jpg b/dataset/train/pliers/img_0193.jpg new file mode 100644 index 0000000..b64cea1 Binary files /dev/null and b/dataset/train/pliers/img_0193.jpg differ diff --git a/dataset/train/pliers/img_0194.jpg b/dataset/train/pliers/img_0194.jpg new file mode 100644 index 0000000..0fbc654 Binary files /dev/null and b/dataset/train/pliers/img_0194.jpg differ diff --git a/dataset/train/pliers/img_0195.jpg b/dataset/train/pliers/img_0195.jpg new file mode 100644 index 0000000..73cca79 Binary files /dev/null and b/dataset/train/pliers/img_0195.jpg differ diff --git a/dataset/train/pliers/img_0196.jpg b/dataset/train/pliers/img_0196.jpg new file mode 100644 index 0000000..246a084 Binary files /dev/null and b/dataset/train/pliers/img_0196.jpg differ diff --git a/dataset/train/pliers/img_0197.jpg b/dataset/train/pliers/img_0197.jpg new file mode 100644 index 0000000..9324af7 Binary files /dev/null and b/dataset/train/pliers/img_0197.jpg differ diff --git a/dataset/train/pliers/img_0198.jpg b/dataset/train/pliers/img_0198.jpg new file mode 100644 index 0000000..dafb871 Binary files /dev/null and b/dataset/train/pliers/img_0198.jpg differ diff --git a/dataset/train/pliers/img_0199.jpg b/dataset/train/pliers/img_0199.jpg new file mode 100644 index 0000000..51b019c Binary files /dev/null and b/dataset/train/pliers/img_0199.jpg differ diff --git a/dataset/train/pliers/img_0200.jpg b/dataset/train/pliers/img_0200.jpg new file mode 100644 index 0000000..d5f7dc8 Binary files /dev/null and b/dataset/train/pliers/img_0200.jpg differ diff --git a/dataset/train/pliers/img_0201.jpg b/dataset/train/pliers/img_0201.jpg new file mode 100644 index 0000000..099e5ad Binary files /dev/null and b/dataset/train/pliers/img_0201.jpg differ diff --git a/dataset/train/pliers/img_0202.jpg b/dataset/train/pliers/img_0202.jpg new file mode 100644 index 0000000..00bb809 Binary files /dev/null and b/dataset/train/pliers/img_0202.jpg differ diff --git a/dataset/train/pliers/img_0203.jpg b/dataset/train/pliers/img_0203.jpg new file mode 100644 index 0000000..1660dbb Binary files /dev/null and b/dataset/train/pliers/img_0203.jpg differ diff --git a/dataset/train/pliers/img_0204.jpg b/dataset/train/pliers/img_0204.jpg new file mode 100644 index 0000000..17d6bad Binary files /dev/null and b/dataset/train/pliers/img_0204.jpg differ diff --git a/dataset/train/pliers/img_0205.jpg b/dataset/train/pliers/img_0205.jpg new file mode 100644 index 0000000..cddbd1e Binary files /dev/null and b/dataset/train/pliers/img_0205.jpg differ diff --git a/dataset/train/pliers/img_0206.jpg b/dataset/train/pliers/img_0206.jpg new file mode 100644 index 0000000..7907d24 Binary files /dev/null and b/dataset/train/pliers/img_0206.jpg differ diff --git a/dataset/train/pliers/img_0207.jpg b/dataset/train/pliers/img_0207.jpg new file mode 100644 index 0000000..41dc1a9 Binary files /dev/null and b/dataset/train/pliers/img_0207.jpg differ diff --git a/dataset/train/pliers/img_0208.jpg b/dataset/train/pliers/img_0208.jpg new file mode 100644 index 0000000..8737a52 Binary files /dev/null and b/dataset/train/pliers/img_0208.jpg differ diff --git a/dataset/train/pliers/img_0209.jpg b/dataset/train/pliers/img_0209.jpg new file mode 100644 index 0000000..c7fef5f Binary files /dev/null and b/dataset/train/pliers/img_0209.jpg differ diff --git a/dataset/train/pliers/img_0210.jpg b/dataset/train/pliers/img_0210.jpg new file mode 100644 index 0000000..a9de087 Binary files /dev/null and b/dataset/train/pliers/img_0210.jpg differ diff --git a/dataset/train/pliers/img_0211.jpg b/dataset/train/pliers/img_0211.jpg new file mode 100644 index 0000000..97f3d62 Binary files /dev/null and b/dataset/train/pliers/img_0211.jpg differ diff --git a/dataset/train/pliers/img_0212.jpg b/dataset/train/pliers/img_0212.jpg new file mode 100644 index 0000000..a6470cf Binary files /dev/null and b/dataset/train/pliers/img_0212.jpg differ diff --git a/dataset/train/pliers/img_0213.jpg b/dataset/train/pliers/img_0213.jpg new file mode 100644 index 0000000..706f516 Binary files /dev/null and b/dataset/train/pliers/img_0213.jpg differ diff --git a/dataset/train/pliers/img_0214.jpg b/dataset/train/pliers/img_0214.jpg new file mode 100644 index 0000000..6cacbe6 Binary files /dev/null and b/dataset/train/pliers/img_0214.jpg differ diff --git a/dataset/train/pliers/img_0215.jpg b/dataset/train/pliers/img_0215.jpg new file mode 100644 index 0000000..f28517a Binary files /dev/null and b/dataset/train/pliers/img_0215.jpg differ diff --git a/dataset/train/pliers/img_0216.jpg b/dataset/train/pliers/img_0216.jpg new file mode 100644 index 0000000..8aa27c9 Binary files /dev/null and b/dataset/train/pliers/img_0216.jpg differ diff --git a/dataset/train/pliers/img_0217.jpg b/dataset/train/pliers/img_0217.jpg new file mode 100644 index 0000000..dd074be Binary files /dev/null and b/dataset/train/pliers/img_0217.jpg differ diff --git a/dataset/train/pliers/img_0218.jpg b/dataset/train/pliers/img_0218.jpg new file mode 100644 index 0000000..8e43ceb Binary files /dev/null and b/dataset/train/pliers/img_0218.jpg differ diff --git a/dataset/train/pliers/img_0219.jpg b/dataset/train/pliers/img_0219.jpg new file mode 100644 index 0000000..a518ff9 Binary files /dev/null and b/dataset/train/pliers/img_0219.jpg differ diff --git a/dataset/train/pliers/img_0220.jpg b/dataset/train/pliers/img_0220.jpg new file mode 100644 index 0000000..937130e Binary files /dev/null and b/dataset/train/pliers/img_0220.jpg differ diff --git a/dataset/train/pliers/img_0221.jpg b/dataset/train/pliers/img_0221.jpg new file mode 100644 index 0000000..72defc6 Binary files /dev/null and b/dataset/train/pliers/img_0221.jpg differ diff --git a/dataset/train/pliers/img_0222.jpg b/dataset/train/pliers/img_0222.jpg new file mode 100644 index 0000000..47e0010 Binary files /dev/null and b/dataset/train/pliers/img_0222.jpg differ diff --git a/dataset/train/pliers/img_0223.jpg b/dataset/train/pliers/img_0223.jpg new file mode 100644 index 0000000..c3c2143 Binary files /dev/null and b/dataset/train/pliers/img_0223.jpg differ diff --git a/dataset/train/pliers/img_0224.jpg b/dataset/train/pliers/img_0224.jpg new file mode 100644 index 0000000..f23d02a Binary files /dev/null and b/dataset/train/pliers/img_0224.jpg differ diff --git a/dataset/train/pliers/img_0225.jpg b/dataset/train/pliers/img_0225.jpg new file mode 100644 index 0000000..47f5661 Binary files /dev/null and b/dataset/train/pliers/img_0225.jpg differ diff --git a/dataset/train/pliers/img_0226.jpg b/dataset/train/pliers/img_0226.jpg new file mode 100644 index 0000000..f7d423b Binary files /dev/null and b/dataset/train/pliers/img_0226.jpg differ diff --git a/dataset/train/pliers/img_0227.jpg b/dataset/train/pliers/img_0227.jpg new file mode 100644 index 0000000..b568ef8 Binary files /dev/null and b/dataset/train/pliers/img_0227.jpg differ diff --git a/dataset/train/pliers/img_0228.jpg b/dataset/train/pliers/img_0228.jpg new file mode 100644 index 0000000..e8cff62 Binary files /dev/null and b/dataset/train/pliers/img_0228.jpg differ diff --git a/dataset/train/pliers/img_0229.jpg b/dataset/train/pliers/img_0229.jpg new file mode 100644 index 0000000..fcc5fad Binary files /dev/null and b/dataset/train/pliers/img_0229.jpg differ diff --git a/dataset/train/pliers/img_0230.jpg b/dataset/train/pliers/img_0230.jpg new file mode 100644 index 0000000..786a0f0 Binary files /dev/null and b/dataset/train/pliers/img_0230.jpg differ diff --git a/dataset/train/pliers/img_0231.jpg b/dataset/train/pliers/img_0231.jpg new file mode 100644 index 0000000..ca866a9 Binary files /dev/null and b/dataset/train/pliers/img_0231.jpg differ diff --git a/dataset/train/pliers/img_0232.jpg b/dataset/train/pliers/img_0232.jpg new file mode 100644 index 0000000..5faea3f Binary files /dev/null and b/dataset/train/pliers/img_0232.jpg differ diff --git a/dataset/train/pliers/img_0233.jpg b/dataset/train/pliers/img_0233.jpg new file mode 100644 index 0000000..54c6ccf Binary files /dev/null and b/dataset/train/pliers/img_0233.jpg differ diff --git a/dataset/train/pliers/img_0234.jpg b/dataset/train/pliers/img_0234.jpg new file mode 100644 index 0000000..236d567 Binary files /dev/null and b/dataset/train/pliers/img_0234.jpg differ diff --git a/dataset/train/pliers/img_0235.jpg b/dataset/train/pliers/img_0235.jpg new file mode 100644 index 0000000..89b9551 Binary files /dev/null and b/dataset/train/pliers/img_0235.jpg differ diff --git a/dataset/train/pliers/img_0236.jpg b/dataset/train/pliers/img_0236.jpg new file mode 100644 index 0000000..08d84be Binary files /dev/null and b/dataset/train/pliers/img_0236.jpg differ diff --git a/dataset/train/pliers/img_0237.jpg b/dataset/train/pliers/img_0237.jpg new file mode 100644 index 0000000..13f1055 Binary files /dev/null and b/dataset/train/pliers/img_0237.jpg differ diff --git a/dataset/train/pliers/img_0238.jpg b/dataset/train/pliers/img_0238.jpg new file mode 100644 index 0000000..652f253 Binary files /dev/null and b/dataset/train/pliers/img_0238.jpg differ diff --git a/dataset/train/pliers/img_0239.jpg b/dataset/train/pliers/img_0239.jpg new file mode 100644 index 0000000..4cc11f3 Binary files /dev/null and b/dataset/train/pliers/img_0239.jpg differ diff --git a/dataset/train/pliers/img_0240.jpg b/dataset/train/pliers/img_0240.jpg new file mode 100644 index 0000000..69c1346 Binary files /dev/null and b/dataset/train/pliers/img_0240.jpg differ diff --git a/dataset/train/pliers/img_0241.jpg b/dataset/train/pliers/img_0241.jpg new file mode 100644 index 0000000..1d20db2 Binary files /dev/null and b/dataset/train/pliers/img_0241.jpg differ diff --git a/dataset/train/pliers/img_0242.jpg b/dataset/train/pliers/img_0242.jpg new file mode 100644 index 0000000..62b34e1 Binary files /dev/null and b/dataset/train/pliers/img_0242.jpg differ diff --git a/dataset/train/pliers/img_0243.jpg b/dataset/train/pliers/img_0243.jpg new file mode 100644 index 0000000..11fd4d0 Binary files /dev/null and b/dataset/train/pliers/img_0243.jpg differ diff --git a/dataset/train/pliers/img_0244.jpg b/dataset/train/pliers/img_0244.jpg new file mode 100644 index 0000000..b39e132 Binary files /dev/null and b/dataset/train/pliers/img_0244.jpg differ diff --git a/dataset/train/pliers/img_0245.jpg b/dataset/train/pliers/img_0245.jpg new file mode 100644 index 0000000..ae19e02 Binary files /dev/null and b/dataset/train/pliers/img_0245.jpg differ diff --git a/dataset/train/pliers/img_0246.jpg b/dataset/train/pliers/img_0246.jpg new file mode 100644 index 0000000..6c12f5f Binary files /dev/null and b/dataset/train/pliers/img_0246.jpg differ diff --git a/dataset/train/pliers/img_0247.jpg b/dataset/train/pliers/img_0247.jpg new file mode 100644 index 0000000..cb1debd Binary files /dev/null and b/dataset/train/pliers/img_0247.jpg differ diff --git a/dataset/train/pliers/img_0248.jpg b/dataset/train/pliers/img_0248.jpg new file mode 100644 index 0000000..2f219b6 Binary files /dev/null and b/dataset/train/pliers/img_0248.jpg differ diff --git a/dataset/train/pliers/img_0249.jpg b/dataset/train/pliers/img_0249.jpg new file mode 100644 index 0000000..97fb770 Binary files /dev/null and b/dataset/train/pliers/img_0249.jpg differ diff --git a/dataset/train/pliers/img_0250.jpg b/dataset/train/pliers/img_0250.jpg new file mode 100644 index 0000000..cc21b56 Binary files /dev/null and b/dataset/train/pliers/img_0250.jpg differ diff --git a/dataset/train/pliers/img_0251.jpg b/dataset/train/pliers/img_0251.jpg new file mode 100644 index 0000000..e9e7c66 Binary files /dev/null and b/dataset/train/pliers/img_0251.jpg differ diff --git a/dataset/train/pliers/img_0252.jpg b/dataset/train/pliers/img_0252.jpg new file mode 100644 index 0000000..99fc804 Binary files /dev/null and b/dataset/train/pliers/img_0252.jpg differ diff --git a/dataset/train/pliers/img_0253.jpg b/dataset/train/pliers/img_0253.jpg new file mode 100644 index 0000000..56d8fe8 Binary files /dev/null and b/dataset/train/pliers/img_0253.jpg differ diff --git a/dataset/train/pliers/img_0254.jpg b/dataset/train/pliers/img_0254.jpg new file mode 100644 index 0000000..31aae5f Binary files /dev/null and b/dataset/train/pliers/img_0254.jpg differ diff --git a/dataset/train/pliers/img_0255.jpg b/dataset/train/pliers/img_0255.jpg new file mode 100644 index 0000000..1965ad6 Binary files /dev/null and b/dataset/train/pliers/img_0255.jpg differ diff --git a/dataset/train/pliers/img_0256.jpg b/dataset/train/pliers/img_0256.jpg new file mode 100644 index 0000000..458047e Binary files /dev/null and b/dataset/train/pliers/img_0256.jpg differ diff --git a/dataset/train/pliers/img_0257.jpg b/dataset/train/pliers/img_0257.jpg new file mode 100644 index 0000000..d70226b Binary files /dev/null and b/dataset/train/pliers/img_0257.jpg differ diff --git a/dataset/train/pliers/img_0258.jpg b/dataset/train/pliers/img_0258.jpg new file mode 100644 index 0000000..1bf1248 Binary files /dev/null and b/dataset/train/pliers/img_0258.jpg differ diff --git a/dataset/train/pliers/img_0259.jpg b/dataset/train/pliers/img_0259.jpg new file mode 100644 index 0000000..2e4179e Binary files /dev/null and b/dataset/train/pliers/img_0259.jpg differ diff --git a/dataset/train/pliers/img_0260.jpg b/dataset/train/pliers/img_0260.jpg new file mode 100644 index 0000000..f01a875 Binary files /dev/null and b/dataset/train/pliers/img_0260.jpg differ diff --git a/dataset/train/pliers/img_0261.jpg b/dataset/train/pliers/img_0261.jpg new file mode 100644 index 0000000..cda4ac2 Binary files /dev/null and b/dataset/train/pliers/img_0261.jpg differ diff --git a/dataset/train/pliers/img_0262.jpg b/dataset/train/pliers/img_0262.jpg new file mode 100644 index 0000000..4b3e81d Binary files /dev/null and b/dataset/train/pliers/img_0262.jpg differ diff --git a/dataset/train/pliers/img_0263.jpg b/dataset/train/pliers/img_0263.jpg new file mode 100644 index 0000000..70be97c Binary files /dev/null and b/dataset/train/pliers/img_0263.jpg differ diff --git a/dataset/train/pliers/img_0264.jpg b/dataset/train/pliers/img_0264.jpg new file mode 100644 index 0000000..5e1f607 Binary files /dev/null and b/dataset/train/pliers/img_0264.jpg differ diff --git a/dataset/train/pliers/img_0265.jpg b/dataset/train/pliers/img_0265.jpg new file mode 100644 index 0000000..16d30a0 Binary files /dev/null and b/dataset/train/pliers/img_0265.jpg differ diff --git a/dataset/train/pliers/img_0266.jpg b/dataset/train/pliers/img_0266.jpg new file mode 100644 index 0000000..9f7174e Binary files /dev/null and b/dataset/train/pliers/img_0266.jpg differ diff --git a/dataset/train/pliers/img_0267.jpg b/dataset/train/pliers/img_0267.jpg new file mode 100644 index 0000000..f8285cd Binary files /dev/null and b/dataset/train/pliers/img_0267.jpg differ diff --git a/dataset/train/pliers/img_0268.jpg b/dataset/train/pliers/img_0268.jpg new file mode 100644 index 0000000..f5c48e6 Binary files /dev/null and b/dataset/train/pliers/img_0268.jpg differ diff --git a/dataset/train/pliers/img_0269.jpg b/dataset/train/pliers/img_0269.jpg new file mode 100644 index 0000000..b72ac98 Binary files /dev/null and b/dataset/train/pliers/img_0269.jpg differ diff --git a/dataset/train/pliers/img_0270.jpg b/dataset/train/pliers/img_0270.jpg new file mode 100644 index 0000000..bdb1021 Binary files /dev/null and b/dataset/train/pliers/img_0270.jpg differ diff --git a/dataset/train/pliers/img_0271.jpg b/dataset/train/pliers/img_0271.jpg new file mode 100644 index 0000000..25feef6 Binary files /dev/null and b/dataset/train/pliers/img_0271.jpg differ diff --git a/dataset/train/pliers/img_0272.jpg b/dataset/train/pliers/img_0272.jpg new file mode 100644 index 0000000..445c6e2 Binary files /dev/null and b/dataset/train/pliers/img_0272.jpg differ diff --git a/dataset/train/pliers/img_0273.jpg b/dataset/train/pliers/img_0273.jpg new file mode 100644 index 0000000..0b9439e Binary files /dev/null and b/dataset/train/pliers/img_0273.jpg differ diff --git a/dataset/train/pliers/img_0274.jpg b/dataset/train/pliers/img_0274.jpg new file mode 100644 index 0000000..3b087e8 Binary files /dev/null and b/dataset/train/pliers/img_0274.jpg differ diff --git a/dataset/train/pliers/img_0275.jpg b/dataset/train/pliers/img_0275.jpg new file mode 100644 index 0000000..60971d7 Binary files /dev/null and b/dataset/train/pliers/img_0275.jpg differ diff --git a/dataset/train/pliers/img_0276.jpg b/dataset/train/pliers/img_0276.jpg new file mode 100644 index 0000000..7c9bf41 Binary files /dev/null and b/dataset/train/pliers/img_0276.jpg differ diff --git a/dataset/train/pliers/img_0277.jpg b/dataset/train/pliers/img_0277.jpg new file mode 100644 index 0000000..a81013c Binary files /dev/null and b/dataset/train/pliers/img_0277.jpg differ diff --git a/dataset/train/pliers/img_0278.jpg b/dataset/train/pliers/img_0278.jpg new file mode 100644 index 0000000..27efd3d Binary files /dev/null and b/dataset/train/pliers/img_0278.jpg differ diff --git a/dataset/train/pliers/img_0279.jpg b/dataset/train/pliers/img_0279.jpg new file mode 100644 index 0000000..b855475 Binary files /dev/null and b/dataset/train/pliers/img_0279.jpg differ diff --git a/dataset/train/pliers/img_0280.jpg b/dataset/train/pliers/img_0280.jpg new file mode 100644 index 0000000..343a416 Binary files /dev/null and b/dataset/train/pliers/img_0280.jpg differ diff --git a/dataset/train/pliers/img_0281.jpg b/dataset/train/pliers/img_0281.jpg new file mode 100644 index 0000000..1dec402 Binary files /dev/null and b/dataset/train/pliers/img_0281.jpg differ diff --git a/dataset/train/pliers/img_0282.jpg b/dataset/train/pliers/img_0282.jpg new file mode 100644 index 0000000..30a4f9b Binary files /dev/null and b/dataset/train/pliers/img_0282.jpg differ diff --git a/dataset/train/pliers/img_0283.jpg b/dataset/train/pliers/img_0283.jpg new file mode 100644 index 0000000..a0dc68b Binary files /dev/null and b/dataset/train/pliers/img_0283.jpg differ diff --git a/dataset/train/pliers/img_0284.jpg b/dataset/train/pliers/img_0284.jpg new file mode 100644 index 0000000..26c6739 Binary files /dev/null and b/dataset/train/pliers/img_0284.jpg differ diff --git a/dataset/train/pliers/img_0285.jpg b/dataset/train/pliers/img_0285.jpg new file mode 100644 index 0000000..a24761c Binary files /dev/null and b/dataset/train/pliers/img_0285.jpg differ diff --git a/dataset/train/pliers/img_0286.jpg b/dataset/train/pliers/img_0286.jpg new file mode 100644 index 0000000..9fcb179 Binary files /dev/null and b/dataset/train/pliers/img_0286.jpg differ diff --git a/dataset/train/pliers/img_0287.jpg b/dataset/train/pliers/img_0287.jpg new file mode 100644 index 0000000..a4e37df Binary files /dev/null and b/dataset/train/pliers/img_0287.jpg differ diff --git a/dataset/train/pliers/img_0288.jpg b/dataset/train/pliers/img_0288.jpg new file mode 100644 index 0000000..13cfa3f Binary files /dev/null and b/dataset/train/pliers/img_0288.jpg differ diff --git a/dataset/train/pliers/img_0289.jpg b/dataset/train/pliers/img_0289.jpg new file mode 100644 index 0000000..c0e4595 Binary files /dev/null and b/dataset/train/pliers/img_0289.jpg differ diff --git a/dataset/train/pliers/img_0290.jpg b/dataset/train/pliers/img_0290.jpg new file mode 100644 index 0000000..4e9e501 Binary files /dev/null and b/dataset/train/pliers/img_0290.jpg differ diff --git a/dataset/train/pliers/img_0291.jpg b/dataset/train/pliers/img_0291.jpg new file mode 100644 index 0000000..9cbb965 Binary files /dev/null and b/dataset/train/pliers/img_0291.jpg differ diff --git a/dataset/train/pliers/img_0292.jpg b/dataset/train/pliers/img_0292.jpg new file mode 100644 index 0000000..34639fd Binary files /dev/null and b/dataset/train/pliers/img_0292.jpg differ diff --git a/dataset/train/pliers/img_0293.jpg b/dataset/train/pliers/img_0293.jpg new file mode 100644 index 0000000..f989ffb Binary files /dev/null and b/dataset/train/pliers/img_0293.jpg differ diff --git a/dataset/train/pliers/img_0294.jpg b/dataset/train/pliers/img_0294.jpg new file mode 100644 index 0000000..959d3d7 Binary files /dev/null and b/dataset/train/pliers/img_0294.jpg differ diff --git a/dataset/train/pliers/img_0295.jpg b/dataset/train/pliers/img_0295.jpg new file mode 100644 index 0000000..3d29c72 Binary files /dev/null and b/dataset/train/pliers/img_0295.jpg differ diff --git a/dataset/train/pliers/img_0296.jpg b/dataset/train/pliers/img_0296.jpg new file mode 100644 index 0000000..d6e4b33 Binary files /dev/null and b/dataset/train/pliers/img_0296.jpg differ diff --git a/dataset/train/pliers/img_0297.jpg b/dataset/train/pliers/img_0297.jpg new file mode 100644 index 0000000..b621fb9 Binary files /dev/null and b/dataset/train/pliers/img_0297.jpg differ diff --git a/dataset/train/pliers/img_0298.jpg b/dataset/train/pliers/img_0298.jpg new file mode 100644 index 0000000..8696e78 Binary files /dev/null and b/dataset/train/pliers/img_0298.jpg differ diff --git a/dataset/train/pliers/img_0299.jpg b/dataset/train/pliers/img_0299.jpg new file mode 100644 index 0000000..a22e3a0 Binary files /dev/null and b/dataset/train/pliers/img_0299.jpg differ diff --git a/dataset/train/wrench/img_0000.jpg b/dataset/train/wrench/img_0000.jpg new file mode 100644 index 0000000..7133d77 Binary files /dev/null and b/dataset/train/wrench/img_0000.jpg differ diff --git a/dataset/train/wrench/img_0001.jpg b/dataset/train/wrench/img_0001.jpg new file mode 100644 index 0000000..8a360dc Binary files /dev/null and b/dataset/train/wrench/img_0001.jpg differ diff --git a/dataset/train/wrench/img_0002.jpg b/dataset/train/wrench/img_0002.jpg new file mode 100644 index 0000000..86eb610 Binary files /dev/null and b/dataset/train/wrench/img_0002.jpg differ diff --git a/dataset/train/wrench/img_0003.jpg b/dataset/train/wrench/img_0003.jpg new file mode 100644 index 0000000..21af353 Binary files /dev/null and b/dataset/train/wrench/img_0003.jpg differ diff --git a/dataset/train/wrench/img_0004.jpg b/dataset/train/wrench/img_0004.jpg new file mode 100644 index 0000000..f3ccb52 Binary files /dev/null and b/dataset/train/wrench/img_0004.jpg differ diff --git a/dataset/train/wrench/img_0005.jpg b/dataset/train/wrench/img_0005.jpg new file mode 100644 index 0000000..da5eda1 Binary files /dev/null and b/dataset/train/wrench/img_0005.jpg differ diff --git a/dataset/train/wrench/img_0006.jpg b/dataset/train/wrench/img_0006.jpg new file mode 100644 index 0000000..bcef074 Binary files /dev/null and b/dataset/train/wrench/img_0006.jpg differ diff --git a/dataset/train/wrench/img_0007.jpg b/dataset/train/wrench/img_0007.jpg new file mode 100644 index 0000000..0fa1d60 Binary files /dev/null and b/dataset/train/wrench/img_0007.jpg differ diff --git a/dataset/train/wrench/img_0008.jpg b/dataset/train/wrench/img_0008.jpg new file mode 100644 index 0000000..ea9eccb Binary files /dev/null and b/dataset/train/wrench/img_0008.jpg differ diff --git a/dataset/train/wrench/img_0009.jpg b/dataset/train/wrench/img_0009.jpg new file mode 100644 index 0000000..3a46b16 Binary files /dev/null and b/dataset/train/wrench/img_0009.jpg differ diff --git a/dataset/train/wrench/img_0010.jpg b/dataset/train/wrench/img_0010.jpg new file mode 100644 index 0000000..50e52d7 Binary files /dev/null and b/dataset/train/wrench/img_0010.jpg differ diff --git a/dataset/train/wrench/img_0011.jpg b/dataset/train/wrench/img_0011.jpg new file mode 100644 index 0000000..6ee3336 Binary files /dev/null and b/dataset/train/wrench/img_0011.jpg differ diff --git a/dataset/train/wrench/img_0012.jpg b/dataset/train/wrench/img_0012.jpg new file mode 100644 index 0000000..9837ef7 Binary files /dev/null and b/dataset/train/wrench/img_0012.jpg differ diff --git a/dataset/train/wrench/img_0013.jpg b/dataset/train/wrench/img_0013.jpg new file mode 100644 index 0000000..a84eaf3 Binary files /dev/null and b/dataset/train/wrench/img_0013.jpg differ diff --git a/dataset/train/wrench/img_0014.jpg b/dataset/train/wrench/img_0014.jpg new file mode 100644 index 0000000..5682ebc Binary files /dev/null and b/dataset/train/wrench/img_0014.jpg differ diff --git a/dataset/train/wrench/img_0015.jpg b/dataset/train/wrench/img_0015.jpg new file mode 100644 index 0000000..98303e0 Binary files /dev/null and b/dataset/train/wrench/img_0015.jpg differ diff --git a/dataset/train/wrench/img_0016.jpg b/dataset/train/wrench/img_0016.jpg new file mode 100644 index 0000000..9e059a7 Binary files /dev/null and b/dataset/train/wrench/img_0016.jpg differ diff --git a/dataset/train/wrench/img_0017.jpg b/dataset/train/wrench/img_0017.jpg new file mode 100644 index 0000000..fb96b53 Binary files /dev/null and b/dataset/train/wrench/img_0017.jpg differ diff --git a/dataset/train/wrench/img_0018.jpg b/dataset/train/wrench/img_0018.jpg new file mode 100644 index 0000000..2e450de Binary files /dev/null and b/dataset/train/wrench/img_0018.jpg differ diff --git a/dataset/train/wrench/img_0019.jpg b/dataset/train/wrench/img_0019.jpg new file mode 100644 index 0000000..6d8ed91 Binary files /dev/null and b/dataset/train/wrench/img_0019.jpg differ diff --git a/dataset/train/wrench/img_0020.jpg b/dataset/train/wrench/img_0020.jpg new file mode 100644 index 0000000..6411cac Binary files /dev/null and b/dataset/train/wrench/img_0020.jpg differ diff --git a/dataset/train/wrench/img_0021.jpg b/dataset/train/wrench/img_0021.jpg new file mode 100644 index 0000000..117b1e7 Binary files /dev/null and b/dataset/train/wrench/img_0021.jpg differ diff --git a/dataset/train/wrench/img_0022.jpg b/dataset/train/wrench/img_0022.jpg new file mode 100644 index 0000000..41a604f Binary files /dev/null and b/dataset/train/wrench/img_0022.jpg differ diff --git a/dataset/train/wrench/img_0023.jpg b/dataset/train/wrench/img_0023.jpg new file mode 100644 index 0000000..7b0d27e Binary files /dev/null and b/dataset/train/wrench/img_0023.jpg differ diff --git a/dataset/train/wrench/img_0024.jpg b/dataset/train/wrench/img_0024.jpg new file mode 100644 index 0000000..4c2c77b Binary files /dev/null and b/dataset/train/wrench/img_0024.jpg differ diff --git a/dataset/train/wrench/img_0025.jpg b/dataset/train/wrench/img_0025.jpg new file mode 100644 index 0000000..3a1e92a Binary files /dev/null and b/dataset/train/wrench/img_0025.jpg differ diff --git a/dataset/train/wrench/img_0026.jpg b/dataset/train/wrench/img_0026.jpg new file mode 100644 index 0000000..752729e Binary files /dev/null and b/dataset/train/wrench/img_0026.jpg differ diff --git a/dataset/train/wrench/img_0027.jpg b/dataset/train/wrench/img_0027.jpg new file mode 100644 index 0000000..24f9aaa Binary files /dev/null and b/dataset/train/wrench/img_0027.jpg differ diff --git a/dataset/train/wrench/img_0028.jpg b/dataset/train/wrench/img_0028.jpg new file mode 100644 index 0000000..8add9c8 Binary files /dev/null and b/dataset/train/wrench/img_0028.jpg differ diff --git a/dataset/train/wrench/img_0029.jpg b/dataset/train/wrench/img_0029.jpg new file mode 100644 index 0000000..a94c3ce Binary files /dev/null and b/dataset/train/wrench/img_0029.jpg differ diff --git a/dataset/train/wrench/img_0030.jpg b/dataset/train/wrench/img_0030.jpg new file mode 100644 index 0000000..91716f8 Binary files /dev/null and b/dataset/train/wrench/img_0030.jpg differ diff --git a/dataset/train/wrench/img_0031.jpg b/dataset/train/wrench/img_0031.jpg new file mode 100644 index 0000000..9826b47 Binary files /dev/null and b/dataset/train/wrench/img_0031.jpg differ diff --git a/dataset/train/wrench/img_0032.jpg b/dataset/train/wrench/img_0032.jpg new file mode 100644 index 0000000..b7afccd Binary files /dev/null and b/dataset/train/wrench/img_0032.jpg differ diff --git a/dataset/train/wrench/img_0033.jpg b/dataset/train/wrench/img_0033.jpg new file mode 100644 index 0000000..7b99146 Binary files /dev/null and b/dataset/train/wrench/img_0033.jpg differ diff --git a/dataset/train/wrench/img_0034.jpg b/dataset/train/wrench/img_0034.jpg new file mode 100644 index 0000000..360af62 Binary files /dev/null and b/dataset/train/wrench/img_0034.jpg differ diff --git a/dataset/train/wrench/img_0035.jpg b/dataset/train/wrench/img_0035.jpg new file mode 100644 index 0000000..614c9d4 Binary files /dev/null and b/dataset/train/wrench/img_0035.jpg differ diff --git a/dataset/train/wrench/img_0036.jpg b/dataset/train/wrench/img_0036.jpg new file mode 100644 index 0000000..2058ba5 Binary files /dev/null and b/dataset/train/wrench/img_0036.jpg differ diff --git a/dataset/train/wrench/img_0037.jpg b/dataset/train/wrench/img_0037.jpg new file mode 100644 index 0000000..fc79c06 Binary files /dev/null and b/dataset/train/wrench/img_0037.jpg differ diff --git a/dataset/train/wrench/img_0038.jpg b/dataset/train/wrench/img_0038.jpg new file mode 100644 index 0000000..f4b9879 Binary files /dev/null and b/dataset/train/wrench/img_0038.jpg differ diff --git a/dataset/train/wrench/img_0039.jpg b/dataset/train/wrench/img_0039.jpg new file mode 100644 index 0000000..79b7052 Binary files /dev/null and b/dataset/train/wrench/img_0039.jpg differ diff --git a/dataset/train/wrench/img_0040.jpg b/dataset/train/wrench/img_0040.jpg new file mode 100644 index 0000000..45db64b Binary files /dev/null and b/dataset/train/wrench/img_0040.jpg differ diff --git a/dataset/train/wrench/img_0041.jpg b/dataset/train/wrench/img_0041.jpg new file mode 100644 index 0000000..ed1ea56 Binary files /dev/null and b/dataset/train/wrench/img_0041.jpg differ diff --git a/dataset/train/wrench/img_0042.jpg b/dataset/train/wrench/img_0042.jpg new file mode 100644 index 0000000..e04fad0 Binary files /dev/null and b/dataset/train/wrench/img_0042.jpg differ diff --git a/dataset/train/wrench/img_0043.jpg b/dataset/train/wrench/img_0043.jpg new file mode 100644 index 0000000..18194a8 Binary files /dev/null and b/dataset/train/wrench/img_0043.jpg differ diff --git a/dataset/train/wrench/img_0044.jpg b/dataset/train/wrench/img_0044.jpg new file mode 100644 index 0000000..37d4d2c Binary files /dev/null and b/dataset/train/wrench/img_0044.jpg differ diff --git a/dataset/train/wrench/img_0045.jpg b/dataset/train/wrench/img_0045.jpg new file mode 100644 index 0000000..b580c3f Binary files /dev/null and b/dataset/train/wrench/img_0045.jpg differ diff --git a/dataset/train/wrench/img_0046.jpg b/dataset/train/wrench/img_0046.jpg new file mode 100644 index 0000000..29728f3 Binary files /dev/null and b/dataset/train/wrench/img_0046.jpg differ diff --git a/dataset/train/wrench/img_0047.jpg b/dataset/train/wrench/img_0047.jpg new file mode 100644 index 0000000..b73b37a Binary files /dev/null and b/dataset/train/wrench/img_0047.jpg differ diff --git a/dataset/train/wrench/img_0048.jpg b/dataset/train/wrench/img_0048.jpg new file mode 100644 index 0000000..3411e28 Binary files /dev/null and b/dataset/train/wrench/img_0048.jpg differ diff --git a/dataset/train/wrench/img_0049.jpg b/dataset/train/wrench/img_0049.jpg new file mode 100644 index 0000000..ce0e86e Binary files /dev/null and b/dataset/train/wrench/img_0049.jpg differ diff --git a/dataset/train/wrench/img_0050.jpg b/dataset/train/wrench/img_0050.jpg new file mode 100644 index 0000000..357c144 Binary files /dev/null and b/dataset/train/wrench/img_0050.jpg differ diff --git a/dataset/train/wrench/img_0051.jpg b/dataset/train/wrench/img_0051.jpg new file mode 100644 index 0000000..bbf9b9a Binary files /dev/null and b/dataset/train/wrench/img_0051.jpg differ diff --git a/dataset/train/wrench/img_0052.jpg b/dataset/train/wrench/img_0052.jpg new file mode 100644 index 0000000..a650b48 Binary files /dev/null and b/dataset/train/wrench/img_0052.jpg differ diff --git a/dataset/train/wrench/img_0053.jpg b/dataset/train/wrench/img_0053.jpg new file mode 100644 index 0000000..f95d47f Binary files /dev/null and b/dataset/train/wrench/img_0053.jpg differ diff --git a/dataset/train/wrench/img_0054.jpg b/dataset/train/wrench/img_0054.jpg new file mode 100644 index 0000000..c2b0eff Binary files /dev/null and b/dataset/train/wrench/img_0054.jpg differ diff --git a/dataset/train/wrench/img_0055.jpg b/dataset/train/wrench/img_0055.jpg new file mode 100644 index 0000000..262e2e3 Binary files /dev/null and b/dataset/train/wrench/img_0055.jpg differ diff --git a/dataset/train/wrench/img_0056.jpg b/dataset/train/wrench/img_0056.jpg new file mode 100644 index 0000000..45b32de Binary files /dev/null and b/dataset/train/wrench/img_0056.jpg differ diff --git a/dataset/train/wrench/img_0057.jpg b/dataset/train/wrench/img_0057.jpg new file mode 100644 index 0000000..75c9d23 Binary files /dev/null and b/dataset/train/wrench/img_0057.jpg differ diff --git a/dataset/train/wrench/img_0058.jpg b/dataset/train/wrench/img_0058.jpg new file mode 100644 index 0000000..0225295 Binary files /dev/null and b/dataset/train/wrench/img_0058.jpg differ diff --git a/dataset/train/wrench/img_0059.jpg b/dataset/train/wrench/img_0059.jpg new file mode 100644 index 0000000..14a678c Binary files /dev/null and b/dataset/train/wrench/img_0059.jpg differ diff --git a/dataset/train/wrench/img_0060.jpg b/dataset/train/wrench/img_0060.jpg new file mode 100644 index 0000000..33f3edf Binary files /dev/null and b/dataset/train/wrench/img_0060.jpg differ diff --git a/dataset/train/wrench/img_0061.jpg b/dataset/train/wrench/img_0061.jpg new file mode 100644 index 0000000..55b9c59 Binary files /dev/null and b/dataset/train/wrench/img_0061.jpg differ diff --git a/dataset/train/wrench/img_0062.jpg b/dataset/train/wrench/img_0062.jpg new file mode 100644 index 0000000..4799622 Binary files /dev/null and b/dataset/train/wrench/img_0062.jpg differ diff --git a/dataset/train/wrench/img_0063.jpg b/dataset/train/wrench/img_0063.jpg new file mode 100644 index 0000000..00b6541 Binary files /dev/null and b/dataset/train/wrench/img_0063.jpg differ diff --git a/dataset/train/wrench/img_0064.jpg b/dataset/train/wrench/img_0064.jpg new file mode 100644 index 0000000..8d91de9 Binary files /dev/null and b/dataset/train/wrench/img_0064.jpg differ diff --git a/dataset/train/wrench/img_0065.jpg b/dataset/train/wrench/img_0065.jpg new file mode 100644 index 0000000..0efc722 Binary files /dev/null and b/dataset/train/wrench/img_0065.jpg differ diff --git a/dataset/train/wrench/img_0066.jpg b/dataset/train/wrench/img_0066.jpg new file mode 100644 index 0000000..4257f9a Binary files /dev/null and b/dataset/train/wrench/img_0066.jpg differ diff --git a/dataset/train/wrench/img_0067.jpg b/dataset/train/wrench/img_0067.jpg new file mode 100644 index 0000000..4593ed1 Binary files /dev/null and b/dataset/train/wrench/img_0067.jpg differ diff --git a/dataset/train/wrench/img_0068.jpg b/dataset/train/wrench/img_0068.jpg new file mode 100644 index 0000000..603b979 Binary files /dev/null and b/dataset/train/wrench/img_0068.jpg differ diff --git a/dataset/train/wrench/img_0069.jpg b/dataset/train/wrench/img_0069.jpg new file mode 100644 index 0000000..3bf1c09 Binary files /dev/null and b/dataset/train/wrench/img_0069.jpg differ diff --git a/dataset/train/wrench/img_0070.jpg b/dataset/train/wrench/img_0070.jpg new file mode 100644 index 0000000..156b2f1 Binary files /dev/null and b/dataset/train/wrench/img_0070.jpg differ diff --git a/dataset/train/wrench/img_0071.jpg b/dataset/train/wrench/img_0071.jpg new file mode 100644 index 0000000..2736724 Binary files /dev/null and b/dataset/train/wrench/img_0071.jpg differ diff --git a/dataset/train/wrench/img_0072.jpg b/dataset/train/wrench/img_0072.jpg new file mode 100644 index 0000000..7702fe8 Binary files /dev/null and b/dataset/train/wrench/img_0072.jpg differ diff --git a/dataset/train/wrench/img_0073.jpg b/dataset/train/wrench/img_0073.jpg new file mode 100644 index 0000000..54c9f3c Binary files /dev/null and b/dataset/train/wrench/img_0073.jpg differ diff --git a/dataset/train/wrench/img_0074.jpg b/dataset/train/wrench/img_0074.jpg new file mode 100644 index 0000000..6ef5cd2 Binary files /dev/null and b/dataset/train/wrench/img_0074.jpg differ diff --git a/dataset/train/wrench/img_0075.jpg b/dataset/train/wrench/img_0075.jpg new file mode 100644 index 0000000..2ae5083 Binary files /dev/null and b/dataset/train/wrench/img_0075.jpg differ diff --git a/dataset/train/wrench/img_0076.jpg b/dataset/train/wrench/img_0076.jpg new file mode 100644 index 0000000..ae5f4ab Binary files /dev/null and b/dataset/train/wrench/img_0076.jpg differ diff --git a/dataset/train/wrench/img_0077.jpg b/dataset/train/wrench/img_0077.jpg new file mode 100644 index 0000000..17f8ca9 Binary files /dev/null and b/dataset/train/wrench/img_0077.jpg differ diff --git a/dataset/train/wrench/img_0078.jpg b/dataset/train/wrench/img_0078.jpg new file mode 100644 index 0000000..db2b7f9 Binary files /dev/null and b/dataset/train/wrench/img_0078.jpg differ diff --git a/dataset/train/wrench/img_0079.jpg b/dataset/train/wrench/img_0079.jpg new file mode 100644 index 0000000..ec2fc2f Binary files /dev/null and b/dataset/train/wrench/img_0079.jpg differ diff --git a/dataset/train/wrench/img_0080.jpg b/dataset/train/wrench/img_0080.jpg new file mode 100644 index 0000000..e3bebf6 Binary files /dev/null and b/dataset/train/wrench/img_0080.jpg differ diff --git a/dataset/train/wrench/img_0081.jpg b/dataset/train/wrench/img_0081.jpg new file mode 100644 index 0000000..e558274 Binary files /dev/null and b/dataset/train/wrench/img_0081.jpg differ diff --git a/dataset/train/wrench/img_0082.jpg b/dataset/train/wrench/img_0082.jpg new file mode 100644 index 0000000..e878e7c Binary files /dev/null and b/dataset/train/wrench/img_0082.jpg differ diff --git a/dataset/train/wrench/img_0083.jpg b/dataset/train/wrench/img_0083.jpg new file mode 100644 index 0000000..056e0c5 Binary files /dev/null and b/dataset/train/wrench/img_0083.jpg differ diff --git a/dataset/train/wrench/img_0084.jpg b/dataset/train/wrench/img_0084.jpg new file mode 100644 index 0000000..4be9a10 Binary files /dev/null and b/dataset/train/wrench/img_0084.jpg differ diff --git a/dataset/train/wrench/img_0085.jpg b/dataset/train/wrench/img_0085.jpg new file mode 100644 index 0000000..e2f98c9 Binary files /dev/null and b/dataset/train/wrench/img_0085.jpg differ diff --git a/dataset/train/wrench/img_0086.jpg b/dataset/train/wrench/img_0086.jpg new file mode 100644 index 0000000..719ec40 Binary files /dev/null and b/dataset/train/wrench/img_0086.jpg differ diff --git a/dataset/train/wrench/img_0087.jpg b/dataset/train/wrench/img_0087.jpg new file mode 100644 index 0000000..3aa8eac Binary files /dev/null and b/dataset/train/wrench/img_0087.jpg differ diff --git a/dataset/train/wrench/img_0088.jpg b/dataset/train/wrench/img_0088.jpg new file mode 100644 index 0000000..aca0968 Binary files /dev/null and b/dataset/train/wrench/img_0088.jpg differ diff --git a/dataset/train/wrench/img_0089.jpg b/dataset/train/wrench/img_0089.jpg new file mode 100644 index 0000000..38a65dc Binary files /dev/null and b/dataset/train/wrench/img_0089.jpg differ diff --git a/dataset/train/wrench/img_0090.jpg b/dataset/train/wrench/img_0090.jpg new file mode 100644 index 0000000..4a38611 Binary files /dev/null and b/dataset/train/wrench/img_0090.jpg differ diff --git a/dataset/train/wrench/img_0091.jpg b/dataset/train/wrench/img_0091.jpg new file mode 100644 index 0000000..70f6973 Binary files /dev/null and b/dataset/train/wrench/img_0091.jpg differ diff --git a/dataset/train/wrench/img_0092.jpg b/dataset/train/wrench/img_0092.jpg new file mode 100644 index 0000000..1631c44 Binary files /dev/null and b/dataset/train/wrench/img_0092.jpg differ diff --git a/dataset/train/wrench/img_0093.jpg b/dataset/train/wrench/img_0093.jpg new file mode 100644 index 0000000..942786d Binary files /dev/null and b/dataset/train/wrench/img_0093.jpg differ diff --git a/dataset/train/wrench/img_0094.jpg b/dataset/train/wrench/img_0094.jpg new file mode 100644 index 0000000..561c910 Binary files /dev/null and b/dataset/train/wrench/img_0094.jpg differ diff --git a/dataset/train/wrench/img_0095.jpg b/dataset/train/wrench/img_0095.jpg new file mode 100644 index 0000000..8f6f3e4 Binary files /dev/null and b/dataset/train/wrench/img_0095.jpg differ diff --git a/dataset/train/wrench/img_0096.jpg b/dataset/train/wrench/img_0096.jpg new file mode 100644 index 0000000..d0b0a01 Binary files /dev/null and b/dataset/train/wrench/img_0096.jpg differ diff --git a/dataset/train/wrench/img_0097.jpg b/dataset/train/wrench/img_0097.jpg new file mode 100644 index 0000000..b6dc385 Binary files /dev/null and b/dataset/train/wrench/img_0097.jpg differ diff --git a/dataset/train/wrench/img_0098.jpg b/dataset/train/wrench/img_0098.jpg new file mode 100644 index 0000000..9346af3 Binary files /dev/null and b/dataset/train/wrench/img_0098.jpg differ diff --git a/dataset/train/wrench/img_0099.jpg b/dataset/train/wrench/img_0099.jpg new file mode 100644 index 0000000..d939bad Binary files /dev/null and b/dataset/train/wrench/img_0099.jpg differ diff --git a/dataset/train/wrench/img_0100.jpg b/dataset/train/wrench/img_0100.jpg new file mode 100644 index 0000000..04acff5 Binary files /dev/null and b/dataset/train/wrench/img_0100.jpg differ diff --git a/dataset/train/wrench/img_0101.jpg b/dataset/train/wrench/img_0101.jpg new file mode 100644 index 0000000..2ab5a4d Binary files /dev/null and b/dataset/train/wrench/img_0101.jpg differ diff --git a/dataset/train/wrench/img_0102.jpg b/dataset/train/wrench/img_0102.jpg new file mode 100644 index 0000000..41303c2 Binary files /dev/null and b/dataset/train/wrench/img_0102.jpg differ diff --git a/dataset/train/wrench/img_0103.jpg b/dataset/train/wrench/img_0103.jpg new file mode 100644 index 0000000..049e18f Binary files /dev/null and b/dataset/train/wrench/img_0103.jpg differ diff --git a/dataset/train/wrench/img_0104.jpg b/dataset/train/wrench/img_0104.jpg new file mode 100644 index 0000000..d00bd33 Binary files /dev/null and b/dataset/train/wrench/img_0104.jpg differ diff --git a/dataset/train/wrench/img_0105.jpg b/dataset/train/wrench/img_0105.jpg new file mode 100644 index 0000000..d76bbca Binary files /dev/null and b/dataset/train/wrench/img_0105.jpg differ diff --git a/dataset/train/wrench/img_0106.jpg b/dataset/train/wrench/img_0106.jpg new file mode 100644 index 0000000..deb1ff2 Binary files /dev/null and b/dataset/train/wrench/img_0106.jpg differ diff --git a/dataset/train/wrench/img_0107.jpg b/dataset/train/wrench/img_0107.jpg new file mode 100644 index 0000000..1342cb9 Binary files /dev/null and b/dataset/train/wrench/img_0107.jpg differ diff --git a/dataset/train/wrench/img_0108.jpg b/dataset/train/wrench/img_0108.jpg new file mode 100644 index 0000000..b1c5356 Binary files /dev/null and b/dataset/train/wrench/img_0108.jpg differ diff --git a/dataset/train/wrench/img_0109.jpg b/dataset/train/wrench/img_0109.jpg new file mode 100644 index 0000000..d28b87a Binary files /dev/null and b/dataset/train/wrench/img_0109.jpg differ diff --git a/dataset/train/wrench/img_0110.jpg b/dataset/train/wrench/img_0110.jpg new file mode 100644 index 0000000..af749dd Binary files /dev/null and b/dataset/train/wrench/img_0110.jpg differ diff --git a/dataset/train/wrench/img_0111.jpg b/dataset/train/wrench/img_0111.jpg new file mode 100644 index 0000000..92891db Binary files /dev/null and b/dataset/train/wrench/img_0111.jpg differ diff --git a/dataset/train/wrench/img_0112.jpg b/dataset/train/wrench/img_0112.jpg new file mode 100644 index 0000000..973429b Binary files /dev/null and b/dataset/train/wrench/img_0112.jpg differ diff --git a/dataset/train/wrench/img_0113.jpg b/dataset/train/wrench/img_0113.jpg new file mode 100644 index 0000000..0054404 Binary files /dev/null and b/dataset/train/wrench/img_0113.jpg differ diff --git a/dataset/train/wrench/img_0114.jpg b/dataset/train/wrench/img_0114.jpg new file mode 100644 index 0000000..949b1d6 Binary files /dev/null and b/dataset/train/wrench/img_0114.jpg differ diff --git a/dataset/train/wrench/img_0115.jpg b/dataset/train/wrench/img_0115.jpg new file mode 100644 index 0000000..985c682 Binary files /dev/null and b/dataset/train/wrench/img_0115.jpg differ diff --git a/dataset/train/wrench/img_0116.jpg b/dataset/train/wrench/img_0116.jpg new file mode 100644 index 0000000..c0a5803 Binary files /dev/null and b/dataset/train/wrench/img_0116.jpg differ diff --git a/dataset/train/wrench/img_0117.jpg b/dataset/train/wrench/img_0117.jpg new file mode 100644 index 0000000..78b9b61 Binary files /dev/null and b/dataset/train/wrench/img_0117.jpg differ diff --git a/dataset/train/wrench/img_0118.jpg b/dataset/train/wrench/img_0118.jpg new file mode 100644 index 0000000..7c1d22f Binary files /dev/null and b/dataset/train/wrench/img_0118.jpg differ diff --git a/dataset/train/wrench/img_0119.jpg b/dataset/train/wrench/img_0119.jpg new file mode 100644 index 0000000..8eae597 Binary files /dev/null and b/dataset/train/wrench/img_0119.jpg differ diff --git a/dataset/train/wrench/img_0120.jpg b/dataset/train/wrench/img_0120.jpg new file mode 100644 index 0000000..93f3652 Binary files /dev/null and b/dataset/train/wrench/img_0120.jpg differ diff --git a/dataset/train/wrench/img_0121.jpg b/dataset/train/wrench/img_0121.jpg new file mode 100644 index 0000000..39311ff Binary files /dev/null and b/dataset/train/wrench/img_0121.jpg differ diff --git a/dataset/train/wrench/img_0122.jpg b/dataset/train/wrench/img_0122.jpg new file mode 100644 index 0000000..f42c56f Binary files /dev/null and b/dataset/train/wrench/img_0122.jpg differ diff --git a/dataset/train/wrench/img_0123.jpg b/dataset/train/wrench/img_0123.jpg new file mode 100644 index 0000000..d8fd7f7 Binary files /dev/null and b/dataset/train/wrench/img_0123.jpg differ diff --git a/dataset/train/wrench/img_0124.jpg b/dataset/train/wrench/img_0124.jpg new file mode 100644 index 0000000..18b58ec Binary files /dev/null and b/dataset/train/wrench/img_0124.jpg differ diff --git a/dataset/train/wrench/img_0125.jpg b/dataset/train/wrench/img_0125.jpg new file mode 100644 index 0000000..8f9e507 Binary files /dev/null and b/dataset/train/wrench/img_0125.jpg differ diff --git a/dataset/train/wrench/img_0126.jpg b/dataset/train/wrench/img_0126.jpg new file mode 100644 index 0000000..0c6e7cd Binary files /dev/null and b/dataset/train/wrench/img_0126.jpg differ diff --git a/dataset/train/wrench/img_0127.jpg b/dataset/train/wrench/img_0127.jpg new file mode 100644 index 0000000..392fafd Binary files /dev/null and b/dataset/train/wrench/img_0127.jpg differ diff --git a/dataset/train/wrench/img_0128.jpg b/dataset/train/wrench/img_0128.jpg new file mode 100644 index 0000000..8f8416e Binary files /dev/null and b/dataset/train/wrench/img_0128.jpg differ diff --git a/dataset/train/wrench/img_0129.jpg b/dataset/train/wrench/img_0129.jpg new file mode 100644 index 0000000..705cd76 Binary files /dev/null and b/dataset/train/wrench/img_0129.jpg differ diff --git a/dataset/train/wrench/img_0130.jpg b/dataset/train/wrench/img_0130.jpg new file mode 100644 index 0000000..d348d2d Binary files /dev/null and b/dataset/train/wrench/img_0130.jpg differ diff --git a/dataset/train/wrench/img_0131.jpg b/dataset/train/wrench/img_0131.jpg new file mode 100644 index 0000000..474005d Binary files /dev/null and b/dataset/train/wrench/img_0131.jpg differ diff --git a/dataset/train/wrench/img_0132.jpg b/dataset/train/wrench/img_0132.jpg new file mode 100644 index 0000000..5666136 Binary files /dev/null and b/dataset/train/wrench/img_0132.jpg differ diff --git a/dataset/train/wrench/img_0133.jpg b/dataset/train/wrench/img_0133.jpg new file mode 100644 index 0000000..dab0244 Binary files /dev/null and b/dataset/train/wrench/img_0133.jpg differ diff --git a/dataset/train/wrench/img_0134.jpg b/dataset/train/wrench/img_0134.jpg new file mode 100644 index 0000000..ab4eda1 Binary files /dev/null and b/dataset/train/wrench/img_0134.jpg differ diff --git a/dataset/train/wrench/img_0135.jpg b/dataset/train/wrench/img_0135.jpg new file mode 100644 index 0000000..7bacb05 Binary files /dev/null and b/dataset/train/wrench/img_0135.jpg differ diff --git a/dataset/train/wrench/img_0136.jpg b/dataset/train/wrench/img_0136.jpg new file mode 100644 index 0000000..15bfb96 Binary files /dev/null and b/dataset/train/wrench/img_0136.jpg differ diff --git a/dataset/train/wrench/img_0137.jpg b/dataset/train/wrench/img_0137.jpg new file mode 100644 index 0000000..df535ad Binary files /dev/null and b/dataset/train/wrench/img_0137.jpg differ diff --git a/dataset/train/wrench/img_0138.jpg b/dataset/train/wrench/img_0138.jpg new file mode 100644 index 0000000..8d81eec Binary files /dev/null and b/dataset/train/wrench/img_0138.jpg differ diff --git a/dataset/train/wrench/img_0139.jpg b/dataset/train/wrench/img_0139.jpg new file mode 100644 index 0000000..e29e142 Binary files /dev/null and b/dataset/train/wrench/img_0139.jpg differ diff --git a/dataset/train/wrench/img_0140.jpg b/dataset/train/wrench/img_0140.jpg new file mode 100644 index 0000000..3db4cd4 Binary files /dev/null and b/dataset/train/wrench/img_0140.jpg differ diff --git a/dataset/train/wrench/img_0141.jpg b/dataset/train/wrench/img_0141.jpg new file mode 100644 index 0000000..82537c0 Binary files /dev/null and b/dataset/train/wrench/img_0141.jpg differ diff --git a/dataset/train/wrench/img_0142.jpg b/dataset/train/wrench/img_0142.jpg new file mode 100644 index 0000000..59046ef Binary files /dev/null and b/dataset/train/wrench/img_0142.jpg differ diff --git a/dataset/train/wrench/img_0143.jpg b/dataset/train/wrench/img_0143.jpg new file mode 100644 index 0000000..4718777 Binary files /dev/null and b/dataset/train/wrench/img_0143.jpg differ diff --git a/dataset/train/wrench/img_0144.jpg b/dataset/train/wrench/img_0144.jpg new file mode 100644 index 0000000..01739cf Binary files /dev/null and b/dataset/train/wrench/img_0144.jpg differ diff --git a/dataset/train/wrench/img_0145.jpg b/dataset/train/wrench/img_0145.jpg new file mode 100644 index 0000000..73abbf7 Binary files /dev/null and b/dataset/train/wrench/img_0145.jpg differ diff --git a/dataset/train/wrench/img_0146.jpg b/dataset/train/wrench/img_0146.jpg new file mode 100644 index 0000000..3e7eeb9 Binary files /dev/null and b/dataset/train/wrench/img_0146.jpg differ diff --git a/dataset/train/wrench/img_0147.jpg b/dataset/train/wrench/img_0147.jpg new file mode 100644 index 0000000..ce15e81 Binary files /dev/null and b/dataset/train/wrench/img_0147.jpg differ diff --git a/dataset/train/wrench/img_0148.jpg b/dataset/train/wrench/img_0148.jpg new file mode 100644 index 0000000..129a524 Binary files /dev/null and b/dataset/train/wrench/img_0148.jpg differ diff --git a/dataset/train/wrench/img_0149.jpg b/dataset/train/wrench/img_0149.jpg new file mode 100644 index 0000000..9e7c59d Binary files /dev/null and b/dataset/train/wrench/img_0149.jpg differ diff --git a/dataset/train/wrench/img_0150.jpg b/dataset/train/wrench/img_0150.jpg new file mode 100644 index 0000000..964fe54 Binary files /dev/null and b/dataset/train/wrench/img_0150.jpg differ diff --git a/dataset/train/wrench/img_0151.jpg b/dataset/train/wrench/img_0151.jpg new file mode 100644 index 0000000..3cf8f4d Binary files /dev/null and b/dataset/train/wrench/img_0151.jpg differ diff --git a/dataset/train/wrench/img_0152.jpg b/dataset/train/wrench/img_0152.jpg new file mode 100644 index 0000000..9134269 Binary files /dev/null and b/dataset/train/wrench/img_0152.jpg differ diff --git a/dataset/train/wrench/img_0153.jpg b/dataset/train/wrench/img_0153.jpg new file mode 100644 index 0000000..46edad8 Binary files /dev/null and b/dataset/train/wrench/img_0153.jpg differ diff --git a/dataset/train/wrench/img_0154.jpg b/dataset/train/wrench/img_0154.jpg new file mode 100644 index 0000000..3a9a8c5 Binary files /dev/null and b/dataset/train/wrench/img_0154.jpg differ diff --git a/dataset/train/wrench/img_0155.jpg b/dataset/train/wrench/img_0155.jpg new file mode 100644 index 0000000..d3e4c94 Binary files /dev/null and b/dataset/train/wrench/img_0155.jpg differ diff --git a/dataset/train/wrench/img_0156.jpg b/dataset/train/wrench/img_0156.jpg new file mode 100644 index 0000000..d4b6cad Binary files /dev/null and b/dataset/train/wrench/img_0156.jpg differ diff --git a/dataset/train/wrench/img_0157.jpg b/dataset/train/wrench/img_0157.jpg new file mode 100644 index 0000000..0ad0764 Binary files /dev/null and b/dataset/train/wrench/img_0157.jpg differ diff --git a/dataset/train/wrench/img_0158.jpg b/dataset/train/wrench/img_0158.jpg new file mode 100644 index 0000000..67275b6 Binary files /dev/null and b/dataset/train/wrench/img_0158.jpg differ diff --git a/dataset/train/wrench/img_0159.jpg b/dataset/train/wrench/img_0159.jpg new file mode 100644 index 0000000..5d1a4f0 Binary files /dev/null and b/dataset/train/wrench/img_0159.jpg differ diff --git a/dataset/train/wrench/img_0160.jpg b/dataset/train/wrench/img_0160.jpg new file mode 100644 index 0000000..09e1a61 Binary files /dev/null and b/dataset/train/wrench/img_0160.jpg differ diff --git a/dataset/train/wrench/img_0161.jpg b/dataset/train/wrench/img_0161.jpg new file mode 100644 index 0000000..f76d82b Binary files /dev/null and b/dataset/train/wrench/img_0161.jpg differ diff --git a/dataset/train/wrench/img_0162.jpg b/dataset/train/wrench/img_0162.jpg new file mode 100644 index 0000000..3358b98 Binary files /dev/null and b/dataset/train/wrench/img_0162.jpg differ diff --git a/dataset/train/wrench/img_0163.jpg b/dataset/train/wrench/img_0163.jpg new file mode 100644 index 0000000..e266a6b Binary files /dev/null and b/dataset/train/wrench/img_0163.jpg differ diff --git a/dataset/train/wrench/img_0164.jpg b/dataset/train/wrench/img_0164.jpg new file mode 100644 index 0000000..3d3d6aa Binary files /dev/null and b/dataset/train/wrench/img_0164.jpg differ diff --git a/dataset/train/wrench/img_0165.jpg b/dataset/train/wrench/img_0165.jpg new file mode 100644 index 0000000..c9edf07 Binary files /dev/null and b/dataset/train/wrench/img_0165.jpg differ diff --git a/dataset/train/wrench/img_0166.jpg b/dataset/train/wrench/img_0166.jpg new file mode 100644 index 0000000..7e6e9e6 Binary files /dev/null and b/dataset/train/wrench/img_0166.jpg differ diff --git a/dataset/train/wrench/img_0167.jpg b/dataset/train/wrench/img_0167.jpg new file mode 100644 index 0000000..40481f6 Binary files /dev/null and b/dataset/train/wrench/img_0167.jpg differ diff --git a/dataset/train/wrench/img_0168.jpg b/dataset/train/wrench/img_0168.jpg new file mode 100644 index 0000000..39a8e9d Binary files /dev/null and b/dataset/train/wrench/img_0168.jpg differ diff --git a/dataset/train/wrench/img_0169.jpg b/dataset/train/wrench/img_0169.jpg new file mode 100644 index 0000000..912bbc1 Binary files /dev/null and b/dataset/train/wrench/img_0169.jpg differ diff --git a/dataset/train/wrench/img_0170.jpg b/dataset/train/wrench/img_0170.jpg new file mode 100644 index 0000000..0458aad Binary files /dev/null and b/dataset/train/wrench/img_0170.jpg differ diff --git a/dataset/train/wrench/img_0171.jpg b/dataset/train/wrench/img_0171.jpg new file mode 100644 index 0000000..4ec803f Binary files /dev/null and b/dataset/train/wrench/img_0171.jpg differ diff --git a/dataset/train/wrench/img_0172.jpg b/dataset/train/wrench/img_0172.jpg new file mode 100644 index 0000000..2350b85 Binary files /dev/null and b/dataset/train/wrench/img_0172.jpg differ diff --git a/dataset/train/wrench/img_0173.jpg b/dataset/train/wrench/img_0173.jpg new file mode 100644 index 0000000..04f8c49 Binary files /dev/null and b/dataset/train/wrench/img_0173.jpg differ diff --git a/dataset/train/wrench/img_0174.jpg b/dataset/train/wrench/img_0174.jpg new file mode 100644 index 0000000..00c3ca3 Binary files /dev/null and b/dataset/train/wrench/img_0174.jpg differ diff --git a/dataset/train/wrench/img_0175.jpg b/dataset/train/wrench/img_0175.jpg new file mode 100644 index 0000000..04e2c19 Binary files /dev/null and b/dataset/train/wrench/img_0175.jpg differ diff --git a/dataset/train/wrench/img_0176.jpg b/dataset/train/wrench/img_0176.jpg new file mode 100644 index 0000000..18265eb Binary files /dev/null and b/dataset/train/wrench/img_0176.jpg differ diff --git a/dataset/train/wrench/img_0177.jpg b/dataset/train/wrench/img_0177.jpg new file mode 100644 index 0000000..485286b Binary files /dev/null and b/dataset/train/wrench/img_0177.jpg differ diff --git a/dataset/train/wrench/img_0178.jpg b/dataset/train/wrench/img_0178.jpg new file mode 100644 index 0000000..ec78fac Binary files /dev/null and b/dataset/train/wrench/img_0178.jpg differ diff --git a/dataset/train/wrench/img_0179.jpg b/dataset/train/wrench/img_0179.jpg new file mode 100644 index 0000000..457187d Binary files /dev/null and b/dataset/train/wrench/img_0179.jpg differ diff --git a/dataset/train/wrench/img_0180.jpg b/dataset/train/wrench/img_0180.jpg new file mode 100644 index 0000000..3f1f9ba Binary files /dev/null and b/dataset/train/wrench/img_0180.jpg differ diff --git a/dataset/train/wrench/img_0181.jpg b/dataset/train/wrench/img_0181.jpg new file mode 100644 index 0000000..7b058ba Binary files /dev/null and b/dataset/train/wrench/img_0181.jpg differ diff --git a/dataset/train/wrench/img_0182.jpg b/dataset/train/wrench/img_0182.jpg new file mode 100644 index 0000000..6ac7243 Binary files /dev/null and b/dataset/train/wrench/img_0182.jpg differ diff --git a/dataset/train/wrench/img_0183.jpg b/dataset/train/wrench/img_0183.jpg new file mode 100644 index 0000000..2e2d247 Binary files /dev/null and b/dataset/train/wrench/img_0183.jpg differ diff --git a/dataset/train/wrench/img_0184.jpg b/dataset/train/wrench/img_0184.jpg new file mode 100644 index 0000000..7b20229 Binary files /dev/null and b/dataset/train/wrench/img_0184.jpg differ diff --git a/dataset/train/wrench/img_0185.jpg b/dataset/train/wrench/img_0185.jpg new file mode 100644 index 0000000..ff4cadb Binary files /dev/null and b/dataset/train/wrench/img_0185.jpg differ diff --git a/dataset/train/wrench/img_0186.jpg b/dataset/train/wrench/img_0186.jpg new file mode 100644 index 0000000..e208d99 Binary files /dev/null and b/dataset/train/wrench/img_0186.jpg differ diff --git a/dataset/train/wrench/img_0187.jpg b/dataset/train/wrench/img_0187.jpg new file mode 100644 index 0000000..fd7443f Binary files /dev/null and b/dataset/train/wrench/img_0187.jpg differ diff --git a/dataset/train/wrench/img_0188.jpg b/dataset/train/wrench/img_0188.jpg new file mode 100644 index 0000000..9e4d00f Binary files /dev/null and b/dataset/train/wrench/img_0188.jpg differ diff --git a/dataset/train/wrench/img_0189.jpg b/dataset/train/wrench/img_0189.jpg new file mode 100644 index 0000000..f6b3302 Binary files /dev/null and b/dataset/train/wrench/img_0189.jpg differ diff --git a/dataset/train/wrench/img_0190.jpg b/dataset/train/wrench/img_0190.jpg new file mode 100644 index 0000000..b2543dc Binary files /dev/null and b/dataset/train/wrench/img_0190.jpg differ diff --git a/dataset/train/wrench/img_0191.jpg b/dataset/train/wrench/img_0191.jpg new file mode 100644 index 0000000..19e74f1 Binary files /dev/null and b/dataset/train/wrench/img_0191.jpg differ diff --git a/dataset/train/wrench/img_0192.jpg b/dataset/train/wrench/img_0192.jpg new file mode 100644 index 0000000..a8c5999 Binary files /dev/null and b/dataset/train/wrench/img_0192.jpg differ diff --git a/dataset/train/wrench/img_0193.jpg b/dataset/train/wrench/img_0193.jpg new file mode 100644 index 0000000..023cd9a Binary files /dev/null and b/dataset/train/wrench/img_0193.jpg differ diff --git a/dataset/train/wrench/img_0194.jpg b/dataset/train/wrench/img_0194.jpg new file mode 100644 index 0000000..3bcb550 Binary files /dev/null and b/dataset/train/wrench/img_0194.jpg differ diff --git a/dataset/train/wrench/img_0195.jpg b/dataset/train/wrench/img_0195.jpg new file mode 100644 index 0000000..19ba80a Binary files /dev/null and b/dataset/train/wrench/img_0195.jpg differ diff --git a/dataset/train/wrench/img_0196.jpg b/dataset/train/wrench/img_0196.jpg new file mode 100644 index 0000000..7c495f9 Binary files /dev/null and b/dataset/train/wrench/img_0196.jpg differ diff --git a/dataset/train/wrench/img_0197.jpg b/dataset/train/wrench/img_0197.jpg new file mode 100644 index 0000000..befdc20 Binary files /dev/null and b/dataset/train/wrench/img_0197.jpg differ diff --git a/dataset/train/wrench/img_0198.jpg b/dataset/train/wrench/img_0198.jpg new file mode 100644 index 0000000..fc63e85 Binary files /dev/null and b/dataset/train/wrench/img_0198.jpg differ diff --git a/dataset/train/wrench/img_0199.jpg b/dataset/train/wrench/img_0199.jpg new file mode 100644 index 0000000..9483753 Binary files /dev/null and b/dataset/train/wrench/img_0199.jpg differ diff --git a/dataset/train/wrench/img_0200.jpg b/dataset/train/wrench/img_0200.jpg new file mode 100644 index 0000000..6b4f3e0 Binary files /dev/null and b/dataset/train/wrench/img_0200.jpg differ diff --git a/dataset/train/wrench/img_0201.jpg b/dataset/train/wrench/img_0201.jpg new file mode 100644 index 0000000..a9fea16 Binary files /dev/null and b/dataset/train/wrench/img_0201.jpg differ diff --git a/dataset/train/wrench/img_0202.jpg b/dataset/train/wrench/img_0202.jpg new file mode 100644 index 0000000..781bc82 Binary files /dev/null and b/dataset/train/wrench/img_0202.jpg differ diff --git a/dataset/train/wrench/img_0203.jpg b/dataset/train/wrench/img_0203.jpg new file mode 100644 index 0000000..ec213e1 Binary files /dev/null and b/dataset/train/wrench/img_0203.jpg differ diff --git a/dataset/train/wrench/img_0204.jpg b/dataset/train/wrench/img_0204.jpg new file mode 100644 index 0000000..a1e0f0b Binary files /dev/null and b/dataset/train/wrench/img_0204.jpg differ diff --git a/dataset/train/wrench/img_0205.jpg b/dataset/train/wrench/img_0205.jpg new file mode 100644 index 0000000..06f0a8a Binary files /dev/null and b/dataset/train/wrench/img_0205.jpg differ diff --git a/dataset/train/wrench/img_0206.jpg b/dataset/train/wrench/img_0206.jpg new file mode 100644 index 0000000..b52c133 Binary files /dev/null and b/dataset/train/wrench/img_0206.jpg differ diff --git a/dataset/train/wrench/img_0207.jpg b/dataset/train/wrench/img_0207.jpg new file mode 100644 index 0000000..a6dcaaf Binary files /dev/null and b/dataset/train/wrench/img_0207.jpg differ diff --git a/dataset/train/wrench/img_0208.jpg b/dataset/train/wrench/img_0208.jpg new file mode 100644 index 0000000..8565e8d Binary files /dev/null and b/dataset/train/wrench/img_0208.jpg differ diff --git a/dataset/train/wrench/img_0209.jpg b/dataset/train/wrench/img_0209.jpg new file mode 100644 index 0000000..64128fd Binary files /dev/null and b/dataset/train/wrench/img_0209.jpg differ diff --git a/dataset/train/wrench/img_0210.jpg b/dataset/train/wrench/img_0210.jpg new file mode 100644 index 0000000..689a2b7 Binary files /dev/null and b/dataset/train/wrench/img_0210.jpg differ diff --git a/dataset/train/wrench/img_0211.jpg b/dataset/train/wrench/img_0211.jpg new file mode 100644 index 0000000..2f30c9e Binary files /dev/null and b/dataset/train/wrench/img_0211.jpg differ diff --git a/dataset/train/wrench/img_0212.jpg b/dataset/train/wrench/img_0212.jpg new file mode 100644 index 0000000..e6a2b2e Binary files /dev/null and b/dataset/train/wrench/img_0212.jpg differ diff --git a/dataset/train/wrench/img_0213.jpg b/dataset/train/wrench/img_0213.jpg new file mode 100644 index 0000000..aee7642 Binary files /dev/null and b/dataset/train/wrench/img_0213.jpg differ diff --git a/dataset/train/wrench/img_0214.jpg b/dataset/train/wrench/img_0214.jpg new file mode 100644 index 0000000..67ad57d Binary files /dev/null and b/dataset/train/wrench/img_0214.jpg differ diff --git a/dataset/train/wrench/img_0215.jpg b/dataset/train/wrench/img_0215.jpg new file mode 100644 index 0000000..0d747de Binary files /dev/null and b/dataset/train/wrench/img_0215.jpg differ diff --git a/dataset/train/wrench/img_0216.jpg b/dataset/train/wrench/img_0216.jpg new file mode 100644 index 0000000..5816722 Binary files /dev/null and b/dataset/train/wrench/img_0216.jpg differ diff --git a/dataset/train/wrench/img_0217.jpg b/dataset/train/wrench/img_0217.jpg new file mode 100644 index 0000000..b74de36 Binary files /dev/null and b/dataset/train/wrench/img_0217.jpg differ diff --git a/dataset/train/wrench/img_0218.jpg b/dataset/train/wrench/img_0218.jpg new file mode 100644 index 0000000..e5b30cf Binary files /dev/null and b/dataset/train/wrench/img_0218.jpg differ diff --git a/dataset/train/wrench/img_0219.jpg b/dataset/train/wrench/img_0219.jpg new file mode 100644 index 0000000..28e601c Binary files /dev/null and b/dataset/train/wrench/img_0219.jpg differ diff --git a/dataset/train/wrench/img_0220.jpg b/dataset/train/wrench/img_0220.jpg new file mode 100644 index 0000000..01330d7 Binary files /dev/null and b/dataset/train/wrench/img_0220.jpg differ diff --git a/dataset/train/wrench/img_0221.jpg b/dataset/train/wrench/img_0221.jpg new file mode 100644 index 0000000..1a1ca14 Binary files /dev/null and b/dataset/train/wrench/img_0221.jpg differ diff --git a/dataset/train/wrench/img_0222.jpg b/dataset/train/wrench/img_0222.jpg new file mode 100644 index 0000000..260317f Binary files /dev/null and b/dataset/train/wrench/img_0222.jpg differ diff --git a/dataset/train/wrench/img_0223.jpg b/dataset/train/wrench/img_0223.jpg new file mode 100644 index 0000000..60a1aa3 Binary files /dev/null and b/dataset/train/wrench/img_0223.jpg differ diff --git a/dataset/train/wrench/img_0224.jpg b/dataset/train/wrench/img_0224.jpg new file mode 100644 index 0000000..0db8ac0 Binary files /dev/null and b/dataset/train/wrench/img_0224.jpg differ diff --git a/dataset/train/wrench/img_0225.jpg b/dataset/train/wrench/img_0225.jpg new file mode 100644 index 0000000..9915501 Binary files /dev/null and b/dataset/train/wrench/img_0225.jpg differ diff --git a/dataset/train/wrench/img_0226.jpg b/dataset/train/wrench/img_0226.jpg new file mode 100644 index 0000000..634e846 Binary files /dev/null and b/dataset/train/wrench/img_0226.jpg differ diff --git a/dataset/train/wrench/img_0227.jpg b/dataset/train/wrench/img_0227.jpg new file mode 100644 index 0000000..9ec3127 Binary files /dev/null and b/dataset/train/wrench/img_0227.jpg differ diff --git a/dataset/train/wrench/img_0228.jpg b/dataset/train/wrench/img_0228.jpg new file mode 100644 index 0000000..1074ed4 Binary files /dev/null and b/dataset/train/wrench/img_0228.jpg differ diff --git a/dataset/train/wrench/img_0229.jpg b/dataset/train/wrench/img_0229.jpg new file mode 100644 index 0000000..017564a Binary files /dev/null and b/dataset/train/wrench/img_0229.jpg differ diff --git a/dataset/train/wrench/img_0230.jpg b/dataset/train/wrench/img_0230.jpg new file mode 100644 index 0000000..c73498d Binary files /dev/null and b/dataset/train/wrench/img_0230.jpg differ diff --git a/dataset/train/wrench/img_0231.jpg b/dataset/train/wrench/img_0231.jpg new file mode 100644 index 0000000..c234f9d Binary files /dev/null and b/dataset/train/wrench/img_0231.jpg differ diff --git a/dataset/train/wrench/img_0232.jpg b/dataset/train/wrench/img_0232.jpg new file mode 100644 index 0000000..41090f7 Binary files /dev/null and b/dataset/train/wrench/img_0232.jpg differ diff --git a/dataset/train/wrench/img_0233.jpg b/dataset/train/wrench/img_0233.jpg new file mode 100644 index 0000000..6fb7e37 Binary files /dev/null and b/dataset/train/wrench/img_0233.jpg differ diff --git a/dataset/train/wrench/img_0234.jpg b/dataset/train/wrench/img_0234.jpg new file mode 100644 index 0000000..b0fd39d Binary files /dev/null and b/dataset/train/wrench/img_0234.jpg differ diff --git a/dataset/train/wrench/img_0235.jpg b/dataset/train/wrench/img_0235.jpg new file mode 100644 index 0000000..b20fc1e Binary files /dev/null and b/dataset/train/wrench/img_0235.jpg differ diff --git a/dataset/train/wrench/img_0236.jpg b/dataset/train/wrench/img_0236.jpg new file mode 100644 index 0000000..d0ba892 Binary files /dev/null and b/dataset/train/wrench/img_0236.jpg differ diff --git a/dataset/train/wrench/img_0237.jpg b/dataset/train/wrench/img_0237.jpg new file mode 100644 index 0000000..717a931 Binary files /dev/null and b/dataset/train/wrench/img_0237.jpg differ diff --git a/dataset/train/wrench/img_0238.jpg b/dataset/train/wrench/img_0238.jpg new file mode 100644 index 0000000..29639f2 Binary files /dev/null and b/dataset/train/wrench/img_0238.jpg differ diff --git a/dataset/train/wrench/img_0239.jpg b/dataset/train/wrench/img_0239.jpg new file mode 100644 index 0000000..a370cc9 Binary files /dev/null and b/dataset/train/wrench/img_0239.jpg differ diff --git a/dataset/train/wrench/img_0240.jpg b/dataset/train/wrench/img_0240.jpg new file mode 100644 index 0000000..9601d55 Binary files /dev/null and b/dataset/train/wrench/img_0240.jpg differ diff --git a/dataset/train/wrench/img_0241.jpg b/dataset/train/wrench/img_0241.jpg new file mode 100644 index 0000000..8c37139 Binary files /dev/null and b/dataset/train/wrench/img_0241.jpg differ diff --git a/dataset/train/wrench/img_0242.jpg b/dataset/train/wrench/img_0242.jpg new file mode 100644 index 0000000..7bd0f9b Binary files /dev/null and b/dataset/train/wrench/img_0242.jpg differ diff --git a/dataset/train/wrench/img_0243.jpg b/dataset/train/wrench/img_0243.jpg new file mode 100644 index 0000000..f99b868 Binary files /dev/null and b/dataset/train/wrench/img_0243.jpg differ diff --git a/dataset/train/wrench/img_0244.jpg b/dataset/train/wrench/img_0244.jpg new file mode 100644 index 0000000..a309dde Binary files /dev/null and b/dataset/train/wrench/img_0244.jpg differ diff --git a/dataset/train/wrench/img_0245.jpg b/dataset/train/wrench/img_0245.jpg new file mode 100644 index 0000000..e809c73 Binary files /dev/null and b/dataset/train/wrench/img_0245.jpg differ diff --git a/dataset/train/wrench/img_0246.jpg b/dataset/train/wrench/img_0246.jpg new file mode 100644 index 0000000..e3df54d Binary files /dev/null and b/dataset/train/wrench/img_0246.jpg differ diff --git a/dataset/train/wrench/img_0247.jpg b/dataset/train/wrench/img_0247.jpg new file mode 100644 index 0000000..8f697c5 Binary files /dev/null and b/dataset/train/wrench/img_0247.jpg differ diff --git a/dataset/train/wrench/img_0248.jpg b/dataset/train/wrench/img_0248.jpg new file mode 100644 index 0000000..ac9c0f9 Binary files /dev/null and b/dataset/train/wrench/img_0248.jpg differ diff --git a/dataset/train/wrench/img_0249.jpg b/dataset/train/wrench/img_0249.jpg new file mode 100644 index 0000000..281dd87 Binary files /dev/null and b/dataset/train/wrench/img_0249.jpg differ diff --git a/dataset/train/wrench/img_0250.jpg b/dataset/train/wrench/img_0250.jpg new file mode 100644 index 0000000..7e3e215 Binary files /dev/null and b/dataset/train/wrench/img_0250.jpg differ diff --git a/dataset/train/wrench/img_0251.jpg b/dataset/train/wrench/img_0251.jpg new file mode 100644 index 0000000..f5c2562 Binary files /dev/null and b/dataset/train/wrench/img_0251.jpg differ diff --git a/dataset/train/wrench/img_0252.jpg b/dataset/train/wrench/img_0252.jpg new file mode 100644 index 0000000..b8a3cf3 Binary files /dev/null and b/dataset/train/wrench/img_0252.jpg differ diff --git a/dataset/train/wrench/img_0253.jpg b/dataset/train/wrench/img_0253.jpg new file mode 100644 index 0000000..727e5da Binary files /dev/null and b/dataset/train/wrench/img_0253.jpg differ diff --git a/dataset/train/wrench/img_0254.jpg b/dataset/train/wrench/img_0254.jpg new file mode 100644 index 0000000..1f19276 Binary files /dev/null and b/dataset/train/wrench/img_0254.jpg differ diff --git a/dataset/train/wrench/img_0255.jpg b/dataset/train/wrench/img_0255.jpg new file mode 100644 index 0000000..abf10b3 Binary files /dev/null and b/dataset/train/wrench/img_0255.jpg differ diff --git a/dataset/train/wrench/img_0256.jpg b/dataset/train/wrench/img_0256.jpg new file mode 100644 index 0000000..4cde882 Binary files /dev/null and b/dataset/train/wrench/img_0256.jpg differ diff --git a/dataset/train/wrench/img_0257.jpg b/dataset/train/wrench/img_0257.jpg new file mode 100644 index 0000000..e9aad99 Binary files /dev/null and b/dataset/train/wrench/img_0257.jpg differ diff --git a/dataset/train/wrench/img_0258.jpg b/dataset/train/wrench/img_0258.jpg new file mode 100644 index 0000000..78d6397 Binary files /dev/null and b/dataset/train/wrench/img_0258.jpg differ diff --git a/dataset/train/wrench/img_0259.jpg b/dataset/train/wrench/img_0259.jpg new file mode 100644 index 0000000..57dae64 Binary files /dev/null and b/dataset/train/wrench/img_0259.jpg differ diff --git a/dataset/train/wrench/img_0260.jpg b/dataset/train/wrench/img_0260.jpg new file mode 100644 index 0000000..fcf53b9 Binary files /dev/null and b/dataset/train/wrench/img_0260.jpg differ diff --git a/dataset/train/wrench/img_0261.jpg b/dataset/train/wrench/img_0261.jpg new file mode 100644 index 0000000..531c879 Binary files /dev/null and b/dataset/train/wrench/img_0261.jpg differ diff --git a/dataset/train/wrench/img_0262.jpg b/dataset/train/wrench/img_0262.jpg new file mode 100644 index 0000000..e631935 Binary files /dev/null and b/dataset/train/wrench/img_0262.jpg differ diff --git a/dataset/train/wrench/img_0263.jpg b/dataset/train/wrench/img_0263.jpg new file mode 100644 index 0000000..f5fae6c Binary files /dev/null and b/dataset/train/wrench/img_0263.jpg differ diff --git a/dataset/train/wrench/img_0264.jpg b/dataset/train/wrench/img_0264.jpg new file mode 100644 index 0000000..6a93920 Binary files /dev/null and b/dataset/train/wrench/img_0264.jpg differ diff --git a/dataset/train/wrench/img_0265.jpg b/dataset/train/wrench/img_0265.jpg new file mode 100644 index 0000000..9176829 Binary files /dev/null and b/dataset/train/wrench/img_0265.jpg differ diff --git a/dataset/train/wrench/img_0266.jpg b/dataset/train/wrench/img_0266.jpg new file mode 100644 index 0000000..9eb0ec7 Binary files /dev/null and b/dataset/train/wrench/img_0266.jpg differ diff --git a/dataset/train/wrench/img_0267.jpg b/dataset/train/wrench/img_0267.jpg new file mode 100644 index 0000000..c41c3de Binary files /dev/null and b/dataset/train/wrench/img_0267.jpg differ diff --git a/dataset/train/wrench/img_0268.jpg b/dataset/train/wrench/img_0268.jpg new file mode 100644 index 0000000..8e0be86 Binary files /dev/null and b/dataset/train/wrench/img_0268.jpg differ diff --git a/dataset/train/wrench/img_0269.jpg b/dataset/train/wrench/img_0269.jpg new file mode 100644 index 0000000..1b0d1ed Binary files /dev/null and b/dataset/train/wrench/img_0269.jpg differ diff --git a/dataset/train/wrench/img_0270.jpg b/dataset/train/wrench/img_0270.jpg new file mode 100644 index 0000000..66db04b Binary files /dev/null and b/dataset/train/wrench/img_0270.jpg differ diff --git a/dataset/train/wrench/img_0271.jpg b/dataset/train/wrench/img_0271.jpg new file mode 100644 index 0000000..7ef9d7c Binary files /dev/null and b/dataset/train/wrench/img_0271.jpg differ diff --git a/dataset/train/wrench/img_0272.jpg b/dataset/train/wrench/img_0272.jpg new file mode 100644 index 0000000..adb1dc9 Binary files /dev/null and b/dataset/train/wrench/img_0272.jpg differ diff --git a/dataset/train/wrench/img_0273.jpg b/dataset/train/wrench/img_0273.jpg new file mode 100644 index 0000000..bc611ad Binary files /dev/null and b/dataset/train/wrench/img_0273.jpg differ diff --git a/dataset/train/wrench/img_0274.jpg b/dataset/train/wrench/img_0274.jpg new file mode 100644 index 0000000..d0c9405 Binary files /dev/null and b/dataset/train/wrench/img_0274.jpg differ diff --git a/dataset/train/wrench/img_0275.jpg b/dataset/train/wrench/img_0275.jpg new file mode 100644 index 0000000..720c5ce Binary files /dev/null and b/dataset/train/wrench/img_0275.jpg differ diff --git a/dataset/train/wrench/img_0276.jpg b/dataset/train/wrench/img_0276.jpg new file mode 100644 index 0000000..734ff92 Binary files /dev/null and b/dataset/train/wrench/img_0276.jpg differ diff --git a/dataset/train/wrench/img_0277.jpg b/dataset/train/wrench/img_0277.jpg new file mode 100644 index 0000000..2d3b32c Binary files /dev/null and b/dataset/train/wrench/img_0277.jpg differ diff --git a/dataset/train/wrench/img_0278.jpg b/dataset/train/wrench/img_0278.jpg new file mode 100644 index 0000000..52ad827 Binary files /dev/null and b/dataset/train/wrench/img_0278.jpg differ diff --git a/dataset/train/wrench/img_0279.jpg b/dataset/train/wrench/img_0279.jpg new file mode 100644 index 0000000..9917538 Binary files /dev/null and b/dataset/train/wrench/img_0279.jpg differ diff --git a/dataset/train/wrench/img_0280.jpg b/dataset/train/wrench/img_0280.jpg new file mode 100644 index 0000000..fa6dd0d Binary files /dev/null and b/dataset/train/wrench/img_0280.jpg differ diff --git a/dataset/train/wrench/img_0281.jpg b/dataset/train/wrench/img_0281.jpg new file mode 100644 index 0000000..ad662e2 Binary files /dev/null and b/dataset/train/wrench/img_0281.jpg differ diff --git a/dataset/train/wrench/img_0282.jpg b/dataset/train/wrench/img_0282.jpg new file mode 100644 index 0000000..b9c2096 Binary files /dev/null and b/dataset/train/wrench/img_0282.jpg differ diff --git a/dataset/train/wrench/img_0283.jpg b/dataset/train/wrench/img_0283.jpg new file mode 100644 index 0000000..24dfd1d Binary files /dev/null and b/dataset/train/wrench/img_0283.jpg differ diff --git a/dataset/train/wrench/img_0284.jpg b/dataset/train/wrench/img_0284.jpg new file mode 100644 index 0000000..14cca06 Binary files /dev/null and b/dataset/train/wrench/img_0284.jpg differ diff --git a/dataset/train/wrench/img_0285.jpg b/dataset/train/wrench/img_0285.jpg new file mode 100644 index 0000000..3d7d32e Binary files /dev/null and b/dataset/train/wrench/img_0285.jpg differ diff --git a/dataset/train/wrench/img_0286.jpg b/dataset/train/wrench/img_0286.jpg new file mode 100644 index 0000000..a43bef2 Binary files /dev/null and b/dataset/train/wrench/img_0286.jpg differ diff --git a/dataset/train/wrench/img_0287.jpg b/dataset/train/wrench/img_0287.jpg new file mode 100644 index 0000000..cf3d745 Binary files /dev/null and b/dataset/train/wrench/img_0287.jpg differ diff --git a/dataset/train/wrench/img_0288.jpg b/dataset/train/wrench/img_0288.jpg new file mode 100644 index 0000000..d547925 Binary files /dev/null and b/dataset/train/wrench/img_0288.jpg differ diff --git a/dataset/train/wrench/img_0289.jpg b/dataset/train/wrench/img_0289.jpg new file mode 100644 index 0000000..8a0fdf4 Binary files /dev/null and b/dataset/train/wrench/img_0289.jpg differ diff --git a/dataset/train/wrench/img_0290.jpg b/dataset/train/wrench/img_0290.jpg new file mode 100644 index 0000000..b87a247 Binary files /dev/null and b/dataset/train/wrench/img_0290.jpg differ diff --git a/dataset/train/wrench/img_0291.jpg b/dataset/train/wrench/img_0291.jpg new file mode 100644 index 0000000..de46fed Binary files /dev/null and b/dataset/train/wrench/img_0291.jpg differ diff --git a/dataset/train/wrench/img_0292.jpg b/dataset/train/wrench/img_0292.jpg new file mode 100644 index 0000000..1661a34 Binary files /dev/null and b/dataset/train/wrench/img_0292.jpg differ diff --git a/dataset/train/wrench/img_0293.jpg b/dataset/train/wrench/img_0293.jpg new file mode 100644 index 0000000..fc552ae Binary files /dev/null and b/dataset/train/wrench/img_0293.jpg differ diff --git a/dataset/train/wrench/img_0294.jpg b/dataset/train/wrench/img_0294.jpg new file mode 100644 index 0000000..0ac8a60 Binary files /dev/null and b/dataset/train/wrench/img_0294.jpg differ diff --git a/dataset/train/wrench/img_0295.jpg b/dataset/train/wrench/img_0295.jpg new file mode 100644 index 0000000..1357f9b Binary files /dev/null and b/dataset/train/wrench/img_0295.jpg differ diff --git a/dataset/train/wrench/img_0296.jpg b/dataset/train/wrench/img_0296.jpg new file mode 100644 index 0000000..c6d6dd4 Binary files /dev/null and b/dataset/train/wrench/img_0296.jpg differ diff --git a/dataset/train/wrench/img_0297.jpg b/dataset/train/wrench/img_0297.jpg new file mode 100644 index 0000000..dae37b1 Binary files /dev/null and b/dataset/train/wrench/img_0297.jpg differ diff --git a/dataset/train/wrench/img_0298.jpg b/dataset/train/wrench/img_0298.jpg new file mode 100644 index 0000000..a3cd961 Binary files /dev/null and b/dataset/train/wrench/img_0298.jpg differ diff --git a/dataset/train/wrench/img_0299.jpg b/dataset/train/wrench/img_0299.jpg new file mode 100644 index 0000000..36550e4 Binary files /dev/null and b/dataset/train/wrench/img_0299.jpg differ diff --git a/dataset/val.cache b/dataset/val.cache new file mode 100644 index 0000000..2376eed Binary files /dev/null and b/dataset/val.cache differ diff --git a/dataset/val/hammer/img_0000.jpg b/dataset/val/hammer/img_0000.jpg new file mode 100644 index 0000000..081062b Binary files /dev/null and b/dataset/val/hammer/img_0000.jpg differ diff --git a/dataset/val/hammer/img_0001.jpg b/dataset/val/hammer/img_0001.jpg new file mode 100644 index 0000000..ea85998 Binary files /dev/null and b/dataset/val/hammer/img_0001.jpg differ diff --git a/dataset/val/hammer/img_0002.jpg b/dataset/val/hammer/img_0002.jpg new file mode 100644 index 0000000..b6017ab Binary files /dev/null and b/dataset/val/hammer/img_0002.jpg differ diff --git a/dataset/val/hammer/img_0003.jpg b/dataset/val/hammer/img_0003.jpg new file mode 100644 index 0000000..a1aee45 Binary files /dev/null and b/dataset/val/hammer/img_0003.jpg differ diff --git a/dataset/val/hammer/img_0004.jpg b/dataset/val/hammer/img_0004.jpg new file mode 100644 index 0000000..5587afb Binary files /dev/null and b/dataset/val/hammer/img_0004.jpg differ diff --git a/dataset/val/hammer/img_0005.jpg b/dataset/val/hammer/img_0005.jpg new file mode 100644 index 0000000..a6cd1f0 Binary files /dev/null and b/dataset/val/hammer/img_0005.jpg differ diff --git a/dataset/val/hammer/img_0006.jpg b/dataset/val/hammer/img_0006.jpg new file mode 100644 index 0000000..16870bf Binary files /dev/null and b/dataset/val/hammer/img_0006.jpg differ diff --git a/dataset/val/hammer/img_0007.jpg b/dataset/val/hammer/img_0007.jpg new file mode 100644 index 0000000..b2e5143 Binary files /dev/null and b/dataset/val/hammer/img_0007.jpg differ diff --git a/dataset/val/hammer/img_0008.jpg b/dataset/val/hammer/img_0008.jpg new file mode 100644 index 0000000..241b8d3 Binary files /dev/null and b/dataset/val/hammer/img_0008.jpg differ diff --git a/dataset/val/hammer/img_0009.jpg b/dataset/val/hammer/img_0009.jpg new file mode 100644 index 0000000..1a6937c Binary files /dev/null and b/dataset/val/hammer/img_0009.jpg differ diff --git a/dataset/val/hammer/img_0010.jpg b/dataset/val/hammer/img_0010.jpg new file mode 100644 index 0000000..880326a Binary files /dev/null and b/dataset/val/hammer/img_0010.jpg differ diff --git a/dataset/val/hammer/img_0011.jpg b/dataset/val/hammer/img_0011.jpg new file mode 100644 index 0000000..5fcb650 Binary files /dev/null and b/dataset/val/hammer/img_0011.jpg differ diff --git a/dataset/val/hammer/img_0012.jpg b/dataset/val/hammer/img_0012.jpg new file mode 100644 index 0000000..c7ce0c5 Binary files /dev/null and b/dataset/val/hammer/img_0012.jpg differ diff --git a/dataset/val/hammer/img_0013.jpg b/dataset/val/hammer/img_0013.jpg new file mode 100644 index 0000000..c521daa Binary files /dev/null and b/dataset/val/hammer/img_0013.jpg differ diff --git a/dataset/val/hammer/img_0014.jpg b/dataset/val/hammer/img_0014.jpg new file mode 100644 index 0000000..be83185 Binary files /dev/null and b/dataset/val/hammer/img_0014.jpg differ diff --git a/dataset/val/hammer/img_0015.jpg b/dataset/val/hammer/img_0015.jpg new file mode 100644 index 0000000..b131044 Binary files /dev/null and b/dataset/val/hammer/img_0015.jpg differ diff --git a/dataset/val/hammer/img_0016.jpg b/dataset/val/hammer/img_0016.jpg new file mode 100644 index 0000000..d51bd96 Binary files /dev/null and b/dataset/val/hammer/img_0016.jpg differ diff --git a/dataset/val/hammer/img_0017.jpg b/dataset/val/hammer/img_0017.jpg new file mode 100644 index 0000000..0ab2b85 Binary files /dev/null and b/dataset/val/hammer/img_0017.jpg differ diff --git a/dataset/val/hammer/img_0018.jpg b/dataset/val/hammer/img_0018.jpg new file mode 100644 index 0000000..85c7f88 Binary files /dev/null and b/dataset/val/hammer/img_0018.jpg differ diff --git a/dataset/val/hammer/img_0019.jpg b/dataset/val/hammer/img_0019.jpg new file mode 100644 index 0000000..4d591af Binary files /dev/null and b/dataset/val/hammer/img_0019.jpg differ diff --git a/dataset/val/hammer/img_0020.jpg b/dataset/val/hammer/img_0020.jpg new file mode 100644 index 0000000..895797d Binary files /dev/null and b/dataset/val/hammer/img_0020.jpg differ diff --git a/dataset/val/hammer/img_0021.jpg b/dataset/val/hammer/img_0021.jpg new file mode 100644 index 0000000..ad76dc9 Binary files /dev/null and b/dataset/val/hammer/img_0021.jpg differ diff --git a/dataset/val/hammer/img_0022.jpg b/dataset/val/hammer/img_0022.jpg new file mode 100644 index 0000000..5329747 Binary files /dev/null and b/dataset/val/hammer/img_0022.jpg differ diff --git a/dataset/val/hammer/img_0023.jpg b/dataset/val/hammer/img_0023.jpg new file mode 100644 index 0000000..e36b0ca Binary files /dev/null and b/dataset/val/hammer/img_0023.jpg differ diff --git a/dataset/val/hammer/img_0024.jpg b/dataset/val/hammer/img_0024.jpg new file mode 100644 index 0000000..963f228 Binary files /dev/null and b/dataset/val/hammer/img_0024.jpg differ diff --git a/dataset/val/hammer/img_0025.jpg b/dataset/val/hammer/img_0025.jpg new file mode 100644 index 0000000..54ffe68 Binary files /dev/null and b/dataset/val/hammer/img_0025.jpg differ diff --git a/dataset/val/hammer/img_0026.jpg b/dataset/val/hammer/img_0026.jpg new file mode 100644 index 0000000..8cd4163 Binary files /dev/null and b/dataset/val/hammer/img_0026.jpg differ diff --git a/dataset/val/hammer/img_0027.jpg b/dataset/val/hammer/img_0027.jpg new file mode 100644 index 0000000..b9cc553 Binary files /dev/null and b/dataset/val/hammer/img_0027.jpg differ diff --git a/dataset/val/hammer/img_0028.jpg b/dataset/val/hammer/img_0028.jpg new file mode 100644 index 0000000..f5690c8 Binary files /dev/null and b/dataset/val/hammer/img_0028.jpg differ diff --git a/dataset/val/hammer/img_0029.jpg b/dataset/val/hammer/img_0029.jpg new file mode 100644 index 0000000..30460a7 Binary files /dev/null and b/dataset/val/hammer/img_0029.jpg differ diff --git a/dataset/val/hammer/img_0030.jpg b/dataset/val/hammer/img_0030.jpg new file mode 100644 index 0000000..a02ce7c Binary files /dev/null and b/dataset/val/hammer/img_0030.jpg differ diff --git a/dataset/val/hammer/img_0031.jpg b/dataset/val/hammer/img_0031.jpg new file mode 100644 index 0000000..da24fb1 Binary files /dev/null and b/dataset/val/hammer/img_0031.jpg differ diff --git a/dataset/val/hammer/img_0032.jpg b/dataset/val/hammer/img_0032.jpg new file mode 100644 index 0000000..310025d Binary files /dev/null and b/dataset/val/hammer/img_0032.jpg differ diff --git a/dataset/val/hammer/img_0033.jpg b/dataset/val/hammer/img_0033.jpg new file mode 100644 index 0000000..b9e3ef7 Binary files /dev/null and b/dataset/val/hammer/img_0033.jpg differ diff --git a/dataset/val/hammer/img_0034.jpg b/dataset/val/hammer/img_0034.jpg new file mode 100644 index 0000000..55be14c Binary files /dev/null and b/dataset/val/hammer/img_0034.jpg differ diff --git a/dataset/val/hammer/img_0035.jpg b/dataset/val/hammer/img_0035.jpg new file mode 100644 index 0000000..f55aab1 Binary files /dev/null and b/dataset/val/hammer/img_0035.jpg differ diff --git a/dataset/val/hammer/img_0036.jpg b/dataset/val/hammer/img_0036.jpg new file mode 100644 index 0000000..e6cf78c Binary files /dev/null and b/dataset/val/hammer/img_0036.jpg differ diff --git a/dataset/val/hammer/img_0037.jpg b/dataset/val/hammer/img_0037.jpg new file mode 100644 index 0000000..1c34f4c Binary files /dev/null and b/dataset/val/hammer/img_0037.jpg differ diff --git a/dataset/val/hammer/img_0038.jpg b/dataset/val/hammer/img_0038.jpg new file mode 100644 index 0000000..ba81a51 Binary files /dev/null and b/dataset/val/hammer/img_0038.jpg differ diff --git a/dataset/val/hammer/img_0039.jpg b/dataset/val/hammer/img_0039.jpg new file mode 100644 index 0000000..7155dcf Binary files /dev/null and b/dataset/val/hammer/img_0039.jpg differ diff --git a/dataset/val/hammer/img_0040.jpg b/dataset/val/hammer/img_0040.jpg new file mode 100644 index 0000000..f0a31a8 Binary files /dev/null and b/dataset/val/hammer/img_0040.jpg differ diff --git a/dataset/val/hammer/img_0041.jpg b/dataset/val/hammer/img_0041.jpg new file mode 100644 index 0000000..cdd0391 Binary files /dev/null and b/dataset/val/hammer/img_0041.jpg differ diff --git a/dataset/val/hammer/img_0042.jpg b/dataset/val/hammer/img_0042.jpg new file mode 100644 index 0000000..3f79344 Binary files /dev/null and b/dataset/val/hammer/img_0042.jpg differ diff --git a/dataset/val/hammer/img_0043.jpg b/dataset/val/hammer/img_0043.jpg new file mode 100644 index 0000000..1cd5418 Binary files /dev/null and b/dataset/val/hammer/img_0043.jpg differ diff --git a/dataset/val/hammer/img_0044.jpg b/dataset/val/hammer/img_0044.jpg new file mode 100644 index 0000000..93a3df1 Binary files /dev/null and b/dataset/val/hammer/img_0044.jpg differ diff --git a/dataset/val/hammer/img_0045.jpg b/dataset/val/hammer/img_0045.jpg new file mode 100644 index 0000000..d09212e Binary files /dev/null and b/dataset/val/hammer/img_0045.jpg differ diff --git a/dataset/val/hammer/img_0046.jpg b/dataset/val/hammer/img_0046.jpg new file mode 100644 index 0000000..cffa237 Binary files /dev/null and b/dataset/val/hammer/img_0046.jpg differ diff --git a/dataset/val/hammer/img_0047.jpg b/dataset/val/hammer/img_0047.jpg new file mode 100644 index 0000000..fdd2cd4 Binary files /dev/null and b/dataset/val/hammer/img_0047.jpg differ diff --git a/dataset/val/hammer/img_0048.jpg b/dataset/val/hammer/img_0048.jpg new file mode 100644 index 0000000..54ade0c Binary files /dev/null and b/dataset/val/hammer/img_0048.jpg differ diff --git a/dataset/val/hammer/img_0049.jpg b/dataset/val/hammer/img_0049.jpg new file mode 100644 index 0000000..00bf494 Binary files /dev/null and b/dataset/val/hammer/img_0049.jpg differ diff --git a/dataset/val/hammer/img_0050.jpg b/dataset/val/hammer/img_0050.jpg new file mode 100644 index 0000000..f5f8aba Binary files /dev/null and b/dataset/val/hammer/img_0050.jpg differ diff --git a/dataset/val/hammer/img_0051.jpg b/dataset/val/hammer/img_0051.jpg new file mode 100644 index 0000000..a96c1dd Binary files /dev/null and b/dataset/val/hammer/img_0051.jpg differ diff --git a/dataset/val/hammer/img_0052.jpg b/dataset/val/hammer/img_0052.jpg new file mode 100644 index 0000000..ccee3e8 Binary files /dev/null and b/dataset/val/hammer/img_0052.jpg differ diff --git a/dataset/val/hammer/img_0053.jpg b/dataset/val/hammer/img_0053.jpg new file mode 100644 index 0000000..14874a9 Binary files /dev/null and b/dataset/val/hammer/img_0053.jpg differ diff --git a/dataset/val/hammer/img_0054.jpg b/dataset/val/hammer/img_0054.jpg new file mode 100644 index 0000000..f3984bb Binary files /dev/null and b/dataset/val/hammer/img_0054.jpg differ diff --git a/dataset/val/hammer/img_0055.jpg b/dataset/val/hammer/img_0055.jpg new file mode 100644 index 0000000..7051c5f Binary files /dev/null and b/dataset/val/hammer/img_0055.jpg differ diff --git a/dataset/val/hammer/img_0056.jpg b/dataset/val/hammer/img_0056.jpg new file mode 100644 index 0000000..435eb78 Binary files /dev/null and b/dataset/val/hammer/img_0056.jpg differ diff --git a/dataset/val/hammer/img_0057.jpg b/dataset/val/hammer/img_0057.jpg new file mode 100644 index 0000000..0ab89f7 Binary files /dev/null and b/dataset/val/hammer/img_0057.jpg differ diff --git a/dataset/val/hammer/img_0058.jpg b/dataset/val/hammer/img_0058.jpg new file mode 100644 index 0000000..c9342f7 Binary files /dev/null and b/dataset/val/hammer/img_0058.jpg differ diff --git a/dataset/val/hammer/img_0059.jpg b/dataset/val/hammer/img_0059.jpg new file mode 100644 index 0000000..a084ae1 Binary files /dev/null and b/dataset/val/hammer/img_0059.jpg differ diff --git a/dataset/val/pliers/img_0000.jpg b/dataset/val/pliers/img_0000.jpg new file mode 100644 index 0000000..3c1d1b1 Binary files /dev/null and b/dataset/val/pliers/img_0000.jpg differ diff --git a/dataset/val/pliers/img_0001.jpg b/dataset/val/pliers/img_0001.jpg new file mode 100644 index 0000000..fbe9508 Binary files /dev/null and b/dataset/val/pliers/img_0001.jpg differ diff --git a/dataset/val/pliers/img_0002.jpg b/dataset/val/pliers/img_0002.jpg new file mode 100644 index 0000000..5fc6856 Binary files /dev/null and b/dataset/val/pliers/img_0002.jpg differ diff --git a/dataset/val/pliers/img_0003.jpg b/dataset/val/pliers/img_0003.jpg new file mode 100644 index 0000000..de75c42 Binary files /dev/null and b/dataset/val/pliers/img_0003.jpg differ diff --git a/dataset/val/pliers/img_0004.jpg b/dataset/val/pliers/img_0004.jpg new file mode 100644 index 0000000..500009c Binary files /dev/null and b/dataset/val/pliers/img_0004.jpg differ diff --git a/dataset/val/pliers/img_0005.jpg b/dataset/val/pliers/img_0005.jpg new file mode 100644 index 0000000..39f899a Binary files /dev/null and b/dataset/val/pliers/img_0005.jpg differ diff --git a/dataset/val/pliers/img_0006.jpg b/dataset/val/pliers/img_0006.jpg new file mode 100644 index 0000000..2798f6e Binary files /dev/null and b/dataset/val/pliers/img_0006.jpg differ diff --git a/dataset/val/pliers/img_0007.jpg b/dataset/val/pliers/img_0007.jpg new file mode 100644 index 0000000..87403fa Binary files /dev/null and b/dataset/val/pliers/img_0007.jpg differ diff --git a/dataset/val/pliers/img_0008.jpg b/dataset/val/pliers/img_0008.jpg new file mode 100644 index 0000000..ace2795 Binary files /dev/null and b/dataset/val/pliers/img_0008.jpg differ diff --git a/dataset/val/pliers/img_0009.jpg b/dataset/val/pliers/img_0009.jpg new file mode 100644 index 0000000..6bf28cf Binary files /dev/null and b/dataset/val/pliers/img_0009.jpg differ diff --git a/dataset/val/pliers/img_0010.jpg b/dataset/val/pliers/img_0010.jpg new file mode 100644 index 0000000..15cd65f Binary files /dev/null and b/dataset/val/pliers/img_0010.jpg differ diff --git a/dataset/val/pliers/img_0011.jpg b/dataset/val/pliers/img_0011.jpg new file mode 100644 index 0000000..dc559f0 Binary files /dev/null and b/dataset/val/pliers/img_0011.jpg differ diff --git a/dataset/val/pliers/img_0012.jpg b/dataset/val/pliers/img_0012.jpg new file mode 100644 index 0000000..40d7835 Binary files /dev/null and b/dataset/val/pliers/img_0012.jpg differ diff --git a/dataset/val/pliers/img_0013.jpg b/dataset/val/pliers/img_0013.jpg new file mode 100644 index 0000000..73afa09 Binary files /dev/null and b/dataset/val/pliers/img_0013.jpg differ diff --git a/dataset/val/pliers/img_0014.jpg b/dataset/val/pliers/img_0014.jpg new file mode 100644 index 0000000..e47397b Binary files /dev/null and b/dataset/val/pliers/img_0014.jpg differ diff --git a/dataset/val/pliers/img_0015.jpg b/dataset/val/pliers/img_0015.jpg new file mode 100644 index 0000000..6f91f93 Binary files /dev/null and b/dataset/val/pliers/img_0015.jpg differ diff --git a/dataset/val/pliers/img_0016.jpg b/dataset/val/pliers/img_0016.jpg new file mode 100644 index 0000000..cef2c79 Binary files /dev/null and b/dataset/val/pliers/img_0016.jpg differ diff --git a/dataset/val/pliers/img_0017.jpg b/dataset/val/pliers/img_0017.jpg new file mode 100644 index 0000000..d1e141d Binary files /dev/null and b/dataset/val/pliers/img_0017.jpg differ diff --git a/dataset/val/pliers/img_0018.jpg b/dataset/val/pliers/img_0018.jpg new file mode 100644 index 0000000..f4c843f Binary files /dev/null and b/dataset/val/pliers/img_0018.jpg differ diff --git a/dataset/val/pliers/img_0019.jpg b/dataset/val/pliers/img_0019.jpg new file mode 100644 index 0000000..6711213 Binary files /dev/null and b/dataset/val/pliers/img_0019.jpg differ diff --git a/dataset/val/pliers/img_0020.jpg b/dataset/val/pliers/img_0020.jpg new file mode 100644 index 0000000..7720dcf Binary files /dev/null and b/dataset/val/pliers/img_0020.jpg differ diff --git a/dataset/val/pliers/img_0021.jpg b/dataset/val/pliers/img_0021.jpg new file mode 100644 index 0000000..8df1790 Binary files /dev/null and b/dataset/val/pliers/img_0021.jpg differ diff --git a/dataset/val/pliers/img_0022.jpg b/dataset/val/pliers/img_0022.jpg new file mode 100644 index 0000000..69fe049 Binary files /dev/null and b/dataset/val/pliers/img_0022.jpg differ diff --git a/dataset/val/pliers/img_0023.jpg b/dataset/val/pliers/img_0023.jpg new file mode 100644 index 0000000..37148cf Binary files /dev/null and b/dataset/val/pliers/img_0023.jpg differ diff --git a/dataset/val/pliers/img_0024.jpg b/dataset/val/pliers/img_0024.jpg new file mode 100644 index 0000000..5a81354 Binary files /dev/null and b/dataset/val/pliers/img_0024.jpg differ diff --git a/dataset/val/pliers/img_0025.jpg b/dataset/val/pliers/img_0025.jpg new file mode 100644 index 0000000..f5bd0f2 Binary files /dev/null and b/dataset/val/pliers/img_0025.jpg differ diff --git a/dataset/val/pliers/img_0026.jpg b/dataset/val/pliers/img_0026.jpg new file mode 100644 index 0000000..e0cfa84 Binary files /dev/null and b/dataset/val/pliers/img_0026.jpg differ diff --git a/dataset/val/pliers/img_0027.jpg b/dataset/val/pliers/img_0027.jpg new file mode 100644 index 0000000..39b1346 Binary files /dev/null and b/dataset/val/pliers/img_0027.jpg differ diff --git a/dataset/val/pliers/img_0028.jpg b/dataset/val/pliers/img_0028.jpg new file mode 100644 index 0000000..508cf9d Binary files /dev/null and b/dataset/val/pliers/img_0028.jpg differ diff --git a/dataset/val/pliers/img_0029.jpg b/dataset/val/pliers/img_0029.jpg new file mode 100644 index 0000000..674d5b4 Binary files /dev/null and b/dataset/val/pliers/img_0029.jpg differ diff --git a/dataset/val/pliers/img_0030.jpg b/dataset/val/pliers/img_0030.jpg new file mode 100644 index 0000000..2654c2c Binary files /dev/null and b/dataset/val/pliers/img_0030.jpg differ diff --git a/dataset/val/pliers/img_0031.jpg b/dataset/val/pliers/img_0031.jpg new file mode 100644 index 0000000..e908eec Binary files /dev/null and b/dataset/val/pliers/img_0031.jpg differ diff --git a/dataset/val/pliers/img_0032.jpg b/dataset/val/pliers/img_0032.jpg new file mode 100644 index 0000000..13aa054 Binary files /dev/null and b/dataset/val/pliers/img_0032.jpg differ diff --git a/dataset/val/pliers/img_0033.jpg b/dataset/val/pliers/img_0033.jpg new file mode 100644 index 0000000..a3c346c Binary files /dev/null and b/dataset/val/pliers/img_0033.jpg differ diff --git a/dataset/val/pliers/img_0034.jpg b/dataset/val/pliers/img_0034.jpg new file mode 100644 index 0000000..8a8be17 Binary files /dev/null and b/dataset/val/pliers/img_0034.jpg differ diff --git a/dataset/val/pliers/img_0035.jpg b/dataset/val/pliers/img_0035.jpg new file mode 100644 index 0000000..8ceab6b Binary files /dev/null and b/dataset/val/pliers/img_0035.jpg differ diff --git a/dataset/val/pliers/img_0036.jpg b/dataset/val/pliers/img_0036.jpg new file mode 100644 index 0000000..66e8709 Binary files /dev/null and b/dataset/val/pliers/img_0036.jpg differ diff --git a/dataset/val/pliers/img_0037.jpg b/dataset/val/pliers/img_0037.jpg new file mode 100644 index 0000000..715f320 Binary files /dev/null and b/dataset/val/pliers/img_0037.jpg differ diff --git a/dataset/val/pliers/img_0038.jpg b/dataset/val/pliers/img_0038.jpg new file mode 100644 index 0000000..c74d081 Binary files /dev/null and b/dataset/val/pliers/img_0038.jpg differ diff --git a/dataset/val/pliers/img_0039.jpg b/dataset/val/pliers/img_0039.jpg new file mode 100644 index 0000000..b23b892 Binary files /dev/null and b/dataset/val/pliers/img_0039.jpg differ diff --git a/dataset/val/pliers/img_0040.jpg b/dataset/val/pliers/img_0040.jpg new file mode 100644 index 0000000..543e15c Binary files /dev/null and b/dataset/val/pliers/img_0040.jpg differ diff --git a/dataset/val/pliers/img_0041.jpg b/dataset/val/pliers/img_0041.jpg new file mode 100644 index 0000000..80505f2 Binary files /dev/null and b/dataset/val/pliers/img_0041.jpg differ diff --git a/dataset/val/pliers/img_0042.jpg b/dataset/val/pliers/img_0042.jpg new file mode 100644 index 0000000..b1c241c Binary files /dev/null and b/dataset/val/pliers/img_0042.jpg differ diff --git a/dataset/val/pliers/img_0043.jpg b/dataset/val/pliers/img_0043.jpg new file mode 100644 index 0000000..09344f3 Binary files /dev/null and b/dataset/val/pliers/img_0043.jpg differ diff --git a/dataset/val/pliers/img_0044.jpg b/dataset/val/pliers/img_0044.jpg new file mode 100644 index 0000000..2df96e9 Binary files /dev/null and b/dataset/val/pliers/img_0044.jpg differ diff --git a/dataset/val/pliers/img_0045.jpg b/dataset/val/pliers/img_0045.jpg new file mode 100644 index 0000000..7110b34 Binary files /dev/null and b/dataset/val/pliers/img_0045.jpg differ diff --git a/dataset/val/pliers/img_0046.jpg b/dataset/val/pliers/img_0046.jpg new file mode 100644 index 0000000..20cf7df Binary files /dev/null and b/dataset/val/pliers/img_0046.jpg differ diff --git a/dataset/val/pliers/img_0047.jpg b/dataset/val/pliers/img_0047.jpg new file mode 100644 index 0000000..b9e5f62 Binary files /dev/null and b/dataset/val/pliers/img_0047.jpg differ diff --git a/dataset/val/pliers/img_0048.jpg b/dataset/val/pliers/img_0048.jpg new file mode 100644 index 0000000..5fea8eb Binary files /dev/null and b/dataset/val/pliers/img_0048.jpg differ diff --git a/dataset/val/pliers/img_0049.jpg b/dataset/val/pliers/img_0049.jpg new file mode 100644 index 0000000..5029e57 Binary files /dev/null and b/dataset/val/pliers/img_0049.jpg differ diff --git a/dataset/val/pliers/img_0050.jpg b/dataset/val/pliers/img_0050.jpg new file mode 100644 index 0000000..457da95 Binary files /dev/null and b/dataset/val/pliers/img_0050.jpg differ diff --git a/dataset/val/pliers/img_0051.jpg b/dataset/val/pliers/img_0051.jpg new file mode 100644 index 0000000..4bccad8 Binary files /dev/null and b/dataset/val/pliers/img_0051.jpg differ diff --git a/dataset/val/pliers/img_0052.jpg b/dataset/val/pliers/img_0052.jpg new file mode 100644 index 0000000..534f6c6 Binary files /dev/null and b/dataset/val/pliers/img_0052.jpg differ diff --git a/dataset/val/pliers/img_0053.jpg b/dataset/val/pliers/img_0053.jpg new file mode 100644 index 0000000..41b1f79 Binary files /dev/null and b/dataset/val/pliers/img_0053.jpg differ diff --git a/dataset/val/pliers/img_0054.jpg b/dataset/val/pliers/img_0054.jpg new file mode 100644 index 0000000..c45f2fa Binary files /dev/null and b/dataset/val/pliers/img_0054.jpg differ diff --git a/dataset/val/pliers/img_0055.jpg b/dataset/val/pliers/img_0055.jpg new file mode 100644 index 0000000..7c5c5fe Binary files /dev/null and b/dataset/val/pliers/img_0055.jpg differ diff --git a/dataset/val/pliers/img_0056.jpg b/dataset/val/pliers/img_0056.jpg new file mode 100644 index 0000000..ae7d4c7 Binary files /dev/null and b/dataset/val/pliers/img_0056.jpg differ diff --git a/dataset/val/pliers/img_0057.jpg b/dataset/val/pliers/img_0057.jpg new file mode 100644 index 0000000..f82b051 Binary files /dev/null and b/dataset/val/pliers/img_0057.jpg differ diff --git a/dataset/val/pliers/img_0058.jpg b/dataset/val/pliers/img_0058.jpg new file mode 100644 index 0000000..76b97aa Binary files /dev/null and b/dataset/val/pliers/img_0058.jpg differ diff --git a/dataset/val/pliers/img_0059.jpg b/dataset/val/pliers/img_0059.jpg new file mode 100644 index 0000000..5707d3b Binary files /dev/null and b/dataset/val/pliers/img_0059.jpg differ diff --git a/dataset/val/wrench/img_0000.jpg b/dataset/val/wrench/img_0000.jpg new file mode 100644 index 0000000..5fdc12b Binary files /dev/null and b/dataset/val/wrench/img_0000.jpg differ diff --git a/dataset/val/wrench/img_0001.jpg b/dataset/val/wrench/img_0001.jpg new file mode 100644 index 0000000..e80f50a Binary files /dev/null and b/dataset/val/wrench/img_0001.jpg differ diff --git a/dataset/val/wrench/img_0002.jpg b/dataset/val/wrench/img_0002.jpg new file mode 100644 index 0000000..befc987 Binary files /dev/null and b/dataset/val/wrench/img_0002.jpg differ diff --git a/dataset/val/wrench/img_0003.jpg b/dataset/val/wrench/img_0003.jpg new file mode 100644 index 0000000..e4bf623 Binary files /dev/null and b/dataset/val/wrench/img_0003.jpg differ diff --git a/dataset/val/wrench/img_0004.jpg b/dataset/val/wrench/img_0004.jpg new file mode 100644 index 0000000..89037be Binary files /dev/null and b/dataset/val/wrench/img_0004.jpg differ diff --git a/dataset/val/wrench/img_0005.jpg b/dataset/val/wrench/img_0005.jpg new file mode 100644 index 0000000..7ff2049 Binary files /dev/null and b/dataset/val/wrench/img_0005.jpg differ diff --git a/dataset/val/wrench/img_0006.jpg b/dataset/val/wrench/img_0006.jpg new file mode 100644 index 0000000..00cc45a Binary files /dev/null and b/dataset/val/wrench/img_0006.jpg differ diff --git a/dataset/val/wrench/img_0007.jpg b/dataset/val/wrench/img_0007.jpg new file mode 100644 index 0000000..9a2317c Binary files /dev/null and b/dataset/val/wrench/img_0007.jpg differ diff --git a/dataset/val/wrench/img_0008.jpg b/dataset/val/wrench/img_0008.jpg new file mode 100644 index 0000000..8c65c28 Binary files /dev/null and b/dataset/val/wrench/img_0008.jpg differ diff --git a/dataset/val/wrench/img_0009.jpg b/dataset/val/wrench/img_0009.jpg new file mode 100644 index 0000000..cf1f191 Binary files /dev/null and b/dataset/val/wrench/img_0009.jpg differ diff --git a/dataset/val/wrench/img_0010.jpg b/dataset/val/wrench/img_0010.jpg new file mode 100644 index 0000000..875b2bd Binary files /dev/null and b/dataset/val/wrench/img_0010.jpg differ diff --git a/dataset/val/wrench/img_0011.jpg b/dataset/val/wrench/img_0011.jpg new file mode 100644 index 0000000..874fc0f Binary files /dev/null and b/dataset/val/wrench/img_0011.jpg differ diff --git a/dataset/val/wrench/img_0012.jpg b/dataset/val/wrench/img_0012.jpg new file mode 100644 index 0000000..ad061cd Binary files /dev/null and b/dataset/val/wrench/img_0012.jpg differ diff --git a/dataset/val/wrench/img_0013.jpg b/dataset/val/wrench/img_0013.jpg new file mode 100644 index 0000000..fb58316 Binary files /dev/null and b/dataset/val/wrench/img_0013.jpg differ diff --git a/dataset/val/wrench/img_0014.jpg b/dataset/val/wrench/img_0014.jpg new file mode 100644 index 0000000..8dbb420 Binary files /dev/null and b/dataset/val/wrench/img_0014.jpg differ diff --git a/dataset/val/wrench/img_0015.jpg b/dataset/val/wrench/img_0015.jpg new file mode 100644 index 0000000..2a84b65 Binary files /dev/null and b/dataset/val/wrench/img_0015.jpg differ diff --git a/dataset/val/wrench/img_0016.jpg b/dataset/val/wrench/img_0016.jpg new file mode 100644 index 0000000..ce7c56d Binary files /dev/null and b/dataset/val/wrench/img_0016.jpg differ diff --git a/dataset/val/wrench/img_0017.jpg b/dataset/val/wrench/img_0017.jpg new file mode 100644 index 0000000..8e07924 Binary files /dev/null and b/dataset/val/wrench/img_0017.jpg differ diff --git a/dataset/val/wrench/img_0018.jpg b/dataset/val/wrench/img_0018.jpg new file mode 100644 index 0000000..e402254 Binary files /dev/null and b/dataset/val/wrench/img_0018.jpg differ diff --git a/dataset/val/wrench/img_0019.jpg b/dataset/val/wrench/img_0019.jpg new file mode 100644 index 0000000..23c8ceb Binary files /dev/null and b/dataset/val/wrench/img_0019.jpg differ diff --git a/dataset/val/wrench/img_0020.jpg b/dataset/val/wrench/img_0020.jpg new file mode 100644 index 0000000..c91f876 Binary files /dev/null and b/dataset/val/wrench/img_0020.jpg differ diff --git a/dataset/val/wrench/img_0021.jpg b/dataset/val/wrench/img_0021.jpg new file mode 100644 index 0000000..a4a49d7 Binary files /dev/null and b/dataset/val/wrench/img_0021.jpg differ diff --git a/dataset/val/wrench/img_0022.jpg b/dataset/val/wrench/img_0022.jpg new file mode 100644 index 0000000..1806fb6 Binary files /dev/null and b/dataset/val/wrench/img_0022.jpg differ diff --git a/dataset/val/wrench/img_0023.jpg b/dataset/val/wrench/img_0023.jpg new file mode 100644 index 0000000..05418e3 Binary files /dev/null and b/dataset/val/wrench/img_0023.jpg differ diff --git a/dataset/val/wrench/img_0024.jpg b/dataset/val/wrench/img_0024.jpg new file mode 100644 index 0000000..cf39e34 Binary files /dev/null and b/dataset/val/wrench/img_0024.jpg differ diff --git a/dataset/val/wrench/img_0025.jpg b/dataset/val/wrench/img_0025.jpg new file mode 100644 index 0000000..ea3e137 Binary files /dev/null and b/dataset/val/wrench/img_0025.jpg differ diff --git a/dataset/val/wrench/img_0026.jpg b/dataset/val/wrench/img_0026.jpg new file mode 100644 index 0000000..e66a4c9 Binary files /dev/null and b/dataset/val/wrench/img_0026.jpg differ diff --git a/dataset/val/wrench/img_0027.jpg b/dataset/val/wrench/img_0027.jpg new file mode 100644 index 0000000..3adb6e7 Binary files /dev/null and b/dataset/val/wrench/img_0027.jpg differ diff --git a/dataset/val/wrench/img_0028.jpg b/dataset/val/wrench/img_0028.jpg new file mode 100644 index 0000000..a15018e Binary files /dev/null and b/dataset/val/wrench/img_0028.jpg differ diff --git a/dataset/val/wrench/img_0029.jpg b/dataset/val/wrench/img_0029.jpg new file mode 100644 index 0000000..c8a4975 Binary files /dev/null and b/dataset/val/wrench/img_0029.jpg differ diff --git a/dataset/val/wrench/img_0030.jpg b/dataset/val/wrench/img_0030.jpg new file mode 100644 index 0000000..65cda0e Binary files /dev/null and b/dataset/val/wrench/img_0030.jpg differ diff --git a/dataset/val/wrench/img_0031.jpg b/dataset/val/wrench/img_0031.jpg new file mode 100644 index 0000000..5e1dd47 Binary files /dev/null and b/dataset/val/wrench/img_0031.jpg differ diff --git a/dataset/val/wrench/img_0032.jpg b/dataset/val/wrench/img_0032.jpg new file mode 100644 index 0000000..352395d Binary files /dev/null and b/dataset/val/wrench/img_0032.jpg differ diff --git a/dataset/val/wrench/img_0033.jpg b/dataset/val/wrench/img_0033.jpg new file mode 100644 index 0000000..6a79b3a Binary files /dev/null and b/dataset/val/wrench/img_0033.jpg differ diff --git a/dataset/val/wrench/img_0034.jpg b/dataset/val/wrench/img_0034.jpg new file mode 100644 index 0000000..5c633fe Binary files /dev/null and b/dataset/val/wrench/img_0034.jpg differ diff --git a/dataset/val/wrench/img_0035.jpg b/dataset/val/wrench/img_0035.jpg new file mode 100644 index 0000000..87afc9b Binary files /dev/null and b/dataset/val/wrench/img_0035.jpg differ diff --git a/dataset/val/wrench/img_0036.jpg b/dataset/val/wrench/img_0036.jpg new file mode 100644 index 0000000..3c54a15 Binary files /dev/null and b/dataset/val/wrench/img_0036.jpg differ diff --git a/dataset/val/wrench/img_0037.jpg b/dataset/val/wrench/img_0037.jpg new file mode 100644 index 0000000..1bc55ab Binary files /dev/null and b/dataset/val/wrench/img_0037.jpg differ diff --git a/dataset/val/wrench/img_0038.jpg b/dataset/val/wrench/img_0038.jpg new file mode 100644 index 0000000..acbb051 Binary files /dev/null and b/dataset/val/wrench/img_0038.jpg differ diff --git a/dataset/val/wrench/img_0039.jpg b/dataset/val/wrench/img_0039.jpg new file mode 100644 index 0000000..2c4d4e2 Binary files /dev/null and b/dataset/val/wrench/img_0039.jpg differ diff --git a/dataset/val/wrench/img_0040.jpg b/dataset/val/wrench/img_0040.jpg new file mode 100644 index 0000000..3b50176 Binary files /dev/null and b/dataset/val/wrench/img_0040.jpg differ diff --git a/dataset/val/wrench/img_0041.jpg b/dataset/val/wrench/img_0041.jpg new file mode 100644 index 0000000..724a097 Binary files /dev/null and b/dataset/val/wrench/img_0041.jpg differ diff --git a/dataset/val/wrench/img_0042.jpg b/dataset/val/wrench/img_0042.jpg new file mode 100644 index 0000000..189a2e5 Binary files /dev/null and b/dataset/val/wrench/img_0042.jpg differ diff --git a/dataset/val/wrench/img_0043.jpg b/dataset/val/wrench/img_0043.jpg new file mode 100644 index 0000000..f75cd31 Binary files /dev/null and b/dataset/val/wrench/img_0043.jpg differ diff --git a/dataset/val/wrench/img_0044.jpg b/dataset/val/wrench/img_0044.jpg new file mode 100644 index 0000000..3fc5a83 Binary files /dev/null and b/dataset/val/wrench/img_0044.jpg differ diff --git a/dataset/val/wrench/img_0045.jpg b/dataset/val/wrench/img_0045.jpg new file mode 100644 index 0000000..82e3f83 Binary files /dev/null and b/dataset/val/wrench/img_0045.jpg differ diff --git a/dataset/val/wrench/img_0046.jpg b/dataset/val/wrench/img_0046.jpg new file mode 100644 index 0000000..f1df37e Binary files /dev/null and b/dataset/val/wrench/img_0046.jpg differ diff --git a/dataset/val/wrench/img_0047.jpg b/dataset/val/wrench/img_0047.jpg new file mode 100644 index 0000000..96fe270 Binary files /dev/null and b/dataset/val/wrench/img_0047.jpg differ diff --git a/dataset/val/wrench/img_0048.jpg b/dataset/val/wrench/img_0048.jpg new file mode 100644 index 0000000..7fcda78 Binary files /dev/null and b/dataset/val/wrench/img_0048.jpg differ diff --git a/dataset/val/wrench/img_0049.jpg b/dataset/val/wrench/img_0049.jpg new file mode 100644 index 0000000..901a9c7 Binary files /dev/null and b/dataset/val/wrench/img_0049.jpg differ diff --git a/dataset/val/wrench/img_0050.jpg b/dataset/val/wrench/img_0050.jpg new file mode 100644 index 0000000..0b0ca83 Binary files /dev/null and b/dataset/val/wrench/img_0050.jpg differ diff --git a/dataset/val/wrench/img_0051.jpg b/dataset/val/wrench/img_0051.jpg new file mode 100644 index 0000000..37c246d Binary files /dev/null and b/dataset/val/wrench/img_0051.jpg differ diff --git a/dataset/val/wrench/img_0052.jpg b/dataset/val/wrench/img_0052.jpg new file mode 100644 index 0000000..6f329af Binary files /dev/null and b/dataset/val/wrench/img_0052.jpg differ diff --git a/dataset/val/wrench/img_0053.jpg b/dataset/val/wrench/img_0053.jpg new file mode 100644 index 0000000..cbc54c2 Binary files /dev/null and b/dataset/val/wrench/img_0053.jpg differ diff --git a/dataset/val/wrench/img_0054.jpg b/dataset/val/wrench/img_0054.jpg new file mode 100644 index 0000000..985e231 Binary files /dev/null and b/dataset/val/wrench/img_0054.jpg differ diff --git a/dataset/val/wrench/img_0055.jpg b/dataset/val/wrench/img_0055.jpg new file mode 100644 index 0000000..5aef7dc Binary files /dev/null and b/dataset/val/wrench/img_0055.jpg differ diff --git a/dataset/val/wrench/img_0056.jpg b/dataset/val/wrench/img_0056.jpg new file mode 100644 index 0000000..19899ca Binary files /dev/null and b/dataset/val/wrench/img_0056.jpg differ diff --git a/dataset/val/wrench/img_0057.jpg b/dataset/val/wrench/img_0057.jpg new file mode 100644 index 0000000..5599204 Binary files /dev/null and b/dataset/val/wrench/img_0057.jpg differ diff --git a/dataset/val/wrench/img_0058.jpg b/dataset/val/wrench/img_0058.jpg new file mode 100644 index 0000000..cd7992e Binary files /dev/null and b/dataset/val/wrench/img_0058.jpg differ diff --git a/dataset/val/wrench/img_0059.jpg b/dataset/val/wrench/img_0059.jpg new file mode 100644 index 0000000..d78f699 Binary files /dev/null and b/dataset/val/wrench/img_0059.jpg differ diff --git a/debug_box_0.png b/debug_box_0.png new file mode 100644 index 0000000..8106028 Binary files /dev/null and b/debug_box_0.png differ diff --git a/debug_box_0_crop.png b/debug_box_0_crop.png new file mode 100644 index 0000000..ed692e5 Binary files /dev/null and b/debug_box_0_crop.png differ diff --git a/debug_box_1.png b/debug_box_1.png new file mode 100644 index 0000000..639ff12 Binary files /dev/null and b/debug_box_1.png differ diff --git a/debug_box_2.png b/debug_box_2.png new file mode 100644 index 0000000..ad706bd Binary files /dev/null and b/debug_box_2.png differ diff --git a/debug_box_3.png b/debug_box_3.png new file mode 100644 index 0000000..cf41a73 Binary files /dev/null and b/debug_box_3.png differ diff --git a/debug_box_4.png b/debug_box_4.png new file mode 100644 index 0000000..9c89f73 Binary files /dev/null and b/debug_box_4.png differ diff --git a/debug_boxes.py b/debug_boxes.py new file mode 100644 index 0000000..1adf4da --- /dev/null +++ b/debug_boxes.py @@ -0,0 +1,15 @@ +"""Debug: save each detected box ROI as separate image.""" +import cv2 +import numpy as np +import os +from test_detect import find_boxes + +BASE_DIR = os.path.dirname(os.path.abspath(__file__)) +image = cv2.imread(os.path.join(BASE_DIR, "test.png")) + +boxes = find_boxes(image) +for i, box in enumerate(boxes): + roi = box["roi"] + path = os.path.join(BASE_DIR, f"debug_box_{i}.png") + cv2.imwrite(path, roi) + print(f"Box {i}: bbox={box['bbox']}, area={box['area']}, saved to {path}") diff --git a/debug_mask.png b/debug_mask.png new file mode 100644 index 0000000..8879caa Binary files /dev/null and b/debug_mask.png differ diff --git a/detect_box.py b/detect_box.py new file mode 100644 index 0000000..e650952 --- /dev/null +++ b/detect_box.py @@ -0,0 +1,280 @@ +""" +Module V: Box detection and classification for RMK-1 manipulator. + +Usage: + python3 detect_box.py --target 1 + +Target classes (per competition spec): + 1 - hammer (молоток) + 2 - wrench (гаечный ключ) + 3 - pliers (пассатижи) + +This script: + 1. Subscribes to camera topic /RMC1/arm95/camera_gripper/image_color + 2. Classifies visible boxes using trained YOLOv8 model + 3. Finds the target box and computes its position relative to Base_link + 4. Publishes coordinates for manipulator control +""" + +import argparse +import os +import sys +import cv2 +import numpy as np +from ultralytics import YOLO + +# Class mapping: YOLO class index -> competition ID +# YOLO trains alphabetically: hammer=0, pliers=1, wrench=2 +YOLO_TO_COMPETITION = { + 0: 1, # hammer -> 1 + 1: 3, # pliers -> 3 + 2: 2, # wrench -> 2 +} + +COMPETITION_TO_YOLO = {v: k for k, v in YOLO_TO_COMPETITION.items()} + +CLASS_NAMES = { + 1: "hammer (молоток)", + 2: "wrench (гаечный ключ)", + 3: "pliers (пассатижи)", +} + +# YOLO class names (alphabetical order) +YOLO_CLASS_NAMES = {0: "hammer", 1: "pliers", 2: "wrench"} + + +def load_model(model_path=None): + if model_path is None: + base_dir = os.path.dirname(os.path.abspath(__file__)) + model_path = os.path.join(base_dir, "best.pt") + return YOLO(model_path) + + +def classify_image(model, image): + """ + Classify an image and return (class_id, confidence). + class_id is competition ID (1=hammer, 2=wrench, 3=pliers). + """ + results = model(image, imgsz=224, verbose=False) + if results and results[0].probs is not None: + probs = results[0].probs + yolo_class = probs.top1 + confidence = probs.top1conf.item() + comp_class = YOLO_TO_COMPETITION.get(yolo_class, -1) + return comp_class, confidence + return -1, 0.0 + + +def detect_boxes_in_frame(image, target_id): + """ + Given a top-down camera frame, segment individual boxes and classify each. + Returns list of (competition_class_id, confidence, center_x, center_y, bbox). + """ + gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) + blurred = cv2.GaussianBlur(gray, (5, 5), 0) + + # Adaptive threshold to find box regions + thresh = cv2.adaptiveThreshold( + blurred, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, + cv2.THRESH_BINARY_INV, 21, 5 + ) + + # Morphological operations to clean up + kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) + thresh = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel, iterations=2) + thresh = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=1) + + contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) + + h, w = image.shape[:2] + min_area = (h * w) * 0.01 # minimum 1% of frame + max_area = (h * w) * 0.5 # maximum 50% of frame + + boxes = [] + for cnt in contours: + area = cv2.contourArea(cnt) + if area < min_area or area > max_area: + continue + + x, y, bw, bh = cv2.boundingRect(cnt) + # Extract box region + roi = image[y:y+bh, x:x+bw] + if roi.size == 0: + continue + + boxes.append({ + "roi": roi, + "bbox": (x, y, bw, bh), + "center": (x + bw // 2, y + bh // 2), + "area": area, + }) + + return boxes + + +def find_target_box(model, image, target_id): + """ + Find the target box in the camera frame. + Returns (center_x, center_y, confidence) in pixel coordinates, or None. + """ + boxes = detect_boxes_in_frame(image, target_id) + + best_match = None + best_conf = 0.0 + + for box in boxes: + comp_class, conf = classify_image(model, box["roi"]) + if comp_class == target_id and conf > best_conf: + best_conf = conf + best_match = box + + if best_match and best_conf > 0.5: + cx, cy = best_match["center"] + return cx, cy, best_conf, best_match["bbox"] + + return None + + +def pixel_to_base_link(cx, cy, img_w, img_h, + camera_x=0.0, camera_y=0.0, camera_z=0.7, + fov_x=0.6, fov_y=0.6): + """ + Convert pixel coordinates to approximate Base_link coordinates. + Assumes camera looks straight down from (camera_x, camera_y, camera_z). + fov_x/fov_y: field of view in meters at camera_z height. + + These parameters should be calibrated for the actual setup. + """ + # Normalize to [-0.5, 0.5] + nx = (cx / img_w) - 0.5 + ny = (cy / img_h) - 0.5 + + # Map to world coordinates relative to camera + world_x = camera_x + nx * fov_x + world_y = camera_y + ny * fov_y + world_z = 0.0 # boxes are on the shelf surface + + return world_x, world_y, world_z + + +def demo_on_image(image_path, target_id, model): + """Demo classification on a single image.""" + image = cv2.imread(image_path) + if image is None: + print(f"Error: cannot read {image_path}") + return + + comp_class, confidence = classify_image(model, image) + print(f"Image: {image_path}") + print(f" Predicted: {CLASS_NAMES.get(comp_class, 'unknown')} (ID={comp_class})") + print(f" Confidence: {confidence:.4f}") + print(f" Target: {CLASS_NAMES.get(target_id, 'unknown')} (ID={target_id})") + print(f" Match: {'YES' if comp_class == target_id else 'NO'}") + + +def main(): + parser = argparse.ArgumentParser(description="Module V: Box Detection") + parser.add_argument("--target", type=int, required=True, choices=[1, 2, 3], + help="Target box ID: 1=hammer, 2=wrench, 3=pliers") + parser.add_argument("--model", type=str, default=None, + help="Path to model weights (default: best.pt)") + parser.add_argument("--image", type=str, default=None, + help="Test on a single image instead of ROS2 camera") + parser.add_argument("--ros", action="store_true", + help="Run in ROS2 mode (subscribe to camera topic)") + args = parser.parse_args() + + print(f"Target: {CLASS_NAMES[args.target]}") + model = load_model(args.model) + print("Model loaded successfully.") + + if args.image: + demo_on_image(args.image, args.target, model) + return + + if args.ros: + run_ros2(model, args.target) + return + + # Default: demo on source images + base_dir = os.path.dirname(os.path.abspath(__file__)) + images_dir = os.path.join(base_dir, "images") + for name in ["Hammer.jpg", "Wrench.jpg", "Pliers.jpg"]: + path = os.path.join(images_dir, name) + if os.path.exists(path): + demo_on_image(path, args.target, model) + print() + + +def run_ros2(model, target_id): + """ROS2 node that subscribes to camera and finds target box.""" + try: + import rclpy + from rclpy.node import Node + from sensor_msgs.msg import Image + from geometry_msgs.msg import PoseStamped + from cv_bridge import CvBridge + except ImportError: + print("Error: ROS2 packages not found. Install rclpy, cv_bridge, etc.") + sys.exit(1) + + class BoxDetectorNode(Node): + def __init__(self): + super().__init__("box_detector") + self.bridge = CvBridge() + self.model = model + self.target_id = target_id + self.detected = False + + self.subscription = self.create_subscription( + Image, + "/RMC1/arm95/camera_gripper/image_color", + self.image_callback, + 10 + ) + self.get_logger().info( + f"Box detector started. Target: {CLASS_NAMES[target_id]}" + ) + + def image_callback(self, msg): + if self.detected: + return + + cv_image = self.bridge.imgmsg_to_cv2(msg, desired_encoding="bgr8") + h, w = cv_image.shape[:2] + + result = find_target_box(self.model, cv_image, self.target_id) + if result is not None: + cx, cy, conf, bbox = result + wx, wy, wz = pixel_to_base_link(cx, cy, w, h) + + self.get_logger().info( + f"TARGET FOUND: {CLASS_NAMES[self.target_id]} " + f"at pixel ({cx}, {cy}), conf={conf:.2f}" + ) + self.get_logger().info( + f"Base_link coords: x={wx:.3f}, y={wy:.3f}, z={wz:.3f}" + ) + + self.detected = True + else: + # Try classifying the whole frame + comp_class, conf = classify_image(self.model, cv_image) + self.get_logger().info( + f"Frame classified as: {CLASS_NAMES.get(comp_class, 'unknown')} " + f"(conf={conf:.2f})" + ) + + rclpy.init() + node = BoxDetectorNode() + try: + rclpy.spin(node) + except KeyboardInterrupt: + pass + finally: + node.destroy_node() + rclpy.shutdown() + + +if __name__ == "__main__": + main() diff --git a/generate_dataset.py b/generate_dataset.py new file mode 100644 index 0000000..53fc18c --- /dev/null +++ b/generate_dataset.py @@ -0,0 +1,239 @@ +""" +Generate augmented classification dataset from 3 source images. +Classes: hammer (0), wrench (1), pliers (2) + +Improved: composites tools onto various backgrounds simulating +camera view of boxes on a shelf (brown, gray, dark surfaces). +""" + +import os +import cv2 +import numpy as np +from PIL import Image +import albumentations as A +import random + +SEED = 42 +random.seed(SEED) +np.random.seed(SEED) + +BASE_DIR = os.path.dirname(os.path.abspath(__file__)) +IMAGES_DIR = os.path.join(BASE_DIR, "images") +DATASET_DIR = os.path.join(BASE_DIR, "dataset") + +CLASSES = { + "hammer": "Hammer.jpg", + "wrench": "Wrench.jpg", + "pliers": "Pliers.jpg", +} + +TRAIN_COUNT = 300 # per class +VAL_COUNT = 60 # per class +IMG_SIZE = 224 + +# Background colors to simulate shelf/box surfaces +BG_COLORS = [ + (255, 255, 255), # white box + (240, 240, 240), # light gray + (220, 220, 220), # gray + (200, 190, 170), # beige/cardboard + (180, 160, 130), # brown shelf + (160, 140, 110), # dark brown + (140, 130, 120), # dark shelf + (100, 100, 100), # dark gray + (80, 80, 80), # very dark + (245, 240, 230), # off-white + (230, 225, 210), # cream +] + + +def create_background(size, bg_type="random"): + """Create a background image.""" + h, w = size + if bg_type == "random": + choice = random.random() + if choice < 0.4: + # Solid color + color = random.choice(BG_COLORS) + bg = np.full((h, w, 3), color, dtype=np.uint8) + # Add slight noise + noise = np.random.randint(-10, 10, (h, w, 3), dtype=np.int16) + bg = np.clip(bg.astype(np.int16) + noise, 0, 255).astype(np.uint8) + elif choice < 0.7: + # Gradient + color1 = np.array(random.choice(BG_COLORS), dtype=np.float32) + color2 = np.array(random.choice(BG_COLORS), dtype=np.float32) + gradient = np.linspace(0, 1, h).reshape(-1, 1, 1) + bg = (color1 * (1 - gradient) + color2 * gradient).astype(np.uint8) + bg = np.broadcast_to(bg, (h, w, 3)).copy() + else: + # Textured (simulating wood/metal surface) + base_color = random.choice(BG_COLORS) + bg = np.full((h, w, 3), base_color, dtype=np.uint8) + # Add texture noise + noise = np.random.randint(-20, 20, (h, w, 3), dtype=np.int16) + bg = np.clip(bg.astype(np.int16) + noise, 0, 255).astype(np.uint8) + bg = cv2.GaussianBlur(bg, (3, 3), 0) + return bg + + +def extract_tool_mask(img): + """Create a mask separating the tool from white background.""" + gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) + # Tool is non-white + _, mask = cv2.threshold(gray, 240, 255, cv2.THRESH_BINARY_INV) + # Dilate to include edges + kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3)) + mask = cv2.dilate(mask, kernel, iterations=1) + return mask + + +def composite_on_background(tool_img, bg, mask=None): + """Place tool image on background, simulating box on shelf.""" + bh, bw = bg.shape[:2] + th, tw = tool_img.shape[:2] + + # Random scale for the tool on the "box" + scale = random.uniform(0.3, 0.8) + new_w = int(tw * scale * bw / max(tw, th)) + new_h = int(th * scale * bh / max(tw, th)) + new_w = min(new_w, int(bw * 0.85)) + new_h = min(new_h, int(bh * 0.85)) + + if new_w < 10 or new_h < 10: + return bg + + tool_resized = cv2.resize(tool_img, (new_w, new_h)) + + if mask is not None: + mask_resized = cv2.resize(mask, (new_w, new_h)) + else: + mask_resized = np.ones((new_h, new_w), dtype=np.uint8) * 255 + + # Random position + max_x = bw - new_w + max_y = bh - new_h + if max_x <= 0 or max_y <= 0: + return bg + + x = random.randint(0, max_x) + y = random.randint(0, max_y) + + result = bg.copy() + + # Sometimes draw a white "box/card" under the tool + if random.random() < 0.6: + pad = random.randint(5, 15) + bx1 = max(0, x - pad) + by1 = max(0, y - pad) + bx2 = min(bw, x + new_w + pad) + by2 = min(bh, y + new_h + pad) + box_color = random.choice([(255, 255, 255), (245, 245, 245), (240, 240, 240)]) + cv2.rectangle(result, (bx1, by1), (bx2, by2), box_color, -1) + + # Composite tool + mask_3ch = cv2.merge([mask_resized, mask_resized, mask_resized]) + mask_f = mask_3ch.astype(np.float32) / 255.0 + + roi = result[y:y+new_h, x:x+new_w].astype(np.float32) + tool_f = tool_resized.astype(np.float32) + blended = tool_f * mask_f + roi * (1 - mask_f) + result[y:y+new_h, x:x+new_w] = blended.astype(np.uint8) + + return result + + +# Augmentation on the final composite +train_aug = A.Compose([ + A.Rotate(limit=45, p=0.7, border_mode=cv2.BORDER_REFLECT_101), + A.HorizontalFlip(p=0.5), + A.VerticalFlip(p=0.3), + A.Perspective(scale=(0.02, 0.06), p=0.3), + A.OneOf([ + A.GaussianBlur(blur_limit=(3, 5)), + A.MotionBlur(blur_limit=(3, 5)), + ], p=0.3), + A.RandomBrightnessContrast(brightness_limit=0.3, contrast_limit=0.3, p=0.5), + A.HueSaturationValue(hue_shift_limit=10, sat_shift_limit=25, val_shift_limit=25, p=0.4), + A.GaussNoise(p=0.2), + A.ImageCompression(quality_range=(60, 95), p=0.2), + A.Resize(IMG_SIZE, IMG_SIZE), +]) + +val_aug = A.Compose([ + A.Rotate(limit=30, p=0.5, border_mode=cv2.BORDER_REFLECT_101), + A.HorizontalFlip(p=0.5), + A.RandomBrightnessContrast(brightness_limit=0.15, contrast_limit=0.15, p=0.3), + A.Resize(IMG_SIZE, IMG_SIZE), +]) + +# Simple augmentation - just the tool on white bg (like original) +simple_aug = A.Compose([ + A.RandomResizedCrop(size=(IMG_SIZE, IMG_SIZE), scale=(0.5, 1.0), ratio=(0.75, 1.33)), + A.HorizontalFlip(p=0.5), + A.VerticalFlip(p=0.3), + A.Rotate(limit=180, p=0.8, border_mode=cv2.BORDER_CONSTANT, fill=255), + A.RandomBrightnessContrast(brightness_limit=0.2, contrast_limit=0.2, p=0.4), + A.GaussianBlur(blur_limit=(3, 5), p=0.2), +]) + + +def generate_images(img_path, output_dir, count, is_train=True): + os.makedirs(output_dir, exist_ok=True) + img = cv2.imread(img_path) + if img is None: + raise FileNotFoundError(f"Cannot read {img_path}") + + mask = extract_tool_mask(img) + + # Pad to square + h, w = img.shape[:2] + max_side = max(h, w) + padded = np.full((max_side, max_side, 3), 255, dtype=np.uint8) + padded_mask = np.zeros((max_side, max_side), dtype=np.uint8) + y_off = (max_side - h) // 2 + x_off = (max_side - w) // 2 + padded[y_off:y_off+h, x_off:x_off+w] = img + padded_mask[y_off:y_off+h, x_off:x_off+w] = mask + + aug = train_aug if is_train else val_aug + + for i in range(count): + if is_train and random.random() < 0.6: + # Composite on background (simulates box on shelf) + bg = create_background((IMG_SIZE + 60, IMG_SIZE + 60)) + composite = composite_on_background(padded, bg, padded_mask) + result = aug(image=composite)["image"] + else: + # Simple augmentation (tool on white/clean bg) + result = simple_aug(image=padded)["image"] + + out_path = os.path.join(output_dir, f"img_{i:04d}.jpg") + cv2.imwrite(out_path, result) + + +def main(): + import shutil + # Clean old dataset + if os.path.exists(DATASET_DIR): + shutil.rmtree(DATASET_DIR) + + print("Generating improved dataset with background compositing...") + for class_name, filename in CLASSES.items(): + img_path = os.path.join(IMAGES_DIR, filename) + + train_dir = os.path.join(DATASET_DIR, "train", class_name) + generate_images(img_path, train_dir, TRAIN_COUNT, is_train=True) + print(f" {class_name}: {TRAIN_COUNT} train images") + + val_dir = os.path.join(DATASET_DIR, "val", class_name) + generate_images(img_path, val_dir, VAL_COUNT, is_train=False) + print(f" {class_name}: {VAL_COUNT} val images") + + print(f"\nDataset: {DATASET_DIR}") + print(f" Train: {TRAIN_COUNT * len(CLASSES)} images") + print(f" Val: {VAL_COUNT * len(CLASSES)} images") + + +if __name__ == "__main__": + main() diff --git a/images/Hammer.jpg b/images/Hammer.jpg new file mode 100644 index 0000000..b97b4c2 Binary files /dev/null and b/images/Hammer.jpg differ diff --git a/images/Pliers.jpg b/images/Pliers.jpg new file mode 100644 index 0000000..d196de1 Binary files /dev/null and b/images/Pliers.jpg differ diff --git a/images/Wrench.jpg b/images/Wrench.jpg new file mode 100644 index 0000000..51d31ea Binary files /dev/null and b/images/Wrench.jpg differ diff --git a/runs/classify/val/confusion_matrix.png b/runs/classify/val/confusion_matrix.png new file mode 100644 index 0000000..0d7d2b3 Binary files /dev/null and b/runs/classify/val/confusion_matrix.png differ diff --git a/runs/classify/val/confusion_matrix_normalized.png b/runs/classify/val/confusion_matrix_normalized.png new file mode 100644 index 0000000..0e6e848 Binary files /dev/null and b/runs/classify/val/confusion_matrix_normalized.png differ diff --git a/runs/classify/val/val_batch0_labels.jpg b/runs/classify/val/val_batch0_labels.jpg new file mode 100644 index 0000000..395588e Binary files /dev/null and b/runs/classify/val/val_batch0_labels.jpg differ diff --git a/runs/classify/val/val_batch0_pred.jpg b/runs/classify/val/val_batch0_pred.jpg new file mode 100644 index 0000000..e92dc1d Binary files /dev/null and b/runs/classify/val/val_batch0_pred.jpg differ diff --git a/runs/classify/val/val_batch1_labels.jpg b/runs/classify/val/val_batch1_labels.jpg new file mode 100644 index 0000000..2b857d3 Binary files /dev/null and b/runs/classify/val/val_batch1_labels.jpg differ diff --git a/runs/classify/val/val_batch1_pred.jpg b/runs/classify/val/val_batch1_pred.jpg new file mode 100644 index 0000000..2a88543 Binary files /dev/null and b/runs/classify/val/val_batch1_pred.jpg differ diff --git a/runs/classify/val/val_batch2_labels.jpg b/runs/classify/val/val_batch2_labels.jpg new file mode 100644 index 0000000..df446e8 Binary files /dev/null and b/runs/classify/val/val_batch2_labels.jpg differ diff --git a/runs/classify/val/val_batch2_pred.jpg b/runs/classify/val/val_batch2_pred.jpg new file mode 100644 index 0000000..6f1e57e Binary files /dev/null and b/runs/classify/val/val_batch2_pred.jpg differ diff --git a/runs/classify/val2/confusion_matrix.png b/runs/classify/val2/confusion_matrix.png new file mode 100644 index 0000000..5b4f1c0 Binary files /dev/null and b/runs/classify/val2/confusion_matrix.png differ diff --git a/runs/classify/val2/confusion_matrix_normalized.png b/runs/classify/val2/confusion_matrix_normalized.png new file mode 100644 index 0000000..0e6e848 Binary files /dev/null and b/runs/classify/val2/confusion_matrix_normalized.png differ diff --git a/runs/classify/val2/val_batch0_labels.jpg b/runs/classify/val2/val_batch0_labels.jpg new file mode 100644 index 0000000..1d5cbb9 Binary files /dev/null and b/runs/classify/val2/val_batch0_labels.jpg differ diff --git a/runs/classify/val2/val_batch0_pred.jpg b/runs/classify/val2/val_batch0_pred.jpg new file mode 100644 index 0000000..4c4b6ef Binary files /dev/null and b/runs/classify/val2/val_batch0_pred.jpg differ diff --git a/runs/classify/val2/val_batch1_labels.jpg b/runs/classify/val2/val_batch1_labels.jpg new file mode 100644 index 0000000..c068495 Binary files /dev/null and b/runs/classify/val2/val_batch1_labels.jpg differ diff --git a/runs/classify/val2/val_batch1_pred.jpg b/runs/classify/val2/val_batch1_pred.jpg new file mode 100644 index 0000000..58ff3aa Binary files /dev/null and b/runs/classify/val2/val_batch1_pred.jpg differ diff --git a/runs/classify/val2/val_batch2_labels.jpg b/runs/classify/val2/val_batch2_labels.jpg new file mode 100644 index 0000000..c5dd2fa Binary files /dev/null and b/runs/classify/val2/val_batch2_labels.jpg differ diff --git a/runs/classify/val2/val_batch2_pred.jpg b/runs/classify/val2/val_batch2_pred.jpg new file mode 100644 index 0000000..a451d08 Binary files /dev/null and b/runs/classify/val2/val_batch2_pred.jpg differ diff --git a/runs/module_v_cls/args.yaml b/runs/module_v_cls/args.yaml new file mode 100644 index 0000000..9632088 --- /dev/null +++ b/runs/module_v_cls/args.yaml @@ -0,0 +1,109 @@ +task: classify +mode: train +model: yolov8n-cls.pt +data: /home/slava/Downloads/module_v/dataset +epochs: 80 +time: null +patience: 15 +batch: 32 +imgsz: 224 +save: true +save_period: -1 +cache: false +device: cpu +workers: 8 +project: /home/slava/Downloads/module_v/runs +name: module_v_cls +exist_ok: true +pretrained: true +optimizer: auto +verbose: true +seed: 0 +deterministic: true +single_cls: false +rect: false +cos_lr: false +close_mosaic: 10 +resume: false +amp: true +fraction: 1.0 +profile: false +freeze: null +multi_scale: 0.0 +compile: false +overlap_mask: true +mask_ratio: 4 +dropout: 0.0 +val: true +split: val +save_json: false +conf: null +iou: 0.7 +max_det: 300 +half: false +dnn: false +plots: true +end2end: null +source: null +vid_stride: 1 +stream_buffer: false +visualize: false +augment: false +agnostic_nms: false +classes: null +retina_masks: false +embed: null +show: false +save_frames: false +save_txt: false +save_conf: false +save_crop: false +show_labels: true +show_conf: true +show_boxes: true +line_width: null +format: torchscript +keras: false +optimize: false +int8: false +dynamic: false +simplify: true +opset: null +workspace: null +nms: false +lr0: 0.01 +lrf: 0.01 +momentum: 0.937 +weight_decay: 0.0005 +warmup_epochs: 3.0 +warmup_momentum: 0.8 +warmup_bias_lr: 0.1 +box: 7.5 +cls: 0.5 +dfl: 1.5 +pose: 12.0 +kobj: 1.0 +rle: 1.0 +angle: 1.0 +nbs: 64 +hsv_h: 0.015 +hsv_s: 0.7 +hsv_v: 0.4 +degrees: 0.0 +translate: 0.1 +scale: 0.5 +shear: 0.0 +perspective: 0.0 +flipud: 0.0 +fliplr: 0.5 +bgr: 0.0 +mosaic: 1.0 +mixup: 0.0 +cutmix: 0.0 +copy_paste: 0.0 +copy_paste_mode: flip +auto_augment: randaugment +erasing: 0.4 +cfg: null +tracker: botsort.yaml +save_dir: /home/slava/Downloads/module_v/runs/module_v_cls diff --git a/runs/module_v_cls/confusion_matrix.png b/runs/module_v_cls/confusion_matrix.png new file mode 100644 index 0000000..5b4f1c0 Binary files /dev/null and b/runs/module_v_cls/confusion_matrix.png differ diff --git a/runs/module_v_cls/confusion_matrix_normalized.png b/runs/module_v_cls/confusion_matrix_normalized.png new file mode 100644 index 0000000..0e6e848 Binary files /dev/null and b/runs/module_v_cls/confusion_matrix_normalized.png differ diff --git a/runs/module_v_cls/results.csv b/runs/module_v_cls/results.csv new file mode 100644 index 0000000..290c8fe --- /dev/null +++ b/runs/module_v_cls/results.csv @@ -0,0 +1,17 @@ +epoch,time,train/loss,metrics/accuracy_top1,metrics/accuracy_top5,val/loss,lr/pg0,lr/pg1,lr/pg2 +1,8.74789,0.76806,1,1,0.0141,0.00040012,0.00040012,0.00040012 +2,17.4699,0.16207,1,1,0.00044,0.00080445,0.00080445,0.00080445 +3,26.0215,0.16387,0.99444,1,0.01007,0.00119852,0.00119852,0.00119852 +4,34.6053,0.15253,1,1,0.00185,0.00137595,0.00137595,0.00137595 +5,43.214,0.14246,1,1,0.0001,0.00135826,0.00135826,0.00135826 +6,51.7567,0.10745,0.99444,1,0.00751,0.00134058,0.00134058,0.00134058 +7,60.2915,0.08484,1,1,0.00076,0.0013229,0.0013229,0.0013229 +8,68.9783,0.08449,1,1,6e-05,0.00130521,0.00130521,0.00130521 +9,77.5995,0.11456,1,1,0,0.00128753,0.00128753,0.00128753 +10,86.1496,0.09928,0.99444,1,0.00774,0.00126985,0.00126985,0.00126985 +11,94.8016,0.07465,1,1,0.00041,0.00125216,0.00125216,0.00125216 +12,103.488,0.07094,1,1,0.00049,0.00123448,0.00123448,0.00123448 +13,112.053,0.07769,1,1,0.0001,0.00121679,0.00121679,0.00121679 +14,120.644,0.11552,1,1,4e-05,0.00119911,0.00119911,0.00119911 +15,129.334,0.06071,1,1,0.00265,0.00118143,0.00118143,0.00118143 +16,137.944,0.07039,1,1,0.0001,0.00116374,0.00116374,0.00116374 diff --git a/runs/module_v_cls/results.png b/runs/module_v_cls/results.png new file mode 100644 index 0000000..4169edc Binary files /dev/null and b/runs/module_v_cls/results.png differ diff --git a/runs/module_v_cls/train_batch0.jpg b/runs/module_v_cls/train_batch0.jpg new file mode 100644 index 0000000..e4208a4 Binary files /dev/null and b/runs/module_v_cls/train_batch0.jpg differ diff --git a/runs/module_v_cls/train_batch1.jpg b/runs/module_v_cls/train_batch1.jpg new file mode 100644 index 0000000..d3019b2 Binary files /dev/null and b/runs/module_v_cls/train_batch1.jpg differ diff --git a/runs/module_v_cls/train_batch2.jpg b/runs/module_v_cls/train_batch2.jpg new file mode 100644 index 0000000..bc38f1e Binary files /dev/null and b/runs/module_v_cls/train_batch2.jpg differ diff --git a/runs/module_v_cls/val_batch0_labels.jpg b/runs/module_v_cls/val_batch0_labels.jpg new file mode 100644 index 0000000..3ecb89a Binary files /dev/null and b/runs/module_v_cls/val_batch0_labels.jpg differ diff --git a/runs/module_v_cls/val_batch0_pred.jpg b/runs/module_v_cls/val_batch0_pred.jpg new file mode 100644 index 0000000..bd0f3ca Binary files /dev/null and b/runs/module_v_cls/val_batch0_pred.jpg differ diff --git a/runs/module_v_cls/val_batch1_labels.jpg b/runs/module_v_cls/val_batch1_labels.jpg new file mode 100644 index 0000000..cb2cd79 Binary files /dev/null and b/runs/module_v_cls/val_batch1_labels.jpg differ diff --git a/runs/module_v_cls/val_batch1_pred.jpg b/runs/module_v_cls/val_batch1_pred.jpg new file mode 100644 index 0000000..f8406e6 Binary files /dev/null and b/runs/module_v_cls/val_batch1_pred.jpg differ diff --git a/runs/module_v_cls/val_batch2_labels.jpg b/runs/module_v_cls/val_batch2_labels.jpg new file mode 100644 index 0000000..4c889a6 Binary files /dev/null and b/runs/module_v_cls/val_batch2_labels.jpg differ diff --git a/runs/module_v_cls/val_batch2_pred.jpg b/runs/module_v_cls/val_batch2_pred.jpg new file mode 100644 index 0000000..e91cf54 Binary files /dev/null and b/runs/module_v_cls/val_batch2_pred.jpg differ diff --git a/runs/module_v_cls/weights/best.onnx b/runs/module_v_cls/weights/best.onnx new file mode 100644 index 0000000..c56fe2c Binary files /dev/null and b/runs/module_v_cls/weights/best.onnx differ diff --git a/runs/module_v_cls/weights/best.pt b/runs/module_v_cls/weights/best.pt new file mode 100644 index 0000000..31b002d Binary files /dev/null and b/runs/module_v_cls/weights/best.pt differ diff --git a/runs/module_v_cls/weights/last.pt b/runs/module_v_cls/weights/last.pt new file mode 100644 index 0000000..a026782 Binary files /dev/null and b/runs/module_v_cls/weights/last.pt differ diff --git a/test.png b/test.png new file mode 100644 index 0000000..92df841 Binary files /dev/null and b/test.png differ diff --git a/test_detect.py b/test_detect.py new file mode 100644 index 0000000..e4538a3 --- /dev/null +++ b/test_detect.py @@ -0,0 +1,235 @@ +""" +Test detection on test.png - find individual boxes and classify each. +Saves annotated result to test_result.png +""" + +import cv2 +import numpy as np +import os +from ultralytics import YOLO + +BASE_DIR = os.path.dirname(os.path.abspath(__file__)) + +YOLO_TO_COMPETITION = {0: 1, 1: 3, 2: 2} # hammer=1, pliers=3, wrench=2 +CLASS_NAMES = {1: "hammer", 2: "wrench", 3: "pliers"} +CLASS_COLORS = {1: (0, 255, 0), 2: (255, 165, 0), 3: (0, 0, 255)} + + +def find_boxes(image): + """Find box-like regions in the top-down camera view.""" + hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) + gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) + h, w = image.shape[:2] + + # The boxes are white/light colored rectangles on a brown/dark shelf + # Try multiple approaches and combine + + boxes = [] + + # Approach 1: Look for bright rectangular regions + # Boxes appear as light-colored rectangles + _, bright_mask = cv2.threshold(gray, 160, 255, cv2.THRESH_BINARY) + + # Approach 2: Saturation-based (boxes are less saturated than shelf) + _, sat_mask = cv2.threshold(hsv[:, :, 1], 60, 255, cv2.THRESH_BINARY_INV) + + # Approach 3: Value channel - boxes are brighter + _, val_mask = cv2.threshold(hsv[:, :, 2], 150, 255, cv2.THRESH_BINARY) + + # Combine masks + combined = cv2.bitwise_and(bright_mask, sat_mask) + combined = cv2.bitwise_and(combined, val_mask) + + # Clean up + kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) + combined = cv2.morphologyEx(combined, cv2.MORPH_CLOSE, kernel, iterations=3) + combined = cv2.morphologyEx(combined, cv2.MORPH_OPEN, kernel, iterations=2) + + # Save debug mask + cv2.imwrite(os.path.join(BASE_DIR, "debug_mask.png"), combined) + + contours, _ = cv2.findContours(combined, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) + + min_area = (h * w) * 0.005 # 0.5% of frame + max_area = (h * w) * 0.15 # 15% of frame + + for cnt in contours: + area = cv2.contourArea(cnt) + if area < min_area or area > max_area: + continue + + rect = cv2.minAreaRect(cnt) + box_points = cv2.boxPoints(rect) + box_points = np.intp(box_points) + + x, y, bw, bh = cv2.boundingRect(cnt) + + # Aspect ratio filter - boxes should be somewhat rectangular + aspect = max(bw, bh) / (min(bw, bh) + 1e-5) + if aspect > 5: + continue + + # Pad the bounding box slightly + pad = 5 + x1 = max(0, x - pad) + y1 = max(0, y - pad) + x2 = min(w, x + bw + pad) + y2 = min(h, y + bh + pad) + + roi = image[y1:y2, x1:x2] + if roi.size == 0: + continue + + boxes.append({ + "roi": roi, + "bbox": (x1, y1, x2 - x1, y2 - y1), + "center": ((x1 + x2) // 2, (y1 + y2) // 2), + "area": area, + "contour": cnt, + }) + + # Sort by area descending + boxes.sort(key=lambda b: b["area"], reverse=True) + + # NMS: remove boxes that overlap significantly with a larger box + filtered = [] + for box in boxes: + x1, y1, bw1, bh1 = box["bbox"] + keep = True + for kept in filtered: + x2, y2, bw2, bh2 = kept["bbox"] + # Compute IoU + ix1 = max(x1, x2) + iy1 = max(y1, y2) + ix2 = min(x1 + bw1, x2 + bw2) + iy2 = min(y1 + bh1, y2 + bh2) + if ix2 > ix1 and iy2 > iy1: + inter = (ix2 - ix1) * (iy2 - iy1) + area_small = min(bw1 * bh1, bw2 * bh2) + # If intersection covers >40% of the smaller box, drop it + if inter / (area_small + 1e-5) > 0.4: + keep = False + break + if keep: + filtered.append(box) + + return filtered + + +def classify_roi(model, roi): + """Classify a single ROI.""" + results = model(roi, imgsz=224, verbose=False) + if results and results[0].probs is not None: + probs = results[0].probs + yolo_class = probs.top1 + confidence = probs.top1conf.item() + comp_class = YOLO_TO_COMPETITION.get(yolo_class, -1) + return comp_class, confidence + return -1, 0.0 + + +def main(): + model = YOLO(os.path.join(BASE_DIR, "best.pt")) + image = cv2.imread(os.path.join(BASE_DIR, "test.png")) + if image is None: + print("Error: cannot read test.png") + return + + print(f"Image size: {image.shape[1]}x{image.shape[0]}") + + # Find box regions + boxes = find_boxes(image) + print(f"Found {len(boxes)} box regions") + + # Classify each box + annotated = image.copy() + results_list = [] + + for i, box in enumerate(boxes): + comp_class, conf = classify_roi(model, box["roi"]) + name = CLASS_NAMES.get(comp_class, "unknown") + results_list.append((comp_class, conf, box["center"], box["bbox"])) + + print(f" Box {i+1}: {name} (ID={comp_class}, conf={conf:.4f}) " + f"center=({box['center'][0]}, {box['center'][1]}) " + f"area={box['area']:.0f}") + + # Draw on annotated image + x, y, bw, bh = box["bbox"] + color = CLASS_COLORS.get(comp_class, (128, 128, 128)) + cv2.rectangle(annotated, (x, y), (x + bw, y + bh), color, 2) + label = f"{name} {conf:.2f}" + cv2.putText(annotated, label, (x, y - 5), + cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2) + + # Save annotated result + out_path = os.path.join(BASE_DIR, "test_result.png") + cv2.imwrite(out_path, annotated) + print(f"\nAnnotated result saved to: {out_path}") + + # Summary + print("\n--- Summary ---") + class_counts = {} + for comp_class, conf, center, bbox in results_list: + name = CLASS_NAMES.get(comp_class, "unknown") + class_counts[name] = class_counts.get(name, 0) + 1 + for name, count in class_counts.items(): + print(f" {name}: {count}") + + # If segmentation didn't work well, also try sliding window approach + if len(boxes) < 3: + print("\n--- Fallback: sliding window approach ---") + sliding_window_detect(model, image) + + +def sliding_window_detect(model, image): + """Fallback: use sliding window to find boxes.""" + h, w = image.shape[:2] + window_sizes = [(h // 3, w // 4), (h // 2, w // 3)] + step_ratio = 0.3 + + all_detections = [] + + for wh, ww in window_sizes: + step_y = int(wh * step_ratio) + step_x = int(ww * step_ratio) + + for y in range(0, h - wh + 1, step_y): + for x in range(0, w - ww + 1, step_x): + roi = image[y:y+wh, x:x+ww] + comp_class, conf = classify_roi(model, roi) + if conf > 0.8: + cx, cy = x + ww // 2, y + wh // 2 + all_detections.append((comp_class, conf, cx, cy, x, y, ww, wh)) + + # NMS-like: keep highest confidence per class in non-overlapping regions + if all_detections: + all_detections.sort(key=lambda d: d[1], reverse=True) + kept = [] + for det in all_detections: + cx, cy = det[2], det[3] + overlap = False + for k in kept: + if abs(cx - k[2]) < w // 5 and abs(cy - k[3]) < h // 5: + overlap = True + break + if not overlap: + kept.append(det) + + annotated = image.copy() + for comp_class, conf, cx, cy, x, y, ww, wh in kept: + name = CLASS_NAMES.get(comp_class, "unknown") + color = CLASS_COLORS.get(comp_class, (128, 128, 128)) + cv2.rectangle(annotated, (x, y), (x + ww, y + wh), color, 2) + label = f"{name} {conf:.2f}" + cv2.putText(annotated, label, (x, y - 5), + cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2) + print(f" {name} (conf={conf:.2f}) at ({cx}, {cy})") + + out_path = os.path.join(BASE_DIR, "test_result_sliding.png") + cv2.imwrite(out_path, annotated) + print(f" Saved to: {out_path}") + + +if __name__ == "__main__": + main() diff --git a/test_result.png b/test_result.png new file mode 100644 index 0000000..a67c609 Binary files /dev/null and b/test_result.png differ diff --git a/train_model.py b/train_model.py new file mode 100644 index 0000000..82df6a9 --- /dev/null +++ b/train_model.py @@ -0,0 +1,40 @@ +""" +Train YOLOv8 classification model on the generated dataset. +Classes: hammer (1), wrench (2), pliers (3) per competition spec. +""" + +from ultralytics import YOLO +import os +import shutil + +BASE_DIR = os.path.dirname(os.path.abspath(__file__)) +DATASET_DIR = os.path.join(BASE_DIR, "dataset") + +model = YOLO("yolov8n-cls.pt") # nano classification model + +results = model.train( + data=DATASET_DIR, + epochs=80, + imgsz=224, + batch=32, + patience=15, + project=os.path.join(BASE_DIR, "runs"), + name="module_v_cls", + exist_ok=True, + verbose=True, +) + +# Validate +metrics = model.val() +print(f"\nValidation accuracy top-1: {metrics.top1:.4f}") +print(f"Validation accuracy top-5: {metrics.top5:.4f}") + +# Export to ONNX +best_path = os.path.join(BASE_DIR, "runs", "module_v_cls", "weights", "best.pt") +export_model = YOLO(best_path) +export_model.export(format="onnx", imgsz=224) +print(f"\nModel exported to ONNX") + +# Copy best.pt to project root +shutil.copy(best_path, os.path.join(BASE_DIR, "best.pt")) +print(f"Best model copied to {os.path.join(BASE_DIR, 'best.pt')}") diff --git a/yolov8n-cls.pt b/yolov8n-cls.pt new file mode 100644 index 0000000..a9f6353 Binary files /dev/null and b/yolov8n-cls.pt differ