画像処理の研究を昨年から始めました。その過程で厄介な商用利用の可否について調査したので、これをまとめておきます🐜
(Dlibの商用利用可否はこちらです。)
ただし、以下の内容はあくまで私自身の解釈であり、この記事だけを理由に「商用利用OK」と判断することはないようお願いします。
本記事で発生するいかなる損害に関して、一切責任を負いかねます。(更新日:2021年04月26日)
記事作成の動機
商用で既存のツールを使用する際には、ライセンスを調査することは、企業の技術者としては当然ですよね。1
いつものように、今回はOpenCVのライセンスを調査したのですが、記事によって主張内容がマチマチでした。
また、これを利用する研究テーマの継続が決定したので、改めて調べ直して整理してみました。
商用利用の可否
結論から言うと、OpenCVは商用利用可能です。ただし、一部の機能は、個別にライセンスを受ける(つまり使用料を支払う)ことで初めて商用利用ができるものと、もしくはそもそも商用利用不可であるものがあります。
この記事では、個別にライセンスを受ける必要がある=商用利用不可として話を進めます。
調査結果を整理した内容は、以下の通りです。
項目 | OpenCV | OpenCV-Python |
---|---|---|
商用利用可否 | Yes ※制限あり |
Yes ※制限あり |
ライセンス | Ver. 4.5.0以上はApache 2 License Ver. 4.4.0以下は3-clause BSD License |
MIT License |
ライセンスURL | https://opencv.org/license/ | GitHub→ https://github.com/opencv/opencv-python/blob/master/LICENSE.txt PyPI → https://pypi.org/project/opencv-python/ |
制限/注意 | 一部の機能は特許権があり商用利用不可 | 一部の機能は特許権があり商用利用不可 |
以降で詳述します。
OpenCV
OpenCVには、opencv
とopencv_contrib
の2つがあり、どちらもC++で使うライブラリまたはモジュールという理解で大丈夫そうです。2
前者のopencv
は、OpenCVのmainまたはcoreと呼ばれ、成熟したライブラリであり、フリーで商用利用できます。
後者のopencv_contrib
は、開発中のモジュールであり、フリーで商用利用できない機能を含みます。なお、opencv_contrib
での開発が成熟してくれば、その機能がopencv
に組み込まれます。
つまり、opencv
は自由に使えますが、opencv_contrib
はちょっと注意が必要ということです。
このあたりの内容については、ココを参照して下さい。
また、この2つ以外にopencv_extra
というモジュールもあり、これはopencv_contrib
よりもさらに実験的要素が含まれるようです。詳細はこちらです。
ところで、OpenCVはC++で書かれているので、高速に処理できます。しかし少し面倒な点として、ソースコードをダウンロードしたあとに、自前でビルドする必要があります。
この短所を解決するのが、後述するOpenCV-Pythonです。
商用利用不可機能
OpenCVは商用利用可能なライセンスですが、一部の機能については特許出願されているため、個別にライセンスを受ける必要があります。つまり、実質的には商用利用不可の機能があります。(※おそらく非営利目的であれば問題なし)。
商用利用できない機能は、すべてopencv_contrib
に含まれており、それらは以下の通りです。
opencv_contrib
- xfeatures2d
- SURF
- BRIEF
- Censure
- Freak
- LUCID
- Daisy
- BEBLID
- Self-similar
- xfeatures2d
opencv_contrib
にある上記の機能は、商用利用不可です。
詳細は、opencv_contrib
のREADMEをご覧ください。
なお、こちらについては、次のように調査しました。
まず、GitHubのopencv_contrib
に行きます(リンク)。そして、左上にある検索ボックスに"non-free"と入れて、検索します。
すると、opencv_contrib
内にある、フリーで使用できない機能について調査することができます。
OpenCV-Python
OpenCV-Pythonとは、事前にビルドされたOpenCVをPythonで使うことができる、非常に便利なパッケージです。最初は非公式プロジェクトでしたが、最近になって公式に認められました(OpenCV-Python Is Now An Official OpenCV Project)。
OpenCV-Pythonでは、opencv
とopencv_contrib
を別々にインストールすることができます。しかもOpenCV-Pythonでインストールできるopencv_contrib
には、商用利用できないものはインストールしないよう設定されています(ただし、古いバージョンでSURFなどが含まれてしまうものがあるので要注意)。
non-freeが含まれていない件については、GitHubのREADMEにあるFAQに詳細が書かれています。以下、抜粋と意訳です。
(原文抜粋)
Q: Why the packages do not include non-free algorithms?
A: Non-free algorithms such as SURF are not included in these packages because they are patented / non-free and therefore cannot be distributed as built binaries. Note that SIFT is included in the builds due to patent expiration since OpenCV versions 4.3.0 and 3.4.10. See this issue for more info: https://github.com/skvark/opencv-python/issues/126
(ari23意訳)
Q: なぜOpenCV-Pythonには、フリーでないアルゴリズム(機能)が含まれていないの?
A: SURFのようなノンフリーなアルゴリズムは、特許で保護されており、ビルドされたバイナリとして配布することができないため、含まれてません。ただし、そのうちのSIFTアルゴリズムは、特許権の存続期間が切れたため、OpenCVのバージョン4.3.0と3.4.10以降、含まれるようになりました。詳細はGitHubのissueを見てね。 https://github.com/skvark/opencv-python/issues/126
したがって、OpenCV-Python最新版であれば、opencv
でもopencv_contrib
でも安心して商用利用が可能です。
その他注意点
ここまで、「OpenCVの公式ページを見て、"non-free"と書いてあるものは商用利用できない」というロジックで話を進めてきましたが、実はこれも危険です。
なぜなら、”non-free'の記述がないことが、特許で保護されていないことにはならないからです。
したがって、実際にはモジュールやアルゴリズムごとに商用利用可否や特許の確認が必要です。しかも、実施国ごとに。
かなり面倒な作業ですが、事前調査をやっておかないと製品化の際に、最悪リリースできない事態に陥るので、注意しましょう。3
おわりに
色々な情報があったので、やっぱりこういったときは公式の情報を見るのが一番ですね。
今後も少し変わると思いますので、この記事の情報を鵜呑みにすることだけはないようお願いします。
参考になれば幸いです(^^)