В режиме моста виртуальный хост и реальный хост в основном обмениваются данными внутри локальной сети, состоящей из VMnet0, и в то же время взаимодействуют с внешней сетью через шлюз на реальном хосте, так что Ubuntu и плата разработки могут передавать файлы.
Установите сетевой адаптер в режим моста.
Рисунок 1.1. Вход в настройки виртуальной машины VMware
Нажмите NAT сетевого адаптера и выберите метод сетевого подключения как режим моста.
Рисунок 1.2 Изменение сетевого адаптера
Найдите «Редактор виртуальной сети» в меню «Пуск» и нажмите «Запуск от имени администратора», чтобы открыть редактор виртуальной сети:
Рис. 1.3 Редактор виртуальной сети More Love
См. рисунок 1.4, нажмите «VMnet0», выберите «Режим моста», в раскрывающемся списке «Мост к» в режиме моста выберите сетевую карту WIFI, фактически используемую на вашем компьютере, и, наконец, нажмите «ОК», чтобы завершить настройку VMware. .
Примечание. Это должно быть «VMnet0». Если «VMnet0» нет, вы можете нажать «Добавить сеть».
Рисунок 1.4. Соединение реальной сетевой карты Wi-Fi.
“<Совет по развитию Дополнительная информация>\2_DongshanPI-Vision_Поддержкаинструмент\”
В указанном выше каталоге пакета данных сетевого диска можно получить ряд установочных программ, рекомендуется установить их все. Есть следующее программное обеспечение:
Таблица 2‑1 Программное обеспечение, которое необходимо установить в Windows
Название программного обеспечения | иллюстрировать |
---|---|
VMwareWorkstation | При установке программного обеспечения виртуальной машины требуются права администратора. |
SD Card Formatter | Инструмент форматирования SD-карты |
MobaXterm | Инструменты последовательного порта, инструменты удаленного входа в систему |
Filezilla | Инструмент передачи файлов для передачи файлов между Windows и Ubuntu |
Source insight | Готовый к использованию инструмент для чтения и написания исходного кода, рекомендуемый новичкам; |
Сначала подтвердите IP Ubuntu,существоватьUbuntuТерминальное выполнениеifconfig
Заказ Определить мостовую сетевую картуIP(Уведомление:этотIPЭто изменится со временем,Затем переподключитесь, используя новый IP),нравитьсякартина Как показано в 2.3:
Рисунок 2.3. ifconfig проверяет IP-адрес сети
Установите и запустите MobaXterm и создайте сеанс следующим образом:
Рисунок 2.4. Установка ssh
После действий согласно рисунку 2.4 вы увидите рисунок 2.5 в левой части MobaXterm. Дважды щелкните его, чтобы войти в Ubuntu (при первом входе вам будет предложено ввести пароль, пароль — ubuntu). , а затем вы можете выполнять различные команды Linux. Got:
Рисунок 2.5. Mobaxterm входит в Ubuntu
Вы можете использовать MobaXterm для входа в систему через SSH и передачи файлов. Однако Mobaxterm не так эффективен при передаче файлов, как FileZilla, поэтому мы рекомендуем использовать FileZilla, когда Windows и Ubuntu передают файлы друг другу.
После двойного щелчка мыши, чтобы открыть FileZilla, действуйте, как показано на рисунке 2.6:
Рисунок 2.6 FileZilla соединяет Windows и Ubuntu
При первом подключении появится запрос, как показано на рисунке 2.7. Выберите «Всегда доверять»:
Рисунок 2.7 FileZilla устанавливает соединение
В Filezilla слева расположены файлы Windows, а справа — файлы Ubuntu, как показано на рисунке 2.8:
Рисунок 2.8 Передача файлов между Windows и Ubuntu с помощью FileZilla
В этом разделе показано, как написать программу в Windows, загрузить ее в Ubuntu, скомпилировать и выполнить в Ubuntu. Он включает в себя только простую программу Hello, скомпилированную с использованием командной строки, и не требует использования Makefile и других знаний, которые будут объяснены в основах приложения позже.
Стартовый источник Insight,Нажмите“File”->“New”,Создать новый файл,нравитьсякартина 2.9:
Рисунок 2.9 Новый файл SI
Далее напишите код и сохраните файл, как показано на рисунке 2.10:
Рисунок 2.10. SI записывает код и сохраняет его.
Исходный код hello.c выглядит следующим образом:
#include <stdio.h>
int main(int argc, char **argv)
{
printf("hello, world!\n");
return 0;
}
Работа, как показано на рисунке 2.11:
Рисунок 2.11 Перенос файлов из Windows в Ubuntu
Как показано на рисунке 2.12, использование команды gcc будет подробно объяснено позже, когда мы обсудим основы разработки приложений. Вот лишь пример:
Рисунок 2.12. Опыт Hello World!
Плата разработки DongshanPI-Vision построена на базе чипа Canaan Kanzhi K510. Она использует 64-битную двухъядерную архитектуру RISC-V с основной частотой 800 МГц и поддерживает расширение FPU двойной точности. При использовании 64-битного расширения DSP основная частота составляет 800 МГц. Чип имеет встроенный механизм общей нейронной сети KPU, имеет вычислительную мощность 2,5 TFLOPS BF16/2,5TOPS INT8 и поддерживает библиотеки операторов TensorFlow, PyTorch, ONNX и других фреймворков.
особенность | описывать |
---|---|
процессор | Ханаан Канжи К510 |
Память | 512MB LPDDR3 |
хранилище | 4GB EMMC |
ВАЙ-ФАЙ/Блютуз | Антенна: 2,4 ГГц |
видеовыход | Дисплей MIPI (MIPI DSI)/дисплей HDMI (HDMI)/дисплей SPI (SPI DSI) |
видеовход | Двухканальная камера MIPI (MIPI CSI *2)/камера DVP (DVP Canera) |
Аудиовход | микрофон микрофон |
аудиовыход | Колонки/наушники |
Другие разъемы | ·Слот для карт TF ·2 разъема USB ·Порт отладки JTAG ·Интерфейс батареи |
Расположение состава макетной платы
В этой главе представлены ключевые компоненты и функции расположения макетной платы следующим образом. На плате указано оборудование, соответствующее каждой этикетке.
Макетная плата, вид спереди:
Макетная плата, вид сзади:
Рисунок 3.3 Среда разработки платы разработки
Рисунок 3.4 Базовое программное обеспечение
Рисунок 3.5 Файловая система
DIP-переключатель на плате используется для установки режима запуска, который поддерживает три метода: запуск EMMC, запуск SD-карты и программирование последовательного порта. Метод запуска показан в Таблице 3-1:
BOOT MODEL | SW1(BOOT0) | SW2(BOOT1) |
---|---|---|
EMMC | OFF | OFF |
SD | OFF | ON |
Последовательный порт горит | ON | ON |
Схема настройки 3.7 этих трех методов запуска выглядит следующим образом:
Рисунок 3.7 DIP-переключатель и способ запуска
Уведомление:настраиватьдля Последовательный порт горитчас,Карты SD и TF невозможно вставить; карты можно вставлять только после включения питания. Плата, только что выпущенная с завода, имеет систему, запрограммированную на EMMC.,ты можешьнастраиватьдляEMMCРежим запуска。
Чтобы использовать WIFI, вам необходимо подключить антенну 2,4 ГГц, входящую в комплект поставки DongshanPI-Vision. Ниже приведено руководство по подключению антенны к плате разработки DongshanPI-Vision.
Чтобы использовать камеру для получения данных изображения, если вы приобрели только плату разработки DongshanPI-Vision отдельно, вам может потребоваться приобрести дополнительную камеру MIPI. На рисунке ниже показано руководство по подключению камеры MIPI к плате разработки DongshanPI-Vision.
Чтобы использовать экран дисплея для отображения изображений, полученных камерой, если вы приобрели только плату разработки DongshanPI-Vision отдельно, вам может потребоваться приобрести дополнительный экран дисплея MIPI или вы можете напрямую использовать кабель HDMI для подключения к монитор компьютера. Ниже приведено руководство по подключению дисплея MIPI к плате разработки DongshanPI-Vision.
Подключите плату к ПК с помощью кабеля Type-C. Вы можете использовать два кабеля Type-C в коробке DongshanPI-Vision. Инструкция по подключению следующая:
Примечание. Подключите две линии передачи данных напрямую к компьютеру. Не используйте USB-концентратор для подключения двух линий передачи данных Type-C. Если на вашем компьютере нет дополнительного порта USB, вы можете использовать адаптер питания 5 В 1 А и подключить его к порту OTG для подачи питания.
После включения комплекта платы разработки на основной плате загорится красный индикатор. Положение красного индикатора показано синей стрелкой на рисунке ниже:
Подключите кабель передачи данных Type-C к последовательному порту компьютера. по развитиюназад,Откройте компьютерДиспетчер устройств,И разверните поверхность столбца «Порты (COM LPT)». Вы можете увидеть это под картинкой,Номер порта после подключения — COM37. Последовательный USB-чип на Совете по развитию может быть даCP210x или CH9102.,Их производительность одинакова. Серийный номер COM, отображаемый на вашем компьютере, может отличаться.,Запомните цифры, которые отображает ваш компьютер.
Если компьютер не отображает номер порта, необходимо установить драйвер вручную. Пакет установки драйвера помещен в информацию о сетевом диске:
Рисунок 3.10 Драйвер последовательного порта USB
Если драйвер не устанавливается автоматически в компьютер, в «Диспетчере устройств» будет стоять желтый восклицательный знак, указывающий, какой тип микросхемы последовательного порта в данный момент подключен. Выберите установку драйвера согласно подсказкам. Если в приглашении есть слово «CP210x», выберите «CP210x_Windows_Drivers.zip», в противном случае выберите другой драйвер для установки.
Откройте MobaXterm, нажмите «Сессия» в левом верхнем углу, во всплывающем интерфейсе выберите «Последовательный» и выберите номер порта (номер порта COM17 или COM19, отображавшийся ранее в диспетчере устройств), скорость передачи данных (Скорость) 115200), Управление потоком: нет и, наконец, нажмите «ОК». Этапы показаны на рисунке 3.11.
Уведомление:контроль потока(Flow Control) не следует выбирать «Нет», иначе вы не сможете вводить данные в последовательный порт в MobaXterm.
Затем отобразится черное окно. В это время включите питание платы, и вы получите данные, отправленные через последовательный порт платы, как показано на рисунке 3.12.
4. После входа в консоль отладки последовательного порта, если плата разработки запускает uboot или ядро, она будет продолжать распечатывать информацию до тех пор, пока система не будет полностью запущена. Если плата разработки была полностью запущена, никакая информация не будет распечатана. можно напрямую нажать клавишу Enter, чтобы войти в консоль разработки.
существовать Последовательный порт видитroot@canaan
Этот тип входаиз Подсказкачас,Просто введите и нажмите Enter,Однаконазад Сразу Может быть выполнено Различные заказы Linux, такие как картина Как показано в 3.14:
При запуске системы, если вы подключите две камеры и экран дисплея в обычном режиме, на этапе запуска системы uboot система отобразит официальный логотип Canaan. Рендеринг выглядит следующим образом:
Когда система полностью запустится, автоматически запустится программа предварительного просмотра в реальном времени, использующая V4L2 для захвата изображений с камеры и отображения их на дисплее в реальном времени. Рендеринг выглядит следующим образом:
нравиться Если тыдумать Завершить процессилидуматьбегать Другие требуют использования камер.иэкран дисплеяпрограмма,ты Можетпроходитьсуществовать Последовательный терминалконтрольбашнявходитьps
Посмотреть все процессы,И найдите имя процесса. Номер процесса, соответствующий v4l2_drm.out.,Как показано ниже:
188 root 0:00 ./v4l2_drm.out -f video_drm_1920x1080.conf -e 1 -s
Вы можете видеть, что первый — это номер процесса. Возможно, ваш номер процесса отличается от моего. Мой номер процесса — 188. Сейчас мне следует ввести:
kill -9 188
Если ваш номер процесса не 188, вам необходимо изменить 188 на фактический номер процесса, чтобы нормально завершить приложение.
Требования к оборудованию:
Требования к программному обеспечению:
Пожалуйста, загрузите DongshanPI-VisionСовет перед началом работы. по развитиюИзображение EMMC и запомните, где он сохранен на вашем компьютере.
Включите DIP-переключатели boot0 и boot1, как показано на рисунке ниже, чтобы перевести плату разработки в режим загрузки. Используйте два кабеля Type-C для подключения платы разработки и компьютера для питания платы разработки и используйте последовательный порт для записи системы EMMC.
2_DongshanPI-Vision_Инструмент поддержки/[Windows] инструмент драйвера последовательного порта
Установитьвпередиллюстрировать:за компьютер Установитьтолько один раз。
Откройте драйвер последовательного порта. обеспечениеCH341SER.EXE
,После открытия появится следующий интерфейс:
Нажмите, чтобы установить
Просто дождитесь завершения установки.
скачать Изображение EMMCипомнитьэтосуществоватькомпьютерсерединаиз Расположение。ОткрытьKendryteBurningTool Горетьинструмент,ВходитьKendryteBurningTool\bin
в каталоге,двойной щелчок ОткрытьBurningTool.exe
,Файл, показанный ниже.
Примечание. При использовании инструмента записи KendryteBurningTool необходимо закрыть программное обеспечение последовательного порта и виртуальную машину, чтобы последовательный порт не был занят.
ОткрытьBurningTool.exe
программаназадвстреча Входить Следующий интерфейс:
Нажмите «Выбрать файл» и выберите загруженный образ EMMC. После выбора нажмите «Сохранить». Действия следующие:
После сохранения вам необходимо выбрать номер последовательного порта платы разработки в выборе последовательного порта. После того, как мы подключим плату разработки и ПК через Type-C, вы можете щелкнуть красную стрелку в программном обеспечении BurningTool, чтобы просмотреть номер порта. моя плата разработки и выберите «Разработка». Номер последовательного порта платы. (Разработанный номер порта мы также можем подтвердить в диспетчере устройств)
После выбора нажмите, чтобы начать запись. Если вы записываете не в первый раз, просто подождите, пока запись не завершится успешно. Если вы впервые записываете, продолжайте читать ниже. Первые этапы сжигания следующие:
Когда компьютер прожигается в первый раз, после того, как первый индикатор выполнения завершится, отобразится сообщение об ошибке, показанное на рисунке ниже. На этом этапе вам необходимо установить драйвер.
Установитьвпередиллюстрировать:за компьютер Установитьтолько один раз。
Открытьzadig-2.4
программное обеспечение,Входить Следующий интерфейс
НажмитеOption
выбор вList All Devices
(Список всех устройств),Конкретные операции показано ниже:
После завершения вышеуказанной операции вы увидите, что в пунктирном поле появилось имя устройства. Нам нужно переключить устройство на. Mass storage devices
,Конкретные операции показано ниже:
НажмитеReplace Driver
Заменить драйверпрограмма,Появится окно подтверждения,Нажмитеда
。
Установить Заканчиватьназадпоявитсянижеокно Нажмитеclose
Драйвер записи теперь успешно установлен.
Установить Заканчивать Записать изображениеназад,снова ОткрытьBurningTool.exe
Горетьинструментпрограммное обеспечение,в соответствии с1.3главасерединаиз Операция в процессе Гореть Вот и все。весь Горетьшаг Как показано ниже:
Отключите оба DIP-переключателя boot0 и boot1, как показано на рисунке ниже, чтобы перевести плату разработки в режим запуска EMMC. Используйте два кабеля Type-C для подключения платы разработки и компьютера для подачи питания на плату разработки и войдите в консоль платы разработки, используя последовательный порт.
Используйте программное обеспечение последовательного порта для просмотра консоли последовательного порта. После успешного запуска вы войдете в консоль платы разработки.
Требования к оборудованию:
Требования к программному обеспечению:
Пожалуйста, загрузите DongshanPI-VisionСовет перед началом работы. по развитиюОбраз SD-картыи запомните, где он сохранен на вашем компьютере.
Вставьте SD-карту в компьютер через USB-порт с помощью кард-ридера и используйте Инструмент. форматирования SD-картыSD Memory Card FormatterОтформатируйте свойSDКарта。Нажмите Внизкартина Положение среднего красного поля,Начните форматировать карту Память.
После нажатия кнопки «Готово» появится окно подсказки, показанное ниже.,Подсказка предупреждает нас, что форматирование сотрет все данные на карте.,Спросите нас, хотите ли вы продолжить,здесь Нажмитеда
Дождитесь завершения форматирования,Появится следующее диалоговое окно,Подскажите форматироватьназадизфайловая системадляFAT32
а также Память Размер доступного пространства,Нажмите «ОК», чтобы завершить форматирование SD-карты.
Используйте Etcher для записи образа SD-карты платы разработки DongshanPI-Vision на карту microSD.
скачатьEtcherВспышкаинструменти Установитьэто。запускатьEtcherприложение,запускатьназадинтерфейс Как показано ниже:
НажмитеFlash from file
,Как показано ниже,Нажмите на красную рамку под изображением.
Появится файловый менеджер. Выберите только что загруженный образ SD-карты платы разработки DongshanPI-Vision.
После завершения выбора,,Отобразите следующий интерфейс,Нажмите Внизкартина Средняя красная коробкаSelect target
,Выберите целевую карту microSD для записи.
После нажатия кнопки «Готово» появится окно выбора. В это время выберите карту microSD, которую вы вставили в компьютер через устройство чтения карт.
После завершения выбора,Будет отображен следующий интерфейс,НажмитеFlash
назад Вот и всеначинать Вспышка。
Просто дождитесь завершения программирования, как показано на рисунке ниже.
После использования Etcher для программирования,Windows может не знать, как прочитать вашу карту microSD,появится Как показано Ниже Предупреждение,НажмитеОтмена
назадвытащитьmicroSDКарта Вот и все。
Поверните boot0 вниз и boot1 вверх на DIP-переключателе, как показано на рисунке ниже, чтобы перевести плату разработки в режим загрузки с SD-карты. Вставьте SD-карту в слот для карты макетной платы. Действия показаны на рисунке ниже:
Используйте два кабеля Type-C для подключения платы разработки и компьютера для подачи питания на плату разработки и войдите в консоль платы разработки, используя последовательный порт.
Используйте программное обеспечение последовательного порта для просмотра консоли последовательного порта. После успешного запуска вы войдете в консоль платы разработки.
Установитьзапускать Совет по После завершения разработки откройте серийный терминал Входить Совет. по консоль развития. Спасибо Совету по развитиюзапускатьназадвстречазапускатьсетевой скрипт,Наша первая сетевая дистрибуциячаснуждаться Завершить вручнуюсетевой скрипт。входитьps
,Посмотреть прогресс,Найдите два процесса, показанных ниже.
159 root 0:00 wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.
178 root 0:00 udhcpc -R -n -p /var/run/udhcpc.eth0.pid -i eth0 -b
Из приведенной выше информации мы видим, что нам нужно вручную завершить два процесса 159 и 178. Ваш номер процесса может отличаться от моего. Пожалуйста, действуйте в соответствии с процессом на вашей плате разработки в прошлом веке. входить:
kill -9 <PID>
Предположим, я использую Совет по развитиюсерединаwpa_supplicant
иudhcpc
процесс Числосоответственнодля159и178,На этом этапе я должен ввести следующий заказ
kill -9 159
kill -9 178
Завершить вручнуюназадиспользоватьps
Проверятьда Оно все еще здесь?существоватьпереписыватьсяпроцесс。
Исправлять/etc/wpa_supplicant.conf
документ,Введите имя и пароль Wi-Fi.,входить
vi /etc/wpa_supplicant.conf
Входитьvi
Редакторназадвстреча显示нижеинформация
ctrl_interface=/var/run/wpa_supplicant
update_config=1
ap_scan=1
Добавьте информацию о сети в конец файла
network={
ssid="<wifiимя>"
psk="<пароль>"
}
Предполагая, что мое имя Wi-Fi — «Программисты», а пароль — 123456, фактическая добавленная информация о сети будет следующей:
network={
ssid="Programmers"
psk="12345678"
}
После добавления сохраните и выйдите из редактора vi.
Чтобы подключиться к SSID, введите:
wpa_supplicant -B -iwlan0 -c /etc/wpa_supplicant.conf
После завершения выполнения, как показано ниже
Чтобы получить IP-адрес, введите:
udhcpc -i wlan0
После завершения приобретения подключение к Интернету будет успешным.
тестWiFiда Могу ли я выйти в Интернет?,входитьping www.baidu.com
,входитьназад Как показано ниже:
[root@canaan ~ ]$ ping www.baidu.com
PING www.baidu.com (14.119.104.189): 56 data bytes
64 bytes from 14.119.104.189: seq=0 ttl=55 time=10.241 ms
64 bytes from 14.119.104.189: seq=1 ttl=55 time=16.292 ms
64 bytes from 14.119.104.189: seq=2 ttl=55 time=15.699 ms
64 bytes from 14.119.104.189: seq=3 ttl=55 time=12.508 ms
При последующем запуске платы разработки она автоматически подключится к SSID, и вам нужно будет только повторно получить IP-адрес для доступа в Интернет.
Выполните следующую команду, чтобы установить службу TFTP в Ubuntu:
sudo apt-get install tftp-hpa tftpd-hpa
Затем создайте рабочий каталог службы TFTP и откройте файл конфигурации службы TFTP следующим образом:
mkdir -p /home/ubuntu/tftpboot
chmod 777 /home/ubuntu/tftpboot
sudo gedit /etc/default/tftpd-hpa
В файле конфигурации /etc/default/tftpd-hpa удалите исходное содержимое и измените его следующим образом:
TFTP_USERNAME="tftp"
TFTP_ADDRESS=":69"
TFTP_DIRECTORY="/home/ubuntu/tftpboot"
TFTP_OPTIONS="-l -c -s"
Наконец, перезапустите службу TFTP:
sudo service tftpd-hpa restart
Проверьте, запущена ли служба tftp. Выполните следующую команду, чтобы проверить, работает ли она в фоновом режиме.
ubuntu@ubuntu2004:~/Desktop$ ps -aux | grep “tftp”
ubuntu 4555 0.0 0.0 9040 652 pts/0 S+ 02:33 0:00 grep --color=auto “tftp”
Сначала убедитесь, что в сервисном каталоге tftp Ubuntu или Windows есть файлы, которые необходимо загрузить на плату, например:
ubuntu@ubuntu2004:~$ ls /home/ubuntu/tftpboot/
object_detect
Подтвердите сетевой IP-адрес Ubuntu, например.
Например, загрузите zImage под сервер Ubuntu. документ,носуществоватьСовет по развитиюначальствоосуществлятьнравиться Вниз Заказ(Ubuntuизмостовая сеть КартаIPда192.168.0.197):
[root@canaan ~ ]$ tftp -g -r object_detect 192.168.0.197
Процесс загрузки выглядит следующим образом:
[root@canaan ~ ]$ tftp -r object_detect -g 192.168.0.197
object_detect 100% |********************************| 894k 0:00:00 ETA
После завершения загрузки файл можно будет найти в текущем каталоге.
[root@canaan ~ ]$ ls
data emmc object_detect
Как добраться от Совет по развитие Загрузить файлы в Ubuntu? Например, мы сейчас Совет по развитию Домв каталогесоздаватьодин1.txt изтекстдокумент,Однаконазадписать111111…. :
[root@100ask:~]$ tftp -p -l 1.txt 192.168.5.197
1.txt 100% |********************************| 8 0:00:00 ETA
В это время, когда мы проверяем каталог службы tftp сервера Ubuntu, мы видим ранее созданный на плате разработки файл 1.txt:
ubuntu@ubuntu2004:~$ ls /home/ubuntu/tftpboot/
1.txt object_detect
Доступ к Совету с помощью терминального инструмента Mobaxterm по развитиюсерийная консоль,Подождите, пока система запустится,Входить/etc/ssh
в каталоге
[root@canaan ~ ]$ cd /etc/ssh/
[root@canaan /etc/ssh ]$ ls
moduli ssh_config sshd_config
В каталоге Входитьssh вы можете увидеть три файла.,тынуждаться Исправлятьsshd_config
,Изменить с помощью viЗаказ
[root@canaan /etc/ssh ]$ vi sshd_config
После ввода войдите в редактор vi и измените два элемента в красном поле на рисунке ниже.
Настройте параметры входа по SSH
Поместите два предмета в красную коробку.Отмена Комментарий,ибудет параметрнастраиватьдляyes
PermitRootLogin yes
PermitEmptyPasswords yes
После завершения модификации она будет выглядеть следующим образом:
Настроить службу SFTP
Исправлятьsshd_config
серединаизsftpЭлементы конфигурации
До модификации:
Subsystem sftp /usr/libexec/sftp-server
После модификации:
Subsystem sftp internal-sftp
После завершения модификации,нажиматьesc
,входить:wq
,Сохраните и выйдите из редактора.
После изменения файла конфигурации,Необходимо вручную перезапустить ssh,существовать Терминалвходить/etc/init.d/S50sshd restart
。
[root@canaan ~ ]$ /etc/init.d/S50sshd restart
Stopping sshd: killall: sshd: no process killed
OK
Starting sshd: OK
После завершения ввода ssh перезапустится.
Прежде чем начать, обратите внимание:
существовать Совет по развитию Последовательный терминалвходитьudhcpc -i wlan0
,Получите свой Совет по развитиеIP-адрес для подключения к WIFI
[root@canaan ~ ]$ udhcpc -i wlan0
udhcpc: started, v1.31.1
udhcpc: sending discover
udhcpc: sending select for 192.168.0.154
udhcpc: lease of 192.168.0.154 obtained, lease time 122
deleting routers
adding dns 192.168.0.1
adding dns 192.168.0.1
После завершения приобретения,входитьifconfig wlan0
, проверьте IP-адрес Wi-Fi, подключенного к плате разработки.
[root@canaan ~ ]$ ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr 8C:F7:10:47:9B:6E
inet addr:192.168.0.154 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::8ef7:10ff:fe47:9b6e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:438 errors:0 dropped:2 overruns:0 frame:0
TX packets:21 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:34571 (33.7 KiB) TX bytes:2446 (2.3 KiB)
Вы можете видеть, что IP-адрес в опции wlan0: 192.168.0.154.
Использование терминала MobaXterm,Нажмитевстреча话Session
,Как показано в красном поле ниже.
После нажатия кнопки «Готово» появится следующий интерфейс.,НажмитеиспользоватьSSH
,Как показано в красном поле ниже:
Входитьssh
配置интерфейсназад,удаленный хостRemote host
коробкавходить Совет по развитиюизIPадрес,Проверьте Указать имя пользователяSpecify username
впередкоробка,существоватьназад Заполните лицо Совет по развитиюизимя пользователяroot
,После заполнения,НажмитеOKВот и все。Как показано ниже
После нажатия кнопки «Готово» откроется новый терминал, как показано на рисунке ниже:
Как видите, здесь также можно получить доступ к разработанному последовательному терминалу. Вы можете увидеть Совет в левой вкладке. по развитиюпереписыватьсяизфайловая система,примернравитьсяdata/emmc
,тысуществовать Параметры Картасередина Можетвернодокументпапкасерединапрогресс контентаскачатьилизагрузить。Как показано ниже,здесь я Входить/root/emmc/p3/app/ai/exe/
Оглавлениесередина,выбиратьface_detect
документ,Панель параметров появляется после щелчка правой кнопкой мыши,Выберите «Загрузить», чтобы начать загрузку файла.
Если вы хотите загрузить файл в текущий каталог,В пустом месте левой вкладки,Щелкните правой кнопкой мыши,выбиратьUpload to current folder
загрузить Когда придет времявпереддокументпапка Вот и все。
иллюстрировать
nncase изdemoпрограмма Исходный код находится по адресуSDKв каталогеизpackage/ai
Оглавление,Структура каталогов следующая:
$ tree -L 2 ai
ai
├── ai.hash
├── ai.mk
├── code
│ ├── build.sh
│ ├── cmake
│ ├── CMakeLists.txt
│ ├── common
│ ├── face_alignment
│ ├── face_detect
│ ├── face_expression
│ ├── face_landmarks
│ ├── face_recog
│ ├── hand_image_classify
│ ├── head_pose_estimation
│ ├── imx219_0.conf
│ ├── imx219_1.conf
│ ├── license_plate_recog
│ ├── object_detect
│ ├── object_detect_demo
│ ├── openpose
│ ├── person_detect
│ ├── retinaface_mb_320
│ ├── self_learning
│ ├── shell
│ ├── simple_pose
│ ├── video_192x320.conf
│ ├── video_object_detect_320.conf
│ ├── video_object_detect_320x320.conf
│ ├── video_object_detect_432x368.conf
│ ├── video_object_detect_512.conf
│ ├── video_object_detect_640.conf
│ └── video_object_detect_640x480.conf
└── Config.in
Можно обратиться кretinaface_mb_320из Исходный кодиCMakeLists.txt
добавить новыйизnncase демонстрационная программа.
Модельизкомпилировать Видетьnncase_demo.mk
внутреннее определениеизPOST_INSTALL_TARGET_HOOKS:
NNCASE_DEMO_DEPENDENCIES += mediactl_lib nncase_linux_runtime opencv4 libdrm
define NNCASE_DEMO_COMPILE_MODEL
mkdir -p $(TARGET_DIR)/app/ai/kmodel/kmodel_compile/retinaface_mb_320
cd $(@D) && /usr/bin/python3 retinaface_mb_320/rf_onnx.py --quant_type uint8 --model ai_kmodel_data/model_file/retinaface/retinaface_mobile0.25_320.onnx
cp $(@D)/rf.kmodel $(TARGET_DIR)/app/ai/kmodel/kmodel_compile/retinaface_mb_320/rf_uint8.kmodel
cd $(@D) && /usr/bin/python3 retinaface_mb_320/rf_onnx.py --quant_type bf16 --model ai_kmodel_data/model_file/retinaface/retinaface_mobile0.25_320.onnx
cp $(@D)/rf.kmodel $(TARGET_DIR)/app/ai/kmodel/kmodel_compile/retinaface_mb_320/rf_bf16.kmodel
NNCASE_DEMO_POST_INSTALL_TARGET_HOOKS += NNCASE_DEMO_COMPILE_MODEL
Для компиляции модели требуется среда nncase. Для создания среды nncase обратитесь к k510_nncase_Developer_Guides.md. Если nncase будет обновлен в будущем, SDK buildroot будет обновлен до nncase одновременно.
retinaface
Функция: обнаружение лица, обнаружение точки лица
Путь программы: /app/ai/shell
запустить: выполнение неколичественных моделей,./retinaface_mb_320_bf16.sh
Выполнить модель квантования uint8,./retinaface_mb_320_uint8.sh
В скрипте есть настройки QOS, и настройки двух демок ниже одинаковы.
#devmem phyaddr width value
devmem 0x970E00fc 32 0x0fffff00
devmem 0x970E0100 32 0x000000ff
devmem 0x970E00f4 32 0x00550000
При запуске демо-версии вам необходимо отдать приоритет обеспечению нормального отображения экрана, то есть настройке QoS, связанного с дисплеем, на высокий приоритет. QOS_CTRL0.ax25mp запись QoS = 5 QOS_CTRL0.ax25mp чтение QoS = 5 QOS_CTRL2.ispf2k запись QoS = 0xf QOS_CTRL2.ispf2k чтение QoS = 0xf QOS_CTRL2.ispr2k запись QoS = 0xf QOS_CTRL2.ispr2k чтение QoS = 0xf QOS_CTRL2.isp3dtof запись QoS = 0xf QOS_CTRL3.display чтение QoS = 0xf QOS_CTRL3.display запись QoS = 0xf
Смещение регистра управления QOS 0 (QOS_CTRL0) [0x00f4]
Смещение регистра управления QOS 1 (QOS_CTRL1) [0x00f8]
Смещение регистра управления QOS 2 (QOS_CTRL2) [0x00fc]
Смещение регистра управления QOS 3 (QOS_CTRL3) [0x0100]
Подробности по компиляции и установке модели смотрите в файле package/ai/ai.mk:
Скомпилировать путь скрипта: 100ask_base-aiApplication-demo/code/retinaface_mb_320/rf_onnx.py
object_detect
Функция: обнаружение классификации объектов, 80 категорий.
Путь программы: /app/ai/shell
запустить: выполнение неколичественных моделей,./object_detect_demo_bf16.sh
Выполнить модель квантования uint8,./object_detect_demo_uint8.sh
Подробности по сборке и установке модели смотрите в файле package/ai/ai.mk.
Скомпилировать путь скрипта: 100ask_base-aiApplication-demo/code/object_detect_demo/od_onnx.py
ffmpeg
существоватьffmpeg-4.4
Портирование открытого исходного кода,0001-buildroot-ffmpeg-0.1.patch
дляпакет патчей,Увеличивать Понятно
ff_k510_video_demuxer
:контрольispвходить,Цитировать Понятноlibvideo.so
ff_libk510_h264_encoder
:контрольh264аппаратное кодирование,Цитировать Понятноlibvenc.so
Настраиваемые параметры можно просмотреть с помощью команды справки.
ffmpeg -h encoder=libk510_h264 #Просмотр параметров энкодера к510
ffmpeg -h demuxer=libk510_video #Просмотр параметров конфигурации демультиплексора
подробныйбегатьиллюстрироватьссылкаK510_Multimedia_Developer_Guides.md
alsa demoпрограммапомещатьсуществовать/app/alsa_demo
в каталоге:
Подготовка к операции:
Используйте тестирование ALSA UTILS.
Запустите использование ротации:
cd /app/twod_app
./twod-rotation-app
Скопируйте ouput.yuv на монитор yuv и установите размер 1080 x 1920 и формат отображения nv12. Результаты следующие.
Как пользоваться скалером
cd /app/twod_app
./twod-scaler-app
Скопируйте ouput.yuv на монитор yuv и установите размер 640x480 и формат отображения nv12. Результаты следующие.
Запустите использование rgb2yuv:
cd /app/twod_app
./twod-osd2yuv-app
Скопируйте ouput.yuv на монитор yuv и установите размер 320x240 и формат отображения nv12. Результаты следующие.
Запустите использование yuv2rgb:
cd /app/twod_app
./twod-scaler-output-rgb888-app
Скопируйте ouput.yuv на монитор rgb888 и установите размер 640x480, а формат отображения — rgb24. Результаты следующие.
Запускаем и накладываем osd на выходной юв. Как пользоваться:
cd /app/twod_app
./twod-scaler-overlay-osd-app
Скопируйте ouput.yuv на монитор и установите размер 640x480 и формат отображения nv12. Результаты следующие.
API:
/* создавать Память */
twod_create_fb()
/* Настройте исходные параметры изображения */
twod_set_src_picture()
/* Настройте параметры среза выходного изображения */
twod_set_des_picture()
/* настраивать scaler */
twod_set_scaler()
/* Дождитесь завершения операции */
twod_wait_vsync()
/* Invali cache */
twod_InvalidateCache()
/* flash cache */
twod_flashdateCache()
/* выпускать Память*/
twod_free_mem()
/* настраиватьвращать */
twod_set_rot()
Драйвер RTC зарегистрирует и создаст узел устройства /dev/rtc0.
Уровень приложений использует стандартный метод программирования RTC в системах Linux для вызова драйвера. Перед запуском эталонной процедуры рекомендуется отключить печать информации о ядре через консоль оболочки.
echo 0 > /proc/sys/kernel/printk
Войдите в каталог /app/rtc и введите следующую команду, чтобы запустить приложение rtc.
cd /app/rtc
./rtc 2021-11-3 21:10:59
Результат выполнения программы:
Ниже приведены основные фрагменты кода демонстрационной программы RTC. Подробную информацию см. в коде в папке package/rtc.
/*Разбираем параметры и получаем текущий год, месяц, день, час, минуту и секунду*/
if(argc !=3) {
fprintf(stdout, "useage:\t ./rtc year-month-day hour:minute:second\n");
fprintf(stdout, "example: ./rtc 2021-10-11 19:54:30\n");
return -1;
}
sscanf(argv[1], "%d-%d-%d", &year, &month, &day);
sscanf(argv[2], "%d:%d:%d", &hour, &minute, &second);
/*Открываем устройство RTC, узел устройства да:/dev/rtc0 */
fd = open("/dev/rtc0", O_RDONLY);
if (fd == -1) {
perror("/dev/rtc0");
exit(errno);
}
/* настраиватьRTCчасмежду。*/
retval = ioctl(fd, RTC_SET_TIME, &rtc_tm);
if (retval == -1) {
perror("ioctl");
exit(errno);
}
/* впадать в спячку 2 секунды. */
sleep(2);
/* Прочтите текущее время RTC. */
retval = ioctl(fd, RTC_RD_TIME, &rtc_tm);
if (retval == -1) {
perror("ioctl");
exit(errno);
}
/* Распечатать Текущее время RTC. */
fprintf(stdout, "\nRTC date/time: %d/%d/%d %02d:%02d:%02d\n",
rtc_tm.tm_mday, rtc_tm.tm_mon + 1, rtc_tm.tm_year + 1900,
rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
K510 имеет в общей сложности три сторожевых таймера. Драйвер WDT регистрирует и создает узлы устройств /dev/watchdog0, /dev/watchdog1 и /dev/watchdog2.
Уровень приложения использует стандартный метод программирования WDT в системе Linux для вызова драйвера. Первый параметр приложения сторожевого таймера может иметь значения 0 и 1, что представляет собой сторожевой таймер0 и сторожевой таймер1 соответственно. Второй параметр представляет настраиваемое время ожидания (в секундах). например, так: Команда означает запуск watchdog0, а время переполнения watchdog0 составляет 40 секунд.
cd /app/watchdog
./watchdog 0 40
После запуска программы сторожевой таймер будет кормить каждую 1 секунду. Когда в терминале оболочки будет введен символ остановки, приложение прекратит кормить собаку. Сторожевой таймер перезагрузит устройство и перезапустится по истечении установленного таймаута. , обратитесь к файлу пакета/сторожевого таймера. Вырежьте код ниже.
Результат выполнения программы:
Уведомление:когдавпередk510сторожевой модульиз Работачастактовая частотадля757575Hz,Таймаут в секундах необходимо преобразовать в таймаут на фактической рабочей тактовой частоте сторожевого таймера.,Формула расчета да2^n/757575,Так что на самом делеиздогонятьчасчасмеждувстреча大Вждать Ввходитьиздогонятьчасчасмежду。
Фактический процесс расчета тайм-аута:
K510 имеет всего 4 последовательных порта. Последовательные порты 2 и 3 не включены в текущем драйвере. Драйвер последовательного порта 0 зарегистрируется и создаст узел устройства /dev/ttyS0.
Прикладной уровень использует стандартный метод программирования UART в системах Linux для вызова драйвера. Первый параметр приложения uart может иметь значение 0 или 1, что соответствует uart0 и uart1 соответственно.
Подключите плату разработки к маршрутизатору с помощью проводной сети, чтобы плата разработки и компьютер для отладки находились в одной сети. При включении платы разработки она автоматически получит IP-адрес. Введите команду ifconfig в последовательном терминале оболочки. платы разработки для получения IP-адреса. Компьютер отладки использует этот IP-адрес для подключения к плате разработки через Telent и открывает окно Telent. Например, операция отладки ПК с помощью телента для подключения к макетной плате через MobaXterm показана ниже.
Введите следующую команду в окне терминала Telent, чтобы начать работу последовательного порта 0.
cd /app/uart
./uart 0
Введите содержимое для отправки в окно Telent, и вы сможете увидеть полученные данные в окне последовательного терминала оболочки. Подробную информацию см. в коде в папке package/crb_demo/uart. Например, введите в окно телента:
В соответствующем окне последовательного терминала Shell отображается:
Уровень приложения следует стандартному методу программирования ETH в системах Linux для вызова драйвера.
Client
В качестве клиента войдите в каталог /app/client и введите следующую команду, чтобы запустить клиентское приложение. Первый параметр приложения ETH указывает IP-адрес сервера для установки TCP-соединения. запустите программу ETH с 10.20.5.1. Сервер устанавливает связь.
cd /app/client
./client 10.20.1.13
Подключитесь к серверу для связи через протокол TCP и запустите серверную программу на другом компьютере с Ubuntu. Подробный код см. в содержимом папки package/app/client.
Устройство отображает журнал:
Server
Устройство выступает в качестве сервера и входит в каталог /app/server. Например, введите следующую команду, чтобы запустить серверную программу.
cd /app/server
./server
Запустите клиентскую программу на другом компьютере с Ubuntu и подключитесь к серверу через протокол TCP для связи. Подробный код см. в папке package/crb_demo/server.
Устройство отображает журнал:
K510 имеет в общей сложности 3 основных контроллера SDMMC. SDMMC0 на плате разработки используется для подключения к eMMC, SDMMC1 используется для подключения к модулю WIFI, а контроллер SDMMC2 используется для подключения к SD-карте.
Драйвер SDMMC зарегистрируется и сгенерирует /dev/mmcblk0, а драйвер EMMC зарегистрируется как узел устройства /dev/mmcblk1.
SD-карта будет автоматически подключена к /root/data после запуска системы и войдет в каталог /app/write_read_file. Первый параметр приложения SDMMC указывает файл, который необходимо прочитать и записать. Например, если SD-карта. смонтировано в /root/data. Вы можете читать и записывать файлы в каталоге /root/data/. Сначала запишите, а затем прочитайте. Введите следующую команду, чтобы запустить приложение SDMMC для чтения и записи SD-карты и расчета операций чтения и записи. скорость (единица м/с).
cd /app/write_read_file
./write_read_file /root/data/test.txt
Включите чтение и запись данных 1G с SD-карты. Код см. в папке package/app/write_read_file.
SHA/AES demo Используйте Linux экспорт ядра AF_ALG тип Netlink Интерфейс для использования шифрования ядра в пользовательском пространстве API。подробныйинформация请ссылкаhttps://www.kernel.org/doc/html/latest/crypto/userspace-if.html。
параметр: -h вывести справочную информацию -t тип алгоритма: хэш, skcipher -n имя алгоритма: sha256, ecb(aes), cbc(aes) -x операция расшифровки -k КЛЮЧ AES (шестнадцатеричная строка) -v AES IV (шестнадцатеричная строка)
sha256 test:
cd /app/crypto
echo -n "This is a test file, hello world" > plain.txt
./crypto -t hash -n "sha256" plain.txt sha256.txt
xxd -p -c 32 sha256.txt
sha256sum plain.txt
ecb(aes) 128 test:
cd /app/crypto
echo -n "This is a test file, hello world" > plain.txt
./crypto -t skcipher -n "ecb(aes)" -k 00112233445566778899aabbccddeeff plain.txt ecb_aes_en.bin
./crypto -t skcipher -n "ecb(aes)" -k 00112233445566778899aabbccddeeff -x ecb_aes_en.bin ecb_aes_de.bin
cmp ecb_aes_de.bin plain.txt
cat ecb_aes_de.bin
cbc(aes) 128 test
cd /app/crypto
echo -n "This is a test file, hello world" > plain.txt
./crypto -t skcipher -n "cbc(aes)" -k 00112233445566778899aabbccddeeff -v 00112233445566778899aabbccddeeff plain.txt cbc_aes_en.bin
./crypto -t skcipher -n "cbc(aes)" -k 00112233445566778899aabbccddeeff -v 00112233445566778899aabbccddeeff -x cbc_aes_en.bin cbc_aes_de.bin
cmp cbc_aes_de.bin plain.txt
cat cbc_aes_de.bin
Когда aes-ecb-128 и aes-cbc-128 зашифрованы, открытый текст должен быть выровнен по 16 байтам, а любая нехватка будет автоматически заполняться нулями.
Демо-версия TRNG генерирует случайные числа указанной длины путем чтения символьного устройства /dev/hwrng и выводит их в виде шестнадцатеричной строки.
Значение входных параметров ./trng следующее:
-h вывести справочную информацию
-b указывает длину выходного случайного числа, единица измерения — байт.
Демо-версия drm демонстрирует многоуровневые возможности аппаратного обеспечения VO.
VO имеет в общей сложности 8 слоев:
После запуска платы разработки войдите в каталог /app/drm_demo и введите команду:
cd /app/drm_demo
./drm_demo
Демонстрация v4l2_drm демонстрирует возможности ввода и отображения камеры.
После запуска платы разработки войдите в каталог /app/mediactl_lib и введите команду:
cd /app/mediactl_lib
./v4l2_drm.out -f video_drm_1080x1920.conf
или
./v4l2_drm.out -f video_drm_1920x1080.conf
или
./v4l2_drm.out -f imx385_video_1920x1080.conf
демо imx385: Для этого необходимо изменить конфигурацию. Подробности см. в K510_V4l2_Developer_Guides.md. Выполните команду следующим образом:
./v4l2_drm.out -f imx385_video_1920x1080.conf
Запустите приложение v4l2_drm.out, v4l2_drm.out отобразит эффект:
Введите /app/lvgl и выполните следующую команду:
cd /app/lvgl
./lvgl
Эффект отображения следующий:
Драйвер ШИМ зарегистрирует и создаст узлы устройств /sys/class/pwm/pwmchip0 и /sys/class/pwm/pwmchip3.
Эта процедура может настроить и включить pwm0 и pwm1 соответственно и войти в каталог /app/pwm. Первый параметр приложения pwm указывает период установки ШИМ, единица измерения — нс, а второй параметр устанавливает «ВКЛ». ШИМ за один цикл. Время, единица измерения — нс. Третий параметр может иметь значения 0 и 1, обозначая pwm0 и pwm1 соответственно. Например, введите следующую команду, чтобы включить pwm0, период — 1 с, а рабочий цикл — 1000000000/500000000*100%. = 50%. Подробный код см. в содержимом папки package/app/pwm.
cd /app/pwm
./pwm 1000000000 500000000 0
Результат выполнения программы:
Подключите осциллограф к контакту 28 разъема J15 макетной платы K510 CRB5.1.2, и вы сможете наблюдать на осциллографе форму сигнала с периодом 1 секунда и коэффициентом заполнения 50%.
После загрузки драйвера модуля Wi-Fi будет создана беспроводная сетевая карта wlan0, следуйте инструкциям стандартного драйвера сетевого порта и обратитесь к программированию сокетов TCP/IP для нормальной работы.
./wifi <AP name> <password> <local ip> <server ip>
Например, войдите в каталог /app/wifi и введите команду для запуска программы проверки Wi-Fi. Результат выполнения программы следующий:
Драйвер ключа использует общий драйвер gpio-keys на основе подсистемы ввода, встроенной в само ядро Linux. После загрузки драйвера в каталоге /dev/input/devicesView создается узел мониторинга событий.
Процедура gpio-keys блокирует событие, сообщающее о клавише, и печатает информацию о событии. Информация включает кодировку клавиши и действие клавиши. Кодировка клавиши идентифицирует действие клавиши. При отпускании клавиши действие клавиши делится на нажатие. Программа рассчитает продолжительность нажатия клавиши.
Результат выполнения программы показан на рисунке ниже:
В систему платы разработки встроено множество примеров приложений AI. Для каждого примера программы мы предоставляем соответствующий файл сценария. В файле сценария уже установлены прикладная программа AI и соответствующие параметры, которые необходимо запустить.
Прежде чем приступить к демонстрации руководства по применению ИИ, вам необходимо убедиться, что вы правильно подключили камеру и дисплей и включили макетную плату в нормальном режиме. После запуска платы разработки вы обнаружите, что камера автоматически запустится для получения изображений и предварительного просмотра программы на дисплее в реальном времени. Вам необходимо закрыть приложение вручную. Как его использовать:
входитьps
Проверятьприложение Посмотреть прогресс Число,Например, номер порта процесса программы предварительного просмотра в реальном времени — 189.
189 root 0:01 ./v4l2_drm.out -f video_drm_1920x1080.conf -e 1 -s
входитьkill -9 <процесс Число>
,Завершите процесс предварительного просмотра в реальном времени.,Например, номер порта, который я проверил, — 189.,тогда это должновходить
kill -9 189
После завершения программы предварительного просмотра в реальном времени на экране дисплея отобразится белый экран, что означает, что получение изображения с камеры и программа предварительного просмотра в реальном времени на экране дисплея были успешно завершены.
В этой главе представлены советы по развитиювстроенныйизAIприложениебегать Скрипты находятся по адресу/app/ai/shell/
Оглавлениесередина。Входить Должен Оглавление,Проверьте, есть ли у да соответствующий файл сценария.
[root@canaan ~ ]$ cd /app/ai/shell/
[root@canaan /app/ai/shell ]$ ls
face_alignment.sh object_detect_demo_bf16.sh
face_detect.sh object_detect_demo_uint8.sh
face_expression.sh open_pose.sh
face_landmarks.sh person_detect.sh
face_recog.sh retinaface_mb_320_bf16.sh
hand_image_classify.sh retinaface_mb_320_uint8.sh
head_pose_estimation.sh self_learning.sh
license_recog.sh simple_pose.sh
object_detect.sh
Ниже приводится руководство по разработке приложения AI, соответствующего каждому сценарию.,существоватьруководитьниже Демочаснуждаться确保тыиз Последовательный терминалконтрольбашня已Входить/app/ai/shell/
в каталоге。
Выравнивание лица позволяет получить приблизительную глубину или информацию о pncc каждого лица на изображении или видео. Информация pncc — это вершина трехмерной формы лица, которая не только содержит информацию о трехмерных координатах этой точки, но также содержит здесь значение RGB.
Ссылка на документ: https://sci-hub.et-fine.com/10.1109/TPAMI.2017.2778152.
Координаты вершин и значения RGB 3D-среднего лица нормализуются, что является операцией NCC. Как показано на рисунке ниже, рисунок ниже взят со снимка экрана в статье.
Face Alignment Задача выравнивания лица да основана на определенном объеме обучающего набора и получает модель, которая позволяет модели отмечать точку (ориентир) на входном изображении лица в любой позе. Лицо Alignment Общий метод предъявления задания – обнаружение и обозначение лицевых точек.
Чтобы запустить демонстрационный пример выравнивания лица, введите в терминале:
./face_alignment.sh
Рендеринг выглядит следующим образом:
Обнаружение лиц использует сетевую структуру сетчатки-лица, а магистральная сеть выбирает 0,25-мобильную сеть.
Бумажная ссылка:https://arxiv.org/pdf/1905.00641.pdf
GitHubСвязь:https://github.com/deepinsight/insightface
На рисунке ниже показан одноэтапный метод попиксельной плотной локализации лица.
При использовании этого приложения вы можете получить каждый кадр обнаружения лица на изображении или видео, а также пять ориентиров левого глазного яблока/правого глазного яблока/кончика носа/левого угла рта/правого угла рта каждого лица. Использование следующее: введите:
./face_detect.sh
Внедряйте неколичественные модели. Использование следующее: введите:
./retinaface_mb_320_bf16.sh
Реализовать модель квантования uint8. Использование следующее: введите:
./retinaface_mb_320_uint8.sh
Для распознавания выражений лица необходимы две модели: одна модель используется для распознавания лиц; одна модель используется для распознавания выражений лица. Распознавание выражений лиц использует классификацию выражений лиц. С помощью этого приложения вы можете получить вероятность того, что каждое лицо на изображении или видео принадлежит к следующим выражениям. Использование следующее: введите:
./face_expression.sh
PFLD (практическое обнаружение ориентиров лица) используется для обнаружения ключевых точек лица.
Бумажная ссылка:https://arxiv.org/pdf/1902.10859.pdf
С помощью этого приложения вы можете получить 106 ключевых точек для каждого контура лица на изображении или видео. Использование следующее: введите:
./face_landmarks.sh
Распознавание лиц использует метод извлечения и сравнения лиц.,Результаты одного и того же человека будут максимально похожими,Будут большие различия в поведении разных людей.,Используйте это приложение, чтобы получить сходство между каждым лицом на изображении или видео и лицом на заднем плане.,для задач распознавания лиц. Использование следующего: введите:
./face_recog.sh
После завершения выполнения будет введен режим обнаружения лица. Когда камера обнаружит лицо, нажмите кнопку 1 на плате разработки. Положение следующее:
После нажатия вы увидите следующую выходную информацию в последовательной консоли.
>>>>> key code: 30, action: pressed <<<<<
total took 55.4448 ms
total took 56.2784 ms
Please Enter Your Name to Register:
>>>>> key code: 30, action: released <<<<<
Приведенная выше выходная информация предлагает вам ввести регистрационное имя лица на терминале последовательного порта. Вы можете напрямую ввести информацию о лице и нажать Enter после завершения ввода. Примечание. В настоящее время регистрационную информацию можно вводить только на английском языке. Предположим, я ввожу регистрационное имя как A, как показано ниже:
После завершения ввода он продолжит переход в режим обнаружения лиц. В это время, если только что зарегистрированное лицо будет обнаружено снова, регистрационная информация о лице будет отмечена во время обнаружения. Вы можете повторно зарегистрировать информацию о лице. После регистрации вы можете выполнить распознавание лиц в режиме обнаружения лиц, чтобы различать лица, зарегистрированные с различной информацией. Однако при обнаружении незарегистрированной информации о лице информация о лице не будет отмечена во время обнаружения.
При использовании этого приложения вы можете получить кадры обнаружения человеческих тел в изображениях или видео. Использование следующее: введите:
./person_detect.sh
Существует два основных метода обнаружения ключевых точек человеческого тела: один — сверху вниз, другой — снизу вверх. В этом приложении используется восходящая модель openpose. С помощью этого приложения вы можете получить 17 ключевых точек для каждого человеческого тела на изображении или видео. Использование следующее: введите:
./open_pose.sh
Существует два основных метода обнаружения ключевых точек человеческого тела: один — сверху вниз, другой — снизу вверх. Это приложение использует нисходящую модель с использованием YOLOV5S для обнаружения человеческого тела, а затем использует простую позу для регрессии ключевых точек. С помощью этого приложения вы можете получить 17 ключевых точек для каждого человеческого тела на изображении или видео. Использование следующее: введите:
./simple_pose.sh
Распознавание обозначенной области кончика пальца в основном включает в себя три процесса: обнаружение ладони + обнаружение ключевых точек ладони + распознавание изображений. Среди них tiny-yolov3 с разрешением 512x512 использовался для обнаружения ладоней; compressnet1.1 с разрешением 256x256 использовался для обнаружения ключевых точек ладони, а mobilenetv2, обученный на основе imagenet, использовался для распознавания изображений. При обнаружении ключевых точек руки кончики двух указательных пальцев используются для обрамления области, которую необходимо идентифицировать. Используйте модель классификации imagenet, чтобы определить область, которую необходимо идентифицировать. Использование следующее: введите:
./hand_image_classify.sh
Оценка угла головы позволяет получить данные о крене/рыскании/наклоне каждого лица на изображении или видео. Крен представляет собой степень наклона головы; рыскание представляет собой степень поворота головы влево и вправо; наклон представляет собой степень, в которой голова опускает и поднимает голову. Использование следующее: введите:
./head_pose_estimation.sh
Общий процесс распознавания номеров фактически включает в себя два процесса: обнаружение номеров + распознавание номеров. Retinanet используется для обнаружения номерных знаков, а lprnet — для распознавания номерных знаков. Используя это приложение, вы можете получить содержимое каждого номерного знака в изображении или видео. Использование следующее: введите:
./license_recog.sh
Для обнаружения целей используется YOLOV5. С помощью этого приложения вы можете получить кадры обнаружения целей, принадлежащих следующим меткам, на изображениях или видео.
"person", "bicycle", "car", "motorcycle", "airplane", "bus", "train", "truck",
"boat", "traffic light", "fire hydrant", "stop sign", "parking meter", "bench", "bird", "cat",
"dog", "horse", "sheep", "cow", "elephant", "bear", "zebra", "giraffe",
"backpack", "umbrella", "handbag", "tie", "suitcase", "frisbee", "skis", "snowboard",
"sports ball", "kite", "baseball bat", "baseball glove", "skateboard", "surfboard", "tennis racket", "bottle",
"wine glass", "cup", "fork", "knife", "spoon", "bowl", "banana", "apple",
"sandwich", "orange", "broccoli", "carrot", "hot dog", "pizza", "donut", "cake",
"chair", "couch", "potted plant", "bed", "dining table", "toilet", "tv", "laptop",
"mouse", "remote", "keyboard", "cell phone", "microwave", "oven", "toaster", "sink",
"refrigerator", "book", "clock", "vase", "scissors", "teddy bear", "hair drier", "toothbrush"
Использование следующее: введите:
./object_detect.sh
осуществлять Нет Количественная модель,Использование следующее: введите:
./object_detect_demo_bf16.sh
Реализовать модель квантования uint8. Использование следующее: введите:
./object_detect_demo_uint8.sh
Самообучение опирается на KNN (k-Nearest Соседи) идеи. Идея этого алгоритма заключается в следующем: Выборка наиболее похожа на k выборок в наборе данных, Если большинство из этих k выборок относятся к определенной категории, то образец также относится к этой категории. Использование следующее: введите:
./self_learning.sh
После завершения выполнения на дисплее появится зеленое поле.
В этом примере AI требуется использование ключей (Ключ 1) и ключей (Ключ 2). Положения двух ключей следующие:
Поместите объект, который необходимо идентифицировать, в область действия камеры, чтобы объект можно было отобразить в центре зеленого поля. В это время вам необходимо вручную отметить его, нажав клавишу 1, чтобы начать отмечать класс 0. нажата, терминал последовательного порта запросит следующую информацию:
>>>>> key code: 30, action: pressed <<<<<
Please press UP or DOWN button, UP: confirm, DOWN: switch!
>>>>> key code: 30, action: released <<<<<
Приведенная выше информация напоминает вам, что если вы нажмете клавишу 1, изображение будет отмечено, а если вы нажмете клавишу 2, произойдет переключение режимов.
Продолжайте нажимать кнопку 1, чтобы начать автоматическое маркирование объекта. В это время последовательный терминал выведет следующую информацию:
>>>>> key code: 30, action: pressed <<<<<
Pressed UP button!
class_0 : 1
>>>>> key code: 30, action: released <<<<<
Повторное нажатие клавиши 1 в это время позволит вам продолжить аннотирование изображения или переключиться.
>>>>> key code: 30, action: pressed <<<<<
Please press UP or DOWN button, UP: confirm, DOWN: switch!
>>>>> key code: 30, action: released <<<<<
Если вам нужно несколько раз отметить несколько изображений, вы можете продолжать нажимать клавишу 1, чтобы отметить объект. Как показано ниже:
После маркировки категории 1 (класс 0) и нажатия клавиши 2 терминал последовательного порта выведет следующее содержимое:
>>>>> key code: 48, action: released <<<<<
>>>>> key code: 48, action: pressed <<<<<
Pressed DOWN button!
switch to class_1
В это время будет переключена категория маркировки 1 (класс 1). Продолжайте нажимать кнопку 1, чтобы обозначить категорию 1, и выберите функцию.
>>>>> key code: 30, action: pressed <<<<<
Please press UP or DOWN button, UP: confirm, DOWN: switch!
>>>>> key code: 30, action: released <<<<<
Продолжайте нажимать кнопку 1, чтобы отметить объекты категории 1.
>>>>> key code: 30, action: pressed <<<<<
Pressed UP button!
class_1 : 1
>>>>> key code: 30, action: released <<<<<
Если вам нужно несколько раз пометить несколько изображений, вы можете продолжать нажимать клавишу 1, чтобы пометить объект, так же, как метод маркировки класса 0 (класс 0), описанный выше.
После завершения аннотации, не входя в выбор функции, нажмите клавишу 2, чтобы завершить аннотацию, как показано на рисунке ниже.
>>>>> key code: 30, action: pressed <<<<<
Pressed UP button!
class_1 : 8
>>>>> key code: 30, action: released <<<<<
>>>>> key code: 48, action: released <<<<<
>>>>> key code: 48, action: pressed <<<<<
Pressed DOWN button!
Enter recog!
Поместите объект, только что отмеченный в зеленом поле. В это время плата разработки автоматически обнаружит распознанный объект на дисплее. Когда объект распознается, в левом верхнем углу отобразится категория соответствующего объекта и точность обнаружения. угол.
Откройте виртуальную машину Ubuntu, откройте терминал и войдите в домашний каталог, создайте новую папку helloword.
ubuntu@ubuntu2004:~$ mkdir helloword
Войдите в папку helloword и создайте новую программу hello.c.
ubuntu@ubuntu2004:~$ cd helloword/
ubuntu@ubuntu2004:~/helloword$ touch helloword.c
В терминале инструмент gedit откроет текстовый редактор. Войдите в текстовый редактор и вставьте в него код программы helloword. После вставки нажмите Ctrl + s, чтобы сохранить, и, наконец, нажмите x в правом верхнем углу, чтобы закрыть. текстовый редактор:
ubuntu@ubuntu2004:~/helloword$ gedit helloword.c
программный код helloword:
#include <stdio.h>
int main (void)
{
printf("hello word!\n");
return 0;
}
После написания сохраните в helloword.c после. Нам нужно указать папку, в которой хранятся заголовочные файлы библиотеки, необходимые для кросс-компиляции. Если вам нужно использовать цепочку инструментов кросс-компиляции в любом месте или терминале, вам необходимо отдельно Увеличивать Путь к корзине инструментальной цепочки: ubuntu В переменной среды PATH вы можете добавить ее в ~/.bashrc
также Можетсуществовать每один Терминал单独配置。существовать Терминальное выполнениениже Заказ:
export PATH=$PATH:~/100ask_base-aiApplication-demo/riscv64-buildroot-linux-gnu_sdk-buildroot/bin/
После завершения ввода необходимо проверить, прошло ли добавление успешно. Введите в терминал:
riscv64-linux-gcc -v
входитьназад Можетнормальный Распечататьgcc version 7.3.0 (2019-11-20_nds64le-linux-glibc-v5d-6c120106e03)
Вот и все。
ubuntu@ubuntu2004:~/helloword$ touch Makefile
ubuntu@ubuntu2004:~/helloword$ gedit Makefile
Скопируйте следующую программу в Makefile
CC := riscv64-linux-gcc
helloword: helloword.c
${CC} -o helloword helloword.c
clean:
rm helloword
После заполнения нажмите Crtl+s, чтобы сохранить Makefile.
Проверьте, существуют ли helloword.c и Makefile в текущем каталоге:
ubuntu@ubuntu2004:~/helloword$ ls
helloword.c Makefile
Конечнодокументжитьсуществоватьназадосуществлятькомпилировать Заказmake
компилировать,Как показано ниже:
ubuntu@ubuntu2004:~/helloword$ make
riscv64-linux-gcc -o helloword helloword.c
компилировать Заканчиватьназадвстреча生成可осуществлятьдокументhellword
。
Может быть выполнено file hellword
Заказ Чтобы просмотреть тип скомпилированного файла будь то riscv Тип схемы.
ubuntu@ubuntu2004:~/helloword$ file helloword
helloword: ELF 64-bit LSB executable, UCB RISC-V, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-riscv64-lp64d.so.1, for GNU/Linux 4.15.0, with debug_info, not stripped
Скопируйте файл приветствия, созданный в результате компиляции, на плату разработки через ssh или TFTP и запустите его. Здесь передача TFTP используется для копирования сгенерированной программы приветствия в каталог tftpboot:
ubuntu@ubuntu2004:~/helloword$ cp helloword /home/ubuntu/tftpboot
После завершения копирования,Посмотреть текущий IP-адрес Ubuntu,входитьifconfig
назад,получатьIPадресдля192.168.0.163
Войдите в последовательный интерфейс терминала платы разработки и получите файл helloword в каталоге tftpboot.
[root@canaan ~ ]$ tftp -g -r helloword 192.168.0.163
helloword 100% |********************************| 11680 0:00:00 ETA
Разрешения на исполняемые файлы программы hellowordУвеличивать
[root@canaan ~ ]$ chmod 777 helloword
Запустите программу helloword на плате разработки.
[root@canaan ~ ]$ ./helloword
hello word!
Получите привет с помощью терминала в любом каталоге AIизdemoпрограмма,входитьниже Заказполучать
git clone https://e.coding.net/weidongshan/dongsahnpi-vision/100ask_hello-ai_demo.git
Например:
Если вы не можете скачать,Может получить доступ к данным сетевого диска Baiduсерединаиз<Совет по развитиюимя>/5_DongshanPI-Vision_ВстроенныйAIМатериалы по разработке приложений/2.Hello-AI_demoпрограмма,Этот каталог содержит сжатый пакет демонстрационной программы.,Просто перенесите его в Ubuntu и разархивируйте.
скачать Заканчиватьназад Входить/home/ubuntu/100ask_base-aiApplication-demo/code
,Новыйhello_ai_demo
документпапка
ubuntu@ubuntu2004:~$ cd /home/ubuntu/100ask_base-aiApplication-demo/code/
ubuntu@ubuntu2004:~/100ask_base-aiApplication-demo/code$ mkdir hello_ai_demo
Войдите в каталог hello_ai_demo и скопируйте демонстрационную программу Hello AI в текущий каталог hello_ai_demo.
cp /home/ubuntu/100ask_hello-ai_demo/* ./ -rf
После завершения копирования вы сможете увидеть файлы в папке hello-ai-demo следующим образом:
ubuntu@ubuntu2004:~/100ask_base-aiApplication-demo/code/hello_ai_demo$ ls
CMakeFiles cv2_utils.cc format main.cc object_detect.h
cmake_install.cmake cv2_utils.h images Makefile README.md
CMakeLists.txt file include object_detect.cc
После завершения копирования вернитесь в каталог кода предыдущего уровня и измените файл CMakeLists.txt в каталоге кода.
ubuntu@ubuntu2004:~/ai_demo/100ask_base-aiApplication-demo/code/hello_ai_demo$ cd ../
ubuntu@ubuntu2004:~/100ask_base-aiApplication-demo/code$ gedit CMakeLists.txt
существоватьдокументконец Увеличиватьодно предложениеadd_subdirectory(hello_ai_demo)
,ИсправлятьназадизCMakeLists.txtКак показано ниже:
cmake_minimum_required(VERSION 3.2)
project(ai C CXX)
#set(DEMO_ROOT "${PROJECT_SOURCE_DIR}/../crb_demo")
set(CMAKE_C_FLAGS_DEBUG "-O0 -g3")
set(CMAKE_C_FLAGS_RELEASE "-O2 -s")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3")
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -s")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
set(input imx219_1080x1920_0.conf imx219_0.conf imx219_1.conf video_192x320.conf video_object_detect_320.conf video_object_detect_432x368.conf video_object_detect_512.conf video_object_detect_640x480.conf video_object_detect_320x320.conf video_object_detect_480x640.conf video_object_detect_640.conf)
install(PROGRAMS ${input} DESTINATION exe)
add_subdirectory(face_detect)
add_subdirectory(face_landmarks)
add_subdirectory(object_detect)
add_subdirectory(face_alignment)
add_subdirectory(face_expression)
add_subdirectory(head_pose_estimation)
add_subdirectory(face_recog)
add_subdirectory(simple_pose)
add_subdirectory(openpose)
add_subdirectory(person_detect)
add_subdirectory(hand_image_classify)
add_subdirectory(license_plate_recog)
add_subdirectory(self_learning)
add_subdirectory(object_detect_demo)
add_subdirectory(retinaface_mb_320)
add_subdirectory(hello_ai_demo)
После завершения модификации,нажиматьCrtl+s
保жить Исправлятьназадиздокумент。
Активируйте среду в терминале каталога кода и введите:
ubuntu@ubuntu2004:~/100ask_base-aiApplication-demo/code$ source build.sh
После завершения среды активации войдите в каталог hello_ai_demo и начните компилировать демонстрационную программу Hello AI.
ubuntu@ubuntu2004:~/100ask_base-aiApplication-demo/code$ cd hello_ai_demo/
ubuntu@ubuntu2004:~/100ask_base-aiApplication-demo/code/hello_ai_demo$ make
После завершения компиляции вы можете просмотреть скомпилированную исполняемую программу в каталоге hello_ai_demo, как показано в красном поле на следующем рисунке:
Скопируйте файл hello, созданный в результате компиляции, на плату разработки через ssh или TFTP и запустите его. Здесь передача TFTP используется для копирования сгенерированной программы hello_ai_demo в каталог tftpboot:
ubuntu@ubuntu2004:~/100ask_base-aiApplication-demo/code/hello_ai_demo$ cp hello_ai_demo ~/tftpboot/
Передайте изображение для тестирования на плату разработки. Изображение для тестирования было подготовлено в папке images в каталоге hello_ai_demo.
ubuntu@ubuntu2004:~/100ask_base-aiApplication-demo/code/hello_ai_demo$ cd images/
ubuntu@ubuntu2004:~/100ask_base-aiApplication-demo/code/hello_ai_demo/images$ ls
01_person.bmp 02_cat.bmp
Скопируйте два образа в каталог tftpboot:
ubuntu@ubuntu2004:~/100ask_base-aiApplication-demo/code/hello_ai_demo/images$ cp ./* ~/tftpboot/
После завершения копирования,Посмотреть текущий IP-адрес Ubuntu,входитьifconfig
назад,получатьIPадресдля192.168.0.163
Войдите в последовательный интерфейс терминала платы разработки и получите файл helloword в каталоге tftpboot.
[root@canaan ~ ]$ tftp -g -r hello_ai_demo 192.168.0.163
hello_ai_demo 100% |********************************| 818k 0:00:00 ETA
[root@canaan ~ ]$ tftp -g -r 01_person.bmp 192.168.0.163
01_person.bmp 100% |********************************| 300k 0:00:00 ETA
[root@canaan ~ ]$ tftp -g -r 02_cat.bmp 192.168.0.163
02_cat.bmp 100% |********************************| 300k 0:00:00 ETA
Поскольку программе необходимо использовать файл модели для прогнозирования тестируемого изображения, мы можем скопировать файл модели на макетную плату и использовать его.
[root@canaan ~ ]$ cp /app/ai/kmodel/kmodel_release/object_detect/yolov5s_320/yol
ov5s_320_sigmoid_bf16_with_preprocess_output_nhwc.kmodel ./
После завершения копирования вы сможете увидеть соответствующие файлы в текущем каталоге.
[root@canaan ~ ]$ ls
01_person.bmp
02_cat.bmp
data
emmc
hello_ai_demo
yolov5s_320_sigmoid_bf16_with_preprocess_output_nhwc.kmodel
Разрешения на исполнение программы hello_ai_demoУвеличить
[root@canaan ~ ]$ chmod 777 hello_ai_demo
Запустите программу hello_ai_demo на плате разработки.
./hello_ai_demo ./yolov5s_320_sigmoid_bf16_with_preprocess_output_nhwc.kmodel ./01_person.bmp
Результат выполнения следующий:
Пример 1:
[root@canaan ~ ]$ ./hello_ai_demo ./yolov5s_320_sigmoid_bf16_with_preprocess_out
put_nhwc.kmodel ./01_person.bmp
hello 100ask AI demo!
==> run inference finished!
image inference result: person:0.89
Программа определяет наличие человека в файле 01_person.bmp с вероятностью 0,89.
Пример 2:
[root@canaan ~ ]$ ./hello_ai_demo ./yolov5s_320_sigmoid_bf16_with_preprocess_out
put_nhwc.kmodel ./02_cat.bmp
hello 100ask AI demo!
==> run inference finished!
image inference result: cat:0.86
Он распознает наличие кошки в файле изображения 02_cat.bmp с вероятностью 0,86.
Примечание. Для прогнозирования можно передать собственное изображение. Необходимо убедиться, что формат изображения — bmp, а размер — 320x320.
Извлечение компонентов RGB из файлов BMP
int get_rgb_from_bmp(char *file, uint8_t *rbuf, uint8_t *gbuf, uint8_t *bbuf)
{
int err;
unsigned int *p;
unsigned int rgb32;
int r_pos = 0, g_pos = 0, b_pos = 0;
/* данные точечной матрицы */
T_PixelDatas bmpPixelDatas;
/* Разбирать BMP-файлы */
err = GetPixelDatasForIcon(file, &bmpPixelDatas);
if (err)
{
DebugPrint("Can not get digit bmp file: %s\n", file);
return -1;
}
/* Вынимаем RGB внутри отдельно */
for (int y = 0; y < MIN(320, bmpPixelDatas.iHeight); y++)
{
p = (unsigned int *)(bmpPixelDatas.aucPixelDatas + y * bmpPixelDatas.iLineBytes);
r_pos = g_pos = b_pos = y*320;
for (int x = 0; x < MIN(320, bmpPixelDatas.iWidth); x++)
{
rgb32 = p[x];
/*Сохраняем данные трех каналов RGB в 3 буфера соответственно*/
rbuf[r_pos++] = (rgb32 >> 16) & 0xff;
gbuf[g_pos++] = (rgb32 >> 8) & 0xff;
bbuf[b_pos++] = (rgb32 >> 0) & 0xff;
}
}
return 0;
}
Инициализировать модель
objectDetect od(0.5, 0.45, 320, {320, 320});//Достоверность, порог нм, размер модели, размер изображения
od.load_model(argv[1]); //Загрузка модели yolov5s_320_sigmoid_bf16_with_preprocess_output_nhwc.kmodel
od.prepare_memory(); // memory allocation Подготовить Память
Использовать модель
/* Поместите данные RGB скопировать в od */
od_r = (uint8_t *)od.virtual_addr_input[0];
od_g = od_r + 320*320;
od_b = od_g + 320*320;
memcpy(od_r, rbuf, 320*320);
memcpy(od_g, gbuf, 320*320);
memcpy(od_b, bbuf, 320*320);
od.set_input(0);//настраиватьвходить
od.set_output();//Выход объекта
od.run();//бегатьрассуждение
od.get_output(); //Получаем результаты вывода
Постобработка
/*Постобработка: Преобразование результатов вывода в полезные данные*/
std::vector<BoxInfo> result;
od.post_process(result);//бегать Постобработка
for (auto r : result)
{
std::string text = od.labels[r.label] + ":" + std::to_string(round(r.score * 100) / 100.0).substr(0,4);
cout<<"image inference result: ";
cout<<text<<endl;
}
цепочка инструментовдагруппаинструменты программирования,для развитияпрограммное обеспечение、создаватьпрограммное обеспечениепродукт。цепочка Инструменты обычно представляют собой другую компьютерную программу или группу этапов закрывания программы. Обычно цепочка инструментов Есть несколько винструмент,Результат работы предыдущего инструмента,да Ввод следующего инструмента,Другими словами, да сказал, что предыдущий инструмент был обработан.,Затем оставьте это следующему инструменту.
Простая цепочка инструментов Может состоять из трех частей:компиляторикомпоновщик(Преобразование исходного кодадляисполняемая программа)、Библиотека(дляОперационная системапоставлятьинтерфейс)иотладчик(используется длятестиотлаживатьсоздаватьизпрограмма)。один复杂изпрограммное обеспечениепродукт,нравитьсявидеоигры,нуждаться ПодготовитьЗвуковые эффекты、музыка、текстура、3 трехмерная модельианимированныйинструмент,и дополнительный инструмент, который объединяет эти ресурсы в готовый продукт.
**GNU ** цепочка инструментов даодин广泛收集из、Соблюдать лицензию GNU、многочисленныеинструменты программирования。Этиинструментсформироватьцепочка инструментов,для развитияприложениеиОперационная система。
GNU цепочка инструментовсуществоватьLinux、НекоторыйBSDсистемаивстроенная системапрограммное Обеспечение играет жизненно важную роль в развитии закрытия.
**Кросс-компилятор:** Используйте это на платформе A для создания программы.,Эта программа находится на платформе B. Например,существоватьPCначальствобегатьпрограмма,ноэтотпрограммадасуществоватьAndroid Смартфонначальствобегатьиз,этоткомпилятор Сразудакресткомпилятор。
При компиляции кода для других платформ (целевых платформ) на ПК необходим кросс-компилятор. Можно ли скомпилировать программу непосредственно на целевой платформе? Например, скомпилировать программу на ARM плате? В большинстве случаев это невозможно, поскольку ресурсы платы ARM, скорее всего, будут ограничены.
Основная цель кросс-компилятора — отделить среду сборки от целевой среды. Это полезно в нескольких ситуациях:
CMake — это кроссплатформенное семейство инструментов с открытым исходным кодом, предназначенное для создания, тестирования и упаковки программного обеспечения. CMake используется для управления процессом компиляции программного обеспечения с использованием простых файлов конфигурации, независимых от платформы и компилятора, а также для создания собственных make-файлов и рабочих пространств, которые можно использовать в среде компилятора по вашему выбору. Набор инструментов CMake был создан компанией Kitware в ответ на потребность в мощной кроссплатформенной среде сборки на основе проектов с открытым исходным кодом, таких как ITK и VTK.
CMake является частью коллекции коммерчески поддерживаемых платформ разработки программного обеспечения с открытым исходным кодом Kitware.