Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Происхождение материалов

Источник

Материал основан на разделе Hardware Kits (папка kits/) репозитория harvard-edge/cs249r_book, сайт mlsysbook.ai/kits. Лицензия оригинала — CC BY-NC-SA 4.0 (файл kits/LICENSE).

Перевод выполнил Сергей Монин.

Что переведено

  • Главная страница (index.qmd), включая блок «Часть экосистемы MLSysBook» (shared/config/_ecosystem-cards.qmd). Блок переведён списком; интерактивная отметка «Вы здесь» не переносится, так как в mdBook нет скриптов сайта.
  • «Начало работы» (getting-started.qmd), «Платформы» (platforms.qmd), «Настройка среды разработки» (ide-setup.qmd).
  • Arduino Nicla Vision (arduino/nicla_vision/): обзор, настройка, классификация изображений, распознавание ключевых слов, классификация движения и обнаружение аномалий, обнаружение объектов.
  • Seeed XIAOML Kit, XIAO ESP32S3 (seeed/xiao_esp32s3/): обзор, настройка, классификация изображений, распознавание ключевых слов, классификация движения, обнаружение объектов.
  • Grove Vision AI V2 (seeed/grove_vision_ai_v2/): обзор, настройка и приложения без кода, классификация изображений, обнаружение объектов (в оригинале страница помечена «в разработке»).
  • Raspberry Pi (raspi/): обзор, настройка (установка ОС, SSH, SWAP, камера, удалённый рабочий стол VNC, обновление системы, особенности моделей Zero и 4/5), классификация изображений, обнаружение объектов, малые языковые модели (SLM, Ollama), визуально-языковые модели (VLM, Florence-2).
  • Общие лабораторные работы (shared/): обзор, инженерия признаков для распознавания ключевых слов, блок спектральных признаков DSP.
  • Текст, заголовки, таблицы, подписи к таблицам и рисункам, врезки, примечания, тексты ссылок и alt-тексты изображений.
  • Комментарии в примерах кода переведены там, где это пояснения на естественном языке. Имена функций, переменных и библиотек и команды оставлены как в оригинале. Строки вывода (Serial.println, ei_printf, print, подписи графиков matplotlib) в части лабораторных работ (XIAOML Kit — классификация движения, Grove Vision AI V2 — классификация изображений, общая лабораторная по спектральным признакам DSP) переведены на русский; в остальных они оставлены на английском, как в оригинале и на скриншотах.

Схемы

Схемы переведены двумя способами.

  • Схема архитектуры Florence-2 (в оригинале TikZ, который mdBook не отображает) перерисована как SVG с русскими подписями: 05-raspberry-pi/vlm/images/svg/florence2-architecture.svg.
  • Самостоятельные схемы из курса перерисованы как SVG с русскими подписями, без логотипов и без скриншотов:
    • 05-raspberry-pi/llm/images/svg/: llm-block-fc-proj.svg, llm-block-image.svg, llm-rag-scheme-1.svg, llm-rag-scheme-2.svg;
    • 05-raspberry-pi/object_detection/images/svg/: od-pipeline.svg, od-model-deploy.svg;
    • 04-grove-vision/setup_and_no_code_apps/images/svg/grove-person-detection.svg;
    • 04-grove-vision/image_classification/images/svg/: grove-ml-pipeline.svg, grove-inference-leds.svg;
    • 03-seeed-xiao/image_classification/images/svg/xiao-pipeline.svg.

Исходные растровые файлы этих схем остаются в папках images/png/ и images/jpeg/ рядом с главами, но в тексте они больше не используются.

Что изменено при переносе в mdBook

  • Таблицы Quarto (сеточные таблицы) переписаны в формат Markdown-таблиц. Содержимое ячеек не менялось.
  • Атрибуты Quarto удалены: {#sec-…} у заголовков, {.unnumbered}, {width=…}, {fig-align=…}, {.striped .hover}. Подпись таблицы вынесена в курсивную строку под таблицей.
  • Команды LaTeX и служебные маркеры Quarto удалены: \noindent, \clearpage, \part{…}, маркеры викторин ::: {.quiz-end}.
  • Врезки Quarto (::: callout-…) переписаны как цитаты с жирным заголовком.
  • Рисунки Quarto заменены HTML-блоками <img> с альтернативным текстом и подписью. Версии, предназначенные только для PDF (content-visible when-format="pdf"), удалены; для HTML сохранена версия для веб-страниц.
  • Видео Quarto ({{< video … >}}) заменены ссылками на YouTube. Подключение общего блока ({{< include … >}}) заменено его текстом.
  • Перекрёстные ссылки Quarto (@sec-…, @fig-…, @tbl-…) заменены текстом или ссылками на переведённые страницы книги. Все внутренние ссылки проверены скриптом scripts/check_links.py.
  • Таблица оглавления SUMMARY.md создана скриптом scripts/make_summary.py. Для названий глав книги в скрипте добавлены подписи (CHAPTER_TITLES).
  • Изображения скопированы в папку images/ каждой главы. Подписи и альтернативный текст переведены.

Исправления в примерах кода и опечатки оригинала

В примерах кода исправлены ошибки, которые мешали запуску или вели к неверному результату. Исправления минимальны, логика примеров не менялась.

  • Импорт from flask import … без скобок переносит строку с ошибкой синтаксиса: добавлены скобки.
  • Строка mimetype=…, разорванная переносом внутри строкового литерала: собрана в одну строку.
  • Присваивание url = "…" "…" без скобок: добавлены скобки, иначе вторая часть строки терялась.
  • Пути к моделям, разорванные обратным слэшем внутри строки (в них попадали пробелы): собраны в одну строку.
  • except Queue.Empty заменено на except Empty с импортом из queue.
  • В примере LLM вместо response_2 и res использованы правильные переменные.
  • В вызове ollama.generate добавлена пропущенная запятая перед options=.
  • В функции rag_bees удалён дублирующий print, стоявший вне функции.
  • Команда sudo apt-get installlibportaudiocpp0 исправлена на sudo apt-get install libportaudiocpp0 portaudio19-dev.
  • В команде обучения YOLO пропущен обратный слэш в строке epochs={EPOCHS}; добавлен.
  • cd /Documents/YOLO заменено на cd ~/Documents/YOLO.
  • В примере Florence-2 < MORE_DETAILED_CAPTION> и <CAPTION,> приведены к виду <MORE_DETAILED_CAPTION> и <CAPTION>.
  • В JavaScript-примере однострочный комментарий, разорванный переносом, собран в одну строку.
  • Время обработки запроса в примере Ollama: в тексте оригинала указано «около 16 наносекунд», в самом выводе — 1 908 757 000 нс (около 1,9 с). Указано значение из вывода.
  • В примере вызова функций модель указана как phi3.5:3.8b (как в коде), а не llava-phi3, как было в тексте оригинала.
  • Пустая ссылка на скрипт calc_distance_image.py заменена ссылкой на репозиторий EdgeML-with-Raspberry-Pi.
  • Опечатки исправлены: «Florense-2», «Movilinet», «Jupiter Notebook», «CRTL+X», «witch», «to detect bees» (в примере о коробках и колёсах) и «from 0 to 256» (исправлено на 0–255).
  • В главе «Обнаружение объектов» заголовок проекта «Image Classification project» исправлен на «проект обнаружения объектов».

Дополнительные исправления после вычитки

Код:

  • While True: → while True:; в скетче со светодиодами (Nicla Vision, классификация изображений) типографские апострофы 'uncertain’ заменены на обычные, а лишний отступ перед while True: убран.
  • В коде C++ для Grove Vision AI V2 комментарии # заменены на //.
  • Строковые константы, разорванные переносом внутри ei_printf(...) и Serial.printf(...) (Nicla Vision KWS, XIAO KWS), собраны из соседних литералов.
  • sudo shutdown -h no → sudo shutdown -h now; ls -f → ls -l (длинный формат); в sudo apt-get install libatlas-base-dev\ добавлен пробел перед обратным слэшем.
  • Имя модели в примере FOMO согласовано с командой переименования (...-FOMO-int8.eim); /arduinor_rec.wav → /arduino_rec.wav; plt.title('...Welch's...') → строка в двойных кавычках; {{ в выводе Florence-2 → {; ключ <REGION_TO_DESCRIPTION> в выводе задачи «регион в описание».
  • Пути и команды с именем автора (mjrovai) заменены на username.
  • Опечатки в именах: helloword.py → helloworld.py, HelloWord → HelloWorld, WiFI/WiFIScan/SimpleWiFIServer → WiFi/WiFiScan/SimpleWiFiServer, «Hello Word» → «Hello World», LoRaWan → LoRaWAN, SSMA → SSCMA, YOLOV8 → YOLOv8, «German Sheppard» → «German Shepherd», «Marvin Prison» → «Mervin Praison».

Числа и факты:

  • Год выпуска MobileNetV1: в оригинале указан 2007, в переводе — 2017 (во всех главах про классификацию изображений).
  • Число признаков для изображения : 27 640 → 27 648.
  • Пиковый ток 14 мА при 5,23 В → 140 мА (при 730 мВт, XIAO) и 14 мА → 140 мА (0,7 Вт, Grove Vision AI V2, внешние светодиоды).
  • Выводы I2S-микрофона XIAO: «IO41 (тактовый сигнал) и IO41 (данные)» → «IO42 (тактовый сигнал) и IO41 (данные)».
  • Вывод top_k_indices: пример с тремя индексами заменён пятью (283, 286, 282, 288, 479); размер входа 92×92 → 96×96.
  • В итогах лабораторной по классификации изображений на Grove Vision AI V2: «архитектура Edge TPU» → «блок NPU Ethos-U55» (в модуле нет Edge TPU).
  • Копипаст в оригинале: в XIAO «Обнаружение объектов» классы «коробка/колесо» заменены на «фрукт/жук»; в Grove «Когда XIAO подключён» заменено на Grove Vision AI (V2); в Grove повторявшийся «Шаг 3» перенумерован.

Ссылки и вёрстка:

  • Ссылка на лабораторную Grove Vision AI V2 заменена относительной; в URL Colab-блокнота добавлено %20.
  • Закомментированный рисунок iic.png в XIAO «Классификация изображений» возвращён в текст; удалены два служебных HTML-комментария, оставшихся после переноса из Quarto.
  • Заключённые в <em> подписи к DALL·E больше не показывают литеральные звёздочки; цитаты после рисунков отделены пустой строкой, чтобы отображаться как цитаты.

Терминология (единообразно по книге и по глоссариям репозитория): VLM — «визуально-языковая модель»; wake word — «слово пробуждения»; fine-tuning — «дообучение»; no-code — «без кода»; SD card — «SD-карта»; Boards/Library Manager — «менеджер плат/библиотек»; power spectrum — «спектр мощности»; Impulse (Edge Impulse) не переводится. Десятичные дроби в тексте записаны через запятую; точка оставлена в версиях, идентификаторах моделей и значениях из интерфейсов и кода.

Что оставлено на языке оригинала

  • Названия продуктов, компаний, библиотек и моделей: Grove Vision AI V2, XIAOML Kit, Nicla Vision, Raspberry Pi, Arduino IDE, SenseCraft AI, Edge Impulse, Roboflow, Ultralytics, Ollama, Hugging Face, Llama, Gemma, Phi, LLaVA, Florence-2, MobileNet, EfficientDet, YOLOv8, FOMO, TFLite, OpenCV, PyTorch, TensorFlow.
  • Обозначения компонентов: ESP32-S3, XIAO ESP32S3 Sense, OV2640, MP34DT05, GC2145, STM32H747, Ethos-U55, PSRAM, QSPI, microSD, LSM6DS3TR-C, LSM6DSOX.
  • Метрики и обозначения: mAP, IoU, NMS, FPS, CIDEr, recall@1, F1, int8, float32, Q4_0.
  • Код, команды, имена файлов и переменных и подписи в веб-интерфейсах (например, Flask-страницы). Строки вывода программ оставлены на английском, кроме исключений, перечисленных выше.
  • Промпты для моделей и ответы моделей (например, What is the capital of France?). Модели обучены на английских запросах, поэтому они не переводились.
  • Цены в долларах (ориентировочные, как в оригинале).
  • Символы ✓ в таблицах доступности и возможностей.
  • Китайский иероглиф «小» в объяснении названия «XIAO»: рядом приведён перевод («крошечный»).
  • Скриншоты интерфейсов сторонних программ (Edge Impulse Studio, Arduino IDE, SenseCraft AI, Roboflow, Raspberry Pi Imager, Ollama, htop и другие): текст на них остаётся на английском. Каждый рисунок имеет русскую подпись и альтернативный текст.
  • Фотографии плат, устройств и изображения-иллюстрации: оставлены без изменений.
  • Рисунки из научных статей и внешних публикаций (архитектура Florence-2 и распределение набора FLD-5B, сравнение LLM и SLM, графики бенчмарков). Их не перерисовывали: это чужие иллюстрации. У них русская подпись, исходный текст на рисунке остаётся английским.
  • Составные схемы с фотографиями и логотипами: kws_diagram.jpg (распознавание ключевых слов), objxclas.jpg (классификация и обнаружение объектов, на схеме фотографии яблока, апельсина и банана). Текст на них оставлен на английском; русские подписи и пояснения даны в тексте главы.

Что не перерисовано

  • Растровые схемы, которые не перерисованы в SVG, в основном являются скриншотами программ и составными иллюстрациями, описанными выше. Часть растровых схем (например, spectral_block.jpeg, pa_block.jpg, impulse-block.jpg, model_1.jpg, model_2.jpg) при переносе не просматривалась по отдельности. Их текст нужно проверить и при необходимости перерисовать.

Что требует внимания

  • Цены и версии программного обеспечения (Raspberry Pi OS, Python 3.11, версии библиотек и моделей) ориентировочные. Перед работой проверьте их актуальность.
  • Ссылки на блокноты и скрипты в репозитории авторов (GitHub), на страницы Edge Impulse, Hugging Face и YouTube указаны по оригиналу. Их доступность не проверялась.
  • Правописание в этой книге с буквой «ё» («всё», «ещё», «развёртывание», «объём»).
  • Расхождение, унаследованное от оригинала: в лабораторной по классификации изображений на Nicla Vision в коде светодиодов порог «неопределённого» класса равен 0,5, а в тексте говорится о 0,8.
  • В примере RAG (Raspberry Pi, малые языковые модели) документы и запросы переведены на русский, а показанные результаты получены на английском наборе. Модель эмбеддингов nomic-embed-text ориентирована на английский язык, поэтому на русском корпусе качество поиска может отличаться.