{"id":397,"date":"2026-02-21T13:52:23","date_gmt":"2026-02-21T12:52:23","guid":{"rendered":"https:\/\/www.achtzigzehn.net\/blog\/?p=397"},"modified":"2026-02-21T13:52:23","modified_gmt":"2026-02-21T12:52:23","slug":"video-upscaling-mit-machine-learning-im-hintergrund","status":"publish","type":"post","link":"https:\/\/www.achtzigzehn.net\/blog\/2026\/02\/21\/video-upscaling-mit-machine-learning-im-hintergrund\/","title":{"rendered":"Video Upscaling mit Machine Learning im Hintergrund"},"content":{"rendered":"\n<p>Vor ein paar Jahren hatte ich mich <a href=\"https:\/\/www.achtzigzehn.net\/blog\/2020\/04\/08\/video-verkehrt-als-einzeiler-mit-ffmpeg\/\">mit einer Videosequenz herumgespielt<\/a>, um einen gef\u00e4llten Baum virtuell wieder auferstehen zu lassen. Das Ausgangsmaterial war qualitativ m\u00e4\u00dfig, aber der Einzeiler machte, was er sollte: Der Baum stand wieder.<\/p>\n\n\n\n<p>ML-gest\u00fctztes Video Upscaling wollte ich immer mal wieder ausprobieren. Ein erster Anlauf mit <a href=\"https:\/\/github.com\/xinntao\/Real-ESRGAN\" data-type=\"link\" data-id=\"https:\/\/github.com\/xinntao\/Real-ESRGAN\">Real-ESRGAN<\/a> in Ubuntu 22.04\/WSL war unbefriedigend, die Performance war mau:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Die AMD Ryzen iGPU wird von ROCm nicht unterst\u00fctzt.<\/li>\n\n\n\n<li>Das Modell lief nur auf einem CPU-Kern.<\/li>\n<\/ul>\n\n\n\n<p>Den neuen Anlauf gestaltete ich auf Basis von Ubuntu 24.04\/WSL bzw. nativ mit Fedora 43. Die Performance war in beiden F\u00e4llen deutlich besser, obwohl die iGPU weiterhin keine Nutzung fand. Daf\u00fcr skalierte nun das Modell \u00fcber alle CPU-Kerne. Allerdings stehen hinter der Aussage &#8222;deutlich besser&#8220; immer noch ca. 12 Sekunden pro Frame.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video height=\"1600\" style=\"aspect-ratio: 1216 \/ 1600;\" width=\"1216\" controls muted src=\"https:\/\/www.achtzigzehn.net\/blog\/wp-content\/uploads\/2026\/02\/Treecut_realesrgn_4x_h264_out.mp4\"><\/video><figcaption class=\"wp-element-caption\">Baum sagt adieu  &#8211; nach dem Upscaling mit Real-ESRGAN<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video height=\"1600\" style=\"aspect-ratio: 1216 \/ 1600;\" width=\"1216\" controls muted src=\"https:\/\/www.achtzigzehn.net\/blog\/wp-content\/uploads\/2026\/02\/Treecut_reversed_realesrgn_4x_h264_out.mp4\"><\/video><figcaption class=\"wp-element-caption\">Und da ist er wieder, mein Freund der Baum &#8211; nach dem Upscaling mit Real-ESRGAN<\/figcaption><\/figure>\n\n\n\n<p>Was ziehe ich aktuell daraus:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mein pers\u00f6nlicher Proof-of-Concept \u2705<\/li>\n\n\n\n<li>Um so weit zu kommen, musste ich die eine oder andere Library patchen um sie mit aktuelleren Python-Versionen zum Laufen zu bekommen (insbesondere <a href=\"https:\/\/pypi.org\/project\/basicsr\/\" data-type=\"link\" data-id=\"https:\/\/pypi.org\/project\/basicsr\/\">basicsr<\/a>) \u2705<\/li>\n\n\n\n<li>Die erzielte Video-Qualit\u00e4t ist auch bei wirklich schlechtem Ausgangsmaterial gut. Das zeigte der obige PoC, aber auch andere Videoschnipsel, die ich hier nicht posten kann \u2705<\/li>\n\n\n\n<li>ML auf CPU-Kernen macht keinen Spa\u00df, schon gar nicht bei vielen Hundert oder Tausend Frames. Eine letzte M\u00f6glichkeit, die iGPU doch noch zum Mitmachen zu \u00fcberreden, w\u00e4re die Inferenz via Vulkan zu beschleunigen. Aber auch da reden wir vielleicht von Faktor 2 bis 5 an Verbesserung gegen\u00fcber der reinen CPU &#8211; zu langsam um ein ernsthaftes Projekt zu wagen.<\/li>\n<\/ul>\n\n\n\n<p>Und hier nochmals der <a href=\"https:\/\/www.achtzigzehn.net\/blog\/2020\/04\/08\/video-verkehrt-als-einzeiler-mit-ffmpeg\/\" data-type=\"link\" data-id=\"https:\/\/www.achtzigzehn.net\/blog\/2020\/04\/08\/video-verkehrt-als-einzeiler-mit-ffmpeg\/\">Link zu den originalen Videos<\/a>.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Vor ein paar Jahren hatte ich mich mit einer Videosequenz herumgespielt, um einen gef\u00e4llten Baum virtuell wieder auferstehen zu lassen. Das Ausgangsmaterial war qualitativ m\u00e4\u00dfig, aber der Einzeiler machte, was er sollte: Der Baum stand wieder. ML-gest\u00fctztes Video Upscaling wollte ich immer mal wieder ausprobieren. Ein erster Anlauf mit Real-ESRGAN in Ubuntu 22.04\/WSL war unbefriedigend, [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[46,21,45],"class_list":["post-397","post","type-post","status-publish","format-standard","hentry","category-scripting-coding","tag-inference","tag-linux","tag-machine-learning"],"_links":{"self":[{"href":"https:\/\/www.achtzigzehn.net\/blog\/wp-json\/wp\/v2\/posts\/397","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.achtzigzehn.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.achtzigzehn.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.achtzigzehn.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.achtzigzehn.net\/blog\/wp-json\/wp\/v2\/comments?post=397"}],"version-history":[{"count":1,"href":"https:\/\/www.achtzigzehn.net\/blog\/wp-json\/wp\/v2\/posts\/397\/revisions"}],"predecessor-version":[{"id":401,"href":"https:\/\/www.achtzigzehn.net\/blog\/wp-json\/wp\/v2\/posts\/397\/revisions\/401"}],"wp:attachment":[{"href":"https:\/\/www.achtzigzehn.net\/blog\/wp-json\/wp\/v2\/media?parent=397"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.achtzigzehn.net\/blog\/wp-json\/wp\/v2\/categories?post=397"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.achtzigzehn.net\/blog\/wp-json\/wp\/v2\/tags?post=397"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}