Как я изучил CoreGraphics | Кодементор

Слева: изображение с низким разрешением, посередине: оригинальное изображение с высоким разрешением, справа: изображение с высоким разрешением, рассчитанное искусственным интеллектом

Обо мне

Я Майкл Вергес, первокурсник по специальности «Информатика» в Технологическом институте Джорджии. Моя история разработки приложений насчитывает около четырех лет. Последние 3 лета я подавал заявку на участие во Всемирной конференции Apple по развитию (WWDC) в качестве студента-ученого. Я присутствовал на WWDC16, WWDC17 и WWDC18 в качестве ученого.

Почему я хотел узнать больше о CoreGraphics

Одним из наиболее распространенных фреймворков, с которыми взаимодействуют iOS-программисты, является CoreGraphics. UIKit (стандартная структура пользовательского интерфейса для iOS) использует CoreGraphics и CoreAnimation. Несмотря на общие взаимодействия между UIKit и CoreGraphics, я никогда не исследовал многие базовые функции.

Как я подошел к изучению CoreGraphics

Я участвовал в 36-часовом хакатоне (HackGT) с коллегой. У него была идея для платформы Super Resolution, которая использует ИИ для улучшения изображений. Я знал, что это потребует много обработки графики на стороне iOS.

Проблемы, с которыми я столкнулся

Используя полностью сверточную нейронную сеть, ИИ мог считывать только фиксированный размер ввода. Это означало, что мне нужно было извлечь данные изображения в проиндексированных квадратах, передать их через модель ИИ и повторно сшить их в буфере изображения. Обучение чтению данных пикселей и выполнению операций с буферами изображений поначалу пугало, но вскоре стало естественным.

Управление памятью также было очень сложным при работе с необработанными данными изображения. Я использовал некоторый пример кода, но симуляторы зависали после достижения 4 ГБ памяти. Мне было важно оптимизировать скорость и память. Я исключил любые операции посредника, чтобы напрямую выполнять операции с изображением в выделенном пиксельном буфере.

Основные выводы

Хакатоны — отличная среда для изучения новых технологий. Кроме того, развивайте собственное понимание исходного кода. Хотя полезно учиться на примерах и документации, важно перестроить ее для себя, чтобы изучить структуру и оптимизировать ее использование.

Советы и советы

Следите за своей памятью. Никогда не выделяйте больше, чем вам нужно.
Документация учит большему, чем пример кода.

Заключительные мысли и следующие шаги

Я люблю CoreGraphics и провел последние несколько месяцев, разрабатывая проекты, основанные на обработке сигналов. В настоящее время я использую пиксельные данные для алгоритмического прогнозирования скорости интерполяции изображения (цифровой зум).

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *