2017年2月23日 更新

細胞種を機械学習で判別する!

今回は深層学習、ディープラーニングで細胞の種類を判別してみたいと思っています。判別するのは私が普段実験で使っている上皮細胞のEpH4という細胞と、遺伝子発現用のHEK293という細胞です。

10,118 view お気に入り 0
最近の流行りは人工知能でしょう!と思い始めました。OpenCVが大好きな望月優輝です。

今回は人工知能、ディープラーニングで細胞の種類を判別してみたいと思っています。判別するのは私が普段実験で使っている上皮細胞のEpH4という細胞と、遺伝子発現用のHEK293という細胞です。
EpH4

EpH4

HEK293

HEK293

見ると結構見た目が違います。この特徴を学習させます。
機械学習のフレームワークにはいろいろなものがありますが、今回はchainerを使います。インストールなどはLP-techの他の記事を参考にしてみるといいかもしれません。

この記事は畳み込みニューラルネットワークCNNを応用する内容です。
今回は、まず、この2つの細胞の画像のうち右側の高密度の画像をもとに5*5=25枚の分割画像を作ります。次に各25枚すなわち、50枚の画像を3:1で学習用と検証用に分けます。画像数がやや少ないですがデモということで!(途中で画像の数を水増しする処理も紹介しています!!!)
まずはフォルダ構成から。
フォルダ構成

フォルダ構成

chainer.pyがpythonコードの書いてあるファイルです。
original_dataには元のデータを入れます。その中の0のフォルダにEpHの画像を、1のフォルダにHEK293の画像を入れています。今回は1枚ずつしかありませんが、何枚入れてもOKです。

画像の分割と明るさの統一

このコードが分割を行う関数になります。
import cv2
import os.path
import glob

#1枚の画像をN*Nの画像に分割、縮小もする、色補正
def img_split(path,N,label):
    files = glob.glob(path)
    files.sort()
    for i, filename in enumerate(files):
        #print filename, os.path.isfile(filename)
        print i,
        img = cv2.imread(filename, cv2.IMREAD_GRAYSCALE)
        img = cv2.resize(img,(64*N,64*N))
        img = img * 64.0 / cv2.mean(img)[0]
        height, width = img.shape
        
        for x in range(0,N):
            for y in range(0,N):
                clp = img[height/N*y:height/N*(y+1), width/N*x:width/N*(x+1)]
                output = "../train_data/"+label+"/"+str(i*N*N+x*N+y)+'.png'
                cv2.imwrite(output, clp)
分割と明るさの統一.py
img_split(r"../original_data/0/*.png",5,"0")
img_split(r"../original_data/1/*.png",5,"1")
分割.py

画像の水増し

分割しただけでは学習に十分な数の画像とは言えないため、回転によって数を増やします。
48 件

関連する記事 こんな記事も人気です♪

ImageJインストール(Mac)#ImageJの初心者から中級者まで#

ImageJインストール(Mac)#ImageJの初心者から中級者まで#

ImageJのインストールの仕方についてまとめました! 「ImageJってなに?」から「ImageJって面白い!!」へ!
三好 裕之 | 3,476 view
Pythonで画像処理② Data Augmentation (画像の水増し)

Pythonで画像処理② Data Augmentation (画像の水増し)

画像の水増し、Data Augmentationと呼ばれる方法になりますが、学習に使う画像に変形を加えたり、ノイズを加えたり、明るさを変えたりといった処理を行う方法を紹介します。学習画像に様々な処理を行うことで認識がロバストになるというメリットがあります。
望月 優輝 | 1,713 view
LPixel主催!「画像解析ハッカソン」イベントまとめ

LPixel主催!「画像解析ハッカソン」イベントまとめ

2017年7月26日に行われた「ライフサイエンス画像解析カジュアルハッカソン!」(https://goo.gl/9mjwfc)のまとめ記事です.
井上 大輝 | 629 view
点像分布関数の話

点像分布関数の話

光学系を理解するうえで前提として知っておいた方が良い内容
Yoshiyuki Arai | 354 view
現役JDと学ぶ画像処理入門①〜openCV入門〜

現役JDと学ぶ画像処理入門①〜openCV入門〜

openCV入門(画像の読み込み、表示、保存、線形変換、拡大縮小)
広部ゆりか | 10,079 view

この記事のキーワード

この記事のキュレーター

望月 優輝 望月 優輝