<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Tensorflow on akky@サイボウズラボ・ブログ</title>
		<link>https://labs.cybozu.co.jp/blog/akky/tags/tensorflow/</link>
		<description>Recent content in Tensorflow on akky@サイボウズラボ・ブログ</description>
		<generator>Hugo</generator>
		<language>ja</language>
		
		
		
		
			<lastBuildDate>Fri, 28 Aug 2020 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://labs.cybozu.co.jp/blog/akky/tags/tensorflow/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>NSFW Filter - 職場で見てはいけないNSFW画像をブロックするブラウザ拡張</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2020/08/nsfw-filter-browser-extension/</link>
				<pubDate>Fri, 28 Aug 2020 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2020/08/nsfw-filter-browser-extension/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://github.com/nsfw-filter/nsfw-filter&#34;&gt;nsfw-filter/nsfw-filter&lt;/a&gt;は、Tensorflow.js を使って特定の画像、職場で表示するのが不適切な画像(NSFW = Not Safe For Work)をブロックできるブラウザ拡張です。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/nsfw-filter/nsfw-filter&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2020/08/nsfw-filter-browser-extension/nsfw-filter-logo_hu_204d480ec6a89da6.webp 480w, https://labs.cybozu.co.jp/blog/akky/2020/08/nsfw-filter-browser-extension/nsfw-filter-logo_hu_ce9e750a54bb1459.webp 768w, https://labs.cybozu.co.jp/blog/akky/2020/08/nsfw-filter-browser-extension/nsfw-filter-logo_hu_a04b2a3bc2d89822.webp 1280w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2020/08/nsfw-filter-browser-extension/nsfw-filter-logo.png&#34; width=&#34;1280&#34; height=&#34;640&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;職場で見るとまずいようなサイトを開くと、ブラウザ上の表示がこんな感じに。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2020/08/nsfw-filter-browser-extension/nsfw-filter-working-sample.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2020/08/nsfw-filter-browser-extension/nsfw-filter-working-sample_hu_bcf59a36df8ebad6.webp 480w, https://labs.cybozu.co.jp/blog/akky/2020/08/nsfw-filter-browser-extension/nsfw-filter-working-sample_hu_799877a6e5308f10.webp 768w, https://labs.cybozu.co.jp/blog/akky/2020/08/nsfw-filter-browser-extension/nsfw-filter-working-sample_hu_9d38958fbe4a45a0.webp 1050w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2020/08/nsfw-filter-browser-extension/nsfw-filter-working-sample.png&#34; width=&#34;1050&#34; height=&#34;823&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;同じサイトで問題のない画像が出ているページを開くと、こう。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2020/08/nsfw-filter-browser-extension/not-nsfw-filter.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2020/08/nsfw-filter-browser-extension/not-nsfw-filter_hu_482f3a9b0bbb68ab.webp 480w, https://labs.cybozu.co.jp/blog/akky/2020/08/nsfw-filter-browser-extension/not-nsfw-filter_hu_ca17fb5985b64f3d.webp 768w, https://labs.cybozu.co.jp/blog/akky/2020/08/nsfw-filter-browser-extension/not-nsfw-filter_hu_32b37d40b9a3a008.webp 1076w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2020/08/nsfw-filter-browser-extension/not-nsfw-filter.png&#34; width=&#34;1076&#34; height=&#34;751&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;仕組み的にはブラウザ上で動く&lt;a href=&#34;https://github.com/infinitered/nsfwjs&#34;&gt;infinitered/nsfwjs のライブラリ&lt;/a&gt;を使っていて、Chrome, Firefox 用にパッケージされています。&lt;/p&gt;&#xA;&lt;p&gt;クライアント側のブラウザ上で処理され、判定される画像自体が外部に送られることはありません。自分が何を見ているかという情報は洩れないということですね。&lt;/p&gt;&#xA;&lt;p&gt;ブロック判定の前に一瞬表示されることもあるようです。また、何がNSFWかの判定はもちろん完璧ではなく、職場ではまずそうな画像が残ることもあれば、まずくない画像が誤判定されている場合もあるだろうと思います。小さなサムネイル画像などは判定失敗していることが多いようにも感じました。&lt;/p&gt;&#xA;&lt;p&gt;画像の表示はそんなに遅延する感じはありませんね。まあそこはPCの処理速度にもよるかもしれませんが。&lt;/p&gt;&#xA;&lt;p&gt;職場もですが、子供の使うパソコンのブラウザに入れておくという利用法もあるかもしれませんね。&lt;/p&gt;&#xA;&lt;p&gt;開発は「将来に渡って完全にオープンソースベース」ということで、世界中からの協力者を求めているということです。&lt;/p&gt;&#xA;&lt;p&gt;via &lt;a href=&#34;https://towardsdatascience.com/building-a-safer-internet-for-everyone-using-ai-175df5e02cee?gi=edc84961c7e5&#34;&gt;Towards Data Science&lt;/a&gt; and &lt;a href=&#34;https://news.ycombinator.com/item?id=24251131&#34;&gt;Hacker News&lt;/a&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Gamedetect.io - ゲーム画面の画像からゲーム名を当てるサービス</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2019/03/gamedetect-io-tells-you-which-game-from-screenshot/</link>
				<pubDate>Mon, 11 Mar 2019 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2019/03/gamedetect-io-tells-you-which-game-from-screenshot/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://gamedetect.io/&#34;&gt;GameDetect.io&lt;/a&gt; のフォームにビデオゲームの画面写真を与えると、JSON でそれがどのゲームに似ているかを返してくれます。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2019/03/gamedetect-io-tells-you-which-game-from-screenshot/gamedetect.io_.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2019/03/gamedetect-io-tells-you-which-game-from-screenshot/gamedetect.io__hu_ee516843d699f3f.webp 480w, https://labs.cybozu.co.jp/blog/akky/2019/03/gamedetect-io-tells-you-which-game-from-screenshot/gamedetect.io__hu_40ad5a1dcc6efa19.webp 638w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2019/03/gamedetect-io-tells-you-which-game-from-screenshot/gamedetect.io_.png&#34; width=&#34;638&#34; height=&#34;772&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;適当な画像をアップロードすると、以下のような形でゲームタイトルとそのゲームである確からしさを戻してきます。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;code&gt;{ &amp;quot;filename&amp;quot;:&amp;quot;dragonquest5.jpg&amp;quot;, &amp;quot;predictions&amp;quot;:[ { &amp;quot;label&amp;quot;:&amp;quot;stardew valley&amp;quot;, &amp;quot;probability&amp;quot;:0.568226 }, { &amp;quot;label&amp;quot;:&amp;quot;the legend of zelda a link to the past&amp;quot;, &amp;quot;probability&amp;quot;:0.15813187 }, { &amp;quot;label&amp;quot;:&amp;quot;super mario maker&amp;quot;, &amp;quot;probability&amp;quot;:0.031073814 }, { &amp;quot;label&amp;quot;:&amp;quot;factorio&amp;quot;, &amp;quot;probability&amp;quot;:0.027034273 }, { &amp;quot;label&amp;quot;:&amp;quot;don t starve together&amp;quot;, &amp;quot;probability&amp;quot;:0.020903632 } ], &amp;quot;speed_ms&amp;quot;:1113 }&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Tensorflow と Golang によって&lt;a href=&#34;https://github.com/s32x/gamedetect&#34;&gt;実装されて&lt;/a&gt;おり、学習データとしてはTwitch のゲーム配信画面をスクレイプしたものを使っています。ゲーム実況にはゲームのタイトル情報とゲーム画面があるので、これを正答として学習させ、モデルを作っているのですね。&lt;/p&gt;&#xA;&lt;p&gt;そのような作りなので、回答で出てくる候補のゲームは&lt;a href=&#34;https://github.com/s32x/gamedetect/blob/master/graph/output_labels.txt&#34;&gt;Twitch で今最も多く中継されているゲームトップ100&lt;/a&gt; からだけとなっています。(冒頭で試したドラクエ5 の画面では、Stardew Valley やゼルダなど画面の似ているものが出てしまっていますね。)&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
