1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[678],{8:function(e,s,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/v1/getting-started/installation",function(){return n(5025)}])},9369:function(e,s,n){"use strict";var t=n(5893);n(7294);var i=n(5675),r=n.n(i),o=n(3750),l=n(1163),a=n(2681);let c={logo:(0,t.jsxs)("span",{style:{display:"flex",alignItems:"center"},children:[(0,t.jsx)(r(),{alt:"logo",width:30,height:30,src:"/docs/logo-400x400-rounded.png"}),"\xa0",(0,t.jsx)("b",{children:"Pipeless"})]}),logoLink:"https://pipeless.ai",primaryHue:297,project:{link:"https://github.com/pipeless-ai/pipeless"},chat:{link:"https://discord.gg/K2qxQ8uedG",icon:(0,t.jsx)(o.KpZ,{size:25})},docsRepositoryBase:"https://github.com/pipeless-ai/docs/tree/main",footer:{text:(0,t.jsx)("p",{children:"Copyright \xa9 2023 Pipeless, Inc."})},search:{loading:"Loading..."},head:()=>{let{asPath:e,defaultLocale:s,locale:n}=(0,l.useRouter)(),{frontMatter:i}=(0,a.ZR)(),r="https://www.pipeless.ai"+(s===n?e:"/".concat(n).concat(e));return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("meta",{property:"og:url",content:r}),(0,t.jsx)("meta",{property:"og:title",content:i.title||"Pipeless Documentation"}),(0,t.jsx)("meta",{property:"og:description",content:i.description||"Documentation about Pipeless, the computer vision framework"}),(0,t.jsx)("meta",{property:"og:image",content:"https://www.pipeless.ai/docs/logo-400x400-rounded.png"})]})},useNextSeoProps:()=>({titleTemplate:"%s â Pipeless"}),banner:{dismissible:!1,key:"agents",text:(0,t.jsx)("a",{target:"blank",href:"https://agents.pipeless.ai",children:(0,t.jsxs)("p",{children:["\uD83D\uDE80 \xa0\xa0",(0,t.jsx)("b",{children:"Pipeless Agents is live!"}),"\xa0Create vision powered apps and automations effortlessly within seconds.\xa0",(0,t.jsx)("span",{style:{textDecoration:"underline"},children:"Click here to get started!"})]})})},sidebar:{defaultMenuCollapseLevel:1}};s.Z=c},5025:function(e,s,n){"use strict";n.r(s),n.d(s,{__toc:function(){return c}});var t=n(5893),i=n(2673),r=n(2681),o=n(9369);n(9966);var l=n(2643),a=n(9013);let c=[{depth:2,value:"Installing locally \uD83D\uDCBB",id:"installing-locally-"},{depth:3,value:"Requirements âï¸",id:"requirements-ï¸"},{depth:4,value:"Install dependencies for Linux",id:"install-dependencies-for-linux"},{depth:4,value:"Install dependencies for macOS",id:"install-dependencies-for-macos"},{depth:3,value:"Installation \uD83D\uDEE0ï¸",id:"installation-ï¸"},{depth:2,value:"Using Docker \uD83D\uDC0B",id:"using-docker-"},{depth:2,value:"Building from source",id:"building-from-source"},{depth:3,value:"Linux",id:"linux"},{depth:3,value:"macOS",id:"macos"},{depth:2,value:"Building ONNX Runtime from source",id:"building-onnx-runtime-from-source"}];function h(e){let s=Object.assign({h1:"h1",p:"p",ol:"ol",li:"li",h2:"h2",a:"a",h3:"h3",ul:"ul",strong:"strong",code:"code",h4:"h4",pre:"pre",span:"span"},(0,l.a)(),e.components);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.h1,{children:"Installing Pipeless \uD83D\uDEE0ï¸"}),"\n","\n",(0,t.jsx)(s.p,{children:"You have two options when using Pipeless:"}),"\n",(0,t.jsxs)(s.ol,{children:["\n",(0,t.jsx)(s.li,{children:"Install the requirements and Pipeless locally."}),"\n",(0,t.jsx)(s.li,{children:"Use the Docker image which already ships all the required dependencies."}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"installing-locally-",children:"Installing locally \uD83D\uDCBB"}),"\n",(0,t.jsxs)(s.p,{children:["If you face any issues please check the ",(0,t.jsx)(s.a,{href:"https://www.pipeless.ai/docs/v1/troubleshooting",children:"troubleshooting"})," section, if you can't find your issue feel free to contact us for help via a GitHub issue."]}),"\n",(0,t.jsx)(s.h3,{id:"requirements-ï¸",children:"Requirements âï¸"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:"Python."}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.strong,{children:"Gstreamer 1.20.3"}),". Verify with ",(0,t.jsx)(s.code,{children:"gst-launch-1.0 --gst-version"}),"."]}),"\n"]}),"\n",(0,t.jsx)(a.UW,{children:(0,t.jsxs)(s.p,{children:["Please note that the pre-built binaries are linked to specific Python ver
1sions. ",(0,t.jsx)(s.code,{children:"3.10"})," for Linux amd64, ",(0,t.jsx)(s.code,{children:"3.8"})," for Linux arm64 and ",(0,t.jsx)(s.code,{children:"3.12"})," for macOS.\nIf your installed version is different provide ",(0,t.jsx)(s.code,{children:"--build"})," to the installation script, or update your Python version to match the above one."]})}),"\n",(0,t.jsx)(s.h4,{id:"install-dependencies-for-linux",children:"Install dependencies for Linux"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:"Python:"}),"\n",(0,t.jsx)(s.pre,{"data-language":"bash","data-theme":"default",hasCopyCode:!0,children:(0,t.jsx)(s.code,{"data-language":"bash","data-theme":"default",children:(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"sudo"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"apt-get"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"install"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"python3"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"python3-pip"})]})})}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:"Gstreamer:"}),"\n",(0,t.jsxs)(s.p,{children:["Follow the installation instructions ",(0,t.jsx)(s.a,{href:"https://gstreamer.freedesktop.org/documentation/installing/index.html?gi-language=python",children:"here"})," or just run:"]}),"\n",(0,t.jsx)(s.pre,{"data-language":"bash","data-theme":"default",hasCopyCode:!0,children:(0,t.jsxs)(s.code,{"data-language":"bash","data-theme":"default",children:[(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"sudo"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"apt-get"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"install"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"libgstreamer1.0-dev"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"libgstreamer-plugins-base1.0-dev"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" \\"})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"libgstreamer-plugins-bad1.0-dev"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"gstreamer1.0-plugins-base"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" \\"})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"gstreamer1.0-plugins-good"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"gstreamer1.0-plugins-bad"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" \\"})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"gstreamer1.0-plugins-ugly"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"}
1,children:"gstreamer1.0-libav"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"gstreamer1.0-tools"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" \\"})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"gstreamer1.0-x"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"gstreamer1.0-alsa"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"gstreamer1.0-gl"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"gstreamer1.0-gtk3"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" \\"})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"gstreamer1.0-qt5"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"gstreamer1.0-pulseaudio"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"gstreamer1.0-rtsp"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"libcairo2-dev"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"libgirepository1.0-dev"})]})]})}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h4,{id:"install-dependencies-for-macos",children:"Install dependencies for macOS"}),"\n",(0,t.jsx)(s.pre,{"data-language":"bash","data-theme":"default",hasCopyCode:!0,children:(0,t.jsx)(s.code,{"data-language":"bash","data-theme":"default",children:(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"brew"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"install"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"python"})]})})}),"\n",(0,t.jsx)(s.p,{children:"Also, to install Gstreamer in macOS use the following instead of the upstream instructions to ensure all the required packages are installed:"}),"\n",(0,t.jsx)(s.pre,{"data-language":"bash","data-theme":"default",hasCopyCode:!0,children:(0,t.jsx)(s.code,{"data-language":"bash","data-theme":"default",children:(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"brew"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"install"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"gstreamer"})]})})}),"\n",(0,t.jsx)(s.h3,{id:"installation-ï¸",children:"Installation \uD83D\uDEE0ï¸"}),"\n",(0,t.jsxs)(s.p,{children:["The provided installation script grabs the latest Pipeless version from the pre-built releases and installs it locally. You can use the script to either ",(0,t.jsx)(s.strong,{children:"install"})," or ",(0,t.jsx)(s.strong,{children:"upgrade"})," your Pipeless version.\nIn case there is not a pre-built binary for your target OS or architecture the script will try to build Pipeless from source.\nYou can also force the build from source using the ",(0,t.jsx)(s.code,{children:"--build"})," flag."]}),"\n",(0,t.jsxs)(a.UW,{children:["Note the pre-built binaries of Pipeless are built against Python 3.12 for macOS, 3.10 for Linux amd64 and 3.8 for Linux arm64. If you have a different Python ver
1sion either update it to the mentioned ones or provide the ",(0,t.jsx)(s.code,{children:"--build"})," flag to the script to build Pipeless for your installed Python version"]}),"\n",(0,t.jsx)(s.pre,{"data-language":"bash","data-theme":"default",hasCopyCode:!0,children:(0,t.jsx)(s.code,{"data-language":"bash","data-theme":"default",children:(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"curl"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://raw.githubusercontent.com/pipeless-ai/pipeless/main/install.sh"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"|"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"bash"})]})})}),"\n",(0,t.jsx)(s.p,{children:"Or you can fetch the script, and then execute it locally. It's well documented so that you can read through it and understand what it is doing before you run it."}),"\n",(0,t.jsx)(s.pre,{"data-language":"bash","data-theme":"default",hasCopyCode:!0,children:(0,t.jsxs)(s.code,{"data-language":"bash","data-theme":"default",children:[(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"curl"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"-fsSL"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"-o"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"install_pipeless.sh"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://raw.githubusercontent.com/pipeless-ai/pipeless/main/install.sh"})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"chmod"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-constant)"},children:"700"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"install_pipeless.sh"})]}),"\n",(0,t.jsx)(s.span,{className:"line",children:(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"./install_pipeless.sh"})})]})}),"\n",(0,t.jsx)(a.UW,{children:(0,t.jsx)(s.p,{children:"Remember to add the commands shown at the end of the installation to your shell configuration file, so Pipeless can be run in future shell sessions."})}),"\n",(0,t.jsx)(s.p,{children:"Finally, test the installation with:"}),"\n",(0,t.jsx)(s.pre,{"data-language":"bash","data-theme":"default",hasCopyCode:!0,children:(0,t.jsx)(s.code,{"data-language":"bash","data-theme":"default",children:(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"pipeless"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"--help"})]})})}),"\n",(0,t.jsx)(s.h2,{id:"using-docker-",children:"Using Docker \uD83D\uDC0B"}),"\n",(0,t.jsx)(s.p,{children:"No installation is required when using Docker, you just need to have docker installed."}),"\n",(0,t.jsx)(s.pre,{"data-language":"bash","data-theme":"default",hasCopyCode:!0,children:(0,t.jsx)(s.code,{"data-language":"bash","data-theme":"default",children:(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"docker"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"run"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"miguelaeh/pipeless"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"--help"})]})})}),"\n",(0,t.jsxs)(s.p,{children:["Find the whole container documentation ",(0,t.jsx)(s.a,{href:"/v1/container",children:"here"}),"."]}),"\n",(0,t.jsx)(s.h2,{id:"building-from-source",children:"Building from source"}),"\n",(0,t.jsxs)(s.p,{children:["Apart from the Pipeless dependencies listed in the ",(0,t.jsx)(s.a,{href:"#requirements",children:"requirements"})," you need to install ",(0,t.jsx)(s.code,{children:"pkg-config"})," and ",(0,t.jsx)(s.code,{children:"cargo"}),"."]}),"\n",(0,t.jsx)(a.UW,{children:(0,t.jsxs)(s.p,{children:["If Microsoft does not provide a ONNX runtime build for your target platform go to\nthe ",(0,t.jsx)(s.a,{href:"/v1/getting-started/installation#building-onnx-runtime-from-source",children:"next section"}),". You can check the\nONXX Runtime releases at: ",(0,t.jsx)(s.a,{href:"https://github.com/microsoft/onnxruntime/releases",children:"https://github.com/microsoft/onnxruntime/releases"})]})}),"\n",(0,t.jsx)(s.p,{children:"Once the dependencies are installed run the following from the root of the Pipeless repository:"}),"\n",(0,t.jsx)(s.h3,{id:"linux",children:"Linux"}),"\n",(0,t.jsx)(s.pre,{"data-language":"bash","data-theme":"default",hasCopyCode:!0,children:(0,t.jsxs)(s.code,{"data-language":"bash","data-theme":"default",children:[(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"export"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" PIPELESS_INSTALL_DIR"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"="}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"${HOME}/.pipeless"'})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"cargo"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"build"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"--all"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"--release"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"--manifest-path"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"pipeless/Cargo.toml"})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"mv"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"pipeless/target/release/pipeless-ai"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"pipeless/target/release/pipeless"})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"strip"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"pipeless/target/release/pipeless"})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"mv"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"pipeless/target/release/{pipeless,libonnxruntime*}"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"${PIPELESS_INSTALL_DIR}/"'})]})]})}),"\n",(0,t.jsxs)(s.p,{children:["Include ",(0,t.jsx)(s.code,{children:"PIPELESS_INSTALL_DIR"})," in your ",(0,t.jsx)(s.code,{children:"PATH"})," ",(0,t.jsx)(s.strong,{children:"and"})," ",(0,t.jsx)(s.code,{children:"LD_LIBRARY_PATH"}),"."]}),"\n",(0,t.jsx)(s.h3,{id:"macos",children:"macOS"}),"\n",(0,t.jsx)(s.pre,{"data-language":"bash","data-theme":"default",hasCopyCode:!0,children:(0,t.jsxs)(s.code,{"data-language":"bash","data-theme":"default",children:[(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"export"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" PIPELESS_INSTALL_DIR"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"="}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"${HOME}/.pipeless"'})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"cargo"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"build"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"--all"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"--release"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"--manifest-path"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"pipeless/Cargo.toml"})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"mv"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"pipeless/target/release/pipeless-ai"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"pipeless/target/release/pipeless"})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"strip"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"pipeless/target/release/pipeless"})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"mv"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"pipeless/target/release/{pipeless,libonnxruntime*}"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"${PIPELESS_INSTALL_DIR}/"'})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"install_name_tool"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"}
1,children:"-add_rpath"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"@executable_path"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"${PIPELESS_INSTALL_DIR}/pipeless"'})]})]})}),"\n",(0,t.jsxs)(s.p,{children:["Include ",(0,t.jsx)(s.code,{children:"PIPELESS_INSTALL_DIR"})," in your ",(0,t.jsx)(s.code,{children:"PATH"}),"."]}),"\n",(0,t.jsx)(s.h2,{id:"building-onnx-runtime-from-source",children:"Building ONNX Runtime from source"}),"\n",(0,t.jsx)(s.p,{children:"When you build Pipeless it will automatically download and link to a pre-built ONNX Runtime library obtained from the Microsoft releases.\nHowever, it may happen that Microsoft does not release a pre-built library for your target platform. When that's the case, please follow the below instructions to build both ONNX Runtime and Pipeless."}),"\n",(0,t.jsx)(s.p,{children:"First, clone the ONNX Runtime repo as follows and move to the proper branch:"}),"\n",(0,t.jsx)(s.pre,{"data-language":"bash","data-theme":"default",hasCopyCode:!0,children:(0,t.jsxs)(s.code,{"data-language":"bash","data-theme":"default",children:[(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"git"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"clone"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://github.com/microsoft/onnxruntime.git"})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"cd"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"onnxruntime"})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"git"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"checkout"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"v1.16.3"})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"git"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"submodule"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"update"})]})]})}),"\n",(0,t.jsx)(s.p,{children:"Then, build it as follows:"}),"\n",(0,t.jsx)(a.UW,{children:(0,t.jsxs)(s.p,{children:["If you get out-of-memory running the following command remove the ",(0,t.jsx)(s.code,{children:"--parallel"})," option or change it to a low value such as ",(0,t.jsx)(s.code,{children:"--parallel 2"}),". It will take significantly more time to build, but you will not run out of memory."]})}),"\n",(0,t.jsx)(s.pre,{"data-language":"bash","data-theme":"default",hasCopyCode:!0,children:(0,t.jsxs)(s.code,{"data-language":"bash","data-theme":"default",children:[(0,t.jsx)(s.span,{className:"line",children:(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-comment)"},children:"# You can remove CUDA and Cudnn flags if you do not plan to use CUDA."})}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"bash"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"build.sh"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"--parallel"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"--build_shared_lib"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"--config"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"Release"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"--use_cuda"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"--cuda_home"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"}
1,children:"/usr/local/cuda/"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"--cudnn_home"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"/usr/lib/aarch64-linux-gnu/"})]})]})}),"\n",(0,t.jsx)(s.p,{children:"Now let's move the built library into the Pipeless install directory. Run the following, still from inside the ONNX repo root:"}),"\n",(0,t.jsx)(s.pre,{"data-language":"bash","data-theme":"default",hasCopyCode:!0,children:(0,t.jsxs)(s.code,{"data-language":"bash","data-theme":"default",children:[(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"mkdir"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"~/.pipeless"})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"cp"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"./build/Linux/Release/libonnxruntime*.so"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"~/.pipeless/"})]})]})}),"\n",(0,t.jsx)(s.p,{children:"Now, move out of the ONNX runtime repository and clone the Pipeless repository:"}),"\n",(0,t.jsx)(s.pre,{"data-language":"bash","data-theme":"default",hasCopyCode:!0,children:(0,t.jsxs)(s.code,{"data-language":"bash","data-theme":"default",children:[(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"cd"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:".."})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"git"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"clone"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"https://github.com/pipeless-ai/pipeless.git"})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"cd"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"pipeless"})]})]})}),"\n",(0,t.jsx)(s.p,{children:"Build Pipeless with the following command, which will link it to the ONNX Runtime library you built before:"}),"\n",(0,t.jsx)(s.pre,{"data-language":"bash","data-theme":"default",hasCopyCode:!0,children:(0,t.jsxs)(s.code,{"data-language":"bash","data-theme":"default",children:[(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:"ORT_STRATEGY"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"="}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"system"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" ORT_LIB_LOCATION"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"="}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"~/.pipeless/"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"cargo"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"build"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"--manifest-path"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"pipeless/Cargo.toml"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"--release"})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"mv"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"pipeless/target/release/pipeless-ai"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"pipeless/target/release/pipeless"})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"strip"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"pipeless/target/release/pipeless"})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"cp"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"pipeless/target/release/pipeless"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"~/.pipeless/"})]})]})}),"\n",(0,t.jsx)(s.p,{children:"Finally run the following so you can start using Pipeless:"}),"\n",(0,t.jsx)(s.p,{children:"For Linux:"}),"\n",(0,t.jsx)(s.pre,{"data-language":"bash","data-theme":"default",hasCopyCode:!0,children:(0,t.jsxs)(s.code,{"data-language":"bash","data-theme":"default",children:[(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"export"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" PATH"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"="}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"${HOME}/.pipeless:${PATH}"'})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"export"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" LD_LIBRARY_PATH"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"="}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"${HOME}/.pipeless:${LD_LIBRARY_PATH}"'})]})]})}),"\n",(0,t.jsx)(s.p,{children:"For macOS:"}),"\n",(0,t.jsx)(s.pre,{"data-language":"bash","data-theme":"default",hasCopyCode:!0,children:(0,t.jsxs)(s.code,{"data-language":"bash","data-theme":"default",children:[(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"export"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" PATH"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-keyword)"},children:"="}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"${HOME}/.pipeless:${PATH}"'})]}),"\n",(0,t.jsxs)(s.span,{className:"line",children:[(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-function)"},children:"install_name_tool"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"}
1,children:"-add_rpath"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string)"},children:"@executable_path"}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,t.jsx)(s.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"${PIPELESS_INSTALL_DIR}/pipeless'})]})]})}),"\n",(0,t.jsx)(a.UW,{children:(0,t.jsxs)(s.p,{children:["Copy paste the above ",(0,t.jsx)(s.code,{children:"export"})," commands in your ",(0,t.jsx)(s.code,{children:"~/.bashrc"})," or whatever file you use so Pipeless can be used in future sessions. If on macOS you do NOT have to copy the ",(0,t.jsx)(s.code,{children:"install_name_tool"})," command in your profile."]})})]})}let d={MDXContent:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{wrapper:s}=Object.assign({},(0,l.a)(),e.components);return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(h,{...e})}):h(e)},pageOpts:{filePath:"pages/v1/getting-started/installation.mdx",route:"/v1/getting-started/installation",frontMatter:{title:"Installation guide",description:"Learn to install Pipeless, the computer vision framework"},timestamp:1706009866e3,pageMap:[{kind:"Meta",data:{index:"Introduction",contributing:"Contributing","-- Versions":{type:"separator",title:"Versions"},v1:"v1.x.x",v0:"v0.x.x",about:{title:"Home",type:"page",href:"https://pipeless.ai"},contact:{title:"Contact â",type:"page",href:"https://lfkz9noht13.typeform.com/to/aeOqKGPt",newWindow:!0}}},{kind:"MdxPage",name:"contributing",route:"/contributing",frontMatter:{title:"Contributing Guidelines",description:"Contribute to the Pipeless open-source computer vision framework in GitHub"}},{kind:"MdxPage",name:"index",route:"/",frontMatter:{title:"Introduction",description:"Introduction to Pipeless, the open-source and production ready computer vision framework. Enjoy serverless development experience for embedded computer vision."}},{kind:"MdxPage",name:"v0",route:"/v0",frontMatter:{title:"Pipeless v0.x",description:"Documentation for Pipeless versions 0.x. The open-source computer vision framework"}},{kind:"Folder",name:"v1",route:"/v1",children:[{kind:"Meta",data:{"getting-started":"\uD83D\uDE80 Getting Started","rest-api":"Pipeless REST API",formats:"Stream Formats and Protocols",inference:"Inference Runtimes",kvstore:"Key Value Store",container:"\uD83D\uDC0B Container images",deployment:"Deploying your application",models:"Ready to Use CV Models",examples:"\uD83C\uDF1F Examples",benchmark:"Benchmark",changes:"Version Notable Changes",troubleshooting:"Troubleshooting","restart-policy":"Processing Restart Policy"}},{kind:"MdxPage",name:"benchmark",route:"/v1/benchmark",frontMatter:{title:"Benchmark",description:"A benchmark obtained by running the Pipeless computer vision framework on different devices to measure the overhead"}},{kind:"MdxPage",name:"changes",route:"/v1/changes",frontMatter:{title:"Notable version changes",description:"A list of important changes between Pipeless versions"}},{kind:"MdxPage",name:"container",route:"/v1/container",frontMatter:{title:"Container Images",description:"Learn to run and deploy Pipeless using container images. There are images available for CPU, and GPU (CUDA and TensorRT). The container images can also be used to easily deploy Pipeless to the cloud."}},{kind:"MdxPage",name:"deployment",route:"/v1/deployment",frontMatter:{title:"Deploying your pipeless application",description:"Learn how to deploy a Pipeless application to either an edge device or to the cloud. Pipeless ca run in distributed cloud servers as well as edge and IoT devices."}},{kind:"Folder",name:"examples",route:"/v1/examples",children:[{kind:"Meta",data:{w
1attermark:"Adding wattermarks",cats:"Detecting Cats on a Video","tf-pose":"Pose detection with TensorFlow",yolov8:"Object detection - YOLOv8 Python lib","onnx-candy":"ONXX Runtime - Candy filter","onnx-yolo":"ONNX Runtime - Object detection with YOLO","gaze-piano":"Play a piano with your eyes by looking to the notes"}},{kind:"MdxPage",name:"cats",route:"/v1/examples/cats",frontMatter:{title:"Cats recognition example",description:"A Pipeless example to recognize and detect cats in a video stream"}},{kind:"MdxPage",name:"gaze-piano",route:"/v1/examples/gaze-piano",frontMatter:{title:"Play a piano with your eyes - Gaze estimation",description:"A Pipeless example that allows you play a virtual piano with your eyes by looking to the note you want to play"}},{kind:"MdxPage",name:"onnx-candy",route:"/v1/examples/onnx-candy",frontMatter:{title:"Candy filter with ONNX runtime",description:"A Pipeless example using the ONNX Runtime to apply a candy filter to a video stream"}},{kind:"MdxPage",name:"onnx-yolo",route:"/v1/examples/onnx-yolo",frontMatter:{title:"Object detection with ONNX Runtime",description:"A Pipeless example that runs inference using the ONNX Runtime and YOLO to detect objects in a video stream"}},{kind:"MdxPage",name:"tf-pose",route:"/v1/examples/tf-pose",frontMatter:{title:"Pose estimation/detection with TensorFlow",description:"A Pipeless example that detects the pose with 17 keypoints in a video stream"}},{kind:"MdxPage",name:"wattermark",route:"/v1/examples/wattermark",frontMatter:{title:"Adding wattermarks to a video",description:"The most basic Pipeless example adding a wattermark to a video"}},{kind:"MdxPage",name:"yolov8",route:"/v1/examples/yolov8",frontMatter:{title:"Object detection with YOLOv8 and Ultralytics SDK",description:"A Pipeless example to detect objects in a video stream using YOLOv8 via the Ultralytics Python SDK"}}]},{kind:"MdxPage",name:"examples",route:"/v1/examples",frontMatter:{title:"Examples",description:"A list of fully functional examples to play around with the Pipeless computer vision framework."}},{kind:"MdxPage",name:"formats",route:"/v1/formats",frontMatter:{title:"Supported stream formats and protocols",description:"Learn the supported formats and protocols that can be used to provide video to your Pipeless application"}},{kind:"Folder",name:"getting-started",route:"/v1/getting-started",children:[{kind:"Meta",data:{installation:"\uD83D\uDEE0ï¸ Installation","project-structure":"\uD83D\uDCC2 Project Structure"}},{kind:"MdxPage",name:"installation",route:"/v1/getting-started/installation",frontMatter:{title:"Installation guide",description:"Learn to install Pipeless, the computer vision framework"}},{kind:"MdxPage",name:"project-structure",route:"/v1/getting-started/project-structure",frontMatter:{title:"Project structure",description:"Learn how a Pipeless project is structured in the filesystem"}}]},{kind:"MdxPage",name:"getting-started",route:"/v1/getting-started",frontMatter:{title:"Getting started",description:"Get started with the Pipeless computer vision framework and enjoy the development experience of serverless frameworks for embedded computer vision."}},{kind:"MdxPage",name:"inference",route:"/v1/inference",frontMatter:{title:"Inference runtimes",description:"Learn to how to load a model into one of the embedded inference runtimes to perform your computer vision tasks in CPU, or GPUs. Use CUDA, TensorRT, OpenVINO, CoreML in any kind of GPU, including Nvidia GPUs."}},{kind:"MdxPage",name:"kvstore",route:"/v1/kvstore",frontMatter:{title:"Key-Value Store usage",description:"Learn to how use the included key value store to communicate data between the processing of different frames and the execution of different hooks"}},{kind:"Folder",name:"models",route:"/v1/models",children:[{kind:"Folder",name:"tensorflow",route:"/v1/models/tensorflow",children:[{kind:"MdxPage",name:"multi-pose-estimation",route:"/v1/models/tensorflow/multi-pose-estimation",frontMatter:{title:"Multi-pose estimation Tensorflow Model",description:"A ready to use TensorFlow model for multipose estimation in Python"}},{kind:"Meta",data:{"multi-pose-estimation":"Multi-pose estimation Tensorflow Model"}}]},{kind:"MdxPage",name:"tensorflow",route:"/v1/models/tensorflow"},{kind:"Meta",data:{tensorflow:"Tensorflow"}}]},{kind:"MdxPage",name:"models",route:"/v1/models",frontMatter:{title:"Ready to use computer vision models",description:"A list of ready to use computer vision models with Python APIs"}},{kind:"MdxPage",name:"rest-api",route:"/v1/rest-api",frontMatter:{title:"Pipeless REST API",description:"Documentation about the endpoints exposed by a running Pipeless instance"}},{kind:"MdxPage",name:"restart-policy",route:"/v1/restart-policy",frontMatter:{title:"Processing Restart Policy",description:"Documentation about the restart policy for stream processing"}},{kind:"MdxPage",name:"troubleshooting",route:"/v1/troubleshooting",frontMatter:{title:"Troubleshooting your Pipeless application",description:"General guidance and common issues when running your Pipeless application"}}]},{kind:"MdxPage",name:"v1",route:"/v1",frontMatter:{title:"Pipeless v1.x",description:"Documentation for Pipeless ver
1sions 1.x. The open-source computer vision framework"}}],flexsearch:{codeblocks:!0},title:"Installation guide",headings:c},pageNextRoute:"/v1/getting-started/installation",nextraLayout:r.ZP,themeConfig:o.Z};s.default=(0,i.j)(d)}},function(e){e.O(0,[13,996,774,888,179],function(){return e(e.s=8)}),_N_E=e.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.